← Back to team overview

openerp-community-reviewer team mailing list archive

[Merge] lp:~vauxoo/web-addons/7.0-web_hideleftmenu into lp:web-addons

 

OscarAlca has proposed merging lp:~vauxoo/web-addons/7.0-web_hideleftmenu into lp:web-addons.

Requested reviews:
  OscarAlca (oscarolar)

For more details, see:
https://code.launchpad.net/~vauxoo/web-addons/7.0-web_hideleftmenu/+merge/216796

Merge Yanina's changes
-- 
The attached diff has been truncated due to its size.
https://code.launchpad.net/~vauxoo/web-addons/7.0-web_hideleftmenu/+merge/216796
Your team Web-Addons Core Editors is subscribed to branch lp:web-addons.
=== added file '.bzrignore'
--- .bzrignore	1970-01-01 00:00:00 +0000
+++ .bzrignore	2014-04-22 22:55:50 +0000
@@ -0,0 +1,3 @@
+^.DS_Store
+*.DS_Store
+portal_public_documents/static/files/*

=== added directory 'multi_image'
=== added file 'multi_image/__init__.py'
--- multi_image/__init__.py	1970-01-01 00:00:00 +0000
+++ multi_image/__init__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>)
+#    Copyright (C) 2011-2013 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import controllers
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file

=== added file 'multi_image/__openerp__.py'
--- multi_image/__openerp__.py	1970-01-01 00:00:00 +0000
+++ multi_image/__openerp__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>)
+#    Copyright (C) 2011-2013 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+{
+    "name" : "Multi Image",
+    "version" : "1.0",
+    "author" : "Serpent Consulting Services Pvt. Ltd.",
+    "category": 'Image',
+    'complexity': "easy",
+    'depends': ['web'],
+    "description": """
+        This module provides the functionality to store multiple images for one record.
+        All images store in server directory. so database size doesnot increase.
+    """,
+    'update_xml': [
+    ],
+    'js':[
+          "static/lib/lightbox/js/jquery.lightbox.js",
+          "static/src/js/multi_image.js"
+    ],
+    'css':[
+           "static/src/css/hoverbox.css",
+           "static/lib/lightbox/css/lightbox.css",
+    ],
+    'website': 'http://www.serpentcs.com',
+    'qweb': ['static/src/xml/image_multi.xml'],
+    'installable': True,
+    'auto_install': False,
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added directory 'multi_image/controllers'
=== added file 'multi_image/controllers/__init__.py'
--- multi_image/controllers/__init__.py	1970-01-01 00:00:00 +0000
+++ multi_image/controllers/__init__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>)
+#    Copyright (C) 2011-2013 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from . import main
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file

=== added file 'multi_image/controllers/main.py'
--- multi_image/controllers/main.py	1970-01-01 00:00:00 +0000
+++ multi_image/controllers/main.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>)
+#    Copyright (C) 2011-2013 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from web import http
+from openerp.addons.web.controllers.main import Binary
+openerpweb = http
+import simplejson
+import time
+import openerp
+import os
+import StringIO
+
+class Binary_multi(Binary):
+
+    @openerpweb.httprequest
+    def upload_image_multi(self, req, callback, ufile):
+        # TODO: might be useful to have a configuration flag for max-length file uploads
+        out = """<script language="javascript" type="text/javascript">
+                    var win = window.top.window;
+                    win.jQuery(win).trigger(%s, %s);
+                </script>"""
+        data = ufile.read()
+        if data:
+            current_dat_time = time.strftime("%d%m%y%H%M%S")
+            file_name = current_dat_time + "_" + ufile.filename
+            addons_path = openerpweb.addons_manifest['web']['addons_path'] + "/web/static/src/img/image_multi/"
+            if not os.path.isdir(addons_path):
+                os.mkdir(addons_path)
+            addons_path += file_name
+            buff = StringIO.StringIO()
+            buff.write(data)
+            buff.seek(0)
+            file_name = "/web/static/src/img/image_multi/" + file_name
+            file = open(addons_path, 'wb')
+            file.write(buff.read())
+            file.close()
+            args = [len(data), file_name, ufile.content_type, ufile.filename, time.strftime("%m/%d/%Y %H:%M:%S")]
+        else:
+            args = []
+        return out % (simplejson.dumps(callback), simplejson.dumps(args))
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file

=== added directory 'multi_image/static'
=== added directory 'multi_image/static/lib'
=== added directory 'multi_image/static/lib/lightbox'
=== added directory 'multi_image/static/lib/lightbox/css'
=== added file 'multi_image/static/lib/lightbox/css/lightbox.css'
--- multi_image/static/lib/lightbox/css/lightbox.css	1970-01-01 00:00:00 +0000
+++ multi_image/static/lib/lightbox/css/lightbox.css	2014-04-22 22:55:50 +0000
@@ -0,0 +1,128 @@
+#lightbox{
+   position: absolute;
+   left: 0;
+   width: 100%;
+   z-index: 100;
+   text-align: center;
+   line-height: 0;
+   }
+
+#lightbox a img{ border: none; }
+
+#outerImageContainer{
+   position: relative;
+   background-color: #fff;
+   width: 250px;
+   height: 250px;
+   margin: 0 auto;
+   }
+
+#imageContainer{
+   padding: 10px;
+   }
+
+#loading{
+   position: absolute;
+   top: 40%;
+   left: 0%;
+   height: 25%;
+   width: 100%;
+   text-align: center;
+   line-height: 0;
+   }
+#hoverNav{
+   position: absolute;
+   top: 0;
+   left: 0;
+   height: 100%;
+   width: 100%;
+   z-index: 10;
+ }
+#imageContainer>#hoverNav{ left: 0;}
+#hoverNav a{ outline: none;}
+
+#prevLink, #nextLink{
+   width: 49%;
+   height: 100%;
+   background: transparent url(../images/blank.gif) no-repeat; /* Trick IE into showing hover */
+   display: block;
+   }
+#prevLink { left: 0; float: left;}
+#nextLink { right: 0; float: right;}
+#prevLink:hover, #prevLink:visited:hover { background: url(../images/prev.gif) left 50% no-repeat; }
+#nextLink:hover, #nextLink:visited:hover { background: url(../images/next.gif) right 50% no-repeat; }
+/*** START : next / previous text links ***/
+nextLinkText, #prevLinkText{
+color: #FF9834;
+font-weight:bold;
+text-decoration: none;
+}
+#nextLinkText{
+padding-left: 20px;
+}
+#prevLinkText{
+padding-right: 20px;
+}
+/*** END : next / previous text links ***/
+/*** START : added padding when navbar is on top ***/
+
+.ontop #imageData {
+    padding-top: 5px;
+}
+
+/*** END : added padding when navbar is on top ***/
+
+#imageDataContainer{
+   font: 10px Verdana, Helvetica, sans-serif;
+   background-color: #fff;
+   margin: 0 auto;
+   line-height: 1.4em;
+   }
+
+#imageData{
+   padding:0 10px;
+   }
+#imageData #imageDetails{ width: 70%; float: left; text-align: left; } 
+#imageData #caption{ font-weight: bold;    }
+#imageData #numberDisplay{ display: block; clear: left; padding-bottom: 1.0em; }
+#imageData #numberDisplay a { color: black; padding-left: 5px; padding-right: 5px;}
+#imageData #bottomNavClose{float: right;  padding-bottom: 0.7em; }
+#imageData #helpDisplay {clear: left; float: left; display: block; }
+
+#overlay{
+   position: absolute;
+   top: 0;
+   left: 0;
+   z-index: 90;
+   width: 100%;
+   height: 500px;
+   background-color: #000;
+   filter:alpha(opacity=60);
+   -moz-opacity: 0.6;
+   opacity: 0.6 !important;
+   display: none;
+   }
+   
+
+.clearfix:after {
+   content: "."; 
+   display: block; 
+   height: 0; 
+   clear: both; 
+   visibility: hidden;
+   }
+
+* html>body .clearfix {
+   display: inline-block; 
+   width: 100%;
+   }
+
+* html .clearfix {
+   /* Hides from IE-mac \*/
+   height: 1%;
+   /* End hide from IE-mac */
+   }   
+
+#lightboxIframe {
+   display: none;
+}  

=== added directory 'multi_image/static/lib/lightbox/images'
=== added file 'multi_image/static/lib/lightbox/images/blank.gif'
Binary files multi_image/static/lib/lightbox/images/blank.gif	1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/blank.gif	2014-04-22 22:55:50 +0000 differ
=== added file 'multi_image/static/lib/lightbox/images/close.gif'
Binary files multi_image/static/lib/lightbox/images/close.gif	1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/close.gif	2014-04-22 22:55:50 +0000 differ
=== added file 'multi_image/static/lib/lightbox/images/closelabel.gif'
Binary files multi_image/static/lib/lightbox/images/closelabel.gif	1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/closelabel.gif	2014-04-22 22:55:50 +0000 differ
=== added file 'multi_image/static/lib/lightbox/images/loading.gif'
Binary files multi_image/static/lib/lightbox/images/loading.gif	1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/loading.gif	2014-04-22 22:55:50 +0000 differ
=== added file 'multi_image/static/lib/lightbox/images/next.gif'
Binary files multi_image/static/lib/lightbox/images/next.gif	1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/next.gif	2014-04-22 22:55:50 +0000 differ
=== added file 'multi_image/static/lib/lightbox/images/nextlabel.gif'
Binary files multi_image/static/lib/lightbox/images/nextlabel.gif	1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/nextlabel.gif	2014-04-22 22:55:50 +0000 differ
=== added file 'multi_image/static/lib/lightbox/images/prev.gif'
Binary files multi_image/static/lib/lightbox/images/prev.gif	1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/prev.gif	2014-04-22 22:55:50 +0000 differ
=== added file 'multi_image/static/lib/lightbox/images/prevlabel.gif'
Binary files multi_image/static/lib/lightbox/images/prevlabel.gif	1970-01-01 00:00:00 +0000 and multi_image/static/lib/lightbox/images/prevlabel.gif	2014-04-22 22:55:50 +0000 differ
=== added directory 'multi_image/static/lib/lightbox/js'
=== added file 'multi_image/static/lib/lightbox/js/jquery.lightbox.js'
--- multi_image/static/lib/lightbox/js/jquery.lightbox.js	1970-01-01 00:00:00 +0000
+++ multi_image/static/lib/lightbox/js/jquery.lightbox.js	2014-04-22 22:55:50 +0000
@@ -0,0 +1,501 @@
+/**
+ * jQuery Lightbox
+ * @author Warren Krewenki
+ *
+ * This package is distributed under the BSD license.
+ * For full license information, see LICENSE.TXT
+ *
+ * Based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/)
+ *
+ *
+ **/
+
+(function($) {
+	$.fn.lightbox = function(options) {
+		// build main options
+		var opts = $.extend({}, $.fn.lightbox.defaults, options);
+        
+		$(window).resize(resizeOverlayToFitWindow);
+        
+		initialize();
+		showLightbox(this);
+		/*
+		# Initialize the lightbox by creating our html and reading some image data
+		# This method is called by the constructor after any click events trigger it
+		# You will never call it by itself, to my knowledge.
+		*/
+		function initialize() {
+			$('#overlay, #lightbox').remove();
+			opts.inprogress = false;
+
+			// if jsonData, build the imageArray from data provided in JSON format
+			if (opts.jsonData && opts.jsonData.length > 0) {
+				var parser = opts.jsonDataParser ? opts.jsonDataParser : $.fn.lightbox.parseJsonData;                
+				opts.imageArray = [];
+				opts.imageArray = parser(opts.jsonData);
+			}
+    
+			var outerImage = '<div id="outerImageContainer"><div id="imageContainer" style="height: 520px; width: 720px;"><iframe id="lightboxIframe"></iframe><img id="lightboxImage" /><div id="hoverNav"><a href="javascript://" title="' + opts.strings.prevLinkTitle + '" id="prevLink"></a><a href="javascript://" id="nextLink" title="' + opts.strings.nextLinkTitle + '"></a></div><div id="loading"><a href="javascript://" id="loadingLink"><img src="'+opts.fileLoadingImage+'"></a></div></div></div>';
+			var imageData = '<div id="imageDataContainer" class="clearfix"><div id="imageData"><div id="imageDetails"><span id="caption"></span><span id="numberDisplay"></span></div><div id="bottomNav">';
+
+//			var outerImage = '<div id="outerImageContainer"><div id="imageContainer" style="height: 520px; width: 720px;"><iframe id="lightboxIframe"></iframe><img id="lightboxImage" syle="vertical-align: middle;" /><div id="hoverNav"><a href="javascript://" title="' + opts.strings.prevLinkTitle + '" id="prevLink"></a><a href="javascript://" id="nextLink" title="' + opts.strings.nextLinkTitle + '"></a></div><div id="loading"><a href="javascript://" id="loadingLink"><img src="'+opts.fileLoadingImage+'"></a></div></div></div>';
+//			var imageData = '<div id="imageDataContainer" class="clearfix"><div id="imageData"><div id="imageDetails"><span id="caption"></span><span id="numberDisplay"></span></div><div id="bottomNav">';
+
+			if (opts.displayHelp) {
+				imageData += '<span id="helpDisplay">' + opts.strings.help + '</span>';
+			}
+
+			imageData += '<a href="javascript://" id="bottomNavClose" class="ui-dialog-titlebar-close ui-corner-all ui-state-hover" title="' + opts.strings.closeTitle + '"><span class="ui-icon ui-icon-closethick">close</span></a></div></div></div>';
+
+			var string;
+
+			if (opts.navbarOnTop) {
+				string = '<div id="overlay"></div><div id="lightbox">' + imageData + outerImage + '</div>';
+				$("body").append(string);
+				$("#imageDataContainer").addClass('ontop');
+			} else {
+				string = '<div id="overlay"></div><div id="lightbox">' + outerImage + imageData + '</div>';
+				$("body").append(string);
+			}
+
+			//$("#overlay, #lightbox").click(function(){ end(); }).hide();
+			$("#loadingLink, #bottomNavClose").click(function(){ end(); return false;});
+			$('#outerImageContainer').width(opts.widthCurrent).height(opts.heightCurrent);
+			$('#imageDataContainer').width(opts.widthCurrent);
+
+			if (!opts.imageClickClose) {
+				$("#lightboxImage").click(function(){ return false; });
+				$("#hoverNav").click(function(){ return false; });
+			}
+			
+			return true;
+		};
+
+		/*
+		# Get the document and window width/heigh
+		#
+		# Examples
+		#
+		#	getPageSize()
+		#	# => [1024,768,1024,768]
+		#
+		# Returns a numerically indexed array of document width/height and window width/height
+		*/
+		function getPageSize() {
+			var jqueryPageSize = new Array($(document).width(),$(document).height(), $(window).width(), $(window).height());
+			return jqueryPageSize;
+		};
+	    
+		function getPageScroll() {
+			var xScroll, yScroll;
+
+			if (self.pageYOffset) {
+				yScroll = self.pageYOffset;
+				xScroll = self.pageXOffset;
+			} else if (document.documentElement && document.documentElement.scrollTop){  // Explorer 6 Strict
+				yScroll = document.documentElement.scrollTop;
+				xScroll = document.documentElement.scrollLeft;
+			} else if (document.body) {// all other Explorers
+				yScroll = document.body.scrollTop;
+				xScroll = document.body.scrollLeft;
+			}
+
+			var arrayPageScroll = new Array(xScroll,yScroll);
+			return arrayPageScroll;
+		};
+
+		/*
+		# Deploy the sexy overlay and display the lightbox
+		#
+		# imageObject - the jQuery object passed via the click event in the constructor
+		#
+		# Examples
+		#
+		#	showLightbox($('#CheesusCrust'))
+		#
+		# Returns a boolean true, because it's got nothing else to return. It should give visual feedback when run
+		*/
+		function showLightbox(imageObject) {
+			/**
+			* select, embed and object tags render over the lightbox in some browsers
+			* Right now, the best way to fix it is to hide them, but that can trigger reloading of some flash content
+			* I don't have a better fix for this right now, but I want ot leave this comment here so you and I both 
+			* know that i'm aware of it, and I would love to fix it, if you have any suggestions.
+			**/
+			$("select, embed, object").hide();
+
+			// Resize and display the sexy, sexy overlay.
+			resizeOverlayToFitWindow();
+			$("#overlay").hide().css({ opacity : opts.overlayOpacity }).fadeIn();
+			imageNum = 0;
+
+			// if data is not provided by jsonData parameter
+			if (!opts.jsonData) {
+				opts.imageArray = [];
+				// if image is NOT part of a set..
+				if ((!imageObject.rel || (imageObject.rel == '')) && !opts.allSet) {
+					// add single image to Lightbox.imageArray
+					opts.imageArray.push(new Array(imageObject.href, opts.displayTitle ? imageObject.title : ''));
+				} else {
+					// if image is part of a set..
+					$("a").each(function() {
+						if(this.href && (this.rel == imageObject.rel)) {
+							opts.imageArray.push(new Array(this.href, opts.displayTitle ? this.title : ''));
+						}
+					});
+				}
+			}
+	
+			if (opts.imageArray.length > 1) {
+				for (i = 0; i < opts.imageArray.length; i++) {
+					for (j = opts.imageArray.length - 1; j > i; j--) {
+						if (opts.imageArray[i][0] == opts.imageArray[j][0]) {
+							opts.imageArray.splice(j, 1);
+						}
+					}
+				}
+				while (opts.imageArray[imageNum][0] != imageObject.href) { 
+					imageNum++;
+				if (imageNum < opts.imageArray.length) {
+						break;
+					}
+				}
+			}
+
+			// calculate top and left offset for the lightbox
+			var arrayPageScroll = getPageScroll();
+			var lightboxTop = arrayPageScroll[1] + ($(window).height() / 10);
+			var lightboxLeft = arrayPageScroll[0];
+			$('#lightbox').css({top: lightboxTop+'px', left: lightboxLeft+'px'}).show();
+
+			if (!opts.slideNavBar) {
+				$('#imageData').hide();
+			}
+
+			changeImage(imageNum);
+		};
+	    
+		function changeImage(imageNum) {
+			if (opts.inprogress == false) {
+				opts.inprogress = true;
+
+				// update global var
+				opts.activeImage = imageNum;	
+
+				// hide elements during transition
+				$('#loading').show();
+				$('#lightboxImage, #hoverNav, #prevLink, #nextLink').hide();
+
+				// delay preloading image until navbar will slide up
+				if (opts.slideNavBar) { 
+					$('#imageDataContainer').hide();
+					$('#imageData').hide();
+				}
+				doChangeImage();
+			}
+		};
+
+		function doChangeImage() {
+			imgPreloader = new Image();
+
+			// once image is preloaded, resize image container
+			imgPreloader.onload = function() {
+				var newWidth = imgPreloader.width;
+				var newHeight = imgPreloader.height;
+
+				if (opts.scaleImages) {
+					newWidth = parseInt(opts.xScale * newWidth);
+					newHeight = parseInt(opts.yScale * newHeight);
+				}
+
+				if (opts.fitToScreen) {
+					var arrayPageSize = getPageSize();
+					var ratio;
+					var initialPageWidth = arrayPageSize[2] - 2 * opts.borderSize;
+					var initialPageHeight = arrayPageSize[3] - 200;
+
+					var dI = initialPageWidth/initialPageHeight;
+					var dP = imgPreloader.width/imgPreloader.height;
+
+					if ((imgPreloader.height > initialPageHeight) || (imgPreloader.width > initialPageWidth)) {
+						if (dI > dP) {
+							newWidth = parseInt((initialPageHeight/imgPreloader.height) * imgPreloader.width);
+							newHeight = initialPageHeight;
+						} else {
+							newHeight = parseInt((initialPageWidth/imgPreloader.width) * imgPreloader.height);
+							newWidth = initialPageWidth;
+						}
+					}
+				}
+				if (newWidth > 700) {
+					newWidth = 700
+				}
+				if (newHeight > 500) {
+					newHeight = 500
+				}
+				var line_height = (newHeight / 100) * 7 + 24
+				$("#imageContainer").attr("style", "line-height:" + line_height)
+				$("#lightboxImage").attr("style", "line-height:" + line_height)
+				$('#lightboxImage').
+					attr('src', opts.imageArray[opts.activeImage][0]).
+					width(newWidth).
+					height(newHeight);
+
+					resizeImageContainer(newWidth, newHeight);
+				};
+
+				imgPreloader.src = opts.imageArray[opts.activeImage][0];
+			};
+
+			function end() {
+				$('#overlay, #lightbox, #outerImageContainer, #imageDataContainer').remove();
+			};
+
+			function preloadNeighborImages() {
+				if (opts.loopImages && opts.imageArray.length > 1) {
+					preloadNextImage = new Image();
+					preloadNextImage.src = opts.imageArray[(opts.activeImage == (opts.imageArray.length - 1)) ? 0 : opts.activeImage + 1][0];
+
+					preloadPrevImage = new Image();
+					preloadPrevImage.src = opts.imageArray[(opts.activeImage == 0) ? (opts.imageArray.length - 1) : opts.activeImage - 1][0];
+				} else {
+					if ((opts.imageArray.length - 1) > opts.activeImage) {
+						preloadNextImage = new Image();
+						preloadNextImage.src = opts.imageArray[opts.activeImage + 1][0];
+					}
+					if (opts.activeImage > 0) {
+						preloadPrevImage = new Image();
+						preloadPrevImage.src = opts.imageArray[opts.activeImage - 1][0];
+					}
+				}
+			};
+
+			function resizeImageContainer(imgWidth, imgHeight) {
+				// get current width and height
+				opts.widthCurrent = $("#outerImageContainer").outerWidth();
+				opts.heightCurrent = $("#outerImageContainer").outerHeight();
+
+				// get new width and height
+				var widthNew = 730;
+				var heightNew = 520;
+
+				// calculate size difference between new and old image, and resize if necessary
+				wDiff = opts.widthCurrent - widthNew;
+				hDiff = opts.heightCurrent - heightNew;
+
+				$('#imageDataContainer').animate({width: widthNew},opts.resizeSpeed,'linear');
+				$('#outerImageContainer').animate({width: widthNew},opts.resizeSpeed,'linear', function() {
+					$('#outerImageContainer').animate({height: heightNew},opts.resizeSpeed,'linear', function() {
+						showImage();
+					});
+				});
+				
+				afterTimeout = function () {
+    				$('#prevLink').height(500);
+    				$('#nextLink').height(500);
+				};
+
+				// if new and old image are same size and no scaling transition is necessary,
+				// do a quick pause to prevent image flicker.
+				if((hDiff == 0) && (wDiff == 0)) {
+					if (jQuery.browser.msie) { 
+						setTimeout(afterTimeout, 250); 
+					} else { 
+						setTimeout(afterTimeout, 100);
+					}
+				} else {
+				    // otherwise just trigger the height and width change
+				    afterTimeout();
+				}
+
+			};
+
+			function showImage() {
+				$('#loading').hide();
+				$('#lightboxImage').fadeIn("fast");
+				updateDetails();
+				preloadNeighborImages();
+
+				opts.inprogress = false;
+			};
+
+			function updateDetails() {
+				$('#numberDisplay').html('');
+
+				if (opts.imageArray[opts.activeImage][1]) {
+					$('#caption').html(opts.imageArray[opts.activeImage][1]).show();
+				}
+
+				// if image is part of set display 'Image x of x'
+				if (opts.imageArray.length > 1) {
+					var nav_html;
+
+					nav_html = opts.strings.image + (opts.activeImage + 1) + opts.strings.of + opts.imageArray.length;
+
+					if (opts.displayDownloadLink) {
+						nav_html += "<a href='" + opts.imageArray[opts.activeImage][0] + "'>" + opts.strings.download + "</a>";
+					}				
+
+					if (!opts.disableNavbarLinks) {
+						// display previous / next text links
+						if ((opts.activeImage) > 0 || opts.loopImages) {
+							nav_html = '<a title="' + opts.strings.prevLinkTitle + '" href="#" id="prevLinkText">' + opts.strings.prevLinkText + "</a>" + nav_html;
+						}
+
+						if (((opts.activeImage + 1) < opts.imageArray.length) || opts.loopImages) {
+							nav_html += '<a title="' + opts.strings.nextLinkTitle + '" href="#" id="nextLinkText">' + opts.strings.nextLinkText + "</a>";
+						}
+					}
+
+					$('#numberDisplay').html(nav_html).show();
+				}
+
+				if (opts.slideNavBar) {
+					$("#imageData").slideDown(opts.navBarSlideSpeed);
+				} else {
+					$("#imageData").show();
+				}
+
+				resizeOverlayToFitWindow();
+				updateNav();
+			};
+
+			/*
+			# Resize the sexy overlay to fit the constraints of your current viewing environment
+			# 
+			# This should now happen whenever a window is resized, so you should always see a full overlay
+			*/
+			function resizeOverlayToFitWindow(){
+				$('#overlay').css({width: $(document).width(), height: $(document).height()});
+				//  ^^^^^^^ <- sexy!
+			};
+
+			function updateNav() {
+				if (opts.imageArray.length > 1) {
+					$('#hoverNav').show();
+
+					// if loopImages is true, always show next and prev image buttons 
+					if(opts.loopImages) {
+						$('#prevLink,#prevLinkText').show().click(function() {
+							changeImage((opts.activeImage == 0) ? (opts.imageArray.length - 1) : opts.activeImage - 1); 
+							return false;
+						});
+
+						$('#nextLink,#nextLinkText').show().click(function() {
+							changeImage((opts.activeImage == (opts.imageArray.length - 1)) ? 0 : opts.activeImage + 1); 
+							return false;
+						});
+					} else {
+						// if not first image in set, display prev image button
+						if(opts.activeImage != 0) {
+							$('#prevLink,#prevLinkText').show().click(function() {
+								changeImage(opts.activeImage - 1); 
+								return false;
+							});
+						}
+
+						// if not last image in set, display next image button
+						if(opts.activeImage != (opts.imageArray.length - 1)) {
+							$('#nextLink,#nextLinkText').show().click(function() {
+								changeImage(opts.activeImage +1); 
+								return false;
+							});
+						}
+					}
+
+					enableKeyboardNav();
+				}
+			};
+
+			function keyboardAction(e) {
+				var o = e.data.opts;
+				var keycode = e.keyCode;
+				var escapeKey = 27;
+
+				var key = String.fromCharCode(keycode).toLowerCase();
+
+				// close lightbox
+				if ((key == 'x') || (key == 'o') || (key == 'c') || (keycode == escapeKey)) { 
+					end();
+
+					// display previous image	
+				} else if ((key == 'p') || (keycode == 37)) {  
+					if(o.loopImages) {
+						disableKeyboardNav();
+						changeImage((o.activeImage == 0) ? (o.imageArray.length - 1) : o.activeImage - 1);
+					} else if (o.activeImage != 0) {
+						disableKeyboardNav();
+						changeImage(o.activeImage - 1);
+					}
+
+					// display next image
+				} else if ((key == 'n') || (keycode == 39)) { 
+					if (opts.loopImages) {
+						disableKeyboardNav();
+						changeImage((o.activeImage == (o.imageArray.length - 1)) ? 0 : o.activeImage + 1);
+					} else if (o.activeImage != (o.imageArray.length - 1)) {
+						disableKeyboardNav();
+						changeImage(o.activeImage + 1);
+					}
+				}
+			};
+
+			function enableKeyboardNav() {
+				$(document).bind('keydown', {opts: opts}, keyboardAction);
+			};
+
+			function disableKeyboardNav() {
+				$(document).unbind('keydown');
+			};	    
+		};
+
+		$.fn.lightbox.parseJsonData = function(data) {
+			var imageArray = [];
+
+			$.each(data, function() {
+				imageArray.push(new Array(this.url, this.title));
+			});
+
+			return imageArray;
+		};
+		$.fn.lightbox.defaults = {
+		    triggerEvent: "click",
+			allSet: false,
+			fileLoadingImage: '/multi_image/static/lib/lightbox/images/loading.gif',
+			fileBottomNavCloseImage: '/multi_image/static/lib/lightbox/images/closelabel.gif',
+			overlayOpacity: 0.6,
+			borderSize: 10,
+			imageArray: new Array,
+			activeImage: null,
+			inprogress: false,
+			resizeSpeed: 350,
+			widthCurrent: 250,
+			heightCurrent: 250,
+			scaleImages: false,
+			xScale: 1,
+			yScale: 1,
+			displayTitle: true,
+			navbarOnTop: true,
+			displayDownloadLink: false,
+			slideNavBar: false, 
+			navBarSlideSpeed: 350,
+			displayHelp: false,
+			strings: {
+				help: ' \u2190 / P - previous image\u00a0\u00a0\u00a0\u00a0\u2192 / N - next image\u00a0\u00a0\u00a0\u00a0ESC / X - close image gallery',
+				prevLinkTitle: 'previous image',
+				nextLinkTitle: 'next image',
+				prevLinkText:  '&laquo; Previous',
+				nextLinkText:  'Next &raquo;',
+				closeTitle: 'close image gallery',
+				image: 'Image ',
+				of: ' of ',
+				download: 'Download'
+			},
+			fitToScreen: false,		
+			disableNavbarLinks: false,
+			loopImages: false,
+			imageClickClose: true,
+			jsonData: null,
+			jsonDataParser: null
+		};	
+})(jQuery);
\ No newline at end of file

=== added directory 'multi_image/static/src'
=== added directory 'multi_image/static/src/css'
=== added file 'multi_image/static/src/css/hoverbox.css'
--- multi_image/static/src/css/hoverbox.css	1970-01-01 00:00:00 +0000
+++ multi_image/static/src/css/hoverbox.css	2014-04-22 22:55:50 +0000
@@ -0,0 +1,52 @@
+.hoverbox a .preview
+{
+   display: none;
+}
+
+.hoverbox a:active .preview
+{
+   display: block;
+   position: absolute;
+   top: 0px;
+   left: 0px;
+   z-index: 1;
+}
+
+.hoverbox .list_image
+{
+   background: #fff;
+   border-color: #aaa #ccc #ddd #bbb;
+   border-style: solid;
+   border-width: 1px;
+   color: inherit;
+   padding: 2px;
+   vertical-align: top;
+   width: 150px;
+}
+
+.hoverbox
+{
+   background: #eee;
+   border-color: #ddd #bbb #aaa #ccc;
+   border-style: solid;
+   border-width: 1px;
+   color: inherit;
+   margin: 1px;
+   padding: 0px;
+   position: relative;
+}
+
+.hoverbox .preview
+{
+   border-color: #000;
+   width: 320px;
+}
+
+.oe-remove-image
+{
+    cursor: pointer;
+    vertical-align: middle;
+    text-align: right;
+    height: 15px;
+    width: 15px;
+}
\ No newline at end of file

=== added directory 'multi_image/static/src/img'
=== added file 'multi_image/static/src/img/icon.png'
Binary files multi_image/static/src/img/icon.png	1970-01-01 00:00:00 +0000 and multi_image/static/src/img/icon.png	2014-04-22 22:55:50 +0000 differ
=== added directory 'multi_image/static/src/js'
=== added file 'multi_image/static/src/js/multi_image.js'
--- multi_image/static/src/js/multi_image.js	1970-01-01 00:00:00 +0000
+++ multi_image/static/src/js/multi_image.js	2014-04-22 22:55:50 +0000
@@ -0,0 +1,227 @@
+openerp.multi_image = function(openerp) {
+    var _t = openerp.web._t;
+    var QWeb = openerp.web.qweb;
+openerp.web.form.FieldBinaryImageMulti = openerp.web.form.FieldBinaryImage.extend({
+    template: 'FieldBinaryImageMulti',
+    init: function(field_manager, node) {
+        var self = this;
+        this._super(field_manager, node);
+        this.binary_value = false;
+        this.useFileAPI = !window.FileReader;
+        this.max_upload_size = 25 * 1024 * 1024; // 25Mo
+        if (!this.useFileAPI) {
+            this.fileupload_id = _.uniqueId('oe_fileupload');
+            $(window).on(this.fileupload_id, function() {
+                var args = [].slice.call(arguments).slice(1);
+                self.on_file_uploaded.apply(self, args);
+            });
+        }
+    },
+    initialize_content: function() {
+        var self = this;
+        var dataset = new openerp.web.DataSetSearch(this, 'res.users', {}, []);
+        dataset.read_ids([openerp.session.uid], ['name']).then(function(res) {
+            if (res)
+                self.user_name = res[0].name;
+        });
+        this._super();
+    },
+    on_file_uploaded_and_valid: function(size, name, content_type, orignal_file_name, date) {
+        if (name) {
+            var data_dict = {"size": openerp.web.human_size(size), "name": name, "content_type": content_type, "date": date, "orignal_name": orignal_file_name, 'user':this.user_name};
+            var data = JSON.parse(this.get('value'));
+            if (data)
+                data.push(data_dict);
+            else
+                data = [data_dict];
+            this.internal_set_value(JSON.stringify(data));
+            this.binary_value = true;
+            this.set_filename(name);
+            this.render_value();
+            this.do_warn(_t("File Upload"), _t("File Upload Successfully !"));
+        }
+        else{
+            this.do_warn(_t("File Upload"), _t("There was a problem while uploading your file"));
+        }
+    },
+    on_list_image: function() {
+        var images_list = this.get('value');
+        var self = this;
+        if (!this.get('value')) { 
+            this.do_warn(_t("Image"), _t("Image not available !"));
+            return false; 
+        }
+        this.image_list_dialog = new openerp.web.Dialog(this, {
+            title: _t("Image List"),
+            width: '700px',
+            height: '70%',
+            min_width: '600px',
+            min_height: '500px',
+            buttons: [
+                 {text: _t("Close"), click: function() { self.image_list_dialog.close();}}
+            ]
+        }).open();
+        this.on_render_dialog();
+    },
+    on_render_dialog: function() {
+        var images_list = JSON.parse(this.get('value'));
+        var self = this;
+        var url_list = [];
+        if (images_list) {
+            _.each(images_list, function (index) {
+                if (index) {
+                    if(index['name_1']){
+                        url_list.push({'name' : index['name_1'], 'path' : index['name']})
+                    }else{
+                        url_list.push({'name' : index['orignal_name'], 'path' : index['name']})
+                    }
+                }
+            });
+        }
+        else { return false; }
+        var image_list = [];
+        var start = 0;
+        for(var i=1; i <= Math.ceil(url_list.length/4); i++) {
+            image_list.push(url_list.slice(start, start + 4))
+            start = i * 4;
+        }
+        this.image_list_dialog.$el.html(QWeb.render('DialogImageList', {'widget': this, 'image_list': image_list}));
+        this.image_list_dialog.$el.find(".oe-remove-image").click(function() {
+            self.do_remove_image(this, true);
+        });
+    },
+    
+    render_value: function() {
+        var self = this;
+        this.$el.find('.oe-image-preview').click(this.on_preview_button);
+        this.$el.find('.oe_image_list').click(this.on_list_image);
+        var images_list = JSON.parse(this.get('value'));
+        this.$el.find('#imagedescription').remove();
+        var $img = QWeb.render("ImageDescription", { image_list: images_list, widget: this});
+        this.$el.append($img);
+        this.$el.find(".oe_image_row").click(function() {
+            if (this.id) {
+                var clicked = this.id;
+                var name_desc = "";
+                _.each(images_list, function (index) {
+                    if (index['name'] == clicked ) {
+                        var title = index['name_1'] ? index['name_1'] : ''
+                        var description = index['description'] ? index['description'] : ''
+                        name_desc = 'Title:-' + title + '<br/>Description:-' +description
+                    }
+                });
+                self.do_display_image(this, name_desc);
+            }
+        });
+        this.$el.find(".oe_list_record_delete").click(function() {
+            if (this.id) {
+                self.do_remove_image(this, false);
+            }
+        });
+        this.$el.find(".oe-record-edit-link").click(function() {
+            var self_1 = this;
+            var data = JSON.parse(self.get('value'));
+            _.each(data, function(d){
+                if(d.name == self_1.id){
+                    self.name_display = d.name_1 ? d.name_1 : '';
+                    self.description_display =d.description ? d.description : '';
+                }
+            });
+            self.select_mo_dialog = $(QWeb.render('edit_name_description', {widget:self})).dialog({
+                resizable: false,
+                modal: true,
+                title: _t("Image Description"),
+                width: 500,
+                buttons: {
+                    "Ok": function() {
+                        var new_list = [];
+                        var data = JSON.parse(self.get('value'));
+                        if (self_1.id && data) {
+                            _.each(data, function (index) {
+                                if (index['name'] != self_1.id ) {
+                                    new_list.push(index)
+                                }
+                                else {
+                                    index["name_1"] = self.select_mo_dialog.find('#name_1').val()
+                                    index["description"] = self.select_mo_dialog.find('#description').val()
+                                    new_list.push(index)
+                                }
+                            });
+                            self.internal_set_value(JSON.stringify(new_list));
+                            self.invalid = false
+                            self.dirty = true
+                            self.render_value();
+                            $(this).dialog( "close" );
+                        }
+                    },
+                    "Close": function() {
+                        $(this).dialog( "close" );
+                    }
+                },
+            });
+        });
+    },
+    do_display_image: function(curr_id, name_desc) {
+        this.$el.find('.oe-image-preview').lightbox({
+            fitToScreen: true,
+            jsonData: [{"url" :curr_id.id, "title": name_desc}],
+            loopImages: true,
+            imageClickClose: false,
+            disableNavbarLinks: true
+        });
+    },
+    do_remove_image: function(curr_id, dialog) {
+        var self = this;
+        var images_list = JSON.parse(this.get('value'));
+        if (images_list) {
+            var new_list = [];
+            if (confirm(_t("Are you sure to remove this image?"))) {
+                _.each(images_list, function (index) {
+                    if (index['name'] != curr_id.id ) {
+                        new_list.push(index)
+                    }
+                });
+                self.internal_set_value(JSON.stringify(new_list));
+                this.invalid = false
+                this.dirty = true
+                if (dialog) {
+                    this.on_render_dialog();
+                }
+                else{
+                    this.render_value();
+                }
+            }
+        }
+    },
+    on_preview_button: function() {
+    	console.log(this.get('value'))
+        var images_list = JSON.parse(this.get('value'));
+        var url_list = [];
+        var self = this;
+        if (images_list) {
+            _.each(images_list, function (index) {
+                if (index) {
+                    var title = index['name_1'] ? index['name_1'] : ''
+                    var description = index['description'] ? index['description'] : ''
+                    url_list.push({"url" :index['name'], "title": 'Title:-' + title + '<br/>Description:-' +description})
+                }
+            });
+        }
+        else {
+            this.do_warn("Image", "Image not available !");
+            return false;
+        }
+        this.$el.find('.oe-image-preview').lightbox({
+            fitToScreen: true,
+            jsonData: url_list,
+            loopImages: true,
+            imageClickClose: false,
+            disableNavbarLinks: true
+        });
+    },
+});
+
+openerp.web.form.widgets = openerp.web.form.widgets.extend({
+    'image_multi' : 'openerp.web.form.FieldBinaryImageMulti',
+});
+}

=== added directory 'multi_image/static/src/xml'
=== added file 'multi_image/static/src/xml/image_multi.xml'
--- multi_image/static/src/xml/image_multi.xml	1970-01-01 00:00:00 +0000
+++ multi_image/static/src/xml/image_multi.xml	2014-04-22 22:55:50 +0000
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<templates id="template" xml:space="preserve">
+
+    <t t-name="HiddenInputMultiFile">
+        <div t-attf-class="oe_hidden_input_file #{fileupload_class or ''}" t-att-style="fileupload_style">
+            <form class="oe_form_binary_form" t-att-target="fileupload_id"
+                method="post" enctype="multipart/form-data" action="/web/binary/upload_image_multi">
+                <input type="hidden" name="session_id" value=""/>
+                <input type="hidden" name="callback" t-att-value="fileupload_id"/>
+                <t t-raw="__content__"/>
+                <input type="file" class="oe_form_binary_file" name="ufile" accept="image/*"/>
+            </form>
+            <iframe t-att-id="fileupload_id" t-att-name="fileupload_id" style="display: none"/>
+        </div>
+    </t>
+
+    <t t-name="FieldBinaryImageMulti">
+        <table class="oe_form_field oe_form_field_binary" cellpadding="0" cellspacing="0" border="0" t-att-style="widget.node.attrs.style">
+        <tr>
+            <td class="oe_form_binary" nowrap="true">
+                <table cellspacing="0" cellpadding="0" border="0">
+                <tr>
+                    <td>
+                        <t t-if="!widget.get('effective_readonly')">
+                        <t t-call="HiddenInputMultiFile">
+                            <t t-set="fileupload_id" t-value="widget.fileupload_id"/>
+                            <t t-set="fileupload_style" t-translation="off">width: 83px;</t>
+                            <button class="oe_button oe_field_button" type="button">
+                                <img t-att-src='_s + "/web/static/src/img/icons/STOCK_ADD.png"'/>
+                                <span>ADD</span>
+                            </button>
+                        </t>
+                        </t>
+                    </td>
+                    <td>
+                        <button class="oe-image-preview oe_button oe_field_button oe_form_binary" type="button" title="Preview">
+                            <img t-att-src='_s + "/web/static/src/img/icons/gtk-zoom-fit.png"'/>
+                            <span>Image Preview</span>
+                        </button>
+                    </td>
+                    <td>
+                        <button class="oe_image_list oe_button oe_field_button oe_form_binary" type="button" title="All Image">
+                            <img t-att-src='_s + "/web/static/src/img/icons/STOCK_DND_MULTIPLE.png"'/>
+                            <span>List All Image</span>
+                        </button>
+                    </td>
+                </tr>
+                </table>
+            </td>
+            <td class="oe_form_binary_progress" style="display: none" nowrap="true">
+                <div class="oe_form_binary_progress" style="display: none">
+                    <img t-att-src='_s + "/web/static/src/img/throbber.gif"' width="16" height="16"/>
+                    <b>Uploading ...</b>
+                </div>
+            </td>
+        </tr>
+        </table>
+    </t>
+
+    <t t-name="DialogImageList">
+        <table id="DialogImageList">
+            <tr t-foreach="image_list" t-as="row">
+                <td t-foreach="row" t-as="column" >
+                    <table class="hoverbox">
+                        <tr background-color="white">
+                            <t t-if="!widget.get('effective_readonly')">
+                            <td style="height:17px;">
+                                <span class="oe-remove-image oe_i" t-att-id="column.path"  title="Delete Image" style="float:right;margin-top: -4px;">d</span>
+                                </td>
+                            </t>
+                        </tr>
+                        <tr>
+                            <td>
+                                <a style="cursor: default;" href='#' id="image_preview">
+                                    <img class="list_image" t-att-src="column.path" t-att-title="column.name"/> <img t-att-title="column.name" t-att-src="column.path" class="preview list_image" /></a>
+                            </td>
+                        </tr>
+                   </table>
+                </td>
+            </tr>
+        </table>
+    </t>
+
+    <t t-name="ImageDescription">
+        <div id="imagedescription" class="openerp oe_list oe_view" style="display: block; height:160px;width:100%;overflow: scroll">
+        <table class="openerp oe_list_content">
+            <thead>
+                <tr class="oe_list_header_columns">
+                    <th class="oe_list_header_char" t-if="!widget.get('effective_readonly')" style="width:3%;"></th>
+                    <th class="oe_list_header_char" style="width:12%;">File Name</th>
+                    <th class="oe_list_header_char" style="width:12%;">Title</th>
+                    <th class="oe_list_header_char" style="width:25%;">Description</th>
+                    <th class="oe_list_header_char" style="width:10%;">Size</th>
+                    <th class="oe_list_header_char" style="width:20%;">Date</th>
+                    <th class="oe_list_header_char" style="width:15%;">User</th>
+                    <th class="oe_list_header_char" t-if="!widget.get('effective_readonly')" style="width:3%;"></th>
+                </tr>
+            </thead>
+            <tbody>
+                <tr t-foreach="image_list" t-as="row">
+                    <td width="1" t-att-id="row.name" class="oe-record-edit-link" t-if="!widget.get('effective_readonly')" style="width:3%;">
+                        <img t-if="!widget.get('effective_readonly')" src="/web/static/src/img/pencil.gif" />
+                    </td>
+                    <td class="oe_image_row" t-att-id="row.name" style="width:12%;"><t t-esc="row.orignal_name" /></td>
+                    <td class="oe_image_row" t-att-id="row.name" style="width:12%;"><t t-esc="row.name_1"/></td>
+                    <td class="oe_image_row" t-att-id="row.name" style="width:25%;"><t t-esc="row.description"/></td>
+                    <td class="oe_image_row" t-att-id="row.name" style="width:10%;"><t t-esc="row.size"/></td>
+                    <td class="oe_image_row" t-att-id="row.name" style="width:20%;"><t t-esc="row.date"/></td>
+                    <td class="oe_image_row" t-att-id="row.name" style="width:15%"><t t-esc="row.user"/></td>
+                    <td class='oe_list_record_delete' width="3%" t-att-id="row.name" t-if="!widget.get('effective_readonly')">
+                        <button t-if="!widget.get('effective_readonly')" type="button" name="delete" class="oe_i">d</button>
+                    </td>
+                </tr>
+            </tbody>
+        </table>
+        </div>
+    </t>
+
+    <t t-name="edit_name_description">
+        <div>
+            <h3>Title : <input t-att-value="widget.name_display" type="textbox" class="name_textbox" id="name_1" style="display: block; height:20px; width:450px;overflow: scroll"/></h3>
+            <h3>Description : <textarea type="textarea" class="field_text" id="description" style="display: text; height:160px;width:450px;overflow: scroll"><t t-esc="widget.description_display" /></textarea></h3>
+        </div>
+    </t>
+
+</templates>
\ No newline at end of file

=== added directory 'multi_image_sample'
=== added file 'multi_image_sample/__init__.py'
--- multi_image_sample/__init__.py	1970-01-01 00:00:00 +0000
+++ multi_image_sample/__init__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>)
+#    Copyright (C) 2011-2013 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import product
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file

=== added file 'multi_image_sample/__openerp__.py'
--- multi_image_sample/__openerp__.py	1970-01-01 00:00:00 +0000
+++ multi_image_sample/__openerp__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>)
+#    Copyright (C) 2011-2013 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+{
+    "name" : "Multi Image Sample",
+    "version" : "1.0",
+    "author" : "Serpent Consulting Services Pvt. Ltd.",
+    'website': 'http://www.serpentcs.com',
+    "category": 'Image',
+    'complexity': "easy",
+    'depends': ['multi_image', 'product'],
+    "description": """
+        This module is used for added multi image widget in product.
+    """,
+    'update_xml': ['product_view.xml'],
+    'installable': True,
+    'auto_install': False,
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'multi_image_sample/product.py'
--- multi_image_sample/product.py	1970-01-01 00:00:00 +0000
+++ multi_image_sample/product.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#    
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>)
+#    Copyright (C) 2011-2013 Serpent Consulting Services Pvt. Ltd. (<http://www.serpentcs.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.osv import fields, osv
+
+class product_product(osv.osv):
+    _inherit = "product.product"
+
+    _columns = {
+        'multi_images': fields.text("Multi Images"),
+    }
+
+product_product()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file

=== added file 'multi_image_sample/product_view.xml'
--- multi_image_sample/product_view.xml	1970-01-01 00:00:00 +0000
+++ multi_image_sample/product_view.xml	2014-04-22 22:55:50 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record id="product_normal_multi_imageform_view" model="ir.ui.view">
+            <field name="name">product.normal..multi.image.form.inherit</field>
+            <field name="model">product.product</field>
+            <field name="priority">5</field>
+            <field name="inherit_id" ref="product.product_normal_form_view"/>
+            <field name="arch" type="xml">
+                <notebook position="inside">
+                    <page string="Images">
+                        <field name="multi_images" widget="image_multi"/>
+                    </page>
+                </notebook>
+            </field>
+        </record>
+
+    </data>
+</openerp>

=== added directory 'multi_image_sample/static'
=== added directory 'multi_image_sample/static/src'
=== added directory 'multi_image_sample/static/src/img'
=== added file 'multi_image_sample/static/src/img/icon.png'
Binary files multi_image_sample/static/src/img/icon.png	1970-01-01 00:00:00 +0000 and multi_image_sample/static/src/img/icon.png	2014-04-22 22:55:50 +0000 differ
=== added directory 'portal_public_documents'
=== added file 'portal_public_documents/__init__.py'
--- portal_public_documents/__init__.py	1970-01-01 00:00:00 +0000
+++ portal_public_documents/__init__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,2 @@
+import model
+import controllers

=== added file 'portal_public_documents/__openerp__.py'
--- portal_public_documents/__openerp__.py	1970-01-01 00:00:00 +0000
+++ portal_public_documents/__openerp__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,41 @@
+#-*- encoding: utf-8 -*-
+{
+    'name': "Portal Document Public",
+    'website': 'http://www.vauxoo.com',
+    'category': 'Portal',
+    'author': 'Vauxoo',
+    'description': """
+With this module we will intend to build a "Public Link" to be served as public via http with and
+without allow the indexing of it.
+
+The plan: Extend document module adding a field "Public Link" which will be relative to the url
+base.
+
+Extend the ir_config parameters to configure the public folder and serve it as werkzeug is doing
+inside openerp.
+
+Share the link extending the "many2many tag widget."
+    """,
+    'category': 'Tools',
+    'depends':[
+        'web',
+        'base',
+        'document',
+        'portal_anonymous',
+        ],
+    'data': [
+        'view/ir_attachment_view.xml',
+        'data/portal_public_document_data.xml',
+        'data/ppd_scheduler.xml',
+        ],
+    'demo': [
+        'demo/portal_public_document_demo.xml',
+        ],
+    'js': [
+        ],
+    'css': [
+        ],
+    'qweb': [
+        ],
+    'installable': True,
+}

=== added directory 'portal_public_documents/controllers'
=== added file 'portal_public_documents/controllers/__init__.py'
--- portal_public_documents/controllers/__init__.py	1970-01-01 00:00:00 +0000
+++ portal_public_documents/controllers/__init__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,1 @@
+import main

=== added file 'portal_public_documents/controllers/main.py'
--- portal_public_documents/controllers/main.py	1970-01-01 00:00:00 +0000
+++ portal_public_documents/controllers/main.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+
+from web import http
+from openerp.addons.web.controllers.main import Binary
+openerpweb = http
+import simplejson
+import time
+import openerp
+import os
+import StringIO
+import xmlrpclib
+import base64
+'''
+class Binary(Binary):
+    @openerpweb.httprequest
+    def upload_attachment(self, req, callback, model, id, ufile):
+        Model = req.session.model('ir.attachment')
+        ModelXML = req.session.model('ir.model.data')
+        group_folder_id = ModelXML.get_object_reference(
+                'portal_public_documents',
+                'portal_public_mail_groups_folder')
+        out = """<script language="javascript" type="text/javascript">
+                    var win = window.top.window;
+                    win.jQuery(win).trigger(%s, %s);
+                </script>"""
+        try:
+            attachment_id = Model.create({
+                'name': ufile.filename,
+                'datas': base64.encodestring(ufile.read()),
+                'datas_fname': ufile.filename,
+                'res_model': model,
+                'res_id': int(id),
+            }, req.context)
+            args = {
+                'filename': ufile.filename,
+                'id':  attachment_id
+            }
+        except xmlrpclib.Fault, e:
+            args = {'error':e.faultCode }
+        return out % (simplejson.dumps(callback), simplejson.dumps(args))
+'''

=== added directory 'portal_public_documents/data'
=== added file 'portal_public_documents/data/portal_public_document_data.xml'
--- portal_public_documents/data/portal_public_document_data.xml	1970-01-01 00:00:00 +0000
+++ portal_public_documents/data/portal_public_document_data.xml	2014-04-22 22:55:50 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<openerp>
+<data>
+    <record model="document.directory.content.type" id="png">
+        <field name="code">.png</field>
+        <field name="name">PNG Image</field>
+        <field name="mimetype">image/png</field>
+    </record>
+    <record model="document.directory.content.type" id="jpg">
+        <field name="code">.jpg</field>
+        <field name="name">JPG Image</field>
+        <field name="mimetype">image/jpg</field>
+    </record>
+    <record model="document.directory.content.type" id="jpeg">
+        <field name="code">.jpeg</field>
+        <field name="name">JPEG Image</field>
+        <field name="mimetype">image/jpeg</field>
+    </record>
+    <record model="document.directory.content.type" id="jpeg">
+        <field name="code">.jpeg</field>
+        <field name="name">JPEG Image</field>
+        <field name="mimetype">image/pjpeg</field>
+    </record>
+    <record model="document.directory.content.type" id="gif">
+        <field name="code">.gif</field>
+        <field name="name">GIF Image</field>
+        <field name="mimetype">image/gif</field>
+    </record>
+</data>
+<data>
+    <!-- Pre Create a public Folder. -->
+    <record model="document.directory" id="dir_public_root">
+        <field name="name">Public</field>
+        <field name="user_id" eval="False"/>
+        <field name="group_ids" eval="[(6,0,[ref('share.group_share_user')])]"/>
+        <field name="publish" eval="True"/>
+        <field name="ressource_id">0</field>
+    </record>
+    <!-- Pre Create a public Folder for mail.group. -->
+    <record model="document.directory" id="portal_public_mail_groups_folder">
+        <field name="name">Mail Group Folder</field>
+        <field name="user_id" eval="False"/>
+        <field name="group_ids" eval="[(6,0,[ref('share.group_share_user')])]"/>
+        <field name="publish" eval="True"/>
+        <field name="type">ressource</field>
+        <field name="parent_id" eval="ref('dir_public_root')"/>
+        <field name="ressource_type_id" eval="ref('mail.model_mail_group')"/>
+        <field name="resource_find_all" eval="False"/>
+        <field name="ressource_id">0</field>
+    </record>
+</data>
+</openerp>

=== added file 'portal_public_documents/data/ppd_scheduler.xml'
--- portal_public_documents/data/ppd_scheduler.xml	1970-01-01 00:00:00 +0000
+++ portal_public_documents/data/ppd_scheduler.xml	2014-04-22 22:55:50 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<openerp>
+<data>
+    <record model="ir.cron" id="run_autovacuum_public">
+        <field name="name">Reset Public Files</field>
+        <field name="interval_number">60</field>
+        <field name="interval_type">minutes</field>
+        <field name="numbercall">-1</field>
+        <field name="model">ir.attachment</field>
+        <field name="function">run_autovacuum</field>
+    </record>
+</data>
+</openerp>

=== added directory 'portal_public_documents/demo'
=== added file 'portal_public_documents/demo/portal_public_document_demo.xml'
--- portal_public_documents/demo/portal_public_document_demo.xml	1970-01-01 00:00:00 +0000
+++ portal_public_documents/demo/portal_public_document_demo.xml	2014-04-22 22:55:50 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<openerp>
+<data>
+	<record id="public_folder_paremeter" model="ir.config_parameter">
+        <field name="key">ir_attachment.plocation</field>
+        <field name="value">file:///static/files</field>
+    </record>
+</data>
+<data>
+
+	<record id="public_attachment_demo" model="ir.attachment">
+	<field name="parent_id" ref="dir_public_root"/>
+	<field name="datas">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</field>
+	<field name="datas_fname">HelloWorld.png</field>
+	<field name="name">HelloWorld.png</field>
+</record>
+</data>
+</openerp>

=== added directory 'portal_public_documents/i18n'
=== added directory 'portal_public_documents/model'
=== added file 'portal_public_documents/model/__init__.py'
--- portal_public_documents/model/__init__.py	1970-01-01 00:00:00 +0000
+++ portal_public_documents/model/__init__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,1 @@
+import ir_attachment

=== added file 'portal_public_documents/model/ir_attachment.py'
--- portal_public_documents/model/ir_attachment.py	1970-01-01 00:00:00 +0000
+++ portal_public_documents/model/ir_attachment.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,241 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import hashlib
+import itertools
+import logging
+import os
+import re
+from shutil import copyfile, rmtree
+
+from openerp import tools
+from openerp import addons
+from openerp import SUPERUSER_ID
+from openerp.tools.translate import _
+from openerp.osv import fields, osv
+_logger = logging.getLogger(__name__)
+
+
+class document_directory(osv.osv):
+    _inherit = 'document.directory'
+    _columns = {
+        'publish': fields.boolean('Allow Publish',
+                                  help='If you want allow files under this directory be published '
+                                       'directly as an http file.'),
+    }
+
+
+class ir_attachment(osv.Model):
+
+    '''OverWrite Document Class to ensure add the new coputeb field to know the public link'''
+
+    _inherit = 'ir.attachment'
+
+    def _get_anonymous_id(self, cr, uid, ids, context=None):
+        ir_model_data = self.pool.get('ir.model.data')
+        users_obj = self.pool.get('res.users')
+        anonymous_data_id = ir_model_data.get_object_reference(
+            cr, SUPERUSER_ID, 'portal_anonymous',
+            'anonymous_user')
+        anonymous_id = ir_model_data.browse(cr, SUPERUSER_ID, [
+                                            anonymous_data_id[1]], context=context)
+        anonymous_brw = users_obj.browse(cr, SUPERUSER_ID, [
+                                         anonymous_id[0].id], context=context)
+        return anonymous_brw and anonymous_brw[0] or False
+
+    def _full_url_plocation(self, cr, uid, location, path):
+        # location = 'file:filestore'
+        assert location.startswith(
+            'file:'), "Unhandled filestore location %s" % location
+        location = location[5:]
+
+        # sanitize location name and path
+        location = re.sub('[.]', '', location)
+        location = location.strip('/\\')
+
+        path = re.sub('[.]', '', path)
+        path = path.strip('/\\')
+        # TODO: Change for url manipulation lib
+        base_url = self.pool.get('ir.config_parameter').get_param(cr, uid,
+                                                                  'web.base.url')
+        return os.path.join(base_url, 'portal_public_documents', location, cr.dbname, path)
+
+    def _get_public_path(self, cr, uid, ids, name, arg, context=None):
+        if context is None:
+            context = {}
+        res = {}
+        doc_brw = self.browse(cr, SUPERUSER_ID, ids, context=context)
+        a_id = self._get_anonymous_id(cr, SUPERUSER_ID, ids, context=context)
+        plocation = self.pool.get('ir.config_parameter').get_param(cr, uid,
+                                                                   'ir_attachment.plocation')
+        for d in doc_brw:
+            if not d.store_fname:
+                res[d.id] = False
+            else:
+                if d and d.user_id == a_id:
+                    res[d.id] = self._full_url_plocation(
+                        cr, uid, plocation, d.store_fname)
+                else:
+                    res[d.id] = False
+        return res
+
+    _columns = {
+        'public_path': fields.function(_get_public_path, 'Public Path', method=True, store=False,
+        fnct_inv=None, type='char', size=1024, fnct_search=None,
+        help='''Public path for this file, if "Allow Public access is checked in the Folder and it
+        is owned by Anonymous."'''),
+    }
+
+    def _full_path_plocation(self, cr, uid, location, path):
+        # location = 'file:filestore'
+        assert location.startswith(
+            'file:'), "Unhandled filestore location %s" % location
+        location = location[5:]
+
+        # sanitize location name and path
+        location = re.sub('[.]', '', location)
+        location = location.strip('/\\')
+        path = re.sub('[.]', '', path)
+        path = path.strip('/\\')
+        return os.path.join(addons.portal_public_documents.__path__[0], location, cr.dbname, path)
+
+    def publish_document(self, cr, uid, ids, context=None):
+        '''
+        Make Public a list of attachments.
+        A file is public IF the user_id is anonymous
+        '''
+        a_brw = self._get_anonymous_id(cr, uid, ids, context=context)
+        doc_brw = self.browse(cr, uid, ids, context=context)
+        location = self.pool.get('ir.config_parameter').get_param(cr, uid,
+                                                                  'ir_attachment.location')
+        plocation = self.pool.get('ir.config_parameter').get_param(cr, uid,
+                                                                   'ir_attachment.plocation')
+        dict_write = a_brw and {'user_id': a_brw.id} or {}
+        for d in doc_brw:
+            if d.parent_id.publish:
+                # Write in db first, if something happend, nothing happen
+                d.write(dict_write, context=context)
+                # TODO: This copy process must be done,
+                # 1.- With an user different and secure.
+                # 2.- Maybe this files will be accessed by a web-server too!
+                # explain clearly in documentation how to do that.
+                # 3.- Is secure use the same name?
+                # 4.- TODO: Always is insecure be in touch of make public a file, maybe sincronize
+                # with external tools like Gdocs, Dropbox or even put on a scp or ftp public server
+                # is a better approach
+                if not d.store_fname:
+                    raise osv.except_osv(_('Security!'), 'Store Fname no setted Try to recreate'
+                                         ' the file or use an export/import script to convert this'
+                                         'file in a file saved on the file system. '
+                                         '%s ' % d.store_fname)
+                if not plocation:
+                    raise osv.except_osv(_(
+                        'Security!'), 'Public location not setted go to Setting')
+                destiny = self._full_path_plocation(
+                    cr, uid, plocation, d.store_fname)
+                origin = self._full_path(cr, uid, location, d.store_fname)
+                try:
+                    dirname = os.path.dirname(destiny)
+                    if not os.path.isdir(dirname):
+                        os.makedirs(dirname)
+                    copyfile(origin, destiny)
+                except IOError:
+                    _logger.error("Making public error writing from %s to %s" % (
+                        origin, destiny))
+                #(location and plocation) and shutil
+            else:
+                raise osv.except_osv(_('Security!'),
+                                     _('You can not make public a File in a folder that is not '
+                                       'explicitally marked as '
+                                       '"Allowe Publish" it is happening sharing the file'
+                                       '%s in the folder %s' % (d.name, d.parent_id.name)))
+        return True
+
+    def unpublish_document(self, cr, uid, ids, context=None):
+        doc_brw = self.browse(cr, uid, ids, context=context)
+        plocation = self.pool.get('ir.config_parameter').get_param(cr, uid,
+                                                                   'ir_attachment.plocation')
+        for d in doc_brw:
+            dict_write = d.create_uid and {'user_id': d.create_uid.id} or {}
+            super(ir_attachment, self).write(cr, uid, ids, dict_write, context)
+            if not d.store_fname:
+                raise osv.except_osv(_('Security!'), 'Store Fname no setted Try to recreate'
+                                     ' the file or use an export/import script to convert this'
+                                     'file in a file saved on the file system. '
+                                     '%s ' % d.store_fname)
+            if not plocation:
+                raise osv.except_osv(_(
+                    'Security!'), 'Public location not setted go to Setting')
+            destiny = self._full_path_plocation(
+                cr, uid, plocation, d.store_fname)
+            try:
+                os.remove(destiny)
+            except IOError:
+                _logger.error('I cant delete file %s' % destiny)
+            except OSError:
+                _logger.error('This file was already deleted. %s' % destiny)
+        return True
+
+    def unlink(self, cr, uid, ids, context=None):
+        plocation = self.pool.get('ir.config_parameter').get_param(cr, uid,
+                                                                   'ir_attachment.plocation')
+        if plocation:
+            for attach in self.browse(cr, uid, ids, context=context):
+                destiny = self._full_path_plocation(
+                    cr, uid, plocation, attach.store_fname)
+                try:
+                    os.remove(destiny)
+                except IOError:
+                    _logger.error('I cant delete file %s' % destiny)
+                except OSError:
+                    _logger.error(
+                        'This file was already deleted. %s' % destiny)
+        return super(ir_attachment, self).unlink(cr, uid, ids, context)
+
+    def write(self, cr, uid, ids, vals, context=None):
+        self.check(cr, uid, ids, 'write', context=context, values=vals)
+        for i in self.browse(cr, uid, ids, context=context):
+            if i.public_path:
+                self.unpublish_document(cr, uid, [i.id], context=context)
+        return super(ir_attachment, self).write(cr, uid, ids, vals, context)
+
+    def run_autovacuum(self, cr, uid, context=None):
+        if context is None:
+            context = {}
+        def location_p(f):
+            return self._full_path_plocation(cr, uid, plocation, i)
+        a_brw = self._get_anonymous_id(cr, uid, [], context=context)
+        public_ids = self.search(cr, uid, [('user_id', '=', a_brw.id)], context=context)
+        _logger.info('Running Autovacuum Files all your public files will be reseted %s ' %
+                str(public_ids))
+        #I make no public, and then make public again, in this way we ensure all public information
+        #is reseted.
+        self.unpublish_document(cr, uid, public_ids, context=context)
+        plocation = self.pool.get('ir.config_parameter').get_param(cr, uid,
+                                                                   'ir_attachment.plocation')
+        destiny = self._full_path_plocation(
+                cr, uid, plocation, '')
+        p_files = os.listdir(destiny)
+        _logger.info('Destiny folder %s was empty totally' % destiny)
+        if os.path.isdir(destiny):
+            [rmtree(location_p(i)) for i in p_files]
+        self.publish_document(cr, uid, public_ids, context=context)
+        return True

=== added directory 'portal_public_documents/static'
=== added directory 'portal_public_documents/static/files'
=== added directory 'portal_public_documents/view'
=== added file 'portal_public_documents/view/ir_attachment_view.xml'
--- portal_public_documents/view/ir_attachment_view.xml	1970-01-01 00:00:00 +0000
+++ portal_public_documents/view/ir_attachment_view.xml	2014-04-22 22:55:50 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+        <record id="view_attachment_public_form" model="ir.ui.view">
+            <field name="inherit_id" ref="base.view_attachment_form"/>
+            <field name="model">ir.attachment</field>
+            <field name="arch" type="xml">
+                <xpath expr="//sheet" position="before">
+                    <header>
+                    <button type="object" string="Publish" class="oe_highlight oe_inline" name="publish_document"
+                        attrs="{'invisible': [('public_path', '!=', False)]}"
+help="This document actually is private and you can access it trought and http link if you click this button, to be able to share this kind of document you must ask access to administrator to be sure you have the correct acces rights to share internal documents, You must be part of 'Share User' group to put publically your own documents and you must be part od 'Share Manager' to share documents owned by others, 'All this is true if the folder allow Share Public Access'."/>
+                    <button type="object" string="Unpublish" class="oe_highlight oe_inline" name="unpublish_document"
+                        attrs="{'invisible': [('public_path', '=', False)]}"
+help="Stop share this document, If it is owned by you or if you are part of 'Share Manager' users.'"/>
+                    <div class="oe_form_box_info oe_text_center" attrs="{'invisible': [('public_path', '=', False)]}">
+                        <p>You can access to this file publically in the following link</p>
+                      <field name="public_path" widget="url"/>
+                    </div>
+                    </header>
+                </xpath>
+            </field>
+        </record>
+        <record model="ir.ui.view" id="view_document_directory_publish_form">
+            <field name="inherit_id" ref="document.view_document_directory_form"/>
+            <field name="model">document.directory</field>
+            <field name="arch" type="xml">
+                <xpath expr="//field[@name='name']" position="after">
+                    <field name="publish"/>
+                </xpath>
+            </field>
+        </record>
+    </data>
+</openerp>

=== added directory 'web_allow_custom_root'
=== added file 'web_allow_custom_root/__init__.py'
--- web_allow_custom_root/__init__.py	1970-01-01 00:00:00 +0000
+++ web_allow_custom_root/__init__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,30 @@
+from openerp.tools import config
+from openerp.addons import web
+
+web.controllers.main.html_template = """<!DOCTYPE html>
+<html style="height: 100%%">
+    <head>
+        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
+        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+        <title>OpenERP</title>
+        <link rel="shortcut icon" href="""+config.get('favicon', '/web/static/src/img/favicon.ico')+""" type="image/x-icon"/>
+        <link rel="stylesheet" href="/web/static/src/css/full.css" />
+        %(css)s
+        %(js)s
+        <script type="text/javascript">
+            $(function() {
+                var s = new openerp.init(%(modules)s);
+                %(init)s
+            });
+        </script>
+        <script src='"""+config.get('gmaps_api_key', '')+"""' type="text/javascript">
+        </script>
+    </head>
+    <body>
+        <!--[if lte IE 8]>
+        <script src="//ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js"></script>
+        <script>CFInstall.check({mode: "overlay"});</script>
+        <![endif]-->
+    </body>
+</html>
+"""

=== added file 'web_allow_custom_root/__openerp__.py'
--- web_allow_custom_root/__openerp__.py	1970-01-01 00:00:00 +0000
+++ web_allow_custom_root/__openerp__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,86 @@
+
+#-*- coding: utf-8 -*-
+###################################################################################################
+#
+#   OpenERP, Open Source Management Solution Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#   All Rights Reserved
+#   Financed and Planified by Vauxoo
+#   developed by: nhomar@xxxxxxxxxx
+#   This program is free software: you can redistribute it and/or modify it under the terms of the
+#   GNU General Public License as published by the Free Software Foundation, either version 3 of
+#   the License, or (at your option) any later version.
+#   This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+#   without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
+#   the GNU General Public License for more details.
+#   You should have received a copy of the GNU General Public License    along with this program.
+#   If not, see <http://www.gnu.org/licenses/>.
+###################################################################################################
+
+{
+    'name': "Custom Init Template Parameters",
+    'author': "Vauxoo",
+    'category': "Hidden",
+    'description': """
+Make customizable your html_template:
+=====================================
+
+Some things in the html_template variable are wired in the code.
+
+With this module we can pass them as parameters.
+
+1.- Favicon.
+------------
+
+Add the key: favicon in your config file mapping to your public available path, and it will be taken.
+
+i.e:
+
+code::
+
+    Relative:
+    favicon = /path/to/your/favicon.ico
+    Absolute:
+    favicon = https://url.com/path/to/your/favicon.ico
+
+    default:
+    '/web/static/src/img/favicon.ico'
+
+2.- Extra js Scripts.
+---------------------
+
+Add a key: script_extra_`NAME`
+
+code::
+
+    script_extra_addwords = '<script type="text/javascript"> <!--//--><![CDATA[//><!-- GA_googleFetchAds(); //--><!]]> </script>'
+
+3.- Gmaps API loaded.
+---------------------
+
+i.e:
+
+code::
+
+    gmaps_api_key = "https://maps.googleapis.com/maps/api/js?key=API_KEY&sensor=SET_TO_TRUE_OR_FALSE";
+
+In this way you can put your customize loading stuff and/or namespace all your client to use your
+own css.
+
+If you put this module available in your addons path the variable will be overwritten and this
+options will be availables, change your config file and all will work smothly.
+
+This is used in http://www.vauxoo.com see how it loads all this information very quickly.
+    """,
+    'version': "0.1",
+    'depends': [
+        'web',
+        'base',
+        ],
+    'js': [
+    ],
+    'css': [
+    ],
+    'qweb': [
+    ],
+    'installable': True,
+}

=== added directory 'web_allow_custom_root/static'
=== added directory 'web_allow_custom_root/static/src'
=== added directory 'web_allow_custom_root/static/src/img'
=== added file 'web_allow_custom_root/static/src/img/icon.png'
Binary files web_allow_custom_root/static/src/img/icon.png	1970-01-01 00:00:00 +0000 and web_allow_custom_root/static/src/img/icon.png	2014-04-22 22:55:50 +0000 differ
=== added directory 'web_binary_icon'
=== added file 'web_binary_icon/__init__.py'
=== added file 'web_binary_icon/__openerp__.py'
--- web_binary_icon/__openerp__.py	1970-01-01 00:00:00 +0000
+++ web_binary_icon/__openerp__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,89 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution    
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Financed and Planified by Vauxoo
+#    developed by: nhomar@xxxxxxxxxx
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+{
+    'name': "Web Binary Icon",
+    'author': "Vauxoo",
+    'category': "Hidden",
+    'description': """
+Binary Icon plugin.
+===================
+
+When you are using a binary field, it is cool, if depending of the extension
+the field show the icon of the app, something like the plugin for gmail does,
+recognizing the extension and showing the correct icon.
+
+Files to consider TODO:.
+
+All openoffice extensions:
+
+ * .odt
+ * .odp
+ * .odf
+
+All Ms Office extensions:
+
+ * .xls, xlsx
+ * .doc, docx
+ * .ppt, pptx
+
+All text extentions:
+
+ * .txt
+ * .rst
+ * .xml (Usefull for electronic invoices.)
+
+Links as attachments should be cool of recognize too!.
+ 
+ * .googledoc
+
+Images should be usefull, probably working in thumbnails feature.
+
+ * .jpg
+ * .png
+ * .gif
+ * .jpeg
+ * .svg
+ * .gimp
+
+Other Formats usefull in the middle.
+
+ * .project
+ * .planner
+ * .Xmind
+ * .log
+""",
+    'version': "1.0",
+    'depends': ['web'],
+    'js': [
+        'static/src/js/lib.js', 
+    ],
+    'css': [
+    ],
+    'qweb': [
+        'static/src/xml/lib.xml',
+    ],
+    'installable': True,
+    'auto_install': False,
+    'web_preload': False,
+}

=== added directory 'web_binary_icon/i18n'
=== added directory 'web_binary_icon/static'
=== added directory 'web_binary_icon/static/src'
=== added directory 'web_binary_icon/static/src/css'
=== added directory 'web_binary_icon/static/src/img'
=== added directory 'web_binary_icon/static/src/js'
=== added directory 'web_binary_icon/static/src/xml'
=== added directory 'web_bootstrap3'
=== added file 'web_bootstrap3/__init__.py'
=== added file 'web_bootstrap3/__openerp__.py'
--- web_bootstrap3/__openerp__.py	1970-01-01 00:00:00 +0000
+++ web_bootstrap3/__openerp__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,91 @@
+#-*- coding: utf-8 -*-
+###################################################################################################
+#
+#   OpenERP, Open Source Management Solution Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#   All Rights Reserved
+#   Financed and Planified by Vauxoo
+#   developed by: nhomar@xxxxxxxxxx
+#   This program is free software: you can redistribute it and/or modify it under the terms of the
+#   GNU General Public License as published by the Free Software Foundation, either version 3 of
+#   the License, or (at your option) any later version.
+#   This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+#   without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
+#   the GNU General Public License for more details.
+#   You should have received a copy of the GNU General Public License    along with this program.
+#   If not, see <http://www.gnu.org/licenses/>.
+###################################################################################################
+
+{
+    'name': "Bootstrap 3.0 for OpenERP",
+    'author': "Vauxoo",
+    'category': "Hidden",
+    'description': """
+Bootstrap 3.0 in OpenERP
+========================
+
+Sleek, intuitive, and powerful mobile first front-end framework for faster and easier web
+development.
+
+Openerp have embeded partially Bootstrap 2.x but the new version is so powerfull.
+
+With this module you will be able to design cool views with this documentation, all what you need
+is namespace your views with a delimiter with class .bs3
+
+i.e.:
+
+::
+
+    <form version="7.0">
+    ...
+    ...
+    <pre>
+        <div class="bs3">
+            <field name="text" widget="html"/>
+        </div>
+    </pre>
+    ...
+    ...
+    ...
+    </form>
+
+Now all the content of the field ``text`` with widget ``html`` bellow will be rendered with all the
+power of bs3
+
+We include the original less files to allow you compile this when you need but you can download and
+compile by your self the original sources, just need to compile the bs3-openerp.less again pointing
+the bs3 original files.
+
+The most interesting part of this way to work is that our specific modules in terms of look and
+feel will be prepared for version 8.0.
+
+The bootstrap documentation can be found here_
+
+You will find a directory called bootstrap3 with the bootstrap's source code, the main objective of
+do that is be able to just pull from original bootstrap project and commit in this module almost
+directly.
+
+Is you want compile your own version of bootstrap_ download the source code in the link_
+
+.. _here http://getbootstrap.com/
+.. _bootstrap https://github.com/twbs/bootstrap/
+.. _link https://github.com/twbs/bootstrap/
+    """,
+    'version': "1.0",
+    'depends': [
+        'web'
+        ],
+    'js': [
+        'static/src/js/bootstrap.js',
+        'static/src/js/bootstrap-lightbox.js',
+        #'static/src/js/ekko-lightbox.js',
+    ],
+    'css': [
+        'static/src/css/bs3-openerp.css',
+        'static/src/css/bs3-lightbox.css',
+    ],
+    'qweb': [
+    ],
+    'installable': True,
+    'auto_install': False,
+    'web_preload': False, #set to True if you want this module be available always without ask.
+}

=== added directory 'web_bootstrap3/static'
=== added directory 'web_bootstrap3/static/src'
=== added directory 'web_bootstrap3/static/src/css'
=== added file 'web_bootstrap3/static/src/css/bs3-lightbox.css'
--- web_bootstrap3/static/src/css/bs3-lightbox.css	1970-01-01 00:00:00 +0000
+++ web_bootstrap3/static/src/css/bs3-lightbox.css	2014-04-22 22:55:50 +0000
@@ -0,0 +1,91 @@
+/*!
+* bootstrap-lightbox.css v0.6.1 
+* Copyright 2013 Jason Butz
+* http://www.apache.org/licenses/LICENSE-2.0.txt
+*/
+.lightbox-open {
+    overflow: hidden;
+}
+
+body.lightbox-open, .lightbox-open .navbar-fixed-top, .lightbox-open .navbar-fixed-bottom {
+    margin-right: 15px;
+}
+
+.lightbox {
+    position: fixed;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 1040;
+    display: none;
+    overflow: auto;
+    overflow-y: scroll;
+}
+
+.lightbox .fade .lightbox-dialog {
+    -webkit-transform: translate(0, -25%);
+    -ms-transform: translate(0, -25%);
+    transform: translate(0, -25%);
+    -webkit-transition: -webkit-transform 0.3s ease-out;
+    -moz-transition: -moz-transform 0.3s ease-out;
+    -o-transition: -o-transform 0.3s ease-out;
+    transition: transform 0.3s ease-out;
+}
+
+.lightbox .in .lightbox-dialog {
+    -webkit-transform: translate(0, 0);
+    -ms-transform: translate(0, 0);
+    transform: translate(0, 0);
+}
+.lightbox .lightbox-dialog {
+    z-index: 1050;
+    width: auto;
+    /*padding: 10px;*/
+    margin-right: auto;
+    margin-left: auto;
+}
+.lightbox .lightbox-dialog .lightbox-header {
+    float: right;
+}
+.lightbox .lightbox-dialog .lightbox-header .close {
+    margin-top: -2px;
+}
+.lightbox .lightbox-dialog .lightbox-content {
+    position: relative;
+    display: inline-block;
+    padding: 10px;
+    background-color: #ffffff;
+    border: 1px solid #999999;
+    border: 1px solid rgba(0, 0, 0, 0.2);
+    border-radius: 6px;
+    outline: none;
+    -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+    box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+    background-clip: padding-box;
+}
+.lightbox .lightbox-dialog .lightbox-content .lightbox-caption {
+    position: absolute;
+    right: 8px;
+    bottom: 8px;
+    left: 10px;
+    padding: 2%;
+    font-size: 14px;
+    line-height: 18px;
+    color: white;
+    text-align: center;
+    text-shadow: 0 -1px 0 #000000;
+    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
+    background: #000;
+    background: rgba(0, 0, 0, 0.6);
+}
+
+.lightbox.lightbox-html {
+    position: fixed;
+    width: 1018px;
+    height: 682px;
+    top: 24px;
+    left: 50%;
+    margin-left: -509px;
+    display: none;
+}

=== added file 'web_bootstrap3/static/src/css/bs3-openerp.css'
--- web_bootstrap3/static/src/css/bs3-openerp.css	1970-01-01 00:00:00 +0000
+++ web_bootstrap3/static/src/css/bs3-openerp.css	2014-04-22 22:55:50 +0000
@@ -0,0 +1,6022 @@
+.bs3 {
+  /*!
+ * Bootstrap v3.0.0
+ *
+ * Copyright 2013 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world by @mdo and @fat.
+ */
+
+  /*! normalize.css v2.1.0 | MIT License | git.io/normalize */
+
+}
+.bs3 article,
+.bs3 aside,
+.bs3 details,
+.bs3 figcaption,
+.bs3 figure,
+.bs3 footer,
+.bs3 header,
+.bs3 hgroup,
+.bs3 main,
+.bs3 nav,
+.bs3 section,
+.bs3 summary {
+  display: block;
+}
+.bs3 audio,
+.bs3 canvas,
+.bs3 video {
+  display: inline-block;
+}
+.bs3 audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+.bs3 [hidden] {
+  display: none;
+}
+.bs3 html {
+  font-family: sans-serif;
+  -webkit-text-size-adjust: 100%;
+  -ms-text-size-adjust: 100%;
+}
+.bs3 body {
+  margin: 0;
+}
+.bs3 a:focus {
+  outline: thin dotted;
+}
+.bs3 a:active,
+.bs3 a:hover {
+  outline: 0;
+}
+.bs3 h1 {
+  font-size: 2em;
+  margin: 0.67em 0;
+}
+.bs3 abbr[title] {
+  border-bottom: 1px dotted;
+}
+.bs3 b,
+.bs3 strong {
+  font-weight: bold;
+}
+.bs3 dfn {
+  font-style: italic;
+}
+.bs3 hr {
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  height: 0;
+}
+.bs3 mark {
+  background: #ff0;
+  color: #000;
+}
+.bs3 code,
+.bs3 kbd,
+.bs3 pre,
+.bs3 samp {
+  font-family: monospace, serif;
+  font-size: 1em;
+}
+.bs3 pre {
+  white-space: pre-wrap;
+}
+.bs3 q {
+  quotes: "\201C" "\201D" "\2018" "\2019";
+}
+.bs3 small {
+  font-size: 80%;
+}
+.bs3 sub,
+.bs3 sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+.bs3 sup {
+  top: -0.5em;
+}
+.bs3 sub {
+  bottom: -0.25em;
+}
+.bs3 img {
+  border: 0;
+}
+.bs3 svg:not(:root) {
+  overflow: hidden;
+}
+.bs3 figure {
+  margin: 0;
+}
+.bs3 fieldset {
+  border: 1px solid #c0c0c0;
+  margin: 0 2px;
+  padding: 0.35em 0.625em 0.75em;
+}
+.bs3 legend {
+  border: 0;
+  padding: 0;
+}
+.bs3 button,
+.bs3 input,
+.bs3 select,
+.bs3 textarea {
+  font-family: inherit;
+  font-size: 100%;
+  margin: 0;
+}
+.bs3 button,
+.bs3 input {
+  line-height: normal;
+}
+.bs3 button,
+.bs3 select {
+  text-transform: none;
+}
+.bs3 button,
+.bs3 html input[type="button"],
+.bs3 input[type="reset"],
+.bs3 input[type="submit"] {
+  -webkit-appearance: button;
+  cursor: pointer;
+}
+.bs3 button[disabled],
+.bs3 html input[disabled] {
+  cursor: default;
+}
+.bs3 input[type="checkbox"],
+.bs3 input[type="radio"] {
+  box-sizing: border-box;
+  padding: 0;
+}
+.bs3 input[type="search"] {
+  -webkit-appearance: textfield;
+  -moz-box-sizing: content-box;
+  -webkit-box-sizing: content-box;
+  box-sizing: content-box;
+}
+.bs3 input[type="search"]::-webkit-search-cancel-button,
+.bs3 input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+.bs3 button::-moz-focus-inner,
+.bs3 input::-moz-focus-inner {
+  border: 0;
+  padding: 0;
+}
+.bs3 textarea {
+  overflow: auto;
+  vertical-align: top;
+}
+.bs3 table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+@media print {
+  .bs3 * {
+    text-shadow: none !important;
+    color: #000 !important;
+    background: transparent !important;
+    box-shadow: none !important;
+  }
+  .bs3 a,
+  .bs3 a:visited {
+    text-decoration: underline;
+  }
+  .bs3 a[href]:after {
+    content: " (" attr(href) ")";
+  }
+  .bs3 abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+  .bs3 .ir a:after,
+  .bs3 a[href^="javascript:"]:after,
+  .bs3 a[href^="#"]:after {
+    content: "";
+  }
+  .bs3 pre,
+  .bs3 blockquote {
+    border: 1px solid #999;
+    page-break-inside: avoid;
+  }
+  .bs3 thead {
+    display: table-header-group;
+  }
+  .bs3 tr,
+  .bs3 img {
+    page-break-inside: avoid;
+  }
+  .bs3 img {
+    max-width: 100% !important;
+  }
+  @page  {
+    margin: 2cm .5cm;
+  }
+  .bs3 p,
+  .bs3 h2,
+  .bs3 h3 {
+    orphans: 3;
+    widows: 3;
+  }
+  .bs3 h2,
+  .bs3 h3 {
+    page-break-after: avoid;
+  }
+  .bs3 .navbar {
+    display: none;
+  }
+  .bs3 .table td,
+  .bs3 .table th {
+    background-color: #fff !important;
+  }
+  .bs3 .btn > .caret,
+  .bs3 .dropup > .btn > .caret {
+    border-top-color: #000 !important;
+  }
+  .bs3 .label {
+    border: 1px solid #000;
+  }
+  .bs3 .table {
+    border-collapse: collapse !important;
+  }
+  .bs3 .table-bordered th,
+  .bs3 .table-bordered td {
+    border: 1px solid #ddd !important;
+  }
+}
+.bs3 *,
+.bs3 *:before,
+.bs3 *:after {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.bs3 html {
+  font-size: 62.5%;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+.bs3 body {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  line-height: 1.428571429;
+  color: #333333;
+  background-color: #ffffff;
+}
+.bs3 input,
+.bs3 button,
+.bs3 select,
+.bs3 textarea {
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+}
+.bs3 a {
+  color: #428bca;
+  text-decoration: none;
+}
+.bs3 a:hover,
+.bs3 a:focus {
+  color: #2a6496;
+  text-decoration: underline;
+}
+.bs3 a:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.bs3 img {
+  vertical-align: middle;
+}
+.bs3 .img-responsive {
+  display: block;
+  max-width: 100%;
+  height: auto;
+}
+.bs3 .img-rounded {
+  border-radius: 6px;
+}
+.bs3 .img-thumbnail {
+  padding: 4px;
+  line-height: 1.428571429;
+  background-color: #ffffff;
+  border: 1px solid #dddddd;
+  border-radius: 4px;
+  -webkit-transition: all 0.2s ease-in-out;
+  transition: all 0.2s ease-in-out;
+  display: inline-block;
+  max-width: 100%;
+  height: auto;
+}
+.bs3 .img-circle {
+  border-radius: 50%;
+}
+.bs3 hr {
+  margin-top: 20px;
+  margin-bottom: 20px;
+  border: 0;
+  border-top: 1px solid #eeeeee;
+}
+.bs3 .sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  margin: -1px;
+  padding: 0;
+  overflow: hidden;
+  clip: rect(0 0 0 0);
+  border: 0;
+}
+.bs3 p {
+  margin: 0 0 10px;
+}
+.bs3 .lead {
+  margin-bottom: 20px;
+  font-size: 16.099999999999998px;
+  font-weight: 200;
+  line-height: 1.4;
+}
+@media (min-width: 768px) {
+  .bs3 .lead {
+    font-size: 21px;
+  }
+}
+.bs3 small,
+.bs3 .small {
+  font-size: 85%;
+}
+.bs3 cite {
+  font-style: normal;
+}
+.bs3 .text-muted {
+  color: #999999;
+}
+.bs3 .text-primary {
+  color: #428bca;
+}
+.bs3 .text-primary:hover {
+  color: #3071a9;
+}
+.bs3 .text-warning {
+  color: #c09853;
+}
+.bs3 .text-warning:hover {
+  color: #a47e3c;
+}
+.bs3 .text-danger {
+  color: #b94a48;
+}
+.bs3 .text-danger:hover {
+  color: #953b39;
+}
+.bs3 .text-success {
+  color: #468847;
+}
+.bs3 .text-success:hover {
+  color: #356635;
+}
+.bs3 .text-info {
+  color: #3a87ad;
+}
+.bs3 .text-info:hover {
+  color: #2d6987;
+}
+.bs3 .text-left {
+  text-align: left;
+}
+.bs3 .text-right {
+  text-align: right;
+}
+.bs3 .text-center {
+  text-align: center;
+}
+.bs3 h1,
+.bs3 h2,
+.bs3 h3,
+.bs3 h4,
+.bs3 h5,
+.bs3 h6,
+.bs3 .h1,
+.bs3 .h2,
+.bs3 .h3,
+.bs3 .h4,
+.bs3 .h5,
+.bs3 .h6 {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-weight: 500;
+  line-height: 1.1;
+  color: inherit;
+}
+.bs3 h1 small,
+.bs3 h2 small,
+.bs3 h3 small,
+.bs3 h4 small,
+.bs3 h5 small,
+.bs3 h6 small,
+.bs3 .h1 small,
+.bs3 .h2 small,
+.bs3 .h3 small,
+.bs3 .h4 small,
+.bs3 .h5 small,
+.bs3 .h6 small {
+  font-weight: normal;
+  line-height: 1;
+  color: #999999;
+}
+.bs3 h1,
+.bs3 h2,
+.bs3 h3 {
+  margin-top: 20px;
+  margin-bottom: 10px;
+}
+.bs3 h1 small,
+.bs3 h2 small,
+.bs3 h3 small {
+  font-size: 65%;
+}
+.bs3 h4,
+.bs3 h5,
+.bs3 h6 {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.bs3 h4 small,
+.bs3 h5 small,
+.bs3 h6 small {
+  font-size: 75%;
+}
+.bs3 h1,
+.bs3 .h1 {
+  font-size: 36px;
+}
+.bs3 h2,
+.bs3 .h2 {
+  font-size: 30px;
+}
+.bs3 h3,
+.bs3 .h3 {
+  font-size: 24px;
+}
+.bs3 h4,
+.bs3 .h4 {
+  font-size: 18px;
+}
+.bs3 h5,
+.bs3 .h5 {
+  font-size: 14px;
+}
+.bs3 h6,
+.bs3 .h6 {
+  font-size: 12px;
+}
+.bs3 .page-header {
+  padding-bottom: 9px;
+  margin: 40px 0 20px;
+  border-bottom: 1px solid #eeeeee;
+}
+.bs3 ul,
+.bs3 ol {
+  margin-top: 0;
+  margin-bottom: 10px;
+}
+.bs3 ul ul,
+.bs3 ol ul,
+.bs3 ul ol,
+.bs3 ol ol {
+  margin-bottom: 0;
+}
+.bs3 .list-unstyled {
+  padding-left: 0;
+  list-style: none;
+}
+.bs3 .list-inline {
+  padding-left: 0;
+  list-style: none;
+}
+.bs3 .list-inline > li {
+  display: inline-block;
+  padding-left: 5px;
+  padding-right: 5px;
+}
+.bs3 dl {
+  margin-bottom: 20px;
+}
+.bs3 dt,
+.bs3 dd {
+  line-height: 1.428571429;
+}
+.bs3 dt {
+  font-weight: bold;
+}
+.bs3 dd {
+  margin-left: 0;
+}
+@media (min-width: 768px) {
+  .bs3 .dl-horizontal dt {
+    float: left;
+    width: 160px;
+    clear: left;
+    text-align: right;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .bs3 .dl-horizontal dd {
+    margin-left: 180px;
+  }
+  .bs3 .dl-horizontal dd:before,
+  .bs3 .dl-horizontal dd:after {
+    content: " ";
+    /* 1 */
+  
+    display: table;
+    /* 2 */
+  
+  }
+  .bs3 .dl-horizontal dd:after {
+    clear: both;
+  }
+  .bs3 .dl-horizontal dd:before,
+  .bs3 .dl-horizontal dd:after {
+    content: " ";
+    /* 1 */
+  
+    display: table;
+    /* 2 */
+  
+  }
+  .bs3 .dl-horizontal dd:after {
+    clear: both;
+  }
+}
+.bs3 abbr[title],
+.bs3 abbr[data-original-title] {
+  cursor: help;
+  border-bottom: 1px dotted #999999;
+}
+.bs3 abbr.initialism {
+  font-size: 90%;
+  text-transform: uppercase;
+}
+.bs3 blockquote {
+  padding: 10px 20px;
+  margin: 0 0 20px;
+  border-left: 5px solid #eeeeee;
+}
+.bs3 blockquote p {
+  font-size: 17.5px;
+  font-weight: 300;
+  line-height: 1.25;
+}
+.bs3 blockquote p:last-child {
+  margin-bottom: 0;
+}
+.bs3 blockquote small {
+  display: block;
+  line-height: 1.428571429;
+  color: #999999;
+}
+.bs3 blockquote small:before {
+  content: '\2014 \00A0';
+}
+.bs3 blockquote.pull-right {
+  padding-right: 15px;
+  padding-left: 0;
+  border-right: 5px solid #eeeeee;
+  border-left: 0;
+}
+.bs3 blockquote.pull-right p,
+.bs3 blockquote.pull-right small {
+  text-align: right;
+}
+.bs3 blockquote.pull-right small:before {
+  content: '';
+}
+.bs3 blockquote.pull-right small:after {
+  content: '\00A0 \2014';
+}
+.bs3 q:before,
+.bs3 q:after,
+.bs3 blockquote:before,
+.bs3 blockquote:after {
+  content: "";
+}
+.bs3 address {
+  display: block;
+  margin-bottom: 20px;
+  font-style: normal;
+  line-height: 1.428571429;
+}
+.bs3 code,
+.bs3 pre {
+  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
+}
+.bs3 code {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #c7254e;
+  background-color: #f9f2f4;
+  white-space: nowrap;
+  border-radius: 4px;
+}
+.bs3 pre {
+  display: block;
+  padding: 9.5px;
+  margin: 0 0 10px;
+  font-size: 13px;
+  line-height: 1.428571429;
+  word-break: break-all;
+  word-wrap: break-word;
+  color: #333333;
+  background-color: #f5f5f5;
+  border: 1px solid #cccccc;
+  border-radius: 4px;
+}
+.bs3 pre.prettyprint {
+  margin-bottom: 20px;
+}
+.bs3 pre code {
+  padding: 0;
+  font-size: inherit;
+  color: inherit;
+  white-space: pre-wrap;
+  background-color: transparent;
+  border: 0;
+}
+.bs3 .pre-scrollable {
+  max-height: 340px;
+  overflow-y: scroll;
+}
+.bs3 .container {
+  margin-right: auto;
+  margin-left: auto;
+  padding-left: 15px;
+  padding-right: 15px;
+}
+.bs3 .container:before,
+.bs3 .container:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .container:after {
+  clear: both;
+}
+.bs3 .container:before,
+.bs3 .container:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .container:after {
+  clear: both;
+}
+.bs3 .row {
+  margin-left: -15px;
+  margin-right: -15px;
+}
+.bs3 .row:before,
+.bs3 .row:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .row:after {
+  clear: both;
+}
+.bs3 .row:before,
+.bs3 .row:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .row:after {
+  clear: both;
+}
+.bs3 .col-xs-1,
+.bs3 .col-xs-2,
+.bs3 .col-xs-3,
+.bs3 .col-xs-4,
+.bs3 .col-xs-5,
+.bs3 .col-xs-6,
+.bs3 .col-xs-7,
+.bs3 .col-xs-8,
+.bs3 .col-xs-9,
+.bs3 .col-xs-10,
+.bs3 .col-xs-11,
+.bs3 .col-xs-12,
+.bs3 .col-sm-1,
+.bs3 .col-sm-2,
+.bs3 .col-sm-3,
+.bs3 .col-sm-4,
+.bs3 .col-sm-5,
+.bs3 .col-sm-6,
+.bs3 .col-sm-7,
+.bs3 .col-sm-8,
+.bs3 .col-sm-9,
+.bs3 .col-sm-10,
+.bs3 .col-sm-11,
+.bs3 .col-sm-12,
+.bs3 .col-md-1,
+.bs3 .col-md-2,
+.bs3 .col-md-3,
+.bs3 .col-md-4,
+.bs3 .col-md-5,
+.bs3 .col-md-6,
+.bs3 .col-md-7,
+.bs3 .col-md-8,
+.bs3 .col-md-9,
+.bs3 .col-md-10,
+.bs3 .col-md-11,
+.bs3 .col-md-12,
+.bs3 .col-lg-1,
+.bs3 .col-lg-2,
+.bs3 .col-lg-3,
+.bs3 .col-lg-4,
+.bs3 .col-lg-5,
+.bs3 .col-lg-6,
+.bs3 .col-lg-7,
+.bs3 .col-lg-8,
+.bs3 .col-lg-9,
+.bs3 .col-lg-10,
+.bs3 .col-lg-11,
+.bs3 .col-lg-12 {
+  position: relative;
+  min-height: 1px;
+  padding-left: 15px;
+  padding-right: 15px;
+}
+.bs3 .col-xs-1,
+.bs3 .col-xs-2,
+.bs3 .col-xs-3,
+.bs3 .col-xs-4,
+.bs3 .col-xs-5,
+.bs3 .col-xs-6,
+.bs3 .col-xs-7,
+.bs3 .col-xs-8,
+.bs3 .col-xs-9,
+.bs3 .col-xs-10,
+.bs3 .col-xs-11 {
+  float: left;
+}
+.bs3 .col-xs-1 {
+  width: 8.333333333333332%;
+}
+.bs3 .col-xs-2 {
+  width: 16.666666666666664%;
+}
+.bs3 .col-xs-3 {
+  width: 25%;
+}
+.bs3 .col-xs-4 {
+  width: 33.33333333333333%;
+}
+.bs3 .col-xs-5 {
+  width: 41.66666666666667%;
+}
+.bs3 .col-xs-6 {
+  width: 50%;
+}
+.bs3 .col-xs-7 {
+  width: 58.333333333333336%;
+}
+.bs3 .col-xs-8 {
+  width: 66.66666666666666%;
+}
+.bs3 .col-xs-9 {
+  width: 75%;
+}
+.bs3 .col-xs-10 {
+  width: 83.33333333333334%;
+}
+.bs3 .col-xs-11 {
+  width: 91.66666666666666%;
+}
+.bs3 .col-xs-12 {
+  width: 100%;
+}
+@media (min-width: 768px) {
+  .bs3 .container {
+    width: 750px;
+  }
+  .bs3 .col-sm-1,
+  .bs3 .col-sm-2,
+  .bs3 .col-sm-3,
+  .bs3 .col-sm-4,
+  .bs3 .col-sm-5,
+  .bs3 .col-sm-6,
+  .bs3 .col-sm-7,
+  .bs3 .col-sm-8,
+  .bs3 .col-sm-9,
+  .bs3 .col-sm-10,
+  .bs3 .col-sm-11 {
+    float: left;
+  }
+  .bs3 .col-sm-1 {
+    width: 8.333333333333332%;
+  }
+  .bs3 .col-sm-2 {
+    width: 16.666666666666664%;
+  }
+  .bs3 .col-sm-3 {
+    width: 25%;
+  }
+  .bs3 .col-sm-4 {
+    width: 33.33333333333333%;
+  }
+  .bs3 .col-sm-5 {
+    width: 41.66666666666667%;
+  }
+  .bs3 .col-sm-6 {
+    width: 50%;
+  }
+  .bs3 .col-sm-7 {
+    width: 58.333333333333336%;
+  }
+  .bs3 .col-sm-8 {
+    width: 66.66666666666666%;
+  }
+  .bs3 .col-sm-9 {
+    width: 75%;
+  }
+  .bs3 .col-sm-10 {
+    width: 83.33333333333334%;
+  }
+  .bs3 .col-sm-11 {
+    width: 91.66666666666666%;
+  }
+  .bs3 .col-sm-12 {
+    width: 100%;
+  }
+  .bs3 .col-sm-push-1 {
+    left: 8.333333333333332%;
+  }
+  .bs3 .col-sm-push-2 {
+    left: 16.666666666666664%;
+  }
+  .bs3 .col-sm-push-3 {
+    left: 25%;
+  }
+  .bs3 .col-sm-push-4 {
+    left: 33.33333333333333%;
+  }
+  .bs3 .col-sm-push-5 {
+    left: 41.66666666666667%;
+  }
+  .bs3 .col-sm-push-6 {
+    left: 50%;
+  }
+  .bs3 .col-sm-push-7 {
+    left: 58.333333333333336%;
+  }
+  .bs3 .col-sm-push-8 {
+    left: 66.66666666666666%;
+  }
+  .bs3 .col-sm-push-9 {
+    left: 75%;
+  }
+  .bs3 .col-sm-push-10 {
+    left: 83.33333333333334%;
+  }
+  .bs3 .col-sm-push-11 {
+    left: 91.66666666666666%;
+  }
+  .bs3 .col-sm-pull-1 {
+    right: 8.333333333333332%;
+  }
+  .bs3 .col-sm-pull-2 {
+    right: 16.666666666666664%;
+  }
+  .bs3 .col-sm-pull-3 {
+    right: 25%;
+  }
+  .bs3 .col-sm-pull-4 {
+    right: 33.33333333333333%;
+  }
+  .bs3 .col-sm-pull-5 {
+    right: 41.66666666666667%;
+  }
+  .bs3 .col-sm-pull-6 {
+    right: 50%;
+  }
+  .bs3 .col-sm-pull-7 {
+    right: 58.333333333333336%;
+  }
+  .bs3 .col-sm-pull-8 {
+    right: 66.66666666666666%;
+  }
+  .bs3 .col-sm-pull-9 {
+    right: 75%;
+  }
+  .bs3 .col-sm-pull-10 {
+    right: 83.33333333333334%;
+  }
+  .bs3 .col-sm-pull-11 {
+    right: 91.66666666666666%;
+  }
+  .bs3 .col-sm-offset-1 {
+    margin-left: 8.333333333333332%;
+  }
+  .bs3 .col-sm-offset-2 {
+    margin-left: 16.666666666666664%;
+  }
+  .bs3 .col-sm-offset-3 {
+    margin-left: 25%;
+  }
+  .bs3 .col-sm-offset-4 {
+    margin-left: 33.33333333333333%;
+  }
+  .bs3 .col-sm-offset-5 {
+    margin-left: 41.66666666666667%;
+  }
+  .bs3 .col-sm-offset-6 {
+    margin-left: 50%;
+  }
+  .bs3 .col-sm-offset-7 {
+    margin-left: 58.333333333333336%;
+  }
+  .bs3 .col-sm-offset-8 {
+    margin-left: 66.66666666666666%;
+  }
+  .bs3 .col-sm-offset-9 {
+    margin-left: 75%;
+  }
+  .bs3 .col-sm-offset-10 {
+    margin-left: 83.33333333333334%;
+  }
+  .bs3 .col-sm-offset-11 {
+    margin-left: 91.66666666666666%;
+  }
+}
+@media (min-width: 992px) {
+  .bs3 .container {
+    width: 970px;
+  }
+  .bs3 .col-md-1,
+  .bs3 .col-md-2,
+  .bs3 .col-md-3,
+  .bs3 .col-md-4,
+  .bs3 .col-md-5,
+  .bs3 .col-md-6,
+  .bs3 .col-md-7,
+  .bs3 .col-md-8,
+  .bs3 .col-md-9,
+  .bs3 .col-md-10,
+  .bs3 .col-md-11 {
+    float: left;
+  }
+  .bs3 .col-md-1 {
+    width: 8.333333333333332%;
+  }
+  .bs3 .col-md-2 {
+    width: 16.666666666666664%;
+  }
+  .bs3 .col-md-3 {
+    width: 25%;
+  }
+  .bs3 .col-md-4 {
+    width: 33.33333333333333%;
+  }
+  .bs3 .col-md-5 {
+    width: 41.66666666666667%;
+  }
+  .bs3 .col-md-6 {
+    width: 50%;
+  }
+  .bs3 .col-md-7 {
+    width: 58.333333333333336%;
+  }
+  .bs3 .col-md-8 {
+    width: 66.66666666666666%;
+  }
+  .bs3 .col-md-9 {
+    width: 75%;
+  }
+  .bs3 .col-md-10 {
+    width: 83.33333333333334%;
+  }
+  .bs3 .col-md-11 {
+    width: 91.66666666666666%;
+  }
+  .bs3 .col-md-12 {
+    width: 100%;
+  }
+  .bs3 .col-md-push-0 {
+    left: auto;
+  }
+  .bs3 .col-md-push-1 {
+    left: 8.333333333333332%;
+  }
+  .bs3 .col-md-push-2 {
+    left: 16.666666666666664%;
+  }
+  .bs3 .col-md-push-3 {
+    left: 25%;
+  }
+  .bs3 .col-md-push-4 {
+    left: 33.33333333333333%;
+  }
+  .bs3 .col-md-push-5 {
+    left: 41.66666666666667%;
+  }
+  .bs3 .col-md-push-6 {
+    left: 50%;
+  }
+  .bs3 .col-md-push-7 {
+    left: 58.333333333333336%;
+  }
+  .bs3 .col-md-push-8 {
+    left: 66.66666666666666%;
+  }
+  .bs3 .col-md-push-9 {
+    left: 75%;
+  }
+  .bs3 .col-md-push-10 {
+    left: 83.33333333333334%;
+  }
+  .bs3 .col-md-push-11 {
+    left: 91.66666666666666%;
+  }
+  .bs3 .col-md-pull-0 {
+    right: auto;
+  }
+  .bs3 .col-md-pull-1 {
+    right: 8.333333333333332%;
+  }
+  .bs3 .col-md-pull-2 {
+    right: 16.666666666666664%;
+  }
+  .bs3 .col-md-pull-3 {
+    right: 25%;
+  }
+  .bs3 .col-md-pull-4 {
+    right: 33.33333333333333%;
+  }
+  .bs3 .col-md-pull-5 {
+    right: 41.66666666666667%;
+  }
+  .bs3 .col-md-pull-6 {
+    right: 50%;
+  }
+  .bs3 .col-md-pull-7 {
+    right: 58.333333333333336%;
+  }
+  .bs3 .col-md-pull-8 {
+    right: 66.66666666666666%;
+  }
+  .bs3 .col-md-pull-9 {
+    right: 75%;
+  }
+  .bs3 .col-md-pull-10 {
+    right: 83.33333333333334%;
+  }
+  .bs3 .col-md-pull-11 {
+    right: 91.66666666666666%;
+  }
+  .bs3 .col-md-offset-0 {
+    margin-left: 0;
+  }
+  .bs3 .col-md-offset-1 {
+    margin-left: 8.333333333333332%;
+  }
+  .bs3 .col-md-offset-2 {
+    margin-left: 16.666666666666664%;
+  }
+  .bs3 .col-md-offset-3 {
+    margin-left: 25%;
+  }
+  .bs3 .col-md-offset-4 {
+    margin-left: 33.33333333333333%;
+  }
+  .bs3 .col-md-offset-5 {
+    margin-left: 41.66666666666667%;
+  }
+  .bs3 .col-md-offset-6 {
+    margin-left: 50%;
+  }
+  .bs3 .col-md-offset-7 {
+    margin-left: 58.333333333333336%;
+  }
+  .bs3 .col-md-offset-8 {
+    margin-left: 66.66666666666666%;
+  }
+  .bs3 .col-md-offset-9 {
+    margin-left: 75%;
+  }
+  .bs3 .col-md-offset-10 {
+    margin-left: 83.33333333333334%;
+  }
+  .bs3 .col-md-offset-11 {
+    margin-left: 91.66666666666666%;
+  }
+}
+@media (min-width: 1200px) {
+  .bs3 .container {
+    width: 1170px;
+  }
+  .bs3 .col-lg-1,
+  .bs3 .col-lg-2,
+  .bs3 .col-lg-3,
+  .bs3 .col-lg-4,
+  .bs3 .col-lg-5,
+  .bs3 .col-lg-6,
+  .bs3 .col-lg-7,
+  .bs3 .col-lg-8,
+  .bs3 .col-lg-9,
+  .bs3 .col-lg-10,
+  .bs3 .col-lg-11 {
+    float: left;
+  }
+  .bs3 .col-lg-1 {
+    width: 8.333333333333332%;
+  }
+  .bs3 .col-lg-2 {
+    width: 16.666666666666664%;
+  }
+  .bs3 .col-lg-3 {
+    width: 25%;
+  }
+  .bs3 .col-lg-4 {
+    width: 33.33333333333333%;
+  }
+  .bs3 .col-lg-5 {
+    width: 41.66666666666667%;
+  }
+  .bs3 .col-lg-6 {
+    width: 50%;
+  }
+  .bs3 .col-lg-7 {
+    width: 58.333333333333336%;
+  }
+  .bs3 .col-lg-8 {
+    width: 66.66666666666666%;
+  }
+  .bs3 .col-lg-9 {
+    width: 75%;
+  }
+  .bs3 .col-lg-10 {
+    width: 83.33333333333334%;
+  }
+  .bs3 .col-lg-11 {
+    width: 91.66666666666666%;
+  }
+  .bs3 .col-lg-12 {
+    width: 100%;
+  }
+  .bs3 .col-lg-push-0 {
+    left: auto;
+  }
+  .bs3 .col-lg-push-1 {
+    left: 8.333333333333332%;
+  }
+  .bs3 .col-lg-push-2 {
+    left: 16.666666666666664%;
+  }
+  .bs3 .col-lg-push-3 {
+    left: 25%;
+  }
+  .bs3 .col-lg-push-4 {
+    left: 33.33333333333333%;
+  }
+  .bs3 .col-lg-push-5 {
+    left: 41.66666666666667%;
+  }
+  .bs3 .col-lg-push-6 {
+    left: 50%;
+  }
+  .bs3 .col-lg-push-7 {
+    left: 58.333333333333336%;
+  }
+  .bs3 .col-lg-push-8 {
+    left: 66.66666666666666%;
+  }
+  .bs3 .col-lg-push-9 {
+    left: 75%;
+  }
+  .bs3 .col-lg-push-10 {
+    left: 83.33333333333334%;
+  }
+  .bs3 .col-lg-push-11 {
+    left: 91.66666666666666%;
+  }
+  .bs3 .col-lg-pull-0 {
+    right: auto;
+  }
+  .bs3 .col-lg-pull-1 {
+    right: 8.333333333333332%;
+  }
+  .bs3 .col-lg-pull-2 {
+    right: 16.666666666666664%;
+  }
+  .bs3 .col-lg-pull-3 {
+    right: 25%;
+  }
+  .bs3 .col-lg-pull-4 {
+    right: 33.33333333333333%;
+  }
+  .bs3 .col-lg-pull-5 {
+    right: 41.66666666666667%;
+  }
+  .bs3 .col-lg-pull-6 {
+    right: 50%;
+  }
+  .bs3 .col-lg-pull-7 {
+    right: 58.333333333333336%;
+  }
+  .bs3 .col-lg-pull-8 {
+    right: 66.66666666666666%;
+  }
+  .bs3 .col-lg-pull-9 {
+    right: 75%;
+  }
+  .bs3 .col-lg-pull-10 {
+    right: 83.33333333333334%;
+  }
+  .bs3 .col-lg-pull-11 {
+    right: 91.66666666666666%;
+  }
+  .bs3 .col-lg-offset-0 {
+    margin-left: 0;
+  }
+  .bs3 .col-lg-offset-1 {
+    margin-left: 8.333333333333332%;
+  }
+  .bs3 .col-lg-offset-2 {
+    margin-left: 16.666666666666664%;
+  }
+  .bs3 .col-lg-offset-3 {
+    margin-left: 25%;
+  }
+  .bs3 .col-lg-offset-4 {
+    margin-left: 33.33333333333333%;
+  }
+  .bs3 .col-lg-offset-5 {
+    margin-left: 41.66666666666667%;
+  }
+  .bs3 .col-lg-offset-6 {
+    margin-left: 50%;
+  }
+  .bs3 .col-lg-offset-7 {
+    margin-left: 58.333333333333336%;
+  }
+  .bs3 .col-lg-offset-8 {
+    margin-left: 66.66666666666666%;
+  }
+  .bs3 .col-lg-offset-9 {
+    margin-left: 75%;
+  }
+  .bs3 .col-lg-offset-10 {
+    margin-left: 83.33333333333334%;
+  }
+  .bs3 .col-lg-offset-11 {
+    margin-left: 91.66666666666666%;
+  }
+}
+.bs3 table {
+  max-width: 100%;
+  background-color: transparent;
+}
+.bs3 th {
+  text-align: left;
+}
+.bs3 .table {
+  width: 100%;
+  margin-bottom: 20px;
+}
+.bs3 .table > thead > tr > th,
+.bs3 .table > tbody > tr > th,
+.bs3 .table > tfoot > tr > th,
+.bs3 .table > thead > tr > td,
+.bs3 .table > tbody > tr > td,
+.bs3 .table > tfoot > tr > td {
+  padding: 8px;
+  line-height: 1.428571429;
+  vertical-align: top;
+  border-top: 1px solid #dddddd;
+}
+.bs3 .table > thead > tr > th {
+  vertical-align: bottom;
+  border-bottom: 2px solid #dddddd;
+}
+.bs3 .table > caption + thead > tr:first-child > th,
+.bs3 .table > colgroup + thead > tr:first-child > th,
+.bs3 .table > thead:first-child > tr:first-child > th,
+.bs3 .table > caption + thead > tr:first-child > td,
+.bs3 .table > colgroup + thead > tr:first-child > td,
+.bs3 .table > thead:first-child > tr:first-child > td {
+  border-top: 0;
+}
+.bs3 .table > tbody + tbody {
+  border-top: 2px solid #dddddd;
+}
+.bs3 .table .table {
+  background-color: #ffffff;
+}
+.bs3 .table-condensed > thead > tr > th,
+.bs3 .table-condensed > tbody > tr > th,
+.bs3 .table-condensed > tfoot > tr > th,
+.bs3 .table-condensed > thead > tr > td,
+.bs3 .table-condensed > tbody > tr > td,
+.bs3 .table-condensed > tfoot > tr > td {
+  padding: 5px;
+}
+.bs3 .table-bordered {
+  border: 1px solid #dddddd;
+}
+.bs3 .table-bordered > thead > tr > th,
+.bs3 .table-bordered > tbody > tr > th,
+.bs3 .table-bordered > tfoot > tr > th,
+.bs3 .table-bordered > thead > tr > td,
+.bs3 .table-bordered > tbody > tr > td,
+.bs3 .table-bordered > tfoot > tr > td {
+  border: 1px solid #dddddd;
+}
+.bs3 .table-bordered > thead > tr > th,
+.bs3 .table-bordered > thead > tr > td {
+  border-bottom-width: 2px;
+}
+.bs3 .table-striped > tbody > tr:nth-child(odd) > td,
+.bs3 .table-striped > tbody > tr:nth-child(odd) > th {
+  background-color: #f9f9f9;
+}
+.bs3 .table-hover > tbody > tr:hover > td,
+.bs3 .table-hover > tbody > tr:hover > th {
+  background-color: #f5f5f5;
+}
+.bs3 table col[class*="col-"] {
+  float: none;
+  display: table-column;
+}
+.bs3 table td[class*="col-"],
+.bs3 table th[class*="col-"] {
+  float: none;
+  display: table-cell;
+}
+.bs3 .table > thead > tr > td.active,
+.bs3 .table > tbody > tr > td.active,
+.bs3 .table > tfoot > tr > td.active,
+.bs3 .table > thead > tr > th.active,
+.bs3 .table > tbody > tr > th.active,
+.bs3 .table > tfoot > tr > th.active,
+.bs3 .table > thead > tr.active > td,
+.bs3 .table > tbody > tr.active > td,
+.bs3 .table > tfoot > tr.active > td,
+.bs3 .table > thead > tr.active > th,
+.bs3 .table > tbody > tr.active > th,
+.bs3 .table > tfoot > tr.active > th {
+  background-color: #f5f5f5;
+}
+.bs3 .table > thead > tr > td.success,
+.bs3 .table > tbody > tr > td.success,
+.bs3 .table > tfoot > tr > td.success,
+.bs3 .table > thead > tr > th.success,
+.bs3 .table > tbody > tr > th.success,
+.bs3 .table > tfoot > tr > th.success,
+.bs3 .table > thead > tr.success > td,
+.bs3 .table > tbody > tr.success > td,
+.bs3 .table > tfoot > tr.success > td,
+.bs3 .table > thead > tr.success > th,
+.bs3 .table > tbody > tr.success > th,
+.bs3 .table > tfoot > tr.success > th {
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.bs3 .table-hover > tbody > tr > td.success:hover,
+.bs3 .table-hover > tbody > tr > th.success:hover,
+.bs3 .table-hover > tbody > tr.success:hover > td,
+.bs3 .table-hover > tbody > tr.success:hover > th {
+  background-color: #d0e9c6;
+  border-color: #c9e2b3;
+}
+.bs3 .table > thead > tr > td.danger,
+.bs3 .table > tbody > tr > td.danger,
+.bs3 .table > tfoot > tr > td.danger,
+.bs3 .table > thead > tr > th.danger,
+.bs3 .table > tbody > tr > th.danger,
+.bs3 .table > tfoot > tr > th.danger,
+.bs3 .table > thead > tr.danger > td,
+.bs3 .table > tbody > tr.danger > td,
+.bs3 .table > tfoot > tr.danger > td,
+.bs3 .table > thead > tr.danger > th,
+.bs3 .table > tbody > tr.danger > th,
+.bs3 .table > tfoot > tr.danger > th {
+  background-color: #f2dede;
+  border-color: #eed3d7;
+}
+.bs3 .table-hover > tbody > tr > td.danger:hover,
+.bs3 .table-hover > tbody > tr > th.danger:hover,
+.bs3 .table-hover > tbody > tr.danger:hover > td,
+.bs3 .table-hover > tbody > tr.danger:hover > th {
+  background-color: #ebcccc;
+  border-color: #e6c1c7;
+}
+.bs3 .table > thead > tr > td.warning,
+.bs3 .table > tbody > tr > td.warning,
+.bs3 .table > tfoot > tr > td.warning,
+.bs3 .table > thead > tr > th.warning,
+.bs3 .table > tbody > tr > th.warning,
+.bs3 .table > tfoot > tr > th.warning,
+.bs3 .table > thead > tr.warning > td,
+.bs3 .table > tbody > tr.warning > td,
+.bs3 .table > tfoot > tr.warning > td,
+.bs3 .table > thead > tr.warning > th,
+.bs3 .table > tbody > tr.warning > th,
+.bs3 .table > tfoot > tr.warning > th {
+  background-color: #fcf8e3;
+  border-color: #fbeed5;
+}
+.bs3 .table-hover > tbody > tr > td.warning:hover,
+.bs3 .table-hover > tbody > tr > th.warning:hover,
+.bs3 .table-hover > tbody > tr.warning:hover > td,
+.bs3 .table-hover > tbody > tr.warning:hover > th {
+  background-color: #faf2cc;
+  border-color: #f8e5be;
+}
+@media (max-width: 768px) {
+  .bs3 .table-responsive {
+    width: 100%;
+    margin-bottom: 15px;
+    overflow-y: hidden;
+    overflow-x: scroll;
+    -ms-overflow-style: -ms-autohiding-scrollbar;
+    border: 1px solid #dddddd;
+    -webkit-overflow-scrolling: touch;
+  }
+  .bs3 .table-responsive > .table {
+    margin-bottom: 0;
+    background-color: #fff;
+  }
+  .bs3 .table-responsive > .table > thead > tr > th,
+  .bs3 .table-responsive > .table > tbody > tr > th,
+  .bs3 .table-responsive > .table > tfoot > tr > th,
+  .bs3 .table-responsive > .table > thead > tr > td,
+  .bs3 .table-responsive > .table > tbody > tr > td,
+  .bs3 .table-responsive > .table > tfoot > tr > td {
+    white-space: nowrap;
+  }
+  .bs3 .table-responsive > .table-bordered {
+    border: 0;
+  }
+  .bs3 .table-responsive > .table-bordered > thead > tr > th:first-child,
+  .bs3 .table-responsive > .table-bordered > tbody > tr > th:first-child,
+  .bs3 .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+  .bs3 .table-responsive > .table-bordered > thead > tr > td:first-child,
+  .bs3 .table-responsive > .table-bordered > tbody > tr > td:first-child,
+  .bs3 .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+    border-left: 0;
+  }
+  .bs3 .table-responsive > .table-bordered > thead > tr > th:last-child,
+  .bs3 .table-responsive > .table-bordered > tbody > tr > th:last-child,
+  .bs3 .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+  .bs3 .table-responsive > .table-bordered > thead > tr > td:last-child,
+  .bs3 .table-responsive > .table-bordered > tbody > tr > td:last-child,
+  .bs3 .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+    border-right: 0;
+  }
+  .bs3 .table-responsive > .table-bordered > thead > tr:last-child > th,
+  .bs3 .table-responsive > .table-bordered > tbody > tr:last-child > th,
+  .bs3 .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+  .bs3 .table-responsive > .table-bordered > thead > tr:last-child > td,
+  .bs3 .table-responsive > .table-bordered > tbody > tr:last-child > td,
+  .bs3 .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+    border-bottom: 0;
+  }
+}
+.bs3 fieldset {
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+.bs3 legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 20px;
+  font-size: 21px;
+  line-height: inherit;
+  color: #333333;
+  border: 0;
+  border-bottom: 1px solid #e5e5e5;
+}
+.bs3 label {
+  display: inline-block;
+  margin-bottom: 5px;
+  font-weight: bold;
+}
+.bs3 input[type="search"] {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.bs3 input[type="radio"],
+.bs3 input[type="checkbox"] {
+  margin: 4px 0 0;
+  margin-top: 1px \9;
+  /* IE8-9 */
+
+  line-height: normal;
+}
+.bs3 input[type="file"] {
+  display: block;
+}
+.bs3 select[multiple],
+.bs3 select[size] {
+  height: auto;
+}
+.bs3 select optgroup {
+  font-size: inherit;
+  font-style: inherit;
+  font-family: inherit;
+}
+.bs3 input[type="file"]:focus,
+.bs3 input[type="radio"]:focus,
+.bs3 input[type="checkbox"]:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.bs3 input[type="number"]::-webkit-outer-spin-button,
+.bs3 input[type="number"]::-webkit-inner-spin-button {
+  height: auto;
+}
+.bs3 output {
+  display: block;
+  padding-top: 7px;
+  font-size: 14px;
+  line-height: 1.428571429;
+  color: #555555;
+  vertical-align: middle;
+}
+.bs3 .form-control:-moz-placeholder {
+  color: #999999;
+}
+.bs3 .form-control::-moz-placeholder {
+  color: #999999;
+}
+.bs3 .form-control:-ms-input-placeholder {
+  color: #999999;
+}
+.bs3 .form-control::-webkit-input-placeholder {
+  color: #999999;
+}
+.bs3 .form-control {
+  display: block;
+  width: 100%;
+  height: 34px;
+  padding: 6px 12px;
+  font-size: 14px;
+  line-height: 1.428571429;
+  color: #555555;
+  vertical-align: middle;
+  background-color: #ffffff;
+  background-image: none;
+  border: 1px solid #cccccc;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.bs3 .form-control:focus {
+  border-color: #66afe9;
+  outline: 0;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+}
+.bs3 .form-control[disabled],
+.bs3 .form-control[readonly],
+fieldset[disabled] .bs3 .form-control {
+  cursor: not-allowed;
+  background-color: #eeeeee;
+}
+textarea.bs3 .form-control {
+  height: auto;
+}
+.bs3 .form-group {
+  margin-bottom: 15px;
+}
+.bs3 .radio,
+.bs3 .checkbox {
+  display: block;
+  min-height: 20px;
+  margin-top: 10px;
+  margin-bottom: 10px;
+  padding-left: 20px;
+  vertical-align: middle;
+}
+.bs3 .radio label,
+.bs3 .checkbox label {
+  display: inline;
+  margin-bottom: 0;
+  font-weight: normal;
+  cursor: pointer;
+}
+.bs3 .radio input[type="radio"],
+.bs3 .radio-inline input[type="radio"],
+.bs3 .checkbox input[type="checkbox"],
+.bs3 .checkbox-inline input[type="checkbox"] {
+  float: left;
+  margin-left: -20px;
+}
+.bs3 .radio + .radio,
+.bs3 .checkbox + .checkbox {
+  margin-top: -5px;
+}
+.bs3 .radio-inline,
+.bs3 .checkbox-inline {
+  display: inline-block;
+  padding-left: 20px;
+  margin-bottom: 0;
+  vertical-align: middle;
+  font-weight: normal;
+  cursor: pointer;
+}
+.bs3 .radio-inline + .radio-inline,
+.bs3 .checkbox-inline + .checkbox-inline {
+  margin-top: 0;
+  margin-left: 10px;
+}
+.bs3 input[type="radio"][disabled],
+.bs3 input[type="checkbox"][disabled],
+.bs3 .radio[disabled],
+.bs3 .radio-inline[disabled],
+.bs3 .checkbox[disabled],
+.bs3 .checkbox-inline[disabled],
+fieldset[disabled] .bs3 input[type="radio"],
+fieldset[disabled] .bs3 input[type="checkbox"],
+fieldset[disabled] .bs3 .radio,
+fieldset[disabled] .bs3 .radio-inline,
+fieldset[disabled] .bs3 .checkbox,
+fieldset[disabled] .bs3 .checkbox-inline {
+  cursor: not-allowed;
+}
+.bs3 .input-sm {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+select.bs3 .input-sm {
+  height: 30px;
+  line-height: 30px;
+}
+textarea.bs3 .input-sm {
+  height: auto;
+}
+.bs3 .input-lg {
+  height: 45px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.33;
+  border-radius: 6px;
+}
+select.bs3 .input-lg {
+  height: 45px;
+  line-height: 45px;
+}
+textarea.bs3 .input-lg {
+  height: auto;
+}
+.bs3 .has-warning .help-block,
+.bs3 .has-warning .control-label {
+  color: #c09853;
+}
+.bs3 .has-warning .form-control {
+  border-color: #c09853;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.bs3 .has-warning .form-control:focus {
+  border-color: #a47e3c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+}
+.bs3 .has-warning .input-group-addon {
+  color: #c09853;
+  border-color: #c09853;
+  background-color: #fcf8e3;
+}
+.bs3 .has-error .help-block,
+.bs3 .has-error .control-label {
+  color: #b94a48;
+}
+.bs3 .has-error .form-control {
+  border-color: #b94a48;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.bs3 .has-error .form-control:focus {
+  border-color: #953b39;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+}
+.bs3 .has-error .input-group-addon {
+  color: #b94a48;
+  border-color: #b94a48;
+  background-color: #f2dede;
+}
+.bs3 .has-success .help-block,
+.bs3 .has-success .control-label {
+  color: #468847;
+}
+.bs3 .has-success .form-control {
+  border-color: #468847;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.bs3 .has-success .form-control:focus {
+  border-color: #356635;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+}
+.bs3 .has-success .input-group-addon {
+  color: #468847;
+  border-color: #468847;
+  background-color: #dff0d8;
+}
+.bs3 .form-control-static {
+  margin-bottom: 0;
+  padding-top: 7px;
+}
+.bs3 .help-block {
+  display: block;
+  margin-top: 5px;
+  margin-bottom: 10px;
+  color: #737373;
+}
+@media (min-width: 768px) {
+  .bs3 .form-inline .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .bs3 .form-inline .form-control {
+    display: inline-block;
+  }
+  .bs3 .form-inline .radio,
+  .bs3 .form-inline .checkbox {
+    display: inline-block;
+    margin-top: 0;
+    margin-bottom: 0;
+    padding-left: 0;
+  }
+  .bs3 .form-inline .radio input[type="radio"],
+  .bs3 .form-inline .checkbox input[type="checkbox"] {
+    float: none;
+    margin-left: 0;
+  }
+}
+.bs3 .form-horizontal .control-label,
+.bs3 .form-horizontal .radio,
+.bs3 .form-horizontal .checkbox,
+.bs3 .form-horizontal .radio-inline,
+.bs3 .form-horizontal .checkbox-inline {
+  margin-top: 0;
+  margin-bottom: 0;
+  padding-top: 7px;
+}
+.bs3 .form-horizontal .form-group {
+  margin-left: -15px;
+  margin-right: -15px;
+}
+.bs3 .form-horizontal .form-group:before,
+.bs3 .form-horizontal .form-group:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .form-horizontal .form-group:after {
+  clear: both;
+}
+.bs3 .form-horizontal .form-group:before,
+.bs3 .form-horizontal .form-group:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .form-horizontal .form-group:after {
+  clear: both;
+}
+@media (min-width: 768px) {
+  .bs3 .form-horizontal .control-label {
+    text-align: right;
+  }
+}
+.bs3 .btn {
+  display: inline-block;
+  padding: 6px 12px;
+  margin-bottom: 0;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1.428571429;
+  text-align: center;
+  vertical-align: middle;
+  cursor: pointer;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px;
+  white-space: nowrap;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  -o-user-select: none;
+  user-select: none;
+}
+.bs3 .btn:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.bs3 .btn:hover,
+.bs3 .btn:focus {
+  color: #333333;
+  text-decoration: none;
+}
+.bs3 .btn:active,
+.bs3 .btn.active {
+  outline: 0;
+  background-image: none;
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.bs3 .btn.disabled,
+.bs3 .btn[disabled],
+fieldset[disabled] .bs3 .btn {
+  cursor: not-allowed;
+  pointer-events: none;
+  opacity: 0.65;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+  box-shadow: none;
+}
+.bs3 .btn-default {
+  color: #333333;
+  background-color: #ffffff;
+  border-color: #cccccc;
+}
+.bs3 .btn-default:hover,
+.bs3 .btn-default:focus,
+.bs3 .btn-default:active,
+.bs3 .btn-default.active,
+.open .dropdown-toggle.bs3 .btn-default {
+  color: #333333;
+  background-color: #ebebeb;
+  border-color: #adadad;
+}
+.bs3 .btn-default:active,
+.bs3 .btn-default.active,
+.open .dropdown-toggle.bs3 .btn-default {
+  background-image: none;
+}
+.bs3 .btn-default.disabled,
+.bs3 .btn-default[disabled],
+fieldset[disabled] .bs3 .btn-default,
+.bs3 .btn-default.disabled:hover,
+.bs3 .btn-default[disabled]:hover,
+fieldset[disabled] .bs3 .btn-default:hover,
+.bs3 .btn-default.disabled:focus,
+.bs3 .btn-default[disabled]:focus,
+fieldset[disabled] .bs3 .btn-default:focus,
+.bs3 .btn-default.disabled:active,
+.bs3 .btn-default[disabled]:active,
+fieldset[disabled] .bs3 .btn-default:active,
+.bs3 .btn-default.disabled.active,
+.bs3 .btn-default[disabled].active,
+fieldset[disabled] .bs3 .btn-default.active {
+  background-color: #ffffff;
+  border-color: #cccccc;
+}
+.bs3 .btn-primary {
+  color: #ffffff;
+  background-color: #428bca;
+  border-color: #357ebd;
+}
+.bs3 .btn-primary:hover,
+.bs3 .btn-primary:focus,
+.bs3 .btn-primary:active,
+.bs3 .btn-primary.active,
+.open .dropdown-toggle.bs3 .btn-primary {
+  color: #ffffff;
+  background-color: #3276b1;
+  border-color: #285e8e;
+}
+.bs3 .btn-primary:active,
+.bs3 .btn-primary.active,
+.open .dropdown-toggle.bs3 .btn-primary {
+  background-image: none;
+}
+.bs3 .btn-primary.disabled,
+.bs3 .btn-primary[disabled],
+fieldset[disabled] .bs3 .btn-primary,
+.bs3 .btn-primary.disabled:hover,
+.bs3 .btn-primary[disabled]:hover,
+fieldset[disabled] .bs3 .btn-primary:hover,
+.bs3 .btn-primary.disabled:focus,
+.bs3 .btn-primary[disabled]:focus,
+fieldset[disabled] .bs3 .btn-primary:focus,
+.bs3 .btn-primary.disabled:active,
+.bs3 .btn-primary[disabled]:active,
+fieldset[disabled] .bs3 .btn-primary:active,
+.bs3 .btn-primary.disabled.active,
+.bs3 .btn-primary[disabled].active,
+fieldset[disabled] .bs3 .btn-primary.active {
+  background-color: #428bca;
+  border-color: #357ebd;
+}
+.bs3 .btn-warning {
+  color: #ffffff;
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.bs3 .btn-warning:hover,
+.bs3 .btn-warning:focus,
+.bs3 .btn-warning:active,
+.bs3 .btn-warning.active,
+.open .dropdown-toggle.bs3 .btn-warning {
+  color: #ffffff;
+  background-color: #ed9c28;
+  border-color: #d58512;
+}
+.bs3 .btn-warning:active,
+.bs3 .btn-warning.active,
+.open .dropdown-toggle.bs3 .btn-warning {
+  background-image: none;
+}
+.bs3 .btn-warning.disabled,
+.bs3 .btn-warning[disabled],
+fieldset[disabled] .bs3 .btn-warning,
+.bs3 .btn-warning.disabled:hover,
+.bs3 .btn-warning[disabled]:hover,
+fieldset[disabled] .bs3 .btn-warning:hover,
+.bs3 .btn-warning.disabled:focus,
+.bs3 .btn-warning[disabled]:focus,
+fieldset[disabled] .bs3 .btn-warning:focus,
+.bs3 .btn-warning.disabled:active,
+.bs3 .btn-warning[disabled]:active,
+fieldset[disabled] .bs3 .btn-warning:active,
+.bs3 .btn-warning.disabled.active,
+.bs3 .btn-warning[disabled].active,
+fieldset[disabled] .bs3 .btn-warning.active {
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.bs3 .btn-danger {
+  color: #ffffff;
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.bs3 .btn-danger:hover,
+.bs3 .btn-danger:focus,
+.bs3 .btn-danger:active,
+.bs3 .btn-danger.active,
+.open .dropdown-toggle.bs3 .btn-danger {
+  color: #ffffff;
+  background-color: #d2322d;
+  border-color: #ac2925;
+}
+.bs3 .btn-danger:active,
+.bs3 .btn-danger.active,
+.open .dropdown-toggle.bs3 .btn-danger {
+  background-image: none;
+}
+.bs3 .btn-danger.disabled,
+.bs3 .btn-danger[disabled],
+fieldset[disabled] .bs3 .btn-danger,
+.bs3 .btn-danger.disabled:hover,
+.bs3 .btn-danger[disabled]:hover,
+fieldset[disabled] .bs3 .btn-danger:hover,
+.bs3 .btn-danger.disabled:focus,
+.bs3 .btn-danger[disabled]:focus,
+fieldset[disabled] .bs3 .btn-danger:focus,
+.bs3 .btn-danger.disabled:active,
+.bs3 .btn-danger[disabled]:active,
+fieldset[disabled] .bs3 .btn-danger:active,
+.bs3 .btn-danger.disabled.active,
+.bs3 .btn-danger[disabled].active,
+fieldset[disabled] .bs3 .btn-danger.active {
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.bs3 .btn-success {
+  color: #ffffff;
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.bs3 .btn-success:hover,
+.bs3 .btn-success:focus,
+.bs3 .btn-success:active,
+.bs3 .btn-success.active,
+.open .dropdown-toggle.bs3 .btn-success {
+  color: #ffffff;
+  background-color: #47a447;
+  border-color: #398439;
+}
+.bs3 .btn-success:active,
+.bs3 .btn-success.active,
+.open .dropdown-toggle.bs3 .btn-success {
+  background-image: none;
+}
+.bs3 .btn-success.disabled,
+.bs3 .btn-success[disabled],
+fieldset[disabled] .bs3 .btn-success,
+.bs3 .btn-success.disabled:hover,
+.bs3 .btn-success[disabled]:hover,
+fieldset[disabled] .bs3 .btn-success:hover,
+.bs3 .btn-success.disabled:focus,
+.bs3 .btn-success[disabled]:focus,
+fieldset[disabled] .bs3 .btn-success:focus,
+.bs3 .btn-success.disabled:active,
+.bs3 .btn-success[disabled]:active,
+fieldset[disabled] .bs3 .btn-success:active,
+.bs3 .btn-success.disabled.active,
+.bs3 .btn-success[disabled].active,
+fieldset[disabled] .bs3 .btn-success.active {
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.bs3 .btn-info {
+  color: #ffffff;
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.bs3 .btn-info:hover,
+.bs3 .btn-info:focus,
+.bs3 .btn-info:active,
+.bs3 .btn-info.active,
+.open .dropdown-toggle.bs3 .btn-info {
+  color: #ffffff;
+  background-color: #39b3d7;
+  border-color: #269abc;
+}
+.bs3 .btn-info:active,
+.bs3 .btn-info.active,
+.open .dropdown-toggle.bs3 .btn-info {
+  background-image: none;
+}
+.bs3 .btn-info.disabled,
+.bs3 .btn-info[disabled],
+fieldset[disabled] .bs3 .btn-info,
+.bs3 .btn-info.disabled:hover,
+.bs3 .btn-info[disabled]:hover,
+fieldset[disabled] .bs3 .btn-info:hover,
+.bs3 .btn-info.disabled:focus,
+.bs3 .btn-info[disabled]:focus,
+fieldset[disabled] .bs3 .btn-info:focus,
+.bs3 .btn-info.disabled:active,
+.bs3 .btn-info[disabled]:active,
+fieldset[disabled] .bs3 .btn-info:active,
+.bs3 .btn-info.disabled.active,
+.bs3 .btn-info[disabled].active,
+fieldset[disabled] .bs3 .btn-info.active {
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.bs3 .btn-link {
+  color: #428bca;
+  font-weight: normal;
+  cursor: pointer;
+  border-radius: 0;
+}
+.bs3 .btn-link,
+.bs3 .btn-link:active,
+.bs3 .btn-link[disabled],
+fieldset[disabled] .bs3 .btn-link {
+  background-color: transparent;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+}
+.bs3 .btn-link,
+.bs3 .btn-link:hover,
+.bs3 .btn-link:focus,
+.bs3 .btn-link:active {
+  border-color: transparent;
+}
+.bs3 .btn-link:hover,
+.bs3 .btn-link:focus {
+  color: #2a6496;
+  text-decoration: underline;
+  background-color: transparent;
+}
+.bs3 .btn-link[disabled]:hover,
+fieldset[disabled] .bs3 .btn-link:hover,
+.bs3 .btn-link[disabled]:focus,
+fieldset[disabled] .bs3 .btn-link:focus {
+  color: #999999;
+  text-decoration: none;
+}
+.bs3 .btn-lg {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.33;
+  border-radius: 6px;
+}
+.bs3 .btn-sm,
+.bs3 .btn-xs {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.bs3 .btn-xs {
+  padding: 1px 5px;
+}
+.bs3 .btn-block {
+  display: block;
+  width: 100%;
+  padding-left: 0;
+  padding-right: 0;
+}
+.bs3 .btn-block + .btn-block {
+  margin-top: 5px;
+}
+.bs3 input[type="submit"].btn-block,
+.bs3 input[type="reset"].btn-block,
+.bs3 input[type="button"].btn-block {
+  width: 100%;
+}
+.bs3 .fade {
+  opacity: 0;
+  -webkit-transition: opacity 0.15s linear;
+  transition: opacity 0.15s linear;
+}
+.bs3 .fade.in {
+  opacity: 1;
+}
+.bs3 .collapse {
+  display: none;
+}
+.bs3 .collapse.in {
+  display: block;
+}
+.bs3 .collapsing {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  -webkit-transition: height 0.35s ease;
+  transition: height 0.35s ease;
+}
+@font-face {
+  font-family: 'Glyphicons Halflings';
+  src: url('../fonts/glyphicons-halflings-regular.eot');
+  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');
+}
+.bs3 .glyphicon {
+  position: relative;
+  top: 1px;
+  display: inline-block;
+  font-family: 'Glyphicons Halflings';
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1;
+  -webkit-font-smoothing: antialiased;
+}
+.bs3 .glyphicon:empty {
+  width: 1em;
+}
+.bs3 .glyphicon-asterisk:before {
+  content: "\2a";
+}
+.bs3 .glyphicon-plus:before {
+  content: "\2b";
+}
+.bs3 .glyphicon-euro:before {
+  content: "\20ac";
+}
+.bs3 .glyphicon-minus:before {
+  content: "\2212";
+}
+.bs3 .glyphicon-cloud:before {
+  content: "\2601";
+}
+.bs3 .glyphicon-envelope:before {
+  content: "\2709";
+}
+.bs3 .glyphicon-pencil:before {
+  content: "\270f";
+}
+.bs3 .glyphicon-glass:before {
+  content: "\e001";
+}
+.bs3 .glyphicon-music:before {
+  content: "\e002";
+}
+.bs3 .glyphicon-search:before {
+  content: "\e003";
+}
+.bs3 .glyphicon-heart:before {
+  content: "\e005";
+}
+.bs3 .glyphicon-star:before {
+  content: "\e006";
+}
+.bs3 .glyphicon-star-empty:before {
+  content: "\e007";
+}
+.bs3 .glyphicon-user:before {
+  content: "\e008";
+}
+.bs3 .glyphicon-film:before {
+  content: "\e009";
+}
+.bs3 .glyphicon-th-large:before {
+  content: "\e010";
+}
+.bs3 .glyphicon-th:before {
+  content: "\e011";
+}
+.bs3 .glyphicon-th-list:before {
+  content: "\e012";
+}
+.bs3 .glyphicon-ok:before {
+  content: "\e013";
+}
+.bs3 .glyphicon-remove:before {
+  content: "\e014";
+}
+.bs3 .glyphicon-zoom-in:before {
+  content: "\e015";
+}
+.bs3 .glyphicon-zoom-out:before {
+  content: "\e016";
+}
+.bs3 .glyphicon-off:before {
+  content: "\e017";
+}
+.bs3 .glyphicon-signal:before {
+  content: "\e018";
+}
+.bs3 .glyphicon-cog:before {
+  content: "\e019";
+}
+.bs3 .glyphicon-trash:before {
+  content: "\e020";
+}
+.bs3 .glyphicon-home:before {
+  content: "\e021";
+}
+.bs3 .glyphicon-file:before {
+  content: "\e022";
+}
+.bs3 .glyphicon-time:before {
+  content: "\e023";
+}
+.bs3 .glyphicon-road:before {
+  content: "\e024";
+}
+.bs3 .glyphicon-download-alt:before {
+  content: "\e025";
+}
+.bs3 .glyphicon-download:before {
+  content: "\e026";
+}
+.bs3 .glyphicon-upload:before {
+  content: "\e027";
+}
+.bs3 .glyphicon-inbox:before {
+  content: "\e028";
+}
+.bs3 .glyphicon-play-circle:before {
+  content: "\e029";
+}
+.bs3 .glyphicon-repeat:before {
+  content: "\e030";
+}
+.bs3 .glyphicon-refresh:before {
+  content: "\e031";
+}
+.bs3 .glyphicon-list-alt:before {
+  content: "\e032";
+}
+.bs3 .glyphicon-flag:before {
+  content: "\e034";
+}
+.bs3 .glyphicon-headphones:before {
+  content: "\e035";
+}
+.bs3 .glyphicon-volume-off:before {
+  content: "\e036";
+}
+.bs3 .glyphicon-volume-down:before {
+  content: "\e037";
+}
+.bs3 .glyphicon-volume-up:before {
+  content: "\e038";
+}
+.bs3 .glyphicon-qrcode:before {
+  content: "\e039";
+}
+.bs3 .glyphicon-barcode:before {
+  content: "\e040";
+}
+.bs3 .glyphicon-tag:before {
+  content: "\e041";
+}
+.bs3 .glyphicon-tags:before {
+  content: "\e042";
+}
+.bs3 .glyphicon-book:before {
+  content: "\e043";
+}
+.bs3 .glyphicon-print:before {
+  content: "\e045";
+}
+.bs3 .glyphicon-font:before {
+  content: "\e047";
+}
+.bs3 .glyphicon-bold:before {
+  content: "\e048";
+}
+.bs3 .glyphicon-italic:before {
+  content: "\e049";
+}
+.bs3 .glyphicon-text-height:before {
+  content: "\e050";
+}
+.bs3 .glyphicon-text-width:before {
+  content: "\e051";
+}
+.bs3 .glyphicon-align-left:before {
+  content: "\e052";
+}
+.bs3 .glyphicon-align-center:before {
+  content: "\e053";
+}
+.bs3 .glyphicon-align-right:before {
+  content: "\e054";
+}
+.bs3 .glyphicon-align-justify:before {
+  content: "\e055";
+}
+.bs3 .glyphicon-list:before {
+  content: "\e056";
+}
+.bs3 .glyphicon-indent-left:before {
+  content: "\e057";
+}
+.bs3 .glyphicon-indent-right:before {
+  content: "\e058";
+}
+.bs3 .glyphicon-facetime-video:before {
+  content: "\e059";
+}
+.bs3 .glyphicon-picture:before {
+  content: "\e060";
+}
+.bs3 .glyphicon-map-marker:before {
+  content: "\e062";
+}
+.bs3 .glyphicon-adjust:before {
+  content: "\e063";
+}
+.bs3 .glyphicon-tint:before {
+  content: "\e064";
+}
+.bs3 .glyphicon-edit:before {
+  content: "\e065";
+}
+.bs3 .glyphicon-share:before {
+  content: "\e066";
+}
+.bs3 .glyphicon-check:before {
+  content: "\e067";
+}
+.bs3 .glyphicon-move:before {
+  content: "\e068";
+}
+.bs3 .glyphicon-step-backward:before {
+  content: "\e069";
+}
+.bs3 .glyphicon-fast-backward:before {
+  content: "\e070";
+}
+.bs3 .glyphicon-backward:before {
+  content: "\e071";
+}
+.bs3 .glyphicon-play:before {
+  content: "\e072";
+}
+.bs3 .glyphicon-pause:before {
+  content: "\e073";
+}
+.bs3 .glyphicon-stop:before {
+  content: "\e074";
+}
+.bs3 .glyphicon-forward:before {
+  content: "\e075";
+}
+.bs3 .glyphicon-fast-forward:before {
+  content: "\e076";
+}
+.bs3 .glyphicon-step-forward:before {
+  content: "\e077";
+}
+.bs3 .glyphicon-eject:before {
+  content: "\e078";
+}
+.bs3 .glyphicon-chevron-left:before {
+  content: "\e079";
+}
+.bs3 .glyphicon-chevron-right:before {
+  content: "\e080";
+}
+.bs3 .glyphicon-plus-sign:before {
+  content: "\e081";
+}
+.bs3 .glyphicon-minus-sign:before {
+  content: "\e082";
+}
+.bs3 .glyphicon-remove-sign:before {
+  content: "\e083";
+}
+.bs3 .glyphicon-ok-sign:before {
+  content: "\e084";
+}
+.bs3 .glyphicon-question-sign:before {
+  content: "\e085";
+}
+.bs3 .glyphicon-info-sign:before {
+  content: "\e086";
+}
+.bs3 .glyphicon-screenshot:before {
+  content: "\e087";
+}
+.bs3 .glyphicon-remove-circle:before {
+  content: "\e088";
+}
+.bs3 .glyphicon-ok-circle:before {
+  content: "\e089";
+}
+.bs3 .glyphicon-ban-circle:before {
+  content: "\e090";
+}
+.bs3 .glyphicon-arrow-left:before {
+  content: "\e091";
+}
+.bs3 .glyphicon-arrow-right:before {
+  content: "\e092";
+}
+.bs3 .glyphicon-arrow-up:before {
+  content: "\e093";
+}
+.bs3 .glyphicon-arrow-down:before {
+  content: "\e094";
+}
+.bs3 .glyphicon-share-alt:before {
+  content: "\e095";
+}
+.bs3 .glyphicon-resize-full:before {
+  content: "\e096";
+}
+.bs3 .glyphicon-resize-small:before {
+  content: "\e097";
+}
+.bs3 .glyphicon-exclamation-sign:before {
+  content: "\e101";
+}
+.bs3 .glyphicon-gift:before {
+  content: "\e102";
+}
+.bs3 .glyphicon-leaf:before {
+  content: "\e103";
+}
+.bs3 .glyphicon-eye-open:before {
+  content: "\e105";
+}
+.bs3 .glyphicon-eye-close:before {
+  content: "\e106";
+}
+.bs3 .glyphicon-warning-sign:before {
+  content: "\e107";
+}
+.bs3 .glyphicon-plane:before {
+  content: "\e108";
+}
+.bs3 .glyphicon-random:before {
+  content: "\e110";
+}
+.bs3 .glyphicon-comment:before {
+  content: "\e111";
+}
+.bs3 .glyphicon-magnet:before {
+  content: "\e112";
+}
+.bs3 .glyphicon-chevron-up:before {
+  content: "\e113";
+}
+.bs3 .glyphicon-chevron-down:before {
+  content: "\e114";
+}
+.bs3 .glyphicon-retweet:before {
+  content: "\e115";
+}
+.bs3 .glyphicon-shopping-cart:before {
+  content: "\e116";
+}
+.bs3 .glyphicon-folder-close:before {
+  content: "\e117";
+}
+.bs3 .glyphicon-folder-open:before {
+  content: "\e118";
+}
+.bs3 .glyphicon-resize-vertical:before {
+  content: "\e119";
+}
+.bs3 .glyphicon-resize-horizontal:before {
+  content: "\e120";
+}
+.bs3 .glyphicon-hdd:before {
+  content: "\e121";
+}
+.bs3 .glyphicon-bullhorn:before {
+  content: "\e122";
+}
+.bs3 .glyphicon-certificate:before {
+  content: "\e124";
+}
+.bs3 .glyphicon-thumbs-up:before {
+  content: "\e125";
+}
+.bs3 .glyphicon-thumbs-down:before {
+  content: "\e126";
+}
+.bs3 .glyphicon-hand-right:before {
+  content: "\e127";
+}
+.bs3 .glyphicon-hand-left:before {
+  content: "\e128";
+}
+.bs3 .glyphicon-hand-up:before {
+  content: "\e129";
+}
+.bs3 .glyphicon-hand-down:before {
+  content: "\e130";
+}
+.bs3 .glyphicon-circle-arrow-right:before {
+  content: "\e131";
+}
+.bs3 .glyphicon-circle-arrow-left:before {
+  content: "\e132";
+}
+.bs3 .glyphicon-circle-arrow-up:before {
+  content: "\e133";
+}
+.bs3 .glyphicon-circle-arrow-down:before {
+  content: "\e134";
+}
+.bs3 .glyphicon-globe:before {
+  content: "\e135";
+}
+.bs3 .glyphicon-tasks:before {
+  content: "\e137";
+}
+.bs3 .glyphicon-filter:before {
+  content: "\e138";
+}
+.bs3 .glyphicon-fullscreen:before {
+  content: "\e140";
+}
+.bs3 .glyphicon-dashboard:before {
+  content: "\e141";
+}
+.bs3 .glyphicon-heart-empty:before {
+  content: "\e143";
+}
+.bs3 .glyphicon-link:before {
+  content: "\e144";
+}
+.bs3 .glyphicon-phone:before {
+  content: "\e145";
+}
+.bs3 .glyphicon-usd:before {
+  content: "\e148";
+}
+.bs3 .glyphicon-gbp:before {
+  content: "\e149";
+}
+.bs3 .glyphicon-sort:before {
+  content: "\e150";
+}
+.bs3 .glyphicon-sort-by-alphabet:before {
+  content: "\e151";
+}
+.bs3 .glyphicon-sort-by-alphabet-alt:before {
+  content: "\e152";
+}
+.bs3 .glyphicon-sort-by-order:before {
+  content: "\e153";
+}
+.bs3 .glyphicon-sort-by-order-alt:before {
+  content: "\e154";
+}
+.bs3 .glyphicon-sort-by-attributes:before {
+  content: "\e155";
+}
+.bs3 .glyphicon-sort-by-attributes-alt:before {
+  content: "\e156";
+}
+.bs3 .glyphicon-unchecked:before {
+  content: "\e157";
+}
+.bs3 .glyphicon-expand:before {
+  content: "\e158";
+}
+.bs3 .glyphicon-collapse-down:before {
+  content: "\e159";
+}
+.bs3 .glyphicon-collapse-up:before {
+  content: "\e160";
+}
+.bs3 .glyphicon-log-in:before {
+  content: "\e161";
+}
+.bs3 .glyphicon-flash:before {
+  content: "\e162";
+}
+.bs3 .glyphicon-log-out:before {
+  content: "\e163";
+}
+.bs3 .glyphicon-new-window:before {
+  content: "\e164";
+}
+.bs3 .glyphicon-record:before {
+  content: "\e165";
+}
+.bs3 .glyphicon-save:before {
+  content: "\e166";
+}
+.bs3 .glyphicon-open:before {
+  content: "\e167";
+}
+.bs3 .glyphicon-saved:before {
+  content: "\e168";
+}
+.bs3 .glyphicon-import:before {
+  content: "\e169";
+}
+.bs3 .glyphicon-export:before {
+  content: "\e170";
+}
+.bs3 .glyphicon-send:before {
+  content: "\e171";
+}
+.bs3 .glyphicon-floppy-disk:before {
+  content: "\e172";
+}
+.bs3 .glyphicon-floppy-saved:before {
+  content: "\e173";
+}
+.bs3 .glyphicon-floppy-remove:before {
+  content: "\e174";
+}
+.bs3 .glyphicon-floppy-save:before {
+  content: "\e175";
+}
+.bs3 .glyphicon-floppy-open:before {
+  content: "\e176";
+}
+.bs3 .glyphicon-credit-card:before {
+  content: "\e177";
+}
+.bs3 .glyphicon-transfer:before {
+  content: "\e178";
+}
+.bs3 .glyphicon-cutlery:before {
+  content: "\e179";
+}
+.bs3 .glyphicon-header:before {
+  content: "\e180";
+}
+.bs3 .glyphicon-compressed:before {
+  content: "\e181";
+}
+.bs3 .glyphicon-earphone:before {
+  content: "\e182";
+}
+.bs3 .glyphicon-phone-alt:before {
+  content: "\e183";
+}
+.bs3 .glyphicon-tower:before {
+  content: "\e184";
+}
+.bs3 .glyphicon-stats:before {
+  content: "\e185";
+}
+.bs3 .glyphicon-sd-video:before {
+  content: "\e186";
+}
+.bs3 .glyphicon-hd-video:before {
+  content: "\e187";
+}
+.bs3 .glyphicon-subtitles:before {
+  content: "\e188";
+}
+.bs3 .glyphicon-sound-stereo:before {
+  content: "\e189";
+}
+.bs3 .glyphicon-sound-dolby:before {
+  content: "\e190";
+}
+.bs3 .glyphicon-sound-5-1:before {
+  content: "\e191";
+}
+.bs3 .glyphicon-sound-6-1:before {
+  content: "\e192";
+}
+.bs3 .glyphicon-sound-7-1:before {
+  content: "\e193";
+}
+.bs3 .glyphicon-copyright-mark:before {
+  content: "\e194";
+}
+.bs3 .glyphicon-registration-mark:before {
+  content: "\e195";
+}
+.bs3 .glyphicon-cloud-download:before {
+  content: "\e197";
+}
+.bs3 .glyphicon-cloud-upload:before {
+  content: "\e198";
+}
+.bs3 .glyphicon-tree-conifer:before {
+  content: "\e199";
+}
+.bs3 .glyphicon-tree-deciduous:before {
+  content: "\e200";
+}
+.bs3 .glyphicon-briefcase:before {
+  content: "\1f4bc";
+}
+.bs3 .glyphicon-calendar:before {
+  content: "\1f4c5";
+}
+.bs3 .glyphicon-pushpin:before {
+  content: "\1f4cc";
+}
+.bs3 .glyphicon-paperclip:before {
+  content: "\1f4ce";
+}
+.bs3 .glyphicon-camera:before {
+  content: "\1f4f7";
+}
+.bs3 .glyphicon-lock:before {
+  content: "\1f512";
+}
+.bs3 .glyphicon-bell:before {
+  content: "\1f514";
+}
+.bs3 .glyphicon-bookmark:before {
+  content: "\1f516";
+}
+.bs3 .glyphicon-fire:before {
+  content: "\1f525";
+}
+.bs3 .glyphicon-wrench:before {
+  content: "\1f527";
+}
+.bs3 .caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  margin-left: 2px;
+  vertical-align: middle;
+  border-top: 4px solid #000000;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+  border-bottom: 0 dotted;
+  content: "";
+}
+.bs3 .dropdown {
+  position: relative;
+}
+.bs3 .dropdown-toggle:focus {
+  outline: 0;
+}
+.bs3 .dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: 1000;
+  display: none;
+  float: left;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0;
+  list-style: none;
+  font-size: 14px;
+  background-color: #ffffff;
+  border: 1px solid #cccccc;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+  background-clip: padding-box;
+}
+.bs3 .dropdown-menu.pull-right {
+  right: 0;
+  left: auto;
+}
+.bs3 .dropdown-menu .divider {
+  height: 1px;
+  margin: 9px 0;
+  overflow: hidden;
+  background-color: #e5e5e5;
+}
+.bs3 .dropdown-menu > li > a {
+  display: block;
+  padding: 3px 20px;
+  clear: both;
+  font-weight: normal;
+  line-height: 1.428571429;
+  color: #333333;
+  white-space: nowrap;
+}
+.bs3 .dropdown-menu > li > a:hover,
+.bs3 .dropdown-menu > li > a:focus {
+  text-decoration: none;
+  color: #262626;
+  background-color: #f5f5f5;
+}
+.bs3 .dropdown-menu > .active > a,
+.bs3 .dropdown-menu > .active > a:hover,
+.bs3 .dropdown-menu > .active > a:focus {
+  color: #ffffff;
+  text-decoration: none;
+  outline: 0;
+  background-color: #428bca;
+}
+.bs3 .dropdown-menu > .disabled > a,
+.bs3 .dropdown-menu > .disabled > a:hover,
+.bs3 .dropdown-menu > .disabled > a:focus {
+  color: #999999;
+}
+.bs3 .dropdown-menu > .disabled > a:hover,
+.bs3 .dropdown-menu > .disabled > a:focus {
+  text-decoration: none;
+  background-color: transparent;
+  background-image: none;
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  cursor: not-allowed;
+}
+.bs3 .open > .dropdown-menu {
+  display: block;
+}
+.bs3 .open > a {
+  outline: 0;
+}
+.bs3 .dropdown-header {
+  display: block;
+  padding: 3px 20px;
+  font-size: 12px;
+  line-height: 1.428571429;
+  color: #999999;
+}
+.bs3 .dropdown-backdrop {
+  position: fixed;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  top: 0;
+  z-index: 990;
+}
+.bs3 .pull-right > .dropdown-menu {
+  right: 0;
+  left: auto;
+}
+.bs3 .dropup .caret,
+.bs3 .navbar-fixed-bottom .dropdown .caret {
+  border-top: 0 dotted;
+  border-bottom: 4px solid #000000;
+  content: "";
+}
+.bs3 .dropup .dropdown-menu,
+.bs3 .navbar-fixed-bottom .dropdown .dropdown-menu {
+  top: auto;
+  bottom: 100%;
+  margin-bottom: 1px;
+}
+@media (min-width: 768px) {
+  .bs3 .navbar-right .dropdown-menu {
+    right: 0;
+    left: auto;
+  }
+}
+.btn-default .bs3 .caret {
+  border-top-color: #333333;
+}
+.btn-primary .bs3 .caret,
+.btn-success .bs3 .caret,
+.btn-warning .bs3 .caret,
+.btn-danger .bs3 .caret,
+.btn-info .bs3 .caret {
+  border-top-color: #fff;
+}
+.bs3 .dropup .btn-default .caret {
+  border-bottom-color: #333333;
+}
+.bs3 .dropup .btn-primary .caret,
+.bs3 .dropup .btn-success .caret,
+.bs3 .dropup .btn-warning .caret,
+.bs3 .dropup .btn-danger .caret,
+.bs3 .dropup .btn-info .caret {
+  border-bottom-color: #fff;
+}
+.bs3 .btn-group,
+.bs3 .btn-group-vertical {
+  position: relative;
+  display: inline-block;
+  vertical-align: middle;
+}
+.bs3 .btn-group > .btn,
+.bs3 .btn-group-vertical > .btn {
+  position: relative;
+  float: left;
+}
+.bs3 .btn-group > .btn:hover,
+.bs3 .btn-group-vertical > .btn:hover,
+.bs3 .btn-group > .btn:focus,
+.bs3 .btn-group-vertical > .btn:focus,
+.bs3 .btn-group > .btn:active,
+.bs3 .btn-group-vertical > .btn:active,
+.bs3 .btn-group > .btn.active,
+.bs3 .btn-group-vertical > .btn.active {
+  z-index: 2;
+}
+.bs3 .btn-group > .btn:focus,
+.bs3 .btn-group-vertical > .btn:focus {
+  outline: none;
+}
+.bs3 .btn-group .btn + .btn,
+.bs3 .btn-group .btn + .btn-group,
+.bs3 .btn-group .btn-group + .btn,
+.bs3 .btn-group .btn-group + .btn-group {
+  margin-left: -1px;
+}
+.bs3 .btn-toolbar:before,
+.bs3 .btn-toolbar:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .btn-toolbar:after {
+  clear: both;
+}
+.bs3 .btn-toolbar:before,
+.bs3 .btn-toolbar:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .btn-toolbar:after {
+  clear: both;
+}
+.bs3 .btn-toolbar .btn-group {
+  float: left;
+}
+.bs3 .btn-toolbar > .btn + .btn,
+.bs3 .btn-toolbar > .btn-group + .btn,
+.bs3 .btn-toolbar > .btn + .btn-group,
+.bs3 .btn-toolbar > .btn-group + .btn-group {
+  margin-left: 5px;
+}
+.bs3 .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+  border-radius: 0;
+}
+.bs3 .btn-group > .btn:first-child {
+  margin-left: 0;
+}
+.bs3 .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+  border-bottom-right-radius: 0;
+  border-top-right-radius: 0;
+}
+.bs3 .btn-group > .btn:last-child:not(:first-child),
+.bs3 .btn-group > .dropdown-toggle:not(:first-child) {
+  border-bottom-left-radius: 0;
+  border-top-left-radius: 0;
+}
+.bs3 .btn-group > .btn-group {
+  float: left;
+}
+.bs3 .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.bs3 .btn-group > .btn-group:first-child > .btn:last-child,
+.bs3 .btn-group > .btn-group:first-child > .dropdown-toggle {
+  border-bottom-right-radius: 0;
+  border-top-right-radius: 0;
+}
+.bs3 .btn-group > .btn-group:last-child > .btn:first-child {
+  border-bottom-left-radius: 0;
+  border-top-left-radius: 0;
+}
+.bs3 .btn-group .dropdown-toggle:active,
+.bs3 .btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+.bs3 .btn-group-xs > .btn {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+  padding: 1px 5px;
+}
+.bs3 .btn-group-sm > .btn {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.bs3 .btn-group-lg > .btn {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.33;
+  border-radius: 6px;
+}
+.bs3 .btn-group > .btn + .dropdown-toggle {
+  padding-left: 8px;
+  padding-right: 8px;
+}
+.bs3 .btn-group > .btn-lg + .dropdown-toggle {
+  padding-left: 12px;
+  padding-right: 12px;
+}
+.bs3 .btn-group.open .dropdown-toggle {
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.bs3 .btn .caret {
+  margin-left: 0;
+}
+.bs3 .btn-lg .caret {
+  border-width: 5px 5px 0;
+  border-bottom-width: 0;
+}
+.bs3 .dropup .btn-lg .caret {
+  border-width: 0 5px 5px;
+}
+.bs3 .btn-group-vertical > .btn,
+.bs3 .btn-group-vertical > .btn-group {
+  display: block;
+  float: none;
+  width: 100%;
+  max-width: 100%;
+}
+.bs3 .btn-group-vertical > .btn-group:before,
+.bs3 .btn-group-vertical > .btn-group:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .btn-group-vertical > .btn-group:after {
+  clear: both;
+}
+.bs3 .btn-group-vertical > .btn-group:before,
+.bs3 .btn-group-vertical > .btn-group:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .btn-group-vertical > .btn-group:after {
+  clear: both;
+}
+.bs3 .btn-group-vertical > .btn-group > .btn {
+  float: none;
+}
+.bs3 .btn-group-vertical > .btn + .btn,
+.bs3 .btn-group-vertical > .btn + .btn-group,
+.bs3 .btn-group-vertical > .btn-group + .btn,
+.bs3 .btn-group-vertical > .btn-group + .btn-group {
+  margin-top: -1px;
+  margin-left: 0;
+}
+.bs3 .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.bs3 .btn-group-vertical > .btn:first-child:not(:last-child) {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.bs3 .btn-group-vertical > .btn:last-child:not(:first-child) {
+  border-bottom-left-radius: 4px;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+.bs3 .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.bs3 .btn-group-vertical > .btn-group:first-child > .btn:last-child,
+.bs3 .btn-group-vertical > .btn-group:first-child > .dropdown-toggle {
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.bs3 .btn-group-vertical > .btn-group:last-child > .btn:first-child {
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+.bs3 .btn-group-justified {
+  display: table;
+  width: 100%;
+  table-layout: fixed;
+  border-collapse: separate;
+}
+.bs3 .btn-group-justified .btn {
+  float: none;
+  display: table-cell;
+  width: 1%;
+}
+.bs3 [data-toggle="buttons"] > .btn > input[type="radio"],
+.bs3 [data-toggle="buttons"] > .btn > input[type="checkbox"] {
+  display: none;
+}
+.bs3 .input-group {
+  position: relative;
+  display: table;
+  border-collapse: separate;
+}
+.bs3 .input-group.col {
+  float: none;
+  padding-left: 0;
+  padding-right: 0;
+}
+.bs3 .input-group .form-control {
+  width: 100%;
+  margin-bottom: 0;
+}
+.bs3 .input-group-lg > .form-control,
+.bs3 .input-group-lg > .input-group-addon,
+.bs3 .input-group-lg > .input-group-btn > .btn {
+  height: 45px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.33;
+  border-radius: 6px;
+}
+select.bs3 .input-group-lg > .form-control,
+select.bs3 .input-group-lg > .input-group-addon,
+select.bs3 .input-group-lg > .input-group-btn > .btn {
+  height: 45px;
+  line-height: 45px;
+}
+textarea.bs3 .input-group-lg > .form-control,
+textarea.bs3 .input-group-lg > .input-group-addon,
+textarea.bs3 .input-group-lg > .input-group-btn > .btn {
+  height: auto;
+}
+.bs3 .input-group-sm > .form-control,
+.bs3 .input-group-sm > .input-group-addon,
+.bs3 .input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+select.bs3 .input-group-sm > .form-control,
+select.bs3 .input-group-sm > .input-group-addon,
+select.bs3 .input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  line-height: 30px;
+}
+textarea.bs3 .input-group-sm > .form-control,
+textarea.bs3 .input-group-sm > .input-group-addon,
+textarea.bs3 .input-group-sm > .input-group-btn > .btn {
+  height: auto;
+}
+.bs3 .input-group-addon,
+.bs3 .input-group-btn,
+.bs3 .input-group .form-control {
+  display: table-cell;
+}
+.bs3 .input-group-addon:not(:first-child):not(:last-child),
+.bs3 .input-group-btn:not(:first-child):not(:last-child),
+.bs3 .input-group .form-control:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.bs3 .input-group-addon,
+.bs3 .input-group-btn {
+  width: 1%;
+  white-space: nowrap;
+  vertical-align: middle;
+}
+.bs3 .input-group-addon {
+  padding: 6px 12px;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1;
+  color: #555555;
+  text-align: center;
+  background-color: #eeeeee;
+  border: 1px solid #cccccc;
+  border-radius: 4px;
+}
+.bs3 .input-group-addon.input-sm {
+  padding: 5px 10px;
+  font-size: 12px;
+  border-radius: 3px;
+}
+.bs3 .input-group-addon.input-lg {
+  padding: 10px 16px;
+  font-size: 18px;
+  border-radius: 6px;
+}
+.bs3 .input-group-addon input[type="radio"],
+.bs3 .input-group-addon input[type="checkbox"] {
+  margin-top: 0;
+}
+.bs3 .input-group .form-control:first-child,
+.bs3 .input-group-addon:first-child,
+.bs3 .input-group-btn:first-child > .btn,
+.bs3 .input-group-btn:first-child > .dropdown-toggle,
+.bs3 .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
+  border-bottom-right-radius: 0;
+  border-top-right-radius: 0;
+}
+.bs3 .input-group-addon:first-child {
+  border-right: 0;
+}
+.bs3 .input-group .form-control:last-child,
+.bs3 .input-group-addon:last-child,
+.bs3 .input-group-btn:last-child > .btn,
+.bs3 .input-group-btn:last-child > .dropdown-toggle,
+.bs3 .input-group-btn:first-child > .btn:not(:first-child) {
+  border-bottom-left-radius: 0;
+  border-top-left-radius: 0;
+}
+.bs3 .input-group-addon:last-child {
+  border-left: 0;
+}
+.bs3 .input-group-btn {
+  position: relative;
+  white-space: nowrap;
+}
+.bs3 .input-group-btn:first-child > .btn {
+  margin-right: -1px;
+}
+.bs3 .input-group-btn:last-child > .btn {
+  margin-left: -1px;
+}
+.bs3 .input-group-btn > .btn {
+  position: relative;
+}
+.bs3 .input-group-btn > .btn + .btn {
+  margin-left: -4px;
+}
+.bs3 .input-group-btn > .btn:hover,
+.bs3 .input-group-btn > .btn:active {
+  z-index: 2;
+}
+.bs3 .nav {
+  margin-bottom: 0;
+  padding-left: 0;
+  list-style: none;
+}
+.bs3 .nav:before,
+.bs3 .nav:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .nav:after {
+  clear: both;
+}
+.bs3 .nav:before,
+.bs3 .nav:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .nav:after {
+  clear: both;
+}
+.bs3 .nav > li {
+  position: relative;
+  display: block;
+}
+.bs3 .nav > li > a {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+}
+.bs3 .nav > li > a:hover,
+.bs3 .nav > li > a:focus {
+  text-decoration: none;
+  background-color: #eeeeee;
+}
+.bs3 .nav > li.disabled > a {
+  color: #999999;
+}
+.bs3 .nav > li.disabled > a:hover,
+.bs3 .nav > li.disabled > a:focus {
+  color: #999999;
+  text-decoration: none;
+  background-color: transparent;
+  cursor: not-allowed;
+}
+.bs3 .nav .open > a,
+.bs3 .nav .open > a:hover,
+.bs3 .nav .open > a:focus {
+  background-color: #eeeeee;
+  border-color: #428bca;
+}
+.bs3 .nav .nav-divider {
+  height: 1px;
+  margin: 9px 0;
+  overflow: hidden;
+  background-color: #e5e5e5;
+}
+.bs3 .nav > li > a > img {
+  max-width: none;
+}
+.bs3 .nav-tabs {
+  border-bottom: 1px solid #dddddd;
+}
+.bs3 .nav-tabs > li {
+  float: left;
+  margin-bottom: -1px;
+}
+.bs3 .nav-tabs > li > a {
+  margin-right: 2px;
+  line-height: 1.428571429;
+  border: 1px solid transparent;
+  border-radius: 4px 4px 0 0;
+}
+.bs3 .nav-tabs > li > a:hover {
+  border-color: #eeeeee #eeeeee #dddddd;
+}
+.bs3 .nav-tabs > li.active > a,
+.bs3 .nav-tabs > li.active > a:hover,
+.bs3 .nav-tabs > li.active > a:focus {
+  color: #555555;
+  background-color: #ffffff;
+  border: 1px solid #dddddd;
+  border-bottom-color: transparent;
+  cursor: default;
+}
+.bs3 .nav-tabs.nav-justified {
+  width: 100%;
+  border-bottom: 0;
+}
+.bs3 .nav-tabs.nav-justified > li {
+  float: none;
+}
+.bs3 .nav-tabs.nav-justified > li > a {
+  text-align: center;
+  margin-bottom: 5px;
+}
+@media (min-width: 768px) {
+  .bs3 .nav-tabs.nav-justified > li {
+    display: table-cell;
+    width: 1%;
+  }
+  .bs3 .nav-tabs.nav-justified > li > a {
+    margin-bottom: 0;
+  }
+}
+.bs3 .nav-tabs.nav-justified > li > a {
+  margin-right: 0;
+  border-radius: 4px;
+}
+.bs3 .nav-tabs.nav-justified > .active > a,
+.bs3 .nav-tabs.nav-justified > .active > a:hover,
+.bs3 .nav-tabs.nav-justified > .active > a:focus {
+  border: 1px solid #dddddd;
+}
+@media (min-width: 768px) {
+  .bs3 .nav-tabs.nav-justified > li > a {
+    border-bottom: 1px solid #dddddd;
+    border-radius: 4px 4px 0 0;
+  }
+  .bs3 .nav-tabs.nav-justified > .active > a,
+  .bs3 .nav-tabs.nav-justified > .active > a:hover,
+  .bs3 .nav-tabs.nav-justified > .active > a:focus {
+    border-bottom-color: #ffffff;
+  }
+}
+.bs3 .nav-pills > li {
+  float: left;
+}
+.bs3 .nav-pills > li > a {
+  border-radius: 5px;
+}
+.bs3 .nav-pills > li + li {
+  margin-left: 2px;
+}
+.bs3 .nav-pills > li.active > a,
+.bs3 .nav-pills > li.active > a:hover,
+.bs3 .nav-pills > li.active > a:focus {
+  color: #ffffff;
+  background-color: #428bca;
+}
+.bs3 .nav-stacked > li {
+  float: none;
+}
+.bs3 .nav-stacked > li + li {
+  margin-top: 2px;
+  margin-left: 0;
+}
+.bs3 .nav-justified {
+  width: 100%;
+}
+.bs3 .nav-justified > li {
+  float: none;
+}
+.bs3 .nav-justified > li > a {
+  text-align: center;
+  margin-bottom: 5px;
+}
+@media (min-width: 768px) {
+  .bs3 .nav-justified > li {
+    display: table-cell;
+    width: 1%;
+  }
+  .bs3 .nav-justified > li > a {
+    margin-bottom: 0;
+  }
+}
+.bs3 .nav-tabs-justified {
+  border-bottom: 0;
+}
+.bs3 .nav-tabs-justified > li > a {
+  margin-right: 0;
+  border-radius: 4px;
+}
+.bs3 .nav-tabs-justified > .active > a,
+.bs3 .nav-tabs-justified > .active > a:hover,
+.bs3 .nav-tabs-justified > .active > a:focus {
+  border: 1px solid #dddddd;
+}
+@media (min-width: 768px) {
+  .bs3 .nav-tabs-justified > li > a {
+    border-bottom: 1px solid #dddddd;
+    border-radius: 4px 4px 0 0;
+  }
+  .bs3 .nav-tabs-justified > .active > a,
+  .bs3 .nav-tabs-justified > .active > a:hover,
+  .bs3 .nav-tabs-justified > .active > a:focus {
+    border-bottom-color: #ffffff;
+  }
+}
+.bs3 .tabbable:before,
+.bs3 .tabbable:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .tabbable:after {
+  clear: both;
+}
+.bs3 .tabbable:before,
+.bs3 .tabbable:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .tabbable:after {
+  clear: both;
+}
+.bs3 .tab-content > .tab-pane,
+.bs3 .pill-content > .pill-pane {
+  display: none;
+}
+.bs3 .tab-content > .active,
+.bs3 .pill-content > .active {
+  display: block;
+}
+.bs3 .nav .caret {
+  border-top-color: #428bca;
+  border-bottom-color: #428bca;
+}
+.bs3 .nav a:hover .caret {
+  border-top-color: #2a6496;
+  border-bottom-color: #2a6496;
+}
+.bs3 .nav-tabs .dropdown-menu {
+  margin-top: -1px;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+.bs3 .navbar {
+  position: relative;
+  z-index: 1000;
+  min-height: 50px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+}
+.bs3 .navbar:before,
+.bs3 .navbar:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .navbar:after {
+  clear: both;
+}
+.bs3 .navbar:before,
+.bs3 .navbar:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .navbar:after {
+  clear: both;
+}
+@media (min-width: 768px) {
+  .bs3 .navbar {
+    border-radius: 4px;
+  }
+}
+.bs3 .navbar-header:before,
+.bs3 .navbar-header:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .navbar-header:after {
+  clear: both;
+}
+.bs3 .navbar-header:before,
+.bs3 .navbar-header:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .navbar-header:after {
+  clear: both;
+}
+@media (min-width: 768px) {
+  .bs3 .navbar-header {
+    float: left;
+  }
+}
+.bs3 .navbar-collapse {
+  max-height: 340px;
+  overflow-x: visible;
+  padding-right: 15px;
+  padding-left: 15px;
+  border-top: 1px solid transparent;
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
+  -webkit-overflow-scrolling: touch;
+}
+.bs3 .navbar-collapse:before,
+.bs3 .navbar-collapse:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .navbar-collapse:after {
+  clear: both;
+}
+.bs3 .navbar-collapse:before,
+.bs3 .navbar-collapse:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .navbar-collapse:after {
+  clear: both;
+}
+.bs3 .navbar-collapse.in {
+  overflow-y: auto;
+}
+@media (min-width: 768px) {
+  .bs3 .navbar-collapse {
+    width: auto;
+    border-top: 0;
+    box-shadow: none;
+  }
+  .bs3 .navbar-collapse.collapse {
+    display: block !important;
+    height: auto !important;
+    padding-bottom: 0;
+    overflow: visible !important;
+  }
+  .bs3 .navbar-collapse.in {
+    overflow-y: visible;
+  }
+  .bs3 .navbar-collapse .navbar-nav.navbar-left:first-child {
+    margin-left: -15px;
+  }
+  .bs3 .navbar-collapse .navbar-nav.navbar-right:last-child {
+    margin-right: -15px;
+  }
+  .bs3 .navbar-collapse .navbar-text:last-child {
+    margin-right: 0;
+  }
+}
+.bs3 .container > .navbar-header,
+.bs3 .container > .navbar-collapse {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+@media (min-width: 768px) {
+  .bs3 .container > .navbar-header,
+  .bs3 .container > .navbar-collapse {
+    margin-right: 0;
+    margin-left: 0;
+  }
+}
+.bs3 .navbar-static-top {
+  border-width: 0 0 1px;
+}
+@media (min-width: 768px) {
+  .bs3 .navbar-static-top {
+    border-radius: 0;
+  }
+}
+.bs3 .navbar-fixed-top,
+.bs3 .navbar-fixed-bottom {
+  position: fixed;
+  right: 0;
+  left: 0;
+  border-width: 0 0 1px;
+}
+@media (min-width: 768px) {
+  .bs3 .navbar-fixed-top,
+  .bs3 .navbar-fixed-bottom {
+    border-radius: 0;
+  }
+}
+.bs3 .navbar-fixed-top {
+  z-index: 1030;
+  top: 0;
+}
+.bs3 .navbar-fixed-bottom {
+  bottom: 0;
+  margin-bottom: 0;
+}
+.bs3 .navbar-brand {
+  float: left;
+  padding: 15px 15px;
+  font-size: 18px;
+  line-height: 20px;
+}
+.bs3 .navbar-brand:hover,
+.bs3 .navbar-brand:focus {
+  text-decoration: none;
+}
+@media (min-width: 768px) {
+  .navbar > .container .bs3 .navbar-brand {
+    margin-left: -15px;
+  }
+}
+.bs3 .navbar-toggle {
+  position: relative;
+  float: right;
+  margin-right: 15px;
+  padding: 9px 10px;
+  margin-top: 8px;
+  margin-bottom: 8px;
+  background-color: transparent;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.bs3 .navbar-toggle .icon-bar {
+  display: block;
+  width: 22px;
+  height: 2px;
+  border-radius: 1px;
+}
+.bs3 .navbar-toggle .icon-bar + .icon-bar {
+  margin-top: 4px;
+}
+@media (min-width: 768px) {
+  .bs3 .navbar-toggle {
+    display: none;
+  }
+}
+.bs3 .navbar-nav {
+  margin: 7.5px -15px;
+}
+.bs3 .navbar-nav > li > a {
+  padding-top: 10px;
+  padding-bottom: 10px;
+  line-height: 20px;
+}
+@media (max-width: 767px) {
+  .bs3 .navbar-nav .open .dropdown-menu {
+    position: static;
+    float: none;
+    width: auto;
+    margin-top: 0;
+    background-color: transparent;
+    border: 0;
+    box-shadow: none;
+  }
+  .bs3 .navbar-nav .open .dropdown-menu > li > a,
+  .bs3 .navbar-nav .open .dropdown-menu .dropdown-header {
+    padding: 5px 15px 5px 25px;
+  }
+  .bs3 .navbar-nav .open .dropdown-menu > li > a {
+    line-height: 20px;
+  }
+  .bs3 .navbar-nav .open .dropdown-menu > li > a:hover,
+  .bs3 .navbar-nav .open .dropdown-menu > li > a:focus {
+    background-image: none;
+  }
+}
+@media (min-width: 768px) {
+  .bs3 .navbar-nav {
+    float: left;
+    margin: 0;
+  }
+  .bs3 .navbar-nav > li {
+    float: left;
+  }
+  .bs3 .navbar-nav > li > a {
+    padding-top: 15px;
+    padding-bottom: 15px;
+  }
+}
+@media (min-width: 768px) {
+  .bs3 .navbar-left {
+    float: left !important;
+  }
+  .bs3 .navbar-right {
+    float: right !important;
+  }
+}
+.bs3 .navbar-form {
+  margin-left: -15px;
+  margin-right: -15px;
+  padding: 10px 15px;
+  border-top: 1px solid transparent;
+  border-bottom: 1px solid transparent;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+  margin-top: 8px;
+  margin-bottom: 8px;
+}
+@media (min-width: 768px) {
+  .bs3 .navbar-form .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .bs3 .navbar-form .form-control {
+    display: inline-block;
+  }
+  .bs3 .navbar-form .radio,
+  .bs3 .navbar-form .checkbox {
+    display: inline-block;
+    margin-top: 0;
+    margin-bottom: 0;
+    padding-left: 0;
+  }
+  .bs3 .navbar-form .radio input[type="radio"],
+  .bs3 .navbar-form .checkbox input[type="checkbox"] {
+    float: none;
+    margin-left: 0;
+  }
+}
+@media (max-width: 767px) {
+  .bs3 .navbar-form .form-group {
+    margin-bottom: 5px;
+  }
+}
+@media (min-width: 768px) {
+  .bs3 .navbar-form {
+    width: auto;
+    border: 0;
+    margin-left: 0;
+    margin-right: 0;
+    padding-top: 0;
+    padding-bottom: 0;
+    -webkit-box-shadow: none;
+    box-shadow: none;
+  }
+}
+.bs3 .navbar-nav > li > .dropdown-menu {
+  margin-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+.bs3 .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.bs3 .navbar-nav.pull-right > li > .dropdown-menu,
+.bs3 .navbar-nav > li > .dropdown-menu.pull-right {
+  left: auto;
+  right: 0;
+}
+.bs3 .navbar-btn {
+  margin-top: 8px;
+  margin-bottom: 8px;
+}
+.bs3 .navbar-text {
+  float: left;
+  margin-top: 15px;
+  margin-bottom: 15px;
+}
+@media (min-width: 768px) {
+  .bs3 .navbar-text {
+    margin-left: 15px;
+    margin-right: 15px;
+  }
+}
+.bs3 .navbar-default {
+  background-color: #f8f8f8;
+  border-color: #e7e7e7;
+}
+.bs3 .navbar-default .navbar-brand {
+  color: #777777;
+}
+.bs3 .navbar-default .navbar-brand:hover,
+.bs3 .navbar-default .navbar-brand:focus {
+  color: #5e5e5e;
+  background-color: transparent;
+}
+.bs3 .navbar-default .navbar-text {
+  color: #777777;
+}
+.bs3 .navbar-default .navbar-nav > li > a {
+  color: #777777;
+}
+.bs3 .navbar-default .navbar-nav > li > a:hover,
+.bs3 .navbar-default .navbar-nav > li > a:focus {
+  color: #333333;
+  background-color: transparent;
+}
+.bs3 .navbar-default .navbar-nav > .active > a,
+.bs3 .navbar-default .navbar-nav > .active > a:hover,
+.bs3 .navbar-default .navbar-nav > .active > a:focus {
+  color: #555555;
+  background-color: #e7e7e7;
+}
+.bs3 .navbar-default .navbar-nav > .disabled > a,
+.bs3 .navbar-default .navbar-nav > .disabled > a:hover,
+.bs3 .navbar-default .navbar-nav > .disabled > a:focus {
+  color: #cccccc;
+  background-color: transparent;
+}
+.bs3 .navbar-default .navbar-toggle {
+  border-color: #dddddd;
+}
+.bs3 .navbar-default .navbar-toggle:hover,
+.bs3 .navbar-default .navbar-toggle:focus {
+  background-color: #dddddd;
+}
+.bs3 .navbar-default .navbar-toggle .icon-bar {
+  background-color: #cccccc;
+}
+.bs3 .navbar-default .navbar-collapse,
+.bs3 .navbar-default .navbar-form {
+  border-color: #e6e6e6;
+}
+.bs3 .navbar-default .navbar-nav > .dropdown > a:hover .caret,
+.bs3 .navbar-default .navbar-nav > .dropdown > a:focus .caret {
+  border-top-color: #333333;
+  border-bottom-color: #333333;
+}
+.bs3 .navbar-default .navbar-nav > .open > a,
+.bs3 .navbar-default .navbar-nav > .open > a:hover,
+.bs3 .navbar-default .navbar-nav > .open > a:focus {
+  background-color: #e7e7e7;
+  color: #555555;
+}
+.bs3 .navbar-default .navbar-nav > .open > a .caret,
+.bs3 .navbar-default .navbar-nav > .open > a:hover .caret,
+.bs3 .navbar-default .navbar-nav > .open > a:focus .caret {
+  border-top-color: #555555;
+  border-bottom-color: #555555;
+}
+.bs3 .navbar-default .navbar-nav > .dropdown > a .caret {
+  border-top-color: #777777;
+  border-bottom-color: #777777;
+}
+@media (max-width: 767px) {
+  .bs3 .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+    color: #777777;
+  }
+  .bs3 .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+  .bs3 .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+    color: #333333;
+    background-color: transparent;
+  }
+  .bs3 .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+  .bs3 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .bs3 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+    color: #555555;
+    background-color: #e7e7e7;
+  }
+  .bs3 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+  .bs3 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+  .bs3 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+    color: #cccccc;
+    background-color: transparent;
+  }
+}
+.bs3 .navbar-default .navbar-link {
+  color: #777777;
+}
+.bs3 .navbar-default .navbar-link:hover {
+  color: #333333;
+}
+.bs3 .navbar-inverse {
+  background-color: #222222;
+  border-color: #080808;
+}
+.bs3 .navbar-inverse .navbar-brand {
+  color: #999999;
+}
+.bs3 .navbar-inverse .navbar-brand:hover,
+.bs3 .navbar-inverse .navbar-brand:focus {
+  color: #ffffff;
+  background-color: transparent;
+}
+.bs3 .navbar-inverse .navbar-text {
+  color: #999999;
+}
+.bs3 .navbar-inverse .navbar-nav > li > a {
+  color: #999999;
+}
+.bs3 .navbar-inverse .navbar-nav > li > a:hover,
+.bs3 .navbar-inverse .navbar-nav > li > a:focus {
+  color: #ffffff;
+  background-color: transparent;
+}
+.bs3 .navbar-inverse .navbar-nav > .active > a,
+.bs3 .navbar-inverse .navbar-nav > .active > a:hover,
+.bs3 .navbar-inverse .navbar-nav > .active > a:focus {
+  color: #ffffff;
+  background-color: #080808;
+}
+.bs3 .navbar-inverse .navbar-nav > .disabled > a,
+.bs3 .navbar-inverse .navbar-nav > .disabled > a:hover,
+.bs3 .navbar-inverse .navbar-nav > .disabled > a:focus {
+  color: #444444;
+  background-color: transparent;
+}
+.bs3 .navbar-inverse .navbar-toggle {
+  border-color: #333333;
+}
+.bs3 .navbar-inverse .navbar-toggle:hover,
+.bs3 .navbar-inverse .navbar-toggle:focus {
+  background-color: #333333;
+}
+.bs3 .navbar-inverse .navbar-toggle .icon-bar {
+  background-color: #ffffff;
+}
+.bs3 .navbar-inverse .navbar-collapse,
+.bs3 .navbar-inverse .navbar-form {
+  border-color: #101010;
+}
+.bs3 .navbar-inverse .navbar-nav > .open > a,
+.bs3 .navbar-inverse .navbar-nav > .open > a:hover,
+.bs3 .navbar-inverse .navbar-nav > .open > a:focus {
+  background-color: #080808;
+  color: #ffffff;
+}
+.bs3 .navbar-inverse .navbar-nav > .dropdown > a:hover .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+}
+.bs3 .navbar-inverse .navbar-nav > .dropdown > a .caret {
+  border-top-color: #999999;
+  border-bottom-color: #999999;
+}
+.bs3 .navbar-inverse .navbar-nav > .open > a .caret,
+.bs3 .navbar-inverse .navbar-nav > .open > a:hover .caret,
+.bs3 .navbar-inverse .navbar-nav > .open > a:focus .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+}
+@media (max-width: 767px) {
+  .bs3 .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+    border-color: #080808;
+  }
+  .bs3 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+    color: #999999;
+  }
+  .bs3 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+  .bs3 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+    color: #ffffff;
+    background-color: transparent;
+  }
+  .bs3 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+  .bs3 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .bs3 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+    color: #ffffff;
+    background-color: #080808;
+  }
+  .bs3 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+  .bs3 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+  .bs3 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+    color: #444444;
+    background-color: transparent;
+  }
+}
+.bs3 .navbar-inverse .navbar-link {
+  color: #999999;
+}
+.bs3 .navbar-inverse .navbar-link:hover {
+  color: #ffffff;
+}
+.bs3 .breadcrumb {
+  padding: 8px 15px;
+  margin-bottom: 20px;
+  list-style: none;
+  background-color: #f5f5f5;
+  border-radius: 4px;
+}
+.bs3 .breadcrumb > li {
+  display: inline-block;
+}
+.bs3 .breadcrumb > li + li:before {
+  content: "/\00a0";
+  padding: 0 5px;
+  color: #cccccc;
+}
+.bs3 .breadcrumb > .active {
+  color: #999999;
+}
+.bs3 .pagination {
+  display: inline-block;
+  padding-left: 0;
+  margin: 20px 0;
+  border-radius: 4px;
+}
+.bs3 .pagination > li {
+  display: inline;
+}
+.bs3 .pagination > li > a,
+.bs3 .pagination > li > span {
+  position: relative;
+  float: left;
+  padding: 6px 12px;
+  line-height: 1.428571429;
+  text-decoration: none;
+  background-color: #ffffff;
+  border: 1px solid #dddddd;
+  margin-left: -1px;
+}
+.bs3 .pagination > li:first-child > a,
+.bs3 .pagination > li:first-child > span {
+  margin-left: 0;
+  border-bottom-left-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.bs3 .pagination > li:last-child > a,
+.bs3 .pagination > li:last-child > span {
+  border-bottom-right-radius: 4px;
+  border-top-right-radius: 4px;
+}
+.bs3 .pagination > li > a:hover,
+.bs3 .pagination > li > span:hover,
+.bs3 .pagination > li > a:focus,
+.bs3 .pagination > li > span:focus {
+  background-color: #eeeeee;
+}
+.bs3 .pagination > .active > a,
+.bs3 .pagination > .active > span,
+.bs3 .pagination > .active > a:hover,
+.bs3 .pagination > .active > span:hover,
+.bs3 .pagination > .active > a:focus,
+.bs3 .pagination > .active > span:focus {
+  z-index: 2;
+  color: #ffffff;
+  background-color: #428bca;
+  border-color: #428bca;
+  cursor: default;
+}
+.bs3 .pagination > .disabled > span,
+.bs3 .pagination > .disabled > span:hover,
+.bs3 .pagination > .disabled > span:focus,
+.bs3 .pagination > .disabled > a,
+.bs3 .pagination > .disabled > a:hover,
+.bs3 .pagination > .disabled > a:focus {
+  color: #999999;
+  background-color: #ffffff;
+  border-color: #dddddd;
+  cursor: not-allowed;
+}
+.bs3 .pagination-lg > li > a,
+.bs3 .pagination-lg > li > span {
+  padding: 10px 16px;
+  font-size: 18px;
+}
+.bs3 .pagination-lg > li:first-child > a,
+.bs3 .pagination-lg > li:first-child > span {
+  border-bottom-left-radius: 6px;
+  border-top-left-radius: 6px;
+}
+.bs3 .pagination-lg > li:last-child > a,
+.bs3 .pagination-lg > li:last-child > span {
+  border-bottom-right-radius: 6px;
+  border-top-right-radius: 6px;
+}
+.bs3 .pagination-sm > li > a,
+.bs3 .pagination-sm > li > span {
+  padding: 5px 10px;
+  font-size: 12px;
+}
+.bs3 .pagination-sm > li:first-child > a,
+.bs3 .pagination-sm > li:first-child > span {
+  border-bottom-left-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.bs3 .pagination-sm > li:last-child > a,
+.bs3 .pagination-sm > li:last-child > span {
+  border-bottom-right-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.bs3 .pager {
+  padding-left: 0;
+  margin: 20px 0;
+  list-style: none;
+  text-align: center;
+}
+.bs3 .pager:before,
+.bs3 .pager:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .pager:after {
+  clear: both;
+}
+.bs3 .pager:before,
+.bs3 .pager:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .pager:after {
+  clear: both;
+}
+.bs3 .pager li {
+  display: inline;
+}
+.bs3 .pager li > a,
+.bs3 .pager li > span {
+  display: inline-block;
+  padding: 5px 14px;
+  background-color: #ffffff;
+  border: 1px solid #dddddd;
+  border-radius: 15px;
+}
+.bs3 .pager li > a:hover,
+.bs3 .pager li > a:focus {
+  text-decoration: none;
+  background-color: #eeeeee;
+}
+.bs3 .pager .next > a,
+.bs3 .pager .next > span {
+  float: right;
+}
+.bs3 .pager .previous > a,
+.bs3 .pager .previous > span {
+  float: left;
+}
+.bs3 .pager .disabled > a,
+.bs3 .pager .disabled > a:hover,
+.bs3 .pager .disabled > a:focus,
+.bs3 .pager .disabled > span {
+  color: #999999;
+  background-color: #ffffff;
+  cursor: not-allowed;
+}
+.bs3 .label {
+  display: inline;
+  padding: .2em .6em .3em;
+  font-size: 75%;
+  font-weight: bold;
+  line-height: 1;
+  color: #ffffff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  border-radius: .25em;
+}
+.bs3 .label[href]:hover,
+.bs3 .label[href]:focus {
+  color: #ffffff;
+  text-decoration: none;
+  cursor: pointer;
+}
+.bs3 .label:empty {
+  display: none;
+}
+.bs3 .label-default {
+  background-color: #999999;
+}
+.bs3 .label-default[href]:hover,
+.bs3 .label-default[href]:focus {
+  background-color: #808080;
+}
+.bs3 .label-primary {
+  background-color: #428bca;
+}
+.bs3 .label-primary[href]:hover,
+.bs3 .label-primary[href]:focus {
+  background-color: #3071a9;
+}
+.bs3 .label-success {
+  background-color: #5cb85c;
+}
+.bs3 .label-success[href]:hover,
+.bs3 .label-success[href]:focus {
+  background-color: #449d44;
+}
+.bs3 .label-info {
+  background-color: #5bc0de;
+}
+.bs3 .label-info[href]:hover,
+.bs3 .label-info[href]:focus {
+  background-color: #31b0d5;
+}
+.bs3 .label-warning {
+  background-color: #f0ad4e;
+}
+.bs3 .label-warning[href]:hover,
+.bs3 .label-warning[href]:focus {
+  background-color: #ec971f;
+}
+.bs3 .label-danger {
+  background-color: #d9534f;
+}
+.bs3 .label-danger[href]:hover,
+.bs3 .label-danger[href]:focus {
+  background-color: #c9302c;
+}
+.bs3 .badge {
+  display: inline-block;
+  min-width: 10px;
+  padding: 3px 7px;
+  font-size: 12px;
+  font-weight: bold;
+  color: #ffffff;
+  line-height: 1;
+  vertical-align: baseline;
+  white-space: nowrap;
+  text-align: center;
+  background-color: #999999;
+  border-radius: 10px;
+}
+.bs3 .badge:empty {
+  display: none;
+}
+.bs3 a.badge:hover,
+.bs3 a.badge:focus {
+  color: #ffffff;
+  text-decoration: none;
+  cursor: pointer;
+}
+.bs3 .btn .badge {
+  position: relative;
+  top: -1px;
+}
+.bs3 a.list-group-item.active > .badge,
+.bs3 .nav-pills > .active > a > .badge {
+  color: #428bca;
+  background-color: #ffffff;
+}
+.bs3 .nav-pills > li > a > .badge {
+  margin-left: 3px;
+}
+.bs3 .jumbotron {
+  padding: 30px;
+  margin-bottom: 30px;
+  font-size: 21px;
+  font-weight: 200;
+  line-height: 2.1428571435;
+  color: inherit;
+  background-color: #eeeeee;
+}
+.bs3 .jumbotron h1 {
+  line-height: 1;
+  color: inherit;
+}
+.bs3 .jumbotron p {
+  line-height: 1.4;
+}
+.container .bs3 .jumbotron {
+  border-radius: 6px;
+}
+@media screen and (min-width: 768px) {
+  .bs3 .jumbotron {
+    padding-top: 48px;
+    padding-bottom: 48px;
+  }
+  .container .bs3 .jumbotron {
+    padding-left: 60px;
+    padding-right: 60px;
+  }
+  .bs3 .jumbotron h1 {
+    font-size: 63px;
+  }
+}
+.bs3 .thumbnail {
+  padding: 4px;
+  line-height: 1.428571429;
+  background-color: #ffffff;
+  border: 1px solid #dddddd;
+  border-radius: 4px;
+  -webkit-transition: all 0.2s ease-in-out;
+  transition: all 0.2s ease-in-out;
+  display: inline-block;
+  max-width: 100%;
+  height: auto;
+  display: block;
+  margin-bottom: 20px;
+}
+.bs3 .thumbnail > img {
+  display: block;
+  max-width: 100%;
+  height: auto;
+}
+.bs3 a.thumbnail:hover,
+.bs3 a.thumbnail:focus {
+  border-color: #428bca;
+}
+.bs3 .thumbnail > img {
+  margin-left: auto;
+  margin-right: auto;
+}
+.bs3 .thumbnail .caption {
+  padding: 9px;
+  color: #333333;
+}
+.bs3 .alert {
+  padding: 15px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.bs3 .alert h4 {
+  margin-top: 0;
+  color: inherit;
+}
+.bs3 .alert .alert-link {
+  font-weight: bold;
+}
+.bs3 .alert > p,
+.bs3 .alert > ul {
+  margin-bottom: 0;
+}
+.bs3 .alert > p + p {
+  margin-top: 5px;
+}
+.bs3 .alert-dismissable {
+  padding-right: 35px;
+}
+.bs3 .alert-dismissable .close {
+  position: relative;
+  top: -2px;
+  right: -21px;
+  color: inherit;
+}
+.bs3 .alert-success {
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+  color: #468847;
+}
+.bs3 .alert-success hr {
+  border-top-color: #c9e2b3;
+}
+.bs3 .alert-success .alert-link {
+  color: #356635;
+}
+.bs3 .alert-info {
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+  color: #3a87ad;
+}
+.bs3 .alert-info hr {
+  border-top-color: #a6e1ec;
+}
+.bs3 .alert-info .alert-link {
+  color: #2d6987;
+}
+.bs3 .alert-warning {
+  background-color: #fcf8e3;
+  border-color: #fbeed5;
+  color: #c09853;
+}
+.bs3 .alert-warning hr {
+  border-top-color: #f8e5be;
+}
+.bs3 .alert-warning .alert-link {
+  color: #a47e3c;
+}
+.bs3 .alert-danger {
+  background-color: #f2dede;
+  border-color: #eed3d7;
+  color: #b94a48;
+}
+.bs3 .alert-danger hr {
+  border-top-color: #e6c1c7;
+}
+.bs3 .alert-danger .alert-link {
+  color: #953b39;
+}
+@-webkit-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@-moz-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@-o-keyframes progress-bar-stripes {
+  from {
+    background-position: 0 0;
+  }
+  to {
+    background-position: 40px 0;
+  }
+}
+@keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+.bs3 .progress {
+  overflow: hidden;
+  height: 20px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+.bs3 .progress-bar {
+  float: left;
+  width: 0%;
+  height: 100%;
+  font-size: 12px;
+  line-height: 20px;
+  color: #ffffff;
+  text-align: center;
+  background-color: #428bca;
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-transition: width 0.6s ease;
+  transition: width 0.6s ease;
+}
+.bs3 .progress-striped .progress-bar {
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-size: 40px 40px;
+}
+.bs3 .progress.active .progress-bar {
+  -webkit-animation: progress-bar-stripes 2s linear infinite;
+  -moz-animation: progress-bar-stripes 2s linear infinite;
+  -ms-animation: progress-bar-stripes 2s linear infinite;
+  -o-animation: progress-bar-stripes 2s linear infinite;
+  animation: progress-bar-stripes 2s linear infinite;
+}
+.bs3 .progress-bar-success {
+  background-color: #5cb85c;
+}
+.progress-striped .bs3 .progress-bar-success {
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.bs3 .progress-bar-info {
+  background-color: #5bc0de;
+}
+.progress-striped .bs3 .progress-bar-info {
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.bs3 .progress-bar-warning {
+  background-color: #f0ad4e;
+}
+.progress-striped .bs3 .progress-bar-warning {
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.bs3 .progress-bar-danger {
+  background-color: #d9534f;
+}
+.progress-striped .bs3 .progress-bar-danger {
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.bs3 .media,
+.bs3 .media-body {
+  overflow: hidden;
+  zoom: 1;
+}
+.bs3 .media,
+.bs3 .media .media {
+  margin-top: 15px;
+}
+.bs3 .media:first-child {
+  margin-top: 0;
+}
+.bs3 .media-object {
+  display: block;
+}
+.bs3 .media-heading {
+  margin: 0 0 5px;
+}
+.bs3 .media > .pull-left {
+  margin-right: 10px;
+}
+.bs3 .media > .pull-right {
+  margin-left: 10px;
+}
+.bs3 .media-list {
+  padding-left: 0;
+  list-style: none;
+}
+.bs3 .list-group {
+  margin-bottom: 20px;
+  padding-left: 0;
+}
+.bs3 .list-group-item {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+  margin-bottom: -1px;
+  background-color: #ffffff;
+  border: 1px solid #dddddd;
+}
+.bs3 .list-group-item:first-child {
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.bs3 .list-group-item:last-child {
+  margin-bottom: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.bs3 .list-group-item > .badge {
+  float: right;
+}
+.bs3 .list-group-item > .badge + .badge {
+  margin-right: 5px;
+}
+a.bs3 .list-group-item {
+  color: #555555;
+}
+a.bs3 .list-group-item .list-group-item-heading {
+  color: #333333;
+}
+a.bs3 .list-group-item:hover,
+a.bs3 .list-group-item:focus {
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+.bs3 .list-group-item.active,
+.bs3 .list-group-item.active:hover,
+.bs3 .list-group-item.active:focus {
+  z-index: 2;
+  color: #ffffff;
+  background-color: #428bca;
+  border-color: #428bca;
+}
+.bs3 .list-group-item.active .list-group-item-heading,
+.bs3 .list-group-item.active:hover .list-group-item-heading,
+.bs3 .list-group-item.active:focus .list-group-item-heading {
+  color: inherit;
+}
+.bs3 .list-group-item.active .list-group-item-text,
+.bs3 .list-group-item.active:hover .list-group-item-text,
+.bs3 .list-group-item.active:focus .list-group-item-text {
+  color: #e1edf7;
+}
+.bs3 .list-group-item-heading {
+  margin-top: 0;
+  margin-bottom: 5px;
+}
+.bs3 .list-group-item-text {
+  margin-bottom: 0;
+  line-height: 1.3;
+}
+.bs3 .panel {
+  margin-bottom: 20px;
+  background-color: #ffffff;
+  border: 1px solid transparent;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.bs3 .panel-body {
+  padding: 15px;
+}
+.bs3 .panel-body:before,
+.bs3 .panel-body:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .panel-body:after {
+  clear: both;
+}
+.bs3 .panel-body:before,
+.bs3 .panel-body:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .panel-body:after {
+  clear: both;
+}
+.bs3 .panel > .list-group {
+  margin-bottom: 0;
+}
+.bs3 .panel > .list-group .list-group-item {
+  border-width: 1px 0;
+}
+.bs3 .panel > .list-group .list-group-item:first-child {
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+.bs3 .panel > .list-group .list-group-item:last-child {
+  border-bottom: 0;
+}
+.bs3 .panel-heading + .list-group .list-group-item:first-child {
+  border-top-width: 0;
+}
+.bs3 .panel > .table {
+  margin-bottom: 0;
+}
+.bs3 .panel > .panel-body + .table {
+  border-top: 1px solid #dddddd;
+}
+.bs3 .panel > .table-bordered {
+  border: 0;
+}
+.bs3 .panel > .table-bordered > thead > tr > th:first-child,
+.bs3 .panel > .table-bordered > tbody > tr > th:first-child,
+.bs3 .panel > .table-bordered > tfoot > tr > th:first-child,
+.bs3 .panel > .table-bordered > thead > tr > td:first-child,
+.bs3 .panel > .table-bordered > tbody > tr > td:first-child,
+.bs3 .panel > .table-bordered > tfoot > tr > td:first-child {
+  border-left: 0;
+}
+.bs3 .panel > .table-bordered > thead > tr > th:last-child,
+.bs3 .panel > .table-bordered > tbody > tr > th:last-child,
+.bs3 .panel > .table-bordered > tfoot > tr > th:last-child,
+.bs3 .panel > .table-bordered > thead > tr > td:last-child,
+.bs3 .panel > .table-bordered > tbody > tr > td:last-child,
+.bs3 .panel > .table-bordered > tfoot > tr > td:last-child {
+  border-right: 0;
+}
+.bs3 .panel > .table-bordered > thead > tr:last-child > th,
+.bs3 .panel > .table-bordered > tbody > tr:last-child > th,
+.bs3 .panel > .table-bordered > tfoot > tr:last-child > th,
+.bs3 .panel > .table-bordered > thead > tr:last-child > td,
+.bs3 .panel > .table-bordered > tbody > tr:last-child > td,
+.bs3 .panel > .table-bordered > tfoot > tr:last-child > td {
+  border-bottom: 0;
+}
+.bs3 .panel-heading {
+  padding: 10px 15px;
+  border-bottom: 1px solid transparent;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.bs3 .panel-title {
+  margin-top: 0;
+  margin-bottom: 0;
+  font-size: 16px;
+}
+.bs3 .panel-title > a {
+  color: inherit;
+}
+.bs3 .panel-footer {
+  padding: 10px 15px;
+  background-color: #f5f5f5;
+  border-top: 1px solid #dddddd;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.bs3 .panel-group .panel {
+  margin-bottom: 0;
+  border-radius: 4px;
+  overflow: hidden;
+}
+.bs3 .panel-group .panel + .panel {
+  margin-top: 5px;
+}
+.bs3 .panel-group .panel-heading {
+  border-bottom: 0;
+}
+.bs3 .panel-group .panel-heading + .panel-collapse .panel-body {
+  border-top: 1px solid #dddddd;
+}
+.bs3 .panel-group .panel-footer {
+  border-top: 0;
+}
+.bs3 .panel-group .panel-footer + .panel-collapse .panel-body {
+  border-bottom: 1px solid #dddddd;
+}
+.bs3 .panel-default {
+  border-color: #dddddd;
+}
+.bs3 .panel-default > .panel-heading {
+  color: #333333;
+  background-color: #f5f5f5;
+  border-color: #dddddd;
+}
+.bs3 .panel-default > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #dddddd;
+}
+.bs3 .panel-default > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #dddddd;
+}
+.bs3 .panel-primary {
+  border-color: #428bca;
+}
+.bs3 .panel-primary > .panel-heading {
+  color: #ffffff;
+  background-color: #428bca;
+  border-color: #428bca;
+}
+.bs3 .panel-primary > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #428bca;
+}
+.bs3 .panel-primary > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #428bca;
+}
+.bs3 .panel-success {
+  border-color: #d6e9c6;
+}
+.bs3 .panel-success > .panel-heading {
+  color: #468847;
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.bs3 .panel-success > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #d6e9c6;
+}
+.bs3 .panel-success > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #d6e9c6;
+}
+.bs3 .panel-warning {
+  border-color: #fbeed5;
+}
+.bs3 .panel-warning > .panel-heading {
+  color: #c09853;
+  background-color: #fcf8e3;
+  border-color: #fbeed5;
+}
+.bs3 .panel-warning > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #fbeed5;
+}
+.bs3 .panel-warning > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #fbeed5;
+}
+.bs3 .panel-danger {
+  border-color: #eed3d7;
+}
+.bs3 .panel-danger > .panel-heading {
+  color: #b94a48;
+  background-color: #f2dede;
+  border-color: #eed3d7;
+}
+.bs3 .panel-danger > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #eed3d7;
+}
+.bs3 .panel-danger > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #eed3d7;
+}
+.bs3 .panel-info {
+  border-color: #bce8f1;
+}
+.bs3 .panel-info > .panel-heading {
+  color: #3a87ad;
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.bs3 .panel-info > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #bce8f1;
+}
+.bs3 .panel-info > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #bce8f1;
+}
+.bs3 .well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border: 1px solid #e3e3e3;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.bs3 .well blockquote {
+  border-color: #ddd;
+  border-color: rgba(0, 0, 0, 0.15);
+}
+.bs3 .well-lg {
+  padding: 24px;
+  border-radius: 6px;
+}
+.bs3 .well-sm {
+  padding: 9px;
+  border-radius: 3px;
+}
+.bs3 .close {
+  float: right;
+  font-size: 21px;
+  font-weight: bold;
+  line-height: 1;
+  color: #000000;
+  text-shadow: 0 1px 0 #ffffff;
+  opacity: 0.2;
+  filter: alpha(opacity=20);
+}
+.bs3 .close:hover,
+.bs3 .close:focus {
+  color: #000000;
+  text-decoration: none;
+  cursor: pointer;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+button.bs3 .close {
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+  -webkit-appearance: none;
+}
+.bs3 .modal-open {
+  overflow: hidden;
+}
+body.bs3 .modal-open,
+.bs3 .modal-open .navbar-fixed-top,
+.bs3 .modal-open .navbar-fixed-bottom {
+  margin-right: 15px;
+}
+.bs3 .modal {
+  display: none;
+  overflow: auto;
+  overflow-y: scroll;
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1040;
+}
+.bs3 .modal.fade .modal-dialog {
+  -webkit-transform: translate(0, -25%);
+  -ms-transform: translate(0, -25%);
+  transform: translate(0, -25%);
+  -webkit-transition: -webkit-transform 0.3s ease-out;
+  -moz-transition: -moz-transform 0.3s ease-out;
+  -o-transition: -o-transform 0.3s ease-out;
+  transition: transform 0.3s ease-out;
+}
+.bs3 .modal.in .modal-dialog {
+  -webkit-transform: translate(0, 0);
+  -ms-transform: translate(0, 0);
+  transform: translate(0, 0);
+}
+.bs3 .modal-dialog {
+  margin-left: auto;
+  margin-right: auto;
+  width: auto;
+  padding: 10px;
+  z-index: 1050;
+}
+.bs3 .modal-content {
+  position: relative;
+  background-color: #ffffff;
+  border: 1px solid #999999;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  border-radius: 6px;
+  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+  background-clip: padding-box;
+  outline: none;
+}
+.bs3 .modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1030;
+  background-color: #000000;
+}
+.bs3 .modal-backdrop.fade {
+  opacity: 0;
+  filter: alpha(opacity=0);
+}
+.bs3 .modal-backdrop.in {
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+}
+.bs3 .modal-header {
+  padding: 15px;
+  border-bottom: 1px solid #e5e5e5;
+  min-height: 16.428571429px;
+}
+.bs3 .modal-header .close {
+  margin-top: -2px;
+}
+.bs3 .modal-title {
+  margin: 0;
+  line-height: 1.428571429;
+}
+.bs3 .modal-body {
+  position: relative;
+  padding: 20px;
+}
+.bs3 .modal-footer {
+  margin-top: 15px;
+  padding: 19px 20px 20px;
+  text-align: right;
+  border-top: 1px solid #e5e5e5;
+}
+.bs3 .modal-footer:before,
+.bs3 .modal-footer:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .modal-footer:after {
+  clear: both;
+}
+.bs3 .modal-footer:before,
+.bs3 .modal-footer:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .modal-footer:after {
+  clear: both;
+}
+.bs3 .modal-footer .btn + .btn {
+  margin-left: 5px;
+  margin-bottom: 0;
+}
+.bs3 .modal-footer .btn-group .btn + .btn {
+  margin-left: -1px;
+}
+.bs3 .modal-footer .btn-block + .btn-block {
+  margin-left: 0;
+}
+@media screen and (min-width: 768px) {
+  .bs3 .modal-dialog {
+    left: 50%;
+    right: auto;
+    width: 600px;
+    padding-top: 30px;
+    padding-bottom: 30px;
+  }
+  .bs3 .modal-content {
+    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+  }
+}
+.bs3 .tooltip {
+  position: absolute;
+  z-index: 1030;
+  display: block;
+  visibility: visible;
+  font-size: 12px;
+  line-height: 1.4;
+  opacity: 0;
+  filter: alpha(opacity=0);
+}
+.bs3 .tooltip.in {
+  opacity: 0.9;
+  filter: alpha(opacity=90);
+}
+.bs3 .tooltip.top {
+  margin-top: -3px;
+  padding: 5px 0;
+}
+.bs3 .tooltip.right {
+  margin-left: 3px;
+  padding: 0 5px;
+}
+.bs3 .tooltip.bottom {
+  margin-top: 3px;
+  padding: 5px 0;
+}
+.bs3 .tooltip.left {
+  margin-left: -3px;
+  padding: 0 5px;
+}
+.bs3 .tooltip-inner {
+  max-width: 200px;
+  padding: 3px 8px;
+  color: #ffffff;
+  text-align: center;
+  text-decoration: none;
+  background-color: #000000;
+  border-radius: 4px;
+}
+.bs3 .tooltip-arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.bs3 .tooltip.top .tooltip-arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000000;
+}
+.bs3 .tooltip.top-left .tooltip-arrow {
+  bottom: 0;
+  left: 5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000000;
+}
+.bs3 .tooltip.top-right .tooltip-arrow {
+  bottom: 0;
+  right: 5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000000;
+}
+.bs3 .tooltip.right .tooltip-arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-width: 5px 5px 5px 0;
+  border-right-color: #000000;
+}
+.bs3 .tooltip.left .tooltip-arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-width: 5px 0 5px 5px;
+  border-left-color: #000000;
+}
+.bs3 .tooltip.bottom .tooltip-arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000000;
+}
+.bs3 .tooltip.bottom-left .tooltip-arrow {
+  top: 0;
+  left: 5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000000;
+}
+.bs3 .tooltip.bottom-right .tooltip-arrow {
+  top: 0;
+  right: 5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000000;
+}
+.bs3 .popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1010;
+  display: none;
+  max-width: 276px;
+  padding: 1px;
+  text-align: left;
+  background-color: #ffffff;
+  background-clip: padding-box;
+  border: 1px solid #cccccc;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  border-radius: 6px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  white-space: normal;
+}
+.bs3 .popover.top {
+  margin-top: -10px;
+}
+.bs3 .popover.right {
+  margin-left: 10px;
+}
+.bs3 .popover.bottom {
+  margin-top: 10px;
+}
+.bs3 .popover.left {
+  margin-left: -10px;
+}
+.bs3 .popover-title {
+  margin: 0;
+  padding: 8px 14px;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 18px;
+  background-color: #f7f7f7;
+  border-bottom: 1px solid #ebebeb;
+  border-radius: 5px 5px 0 0;
+}
+.bs3 .popover-content {
+  padding: 9px 14px;
+}
+.bs3 .popover .arrow,
+.bs3 .popover .arrow:after {
+  position: absolute;
+  display: block;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.bs3 .popover .arrow {
+  border-width: 11px;
+}
+.bs3 .popover .arrow:after {
+  border-width: 10px;
+  content: "";
+}
+.bs3 .popover.top .arrow {
+  left: 50%;
+  margin-left: -11px;
+  border-bottom-width: 0;
+  border-top-color: #999999;
+  border-top-color: rgba(0, 0, 0, 0.25);
+  bottom: -11px;
+}
+.bs3 .popover.top .arrow:after {
+  content: " ";
+  bottom: 1px;
+  margin-left: -10px;
+  border-bottom-width: 0;
+  border-top-color: #ffffff;
+}
+.bs3 .popover.right .arrow {
+  top: 50%;
+  left: -11px;
+  margin-top: -11px;
+  border-left-width: 0;
+  border-right-color: #999999;
+  border-right-color: rgba(0, 0, 0, 0.25);
+}
+.bs3 .popover.right .arrow:after {
+  content: " ";
+  left: 1px;
+  bottom: -10px;
+  border-left-width: 0;
+  border-right-color: #ffffff;
+}
+.bs3 .popover.bottom .arrow {
+  left: 50%;
+  margin-left: -11px;
+  border-top-width: 0;
+  border-bottom-color: #999999;
+  border-bottom-color: rgba(0, 0, 0, 0.25);
+  top: -11px;
+}
+.bs3 .popover.bottom .arrow:after {
+  content: " ";
+  top: 1px;
+  margin-left: -10px;
+  border-top-width: 0;
+  border-bottom-color: #ffffff;
+}
+.bs3 .popover.left .arrow {
+  top: 50%;
+  right: -11px;
+  margin-top: -11px;
+  border-right-width: 0;
+  border-left-color: #999999;
+  border-left-color: rgba(0, 0, 0, 0.25);
+}
+.bs3 .popover.left .arrow:after {
+  content: " ";
+  right: 1px;
+  border-right-width: 0;
+  border-left-color: #ffffff;
+  bottom: -10px;
+}
+.bs3 .carousel {
+  position: relative;
+}
+.bs3 .carousel-inner {
+  position: relative;
+  overflow: hidden;
+  width: 100%;
+}
+.bs3 .carousel-inner > .item {
+  display: none;
+  position: relative;
+  -webkit-transition: 0.6s ease-in-out left;
+  transition: 0.6s ease-in-out left;
+}
+.bs3 .carousel-inner > .item > img,
+.bs3 .carousel-inner > .item > a > img {
+  display: block;
+  max-width: 100%;
+  height: auto;
+  line-height: 1;
+}
+.bs3 .carousel-inner > .active,
+.bs3 .carousel-inner > .next,
+.bs3 .carousel-inner > .prev {
+  display: block;
+}
+.bs3 .carousel-inner > .active {
+  left: 0;
+}
+.bs3 .carousel-inner > .next,
+.bs3 .carousel-inner > .prev {
+  position: absolute;
+  top: 0;
+  width: 100%;
+}
+.bs3 .carousel-inner > .next {
+  left: 100%;
+}
+.bs3 .carousel-inner > .prev {
+  left: -100%;
+}
+.bs3 .carousel-inner > .next.left,
+.bs3 .carousel-inner > .prev.right {
+  left: 0;
+}
+.bs3 .carousel-inner > .active.left {
+  left: -100%;
+}
+.bs3 .carousel-inner > .active.right {
+  left: 100%;
+}
+.bs3 .carousel-control {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  width: 15%;
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+  font-size: 20px;
+  color: #ffffff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+}
+.bs3 .carousel-control.left {
+  background-image: -webkit-gradient(linear, 0% top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));
+  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0%), color-stop(rgba(0, 0, 0, 0.0001) 100%));
+  background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+}
+.bs3 .carousel-control.right {
+  left: auto;
+  right: 0;
+  background-image: -webkit-gradient(linear, 0% top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));
+  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0%), color-stop(rgba(0, 0, 0, 0.5) 100%));
+  background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+}
+.bs3 .carousel-control:hover,
+.bs3 .carousel-control:focus {
+  color: #ffffff;
+  text-decoration: none;
+  opacity: 0.9;
+  filter: alpha(opacity=90);
+}
+.bs3 .carousel-control .icon-prev,
+.bs3 .carousel-control .icon-next,
+.bs3 .carousel-control .glyphicon-chevron-left,
+.bs3 .carousel-control .glyphicon-chevron-right {
+  position: absolute;
+  top: 50%;
+  z-index: 5;
+  display: inline-block;
+}
+.bs3 .carousel-control .icon-prev,
+.bs3 .carousel-control .glyphicon-chevron-left {
+  left: 50%;
+}
+.bs3 .carousel-control .icon-next,
+.bs3 .carousel-control .glyphicon-chevron-right {
+  right: 50%;
+}
+.bs3 .carousel-control .icon-prev,
+.bs3 .carousel-control .icon-next {
+  width: 20px;
+  height: 20px;
+  margin-top: -10px;
+  margin-left: -10px;
+  font-family: serif;
+}
+.bs3 .carousel-control .icon-prev:before {
+  content: '\2039';
+}
+.bs3 .carousel-control .icon-next:before {
+  content: '\203a';
+}
+.bs3 .carousel-indicators {
+  position: absolute;
+  bottom: 10px;
+  left: 50%;
+  z-index: 15;
+  width: 60%;
+  margin-left: -30%;
+  padding-left: 0;
+  list-style: none;
+  text-align: center;
+}
+.bs3 .carousel-indicators li {
+  display: inline-block;
+  width: 10px;
+  height: 10px;
+  margin: 1px;
+  text-indent: -999px;
+  border: 1px solid #ffffff;
+  border-radius: 10px;
+  cursor: pointer;
+}
+.bs3 .carousel-indicators .active {
+  margin: 0;
+  width: 12px;
+  height: 12px;
+  background-color: #ffffff;
+}
+.bs3 .carousel-caption {
+  position: absolute;
+  left: 15%;
+  right: 15%;
+  bottom: 20px;
+  z-index: 10;
+  padding-top: 20px;
+  padding-bottom: 20px;
+  color: #ffffff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+}
+.bs3 .carousel-caption .btn {
+  text-shadow: none;
+}
+@media screen and (min-width: 768px) {
+  .bs3 .carousel-control .glyphicons-chevron-left,
+  .bs3 .carousel-control .glyphicons-chevron-right .icon-prev,
+  .bs3 .carousel-control .icon-next {
+    width: 30px;
+    height: 30px;
+    margin-top: -15px;
+    margin-left: -15px;
+    font-size: 30px;
+  }
+  .bs3 .carousel-caption {
+    left: 20%;
+    right: 20%;
+    padding-bottom: 30px;
+  }
+  .bs3 .carousel-indicators {
+    bottom: 20px;
+  }
+}
+.bs3 .clearfix:before,
+.bs3 .clearfix:after {
+  content: " ";
+  /* 1 */
+
+  display: table;
+  /* 2 */
+
+}
+.bs3 .clearfix:after {
+  clear: both;
+}
+.bs3 .center-block {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+.bs3 .pull-right {
+  float: right !important;
+}
+.bs3 .pull-left {
+  float: left !important;
+}
+.bs3 .hide {
+  display: none !important;
+}
+.bs3 .show {
+  display: block !important;
+}
+.bs3 .invisible {
+  visibility: hidden;
+}
+.bs3 .text-hide {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+.bs3 .affix {
+  position: fixed;
+}
+@-ms-viewport {
+  width: device-width;
+}
+@media screen and (max-width: 400px) {
+  @-ms-viewport {
+    width: 320px;
+  }
+}
+.bs3 .hidden {
+  display: none !important;
+  visibility: hidden !important;
+}
+.bs3 .visible-xs {
+  display: none !important;
+}
+tr.bs3 .visible-xs {
+  display: none !important;
+}
+th.bs3 .visible-xs,
+td.bs3 .visible-xs {
+  display: none !important;
+}
+@media (max-width: 767px) {
+  .bs3 .visible-xs {
+    display: block !important;
+  }
+  tr.bs3 .visible-xs {
+    display: table-row !important;
+  }
+  th.bs3 .visible-xs,
+  td.bs3 .visible-xs {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .bs3 .visible-xs.visible-sm {
+    display: block !important;
+  }
+  tr.bs3 .visible-xs.visible-sm {
+    display: table-row !important;
+  }
+  th.bs3 .visible-xs.visible-sm,
+  td.bs3 .visible-xs.visible-sm {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .bs3 .visible-xs.visible-md {
+    display: block !important;
+  }
+  tr.bs3 .visible-xs.visible-md {
+    display: table-row !important;
+  }
+  th.bs3 .visible-xs.visible-md,
+  td.bs3 .visible-xs.visible-md {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 1200px) {
+  .bs3 .visible-xs.visible-lg {
+    display: block !important;
+  }
+  tr.bs3 .visible-xs.visible-lg {
+    display: table-row !important;
+  }
+  th.bs3 .visible-xs.visible-lg,
+  td.bs3 .visible-xs.visible-lg {
+    display: table-cell !important;
+  }
+}
+.bs3 .visible-sm {
+  display: none !important;
+}
+tr.bs3 .visible-sm {
+  display: none !important;
+}
+th.bs3 .visible-sm,
+td.bs3 .visible-sm {
+  display: none !important;
+}
+@media (max-width: 767px) {
+  .bs3 .visible-sm.visible-xs {
+    display: block !important;
+  }
+  tr.bs3 .visible-sm.visible-xs {
+    display: table-row !important;
+  }
+  th.bs3 .visible-sm.visible-xs,
+  td.bs3 .visible-sm.visible-xs {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .bs3 .visible-sm {
+    display: block !important;
+  }
+  tr.bs3 .visible-sm {
+    display: table-row !important;
+  }
+  th.bs3 .visible-sm,
+  td.bs3 .visible-sm {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .bs3 .visible-sm.visible-md {
+    display: block !important;
+  }
+  tr.bs3 .visible-sm.visible-md {
+    display: table-row !important;
+  }
+  th.bs3 .visible-sm.visible-md,
+  td.bs3 .visible-sm.visible-md {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 1200px) {
+  .bs3 .visible-sm.visible-lg {
+    display: block !important;
+  }
+  tr.bs3 .visible-sm.visible-lg {
+    display: table-row !important;
+  }
+  th.bs3 .visible-sm.visible-lg,
+  td.bs3 .visible-sm.visible-lg {
+    display: table-cell !important;
+  }
+}
+.bs3 .visible-md {
+  display: none !important;
+}
+tr.bs3 .visible-md {
+  display: none !important;
+}
+th.bs3 .visible-md,
+td.bs3 .visible-md {
+  display: none !important;
+}
+@media (max-width: 767px) {
+  .bs3 .visible-md.visible-xs {
+    display: block !important;
+  }
+  tr.bs3 .visible-md.visible-xs {
+    display: table-row !important;
+  }
+  th.bs3 .visible-md.visible-xs,
+  td.bs3 .visible-md.visible-xs {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .bs3 .visible-md.visible-sm {
+    display: block !important;
+  }
+  tr.bs3 .visible-md.visible-sm {
+    display: table-row !important;
+  }
+  th.bs3 .visible-md.visible-sm,
+  td.bs3 .visible-md.visible-sm {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .bs3 .visible-md {
+    display: block !important;
+  }
+  tr.bs3 .visible-md {
+    display: table-row !important;
+  }
+  th.bs3 .visible-md,
+  td.bs3 .visible-md {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 1200px) {
+  .bs3 .visible-md.visible-lg {
+    display: block !important;
+  }
+  tr.bs3 .visible-md.visible-lg {
+    display: table-row !important;
+  }
+  th.bs3 .visible-md.visible-lg,
+  td.bs3 .visible-md.visible-lg {
+    display: table-cell !important;
+  }
+}
+.bs3 .visible-lg {
+  display: none !important;
+}
+tr.bs3 .visible-lg {
+  display: none !important;
+}
+th.bs3 .visible-lg,
+td.bs3 .visible-lg {
+  display: none !important;
+}
+@media (max-width: 767px) {
+  .bs3 .visible-lg.visible-xs {
+    display: block !important;
+  }
+  tr.bs3 .visible-lg.visible-xs {
+    display: table-row !important;
+  }
+  th.bs3 .visible-lg.visible-xs,
+  td.bs3 .visible-lg.visible-xs {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .bs3 .visible-lg.visible-sm {
+    display: block !important;
+  }
+  tr.bs3 .visible-lg.visible-sm {
+    display: table-row !important;
+  }
+  th.bs3 .visible-lg.visible-sm,
+  td.bs3 .visible-lg.visible-sm {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .bs3 .visible-lg.visible-md {
+    display: block !important;
+  }
+  tr.bs3 .visible-lg.visible-md {
+    display: table-row !important;
+  }
+  th.bs3 .visible-lg.visible-md,
+  td.bs3 .visible-lg.visible-md {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 1200px) {
+  .bs3 .visible-lg {
+    display: block !important;
+  }
+  tr.bs3 .visible-lg {
+    display: table-row !important;
+  }
+  th.bs3 .visible-lg,
+  td.bs3 .visible-lg {
+    display: table-cell !important;
+  }
+}
+.bs3 .hidden-xs {
+  display: block !important;
+}
+tr.bs3 .hidden-xs {
+  display: table-row !important;
+}
+th.bs3 .hidden-xs,
+td.bs3 .hidden-xs {
+  display: table-cell !important;
+}
+@media (max-width: 767px) {
+  .bs3 .hidden-xs {
+    display: none !important;
+  }
+  tr.bs3 .hidden-xs {
+    display: none !important;
+  }
+  th.bs3 .hidden-xs,
+  td.bs3 .hidden-xs {
+    display: none !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .bs3 .hidden-xs.hidden-sm {
+    display: none !important;
+  }
+  tr.bs3 .hidden-xs.hidden-sm {
+    display: none !important;
+  }
+  th.bs3 .hidden-xs.hidden-sm,
+  td.bs3 .hidden-xs.hidden-sm {
+    display: none !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .bs3 .hidden-xs.hidden-md {
+    display: none !important;
+  }
+  tr.bs3 .hidden-xs.hidden-md {
+    display: none !important;
+  }
+  th.bs3 .hidden-xs.hidden-md,
+  td.bs3 .hidden-xs.hidden-md {
+    display: none !important;
+  }
+}
+@media (min-width: 1200px) {
+  .bs3 .hidden-xs.hidden-lg {
+    display: none !important;
+  }
+  tr.bs3 .hidden-xs.hidden-lg {
+    display: none !important;
+  }
+  th.bs3 .hidden-xs.hidden-lg,
+  td.bs3 .hidden-xs.hidden-lg {
+    display: none !important;
+  }
+}
+.bs3 .hidden-sm {
+  display: block !important;
+}
+tr.bs3 .hidden-sm {
+  display: table-row !important;
+}
+th.bs3 .hidden-sm,
+td.bs3 .hidden-sm {
+  display: table-cell !important;
+}
+@media (max-width: 767px) {
+  .bs3 .hidden-sm.hidden-xs {
+    display: none !important;
+  }
+  tr.bs3 .hidden-sm.hidden-xs {
+    display: none !important;
+  }
+  th.bs3 .hidden-sm.hidden-xs,
+  td.bs3 .hidden-sm.hidden-xs {
+    display: none !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .bs3 .hidden-sm {
+    display: none !important;
+  }
+  tr.bs3 .hidden-sm {
+    display: none !important;
+  }
+  th.bs3 .hidden-sm,
+  td.bs3 .hidden-sm {
+    display: none !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .bs3 .hidden-sm.hidden-md {
+    display: none !important;
+  }
+  tr.bs3 .hidden-sm.hidden-md {
+    display: none !important;
+  }
+  th.bs3 .hidden-sm.hidden-md,
+  td.bs3 .hidden-sm.hidden-md {
+    display: none !important;
+  }
+}
+@media (min-width: 1200px) {
+  .bs3 .hidden-sm.hidden-lg {
+    display: none !important;
+  }
+  tr.bs3 .hidden-sm.hidden-lg {
+    display: none !important;
+  }
+  th.bs3 .hidden-sm.hidden-lg,
+  td.bs3 .hidden-sm.hidden-lg {
+    display: none !important;
+  }
+}
+.bs3 .hidden-md {
+  display: block !important;
+}
+tr.bs3 .hidden-md {
+  display: table-row !important;
+}
+th.bs3 .hidden-md,
+td.bs3 .hidden-md {
+  display: table-cell !important;
+}
+@media (max-width: 767px) {
+  .bs3 .hidden-md.hidden-xs {
+    display: none !important;
+  }
+  tr.bs3 .hidden-md.hidden-xs {
+    display: none !important;
+  }
+  th.bs3 .hidden-md.hidden-xs,
+  td.bs3 .hidden-md.hidden-xs {
+    display: none !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .bs3 .hidden-md.hidden-sm {
+    display: none !important;
+  }
+  tr.bs3 .hidden-md.hidden-sm {
+    display: none !important;
+  }
+  th.bs3 .hidden-md.hidden-sm,
+  td.bs3 .hidden-md.hidden-sm {
+    display: none !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .bs3 .hidden-md {
+    display: none !important;
+  }
+  tr.bs3 .hidden-md {
+    display: none !important;
+  }
+  th.bs3 .hidden-md,
+  td.bs3 .hidden-md {
+    display: none !important;
+  }
+}
+@media (min-width: 1200px) {
+  .bs3 .hidden-md.hidden-lg {
+    display: none !important;
+  }
+  tr.bs3 .hidden-md.hidden-lg {
+    display: none !important;
+  }
+  th.bs3 .hidden-md.hidden-lg,
+  td.bs3 .hidden-md.hidden-lg {
+    display: none !important;
+  }
+}
+.bs3 .hidden-lg {
+  display: block !important;
+}
+tr.bs3 .hidden-lg {
+  display: table-row !important;
+}
+th.bs3 .hidden-lg,
+td.bs3 .hidden-lg {
+  display: table-cell !important;
+}
+@media (max-width: 767px) {
+  .bs3 .hidden-lg.hidden-xs {
+    display: none !important;
+  }
+  tr.bs3 .hidden-lg.hidden-xs {
+    display: none !important;
+  }
+  th.bs3 .hidden-lg.hidden-xs,
+  td.bs3 .hidden-lg.hidden-xs {
+    display: none !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .bs3 .hidden-lg.hidden-sm {
+    display: none !important;
+  }
+  tr.bs3 .hidden-lg.hidden-sm {
+    display: none !important;
+  }
+  th.bs3 .hidden-lg.hidden-sm,
+  td.bs3 .hidden-lg.hidden-sm {
+    display: none !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .bs3 .hidden-lg.hidden-md {
+    display: none !important;
+  }
+  tr.bs3 .hidden-lg.hidden-md {
+    display: none !important;
+  }
+  th.bs3 .hidden-lg.hidden-md,
+  td.bs3 .hidden-lg.hidden-md {
+    display: none !important;
+  }
+}
+@media (min-width: 1200px) {
+  .bs3 .hidden-lg {
+    display: none !important;
+  }
+  tr.bs3 .hidden-lg {
+    display: none !important;
+  }
+  th.bs3 .hidden-lg,
+  td.bs3 .hidden-lg {
+    display: none !important;
+  }
+}
+.bs3 .visible-print {
+  display: none !important;
+}
+tr.bs3 .visible-print {
+  display: none !important;
+}
+th.bs3 .visible-print,
+td.bs3 .visible-print {
+  display: none !important;
+}
+@media print {
+  .bs3 .visible-print {
+    display: block !important;
+  }
+  tr.bs3 .visible-print {
+    display: table-row !important;
+  }
+  th.bs3 .visible-print,
+  td.bs3 .visible-print {
+    display: table-cell !important;
+  }
+  .bs3 .hidden-print {
+    display: none !important;
+  }
+  tr.bs3 .hidden-print {
+    display: none !important;
+  }
+  th.bs3 .hidden-print,
+  td.bs3 .hidden-print {
+    display: none !important;
+  }
+}

=== added directory 'web_bootstrap3/static/src/fonts'
=== added file 'web_bootstrap3/static/src/fonts/glyphicons-halflings-regular.eot'
Binary files web_bootstrap3/static/src/fonts/glyphicons-halflings-regular.eot	1970-01-01 00:00:00 +0000 and web_bootstrap3/static/src/fonts/glyphicons-halflings-regular.eot	2014-04-22 22:55:50 +0000 differ
=== added file 'web_bootstrap3/static/src/fonts/glyphicons-halflings-regular.svg'
--- web_bootstrap3/static/src/fonts/glyphicons-halflings-regular.svg	1970-01-01 00:00:00 +0000
+++ web_bootstrap3/static/src/fonts/glyphicons-halflings-regular.svg	2014-04-22 22:55:50 +0000
@@ -0,0 +1,228 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; >
+<svg xmlns="http://www.w3.org/2000/svg";>
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph />
+<glyph />
+<glyph unicode=" " />
+<glyph unicode="*" d="M1100 500h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200z" />
+<glyph unicode="+" d="M1100 400h-400v-400h-300v400h-400v300h400v400h300v-400h400v-300z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#x2000;" horiz-adv-x="652" />
+<glyph unicode="&#x2001;" horiz-adv-x="1304" />
+<glyph unicode="&#x2002;" horiz-adv-x="652" />
+<glyph unicode="&#x2003;" horiz-adv-x="1304" />
+<glyph unicode="&#x2004;" horiz-adv-x="434" />
+<glyph unicode="&#x2005;" horiz-adv-x="326" />
+<glyph unicode="&#x2006;" horiz-adv-x="217" />
+<glyph unicode="&#x2007;" horiz-adv-x="217" />
+<glyph unicode="&#x2008;" horiz-adv-x="163" />
+<glyph unicode="&#x2009;" horiz-adv-x="260" />
+<glyph unicode="&#x200a;" horiz-adv-x="72" />
+<glyph unicode="&#x202f;" horiz-adv-x="260" />
+<glyph unicode="&#x205f;" horiz-adv-x="326" />
+<glyph unicode="&#x20ac;" d="M800 500h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257 q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406z" />
+<glyph unicode="&#x2212;" d="M1100 700h-900v-300h900v300z" />
+<glyph unicode="&#x2601;" d="M178 300h750q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5q0 -80 56.5 -137t135.5 -57z" />
+<glyph unicode="&#x2709;" d="M1200 1100h-1200l600 -603zM300 600l-300 -300v600zM1200 900v-600l-300 300zM800 500l400 -400h-1200l400 400l200 -200z" />
+<glyph unicode="&#x270f;" d="M1101 889l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13l-94 -97zM401 189l614 614l-214 214l-614 -614zM-13 -13l333 112l-223 223z" />
+<glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#xe001;" d="M700 100h300v-100h-800v100h300v550l-500 550h1200l-500 -550v-550z" />
+<glyph unicode="&#xe002;" d="M1000 934v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q17 -55 85.5 -75.5t147.5 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7q-79 -25 -122.5 -82t-25.5 -112t86 -75.5t147 5.5 q65 21 109 69t44 90v606z" />
+<glyph unicode="&#xe003;" d="M913 432l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342t142 342t342 142t342 -142t142 -342q0 -142 -78 -261zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
+<glyph unicode="&#xe005;" d="M649 949q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5t-94 124.5t-33.5 117.5q0 64 28 123t73 100.5t104.5 64t119 20.5 t120 -38.5t104.5 -104.5z" />
+<glyph unicode="&#xe006;" d="M791 522l145 -449l-384 275l-382 -275l146 447l-388 280h479l146 400h2l146 -400h472zM168 71l2 1z" />
+<glyph unicode="&#xe007;" d="M791 522l145 -449l-384 275l-382 -275l146 447l-388 280h479l146 400h2l146 -400h472zM747 331l-74 229l193 140h-235l-77 211l-78 -211h-239l196 -142l-73 -226l192 140zM168 71l2 1z" />
+<glyph unicode="&#xe008;" d="M1200 143v-143h-1200v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100z" />
+<glyph unicode="&#xe009;" d="M1200 1100v-1100h-1200v1100h1200zM200 1000h-100v-100h100v100zM900 1000h-600v-400h600v400zM1100 1000h-100v-100h100v100zM200 800h-100v-100h100v100zM1100 800h-100v-100h100v100zM200 600h-100v-100h100v100zM1100 600h-100v-100h100v100zM900 500h-600v-400h600 v400zM200 400h-100v-100h100v100zM1100 400h-100v-100h100v100zM200 200h-100v-100h100v100zM1100 200h-100v-100h100v100z" />
+<glyph unicode="&#xe010;" d="M500 1050v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5zM1100 1050v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h400 q21 0 35.5 -14.5t14.5 -35.5zM500 450v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5zM1100 450v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe011;" d="M300 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM700 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5zM1100 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM300 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM700 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1100 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM300 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM700 250v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1100 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5 t14.5 -35.5z" />
+<glyph unicode="&#xe012;" d="M300 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1200 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h700 q21 0 35.5 -14.5t14.5 -35.5zM300 450v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-200q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5zM1200 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5zM300 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1200 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe013;" d="M448 34l818 820l-212 212l-607 -607l-206 207l-212 -212z" />
+<glyph unicode="&#xe014;" d="M882 106l-282 282l-282 -282l-212 212l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282z" />
+<glyph unicode="&#xe015;" d="M913 432l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342t142 342t342 142t342 -142t142 -342q0 -142 -78 -261zM507 363q137 0 233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5t-234 -97t-97 -233 t97 -233t234 -97zM600 800h100v-200h-100v-100h-200v100h-100v200h100v100h200v-100z" />
+<glyph unicode="&#xe016;" d="M913 432l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 299q-120 -77 -261 -77q-200 0 -342 142t-142 342t142 342t342 142t342 -142t142 -342q0 -141 -78 -262zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 801v-200h400v200h-400z" />
+<glyph unicode="&#xe017;" d="M700 750v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5zM800 975v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123 t-123 184t-45.5 224.5q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155z" />
+<glyph unicode="&#xe018;" d="M1200 1h-200v1200h200v-1200zM900 1h-200v800h200v-800zM600 1h-200v500h200v-500zM300 301h-200v-300h200v300z" />
+<glyph unicode="&#xe019;" d="M488 183l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5 q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39zM600 815q89 0 152 -63 t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152q0 88 63 151t152 63z" />
+<glyph unicode="&#xe020;" d="M900 1100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100zM800 1100v100h-300v-100h300zM200 900h900v-800q0 -41 -29.5 -71 t-70.5 -30h-700q-41 0 -70.5 30t-29.5 71v800zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" />
+<glyph unicode="&#xe021;" d="M1301 601h-200v-600h-300v400h-300v-400h-300v600h-200l656 644z" />
+<glyph unicode="&#xe022;" d="M600 700h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18v1150q0 11 7 18t18 7h475v-500zM1000 800h-300v300z" />
+<glyph unicode="&#xe023;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM600 600h200 v-100h-300v400h100v-300z" />
+<glyph unicode="&#xe024;" d="M721 400h-242l-40 -400h-539l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538zM712 500l-27 300h-170l-27 -300h224z" />
+<glyph unicode="&#xe025;" d="M1100 400v-400h-1100v400h490l-290 300h200v500h300v-500h200l-290 -300h490zM988 300h-175v-100h175v100z" />
+<glyph unicode="&#xe026;" d="M600 1199q122 0 233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233t47.5 233t127.5 191t191 127.5t233 47.5zM600 1012q-170 0 -291 -121t-121 -291t121 -291t291 -121t291 121 t121 291t-121 291t-291 121zM700 600h150l-250 -300l-250 300h150v300h200v-300z" />
+<glyph unicode="&#xe027;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM850 600h-150 v-300h-200v300h-150l250 300z" />
+<glyph unicode="&#xe028;" d="M0 500l200 700h800q199 -700 200 -700v-475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18v475zM903 1000h-606l-97 -500h200l50 -200h300l50 200h200z" />
+<glyph unicode="&#xe029;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5zM797 598 l-297 -201v401z" />
+<glyph unicode="&#xe030;" d="M1177 600h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123t-123 -184t-45.5 -224.5t45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123 t123 184t45.5 224.5z" />
+<glyph unicode="&#xe031;" d="M700 800l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400zM500 400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122l-145 -145v400h400z" />
+<glyph unicode="&#xe032;" d="M100 1200v-1200h1100v1200h-1100zM1100 100h-900v900h900v-900zM400 800h-100v100h100v-100zM1000 800h-500v100h500v-100zM400 600h-100v100h100v-100zM1000 600h-500v100h500v-100zM400 400h-100v100h100v-100zM1000 400h-500v100h500v-100zM400 200h-100v100h100v-100 zM1000 300h-500v-100h500v100z" />
+<glyph unicode="&#xe034;" d="M200 0h-100v1100h100v-1100zM1100 600v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5z" />
+<glyph unicode="&#xe035;" d="M1200 275v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5t-49.5 -227v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50 q11 0 18 7t7 18zM400 480v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14zM1000 480v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14z" />
+<glyph unicode="&#xe036;" d="M0 800v-400h300l300 -200v800l-300 -200h-300zM971 600l141 -141l-71 -71l-141 141l-141 -141l-71 71l141 141l-141 141l71 71l141 -141l141 141l71 -71z" />
+<glyph unicode="&#xe037;" d="M0 800v-400h300l300 -200v800l-300 -200h-300zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" />
+<glyph unicode="&#xe038;" d="M974 186l6 8q142 178 142 405q0 230 -144 408l-6 8l-83 -64l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8zM300 801l300 200v-800l-300 200h-300v400h300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257z" />
+<glyph unicode="&#xe039;" d="M100 700h400v100h100v100h-100v300h-500v-600h100v100zM1200 700v500h-600v-200h100v-300h200v-300h300v200h-200v100h200zM100 1100h300v-300h-300v300zM800 800v300h300v-300h-300zM200 900h100v100h-100v-100zM900 1000h100v-100h-100v100zM300 600h-100v-100h-200 v-500h500v500h-200v100zM900 200v-100h-200v100h-100v100h100v200h-200v100h300v-300h200v-100h-100zM400 400v-300h-300v300h300zM300 200h-100v100h100v-100zM1100 300h100v-100h-100v100zM600 100h100v-100h-100v100zM1200 100v-100h-300v100h300z" />
+<glyph unicode="&#xe040;" d="M100 1200h-100v-1000h100v1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 1200v-1000h-200v1000h200zM400 100v-100h-300v100h300zM500 91h100v-91h-100v91zM700 91h100v-91h-100v91zM1100 91v-91h-200v91h200z " />
+<glyph unicode="&#xe041;" d="M1200 500l-500 -500l-699 700v475q0 10 7.5 17.5t17.5 7.5h474zM320 882q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71t29 -71q30 -30 71.5 -30t71.5 30z" />
+<glyph unicode="&#xe042;" d="M1201 500l-500 -500l-699 700v475q0 11 7 18t18 7h474zM1501 500l-500 -500l-50 50l450 450l-700 700h100zM320 882q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71t30 -71q29 -30 71 -30t71 30z" />
+<glyph unicode="&#xe043;" d="M1200 1200v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900v1025l175 175h925z" />
+<glyph unicode="&#xe045;" d="M947 829l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18l-94 -346l40 -124h592zM1200 800v-700h-200v200h-800v-200h-200v700h200l100 -200h600l100 200h200zM881 176l38 -152q2 -10 -3.5 -17t-15.5 -7h-600q-10 0 -15.5 7t-3.5 17l38 152q2 10 11.5 17t19.5 7 h500q10 0 19.5 -7t11.5 -17z" />
+<glyph unicode="&#xe047;" d="M1200 0v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417zM416 521l178 457l46 -140l116 -317 h-340z" />
+<glyph unicode="&#xe048;" d="M100 1199h471q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111t-162 -38.5h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21 t-29 14t-49 14.5v70zM400 1079v-379h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400z" />
+<glyph unicode="&#xe049;" d="M877 1200l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425z" />
+<glyph unicode="&#xe050;" d="M1150 1200h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49v300h150h700zM100 1000v-800h75l-125 -167l-125 167h75v800h-75l125 167 l125 -167h-75z" />
+<glyph unicode="&#xe051;" d="M950 1201h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50v300h150h700zM200 101h800v75l167 -125l-167 -125v75h-800v-75l-167 125l167 125 v-75z" />
+<glyph unicode="&#xe052;" d="M700 950v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35zM1100 650v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h1000 q21 0 35.5 15t14.5 35zM900 350v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35zM1200 50v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35 t35.5 -15h1100q21 0 35.5 15t14.5 35z" />
+<glyph unicode="&#xe053;" d="M1000 950v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35zM1200 650v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h1100 q21 0 35.5 15t14.5 35zM1000 350v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35zM1200 50v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35 t35.5 -15h1100q21 0 35.5 15t14.5 35z" />
+<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="&#xe055;" d="M0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="&#xe056;" d="M0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35zM0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="&#xe057;" d="M400 1100h-100v-1100h100v1100zM700 950v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35zM1100 650v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15 h500q20 0 35 15t15 35zM100 425v75h-201v100h201v75l166 -125zM900 350v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35zM1200 50v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5 v-100q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35z" />
+<glyph unicode="&#xe058;" d="M201 950v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35zM801 1100h100v-1100h-100v1100zM601 650v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15 h500q20 0 35 15t15 35zM1101 425v75h200v100h-200v75l-167 -125zM401 350v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35zM701 50v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5 v-100q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35z" />
+<glyph unicode="&#xe059;" d="M900 925v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="&#xe060;" d="M1200 1056v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31zM1100 1000h-1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500zM476 750q0 -56 -39 -95t-95 -39t-95 39t-39 95t39 95t95 39t95 -39 t39 -95z" />
+<glyph unicode="&#xe062;" d="M600 1213q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262q0 124 60.5 231.5t165 172t226.5 64.5zM599 514q107 0 182.5 75.5t75.5 182.5t-75.5 182 t-182.5 75t-182 -75.5t-75 -181.5q0 -107 75.5 -182.5t181.5 -75.5z" />
+<glyph unicode="&#xe063;" d="M600 1199q122 0 233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233t47.5 233t127.5 191t191 127.5t233 47.5zM600 173v854q-176 0 -301.5 -125t-125.5 -302t125.5 -302t301.5 -125z " />
+<glyph unicode="&#xe064;" d="M554 1295q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 138.5t-64 210.5q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5zM455 296q-7 6 -18 17 t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156q14 -82 59.5 -136t136.5 -80z" />
+<glyph unicode="&#xe065;" d="M1108 902l113 113l-21 85l-92 28l-113 -113zM1100 625v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5 t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125zM436 341l161 50l412 412l-114 113l-405 -405z" />
+<glyph unicode="&#xe066;" d="M1100 453v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5z M813 431l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209z" />
+<glyph unicode="&#xe067;" d="M1100 569v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5h300q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69z M625 348l566 567l-136 137l-430 -431l-147 147l-136 -136z" />
+<glyph unicode="&#xe068;" d="M900 303v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198l-300 300l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296z" />
+<glyph unicode="&#xe069;" d="M900 0l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100z" />
+<glyph unicode="&#xe070;" d="M1200 0l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100z" />
+<glyph unicode="&#xe071;" d="M1200 0l-500 488v-488l-564 550l564 550v-487l500 487v-1100z" />
+<glyph unicode="&#xe072;" d="M1100 550l-900 550v-1100z" />
+<glyph unicode="&#xe073;" d="M500 150v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5zM900 150v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800q0 -21 14.5 -35.5t35.5 -14.5h200 q21 0 35.5 14.5t14.5 35.5z" />
+<glyph unicode="&#xe074;" d="M1100 150v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35z" />
+<glyph unicode="&#xe075;" d="M500 0v488l-500 -488v1100l500 -487v487l564 -550z" />
+<glyph unicode="&#xe076;" d="M1050 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488l-500 -488v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe078;" d="M650 1064l-550 -564h1100zM1200 350v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe079;" d="M777 7l240 240l-353 353l353 353l-240 240l-592 -594z" />
+<glyph unicode="&#xe080;" d="M513 -46l-241 240l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1z" />
+<glyph unicode="&#xe081;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM500 900v-200h-200v-200h200v-200h200v200h200v200h-200v200h-200z" />
+<glyph unicode="&#xe082;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM300 700v-200h600v200h-600z" />
+<glyph unicode="&#xe083;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM247 741l141 -141l-142 -141l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141 l-141 142z" />
+<glyph unicode="&#xe084;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM546 623l-102 102l-174 -174l276 -277l411 411l-175 174z" />
+<glyph unicode="&#xe085;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM500 500h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3 q-105 0 -172 -56t-67 -183h144q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5q19 0 30 -10t11 -26q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5zM500 400v-100h200v100h-200z" />
+<glyph unicode="&#xe086;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM500 900v-100h200v100h-200zM400 700v-100h100v-200h-100v-100h400v100h-100v300h-300z" />
+<glyph unicode="&#xe087;" d="M1200 700v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194v200h194q15 60 36 104.5t55.5 86t88 69t126.5 40.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203zM700 500v-206q149 48 201 206h-201v200h200 q-25 74 -76 127.5t-124 76.5v-204h-200v203q-75 -24 -130 -77.5t-79 -125.5h209v-200h-210q24 -73 79.5 -127.5t130.5 -78.5v206h200z" />
+<glyph unicode="&#xe088;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM844 735 l-135 -135l135 -135l-109 -109l-135 135l-135 -135l-109 109l135 135l-135 135l109 109l135 -135l135 135z" />
+<glyph unicode="&#xe089;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM896 654 l-346 -345l-228 228l141 141l87 -87l204 205z" />
+<glyph unicode="&#xe090;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM248 385l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5q0 -115 62 -215zM955 809l-564 -564q97 -59 209 -59q171 0 292.5 121.5 t121.5 292.5q0 112 -59 209z" />
+<glyph unicode="&#xe091;" d="M1200 400h-600v-301l-600 448l600 453v-300h600v-300z" />
+<glyph unicode="&#xe092;" d="M600 400h-600v300h600v300l600 -453l-600 -448v301z" />
+<glyph unicode="&#xe093;" d="M1098 600h-298v-600h-300v600h-296l450 600z" />
+<glyph unicode="&#xe094;" d="M998 600l-449 -600l-445 600h296v600h300v-600h298z" />
+<glyph unicode="&#xe095;" d="M600 199v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453z" />
+<glyph unicode="&#xe096;" d="M1200 1200h-400l129 -129l-294 -294l142 -142l294 294l129 -129v400zM565 423l-294 -294l129 -129h-400v400l129 -129l294 294z" />
+<glyph unicode="&#xe097;" d="M871 730l129 -130h-400v400l129 -129l295 295l142 -141zM200 600h400v-400l-129 130l-295 -295l-142 141l295 295z" />
+<glyph unicode="&#xe101;" d="M600 1177q118 0 224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5t45.5 224.5t123 184t184 123t224.5 45.5zM686 549l58 302q4 20 -8 34.5t-33 14.5h-207q-20 0 -32 -14.5t-8 -34.5 l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5zM700 400h-200v-100h200v100z" />
+<glyph unicode="&#xe102;" d="M1200 900h-111v6t-1 15t-3 18l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6h-111v-100h100v-200h400v300h200v-300h400v200h100v100z M731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269zM481 900h-281q-3 0 14 48t35 96l18 47zM100 0h400v400h-400v-400zM700 400h400v-400h-400v400z" />
+<glyph unicode="&#xe103;" d="M0 121l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55l-201 -202 v143zM692 611q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5t86.5 76.5q55 66 367 234z" />
+<glyph unicode="&#xe105;" d="M1261 600l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30l-26 40l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5 t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30zM600 240q64 0 123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212 q0 85 46 158q-102 -87 -226 -258q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5zM484 762l-107 -106q49 -124 154 -191l105 105q-37 24 -75 72t-57 84z" />
+<glyph unicode="&#xe106;" d="M906 1200l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43l-26 40l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148zM1261 600l-26 -40q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5 t-124 -100t-146.5 -79l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52zM513 264l37 141q-107 18 -178.5 101.5t-71.5 193.5q0 85 46 158q-102 -87 -226 -258q210 -282 393 -336z M484 762l-107 -106q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68z" />
+<glyph unicode="&#xe107;" d="M-47 0h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 33 -48 36t-48 -29l-642 -1066q-21 -32 -7.5 -66t50.5 -34zM700 200v100h-200v-100h-345l445 723l445 -723h-345zM700 700h-200v-100l100 -300l100 300v100z" />
+<glyph unicode="&#xe108;" d="M800 711l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -21 -13 -29t-32 1l-94 78h-222l-94 -78q-19 -9 -32 -1t-13 29v64q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41q0 20 11 44.5t26 38.5 l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339z" />
+<glyph unicode="&#xe110;" d="M941 800l-600 -600h-341v200h259l600 600h241v198l300 -295l-300 -300v197h-159zM381 678l141 142l-181 180h-341v-200h259zM1100 598l300 -295l-300 -300v197h-241l-181 181l141 142l122 -123h159v198z" />
+<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="&#xe112;" d="M400 900h-300v300h300v-300zM1100 900h-300v300h300v-300zM1100 800v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5t-58 109.5t-31.5 116t-15 104t-3 83v200h300v-250q0 -113 6 -145 q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300z" />
+<glyph unicode="&#xe113;" d="M902 184l226 227l-578 579l-580 -579l227 -227l352 353z" />
+<glyph unicode="&#xe114;" d="M650 218l578 579l-226 227l-353 -353l-352 353l-227 -227z" />
+<glyph unicode="&#xe115;" d="M1198 400v600h-796l215 -200h381v-400h-198l299 -283l299 283h-200zM-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196z" />
+<glyph unicode="&#xe116;" d="M1050 1200h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35 q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43l-100 475q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5z" />
+<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="&#xe118;" d="M201 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000zM1501 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="&#xe119;" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
+<glyph unicode="&#xe120;" d="M900 303v197h-600v-197l-300 297l300 298v-198h600v198l300 -298z" />
+<glyph unicode="&#xe121;" d="M31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM100 300h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM900 200h-100v-100h100v100z M1100 200h-100v-100h100v100z" />
+<glyph unicode="&#xe122;" d="M1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35zM325 800l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35q-56 337 -56 351v250v5 q0 13 0.5 18.5t2.5 13t8 10.5t15 3h200zM-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5z" />
+<glyph unicode="&#xe124;" d="M445 1180l-45 -233l-224 78l78 -225l-233 -44l179 -156l-179 -155l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180z" />
+<glyph unicode="&#xe125;" d="M700 1200h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400q0 -75 100 -75h61q123 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5zM700 925l-50 -225h450 v-125l-250 -375h-214l-136 100h-100v375l150 212l100 213h50v-175zM0 800v-600h200v600h-200z" />
+<glyph unicode="&#xe126;" d="M700 0h-50q-27 0 -51 20t-38 48l-96 198l-145 196q-20 26 -20 63v400q0 75 100 75h61q123 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5zM200 400h-200v600h200 v-600zM700 275l-50 225h450v125l-250 375h-214l-136 -100h-100v-375l150 -212l100 -213h50v175z" />
+<glyph unicode="&#xe127;" d="M364 873l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM408 792v-503 l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83zM208 200h-200v600h200v-600z" />
+<glyph unicode="&#xe128;" d="M475 1104l365 -230q7 -4 16.5 -10.5t26 -26t16.5 -36.5v-526q0 -13 -85.5 -93.5t-93.5 -80.5h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-84 0 -139 39t-55 111t54 110t139 37h302l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6zM370 946 l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100h222q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l106 89v502l-342 237zM1199 201h-200v600h200v-600z" />
+<glyph unicode="&#xe129;" d="M1100 473v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90zM911 400h-503l-236 339 l83 86l183 -146q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6v7.5v7v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294zM1000 200v-200h-600v200h600z" />
+<glyph unicode="&#xe130;" d="M305 1104v200h600v-200h-600zM605 310l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15l-230 -362q-15 -31 7 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85l-1 -302q0 -84 38.5 -138t110.5 -54t111 55t39 139v106z M905 804v-294l-340 -130q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146l-83 86l237 339h503z" />
+<glyph unicode="&#xe131;" d="M603 1195q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM598 701h-298v-201h300l-2 -194l402 294l-402 298v-197z" />
+<glyph unicode="&#xe132;" d="M597 1195q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5zM200 600l400 -294v194h302v201h-300v197z" />
+<glyph unicode="&#xe133;" d="M603 1195q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM300 600h200v-300h200v300h200l-300 400z" />
+<glyph unicode="&#xe134;" d="M603 1195q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM500 900v-300h-200l300 -400l300 400h-200v300h-200z" />
+<glyph unicode="&#xe135;" d="M603 1195q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM627 1101q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6 q-15 -3 -45.5 0.5t-45.5 -2.5q-21 -7 -52 -26.5t-34 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -90.5t-29.5 -79.5q-8 -33 5.5 -92.5t7.5 -87.5q0 -9 17 -44t16 -60q12 0 23 -5.5t23 -15t20 -13.5q24 -12 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55 t-20 -57q42 -71 87 -80q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q102 -2 221 112q30 29 47 47t34.5 49t20.5 62q-14 9 -37 9.5t-36 7.5q-14 7 -49 15t-52 19q-9 0 -39.5 -0.5t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7 q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5t5.5 57.5q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5 t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 41 1 44q31 -13 58.5 -14.5t39.5 3.5l11 4q6 36 -17 53.5t-64 28.5t-56 23q-19 -3 -37 0zM613 994q0 -18 8 -42.5t16.5 -44t9.5 -23.5q-9 2 -31 5t-36 5t-32 8t-30 14q3 12 16 30t16 25q10 -10 18.5 -10 t14 6t14.5 14.5t16 12.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="&#xe138;" d="M1100 1200v-100h-1000v100h1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
+<glyph unicode="&#xe140;" d="M329 729l142 142l-200 200l129 129h-400v-400l129 129zM1200 1200v-400l-129 129l-200 -200l-142 142l200 200l-129 129h400zM271 129l129 -129h-400v400l129 -129l200 200l142 -142zM1071 271l129 129v-400h-400l129 129l-200 200l142 142z" />
+<glyph unicode="&#xe141;" d="M596 1192q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM596 1010q-171 0 -292.5 -121.5t-121.5 -292.5q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5zM455 905 q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5t16 38.5t39 16.5zM708 821l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-14 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5 q0 32 20.5 56.5t51.5 29.5zM855 709q23 0 38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39q0 22 16 38t39 16zM345 709q23 0 39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39t15.5 38.5t38.5 15.5z" />
+<glyph unicode="&#xe143;" d="M649 54l-16 22q-90 125 -293 323q-71 70 -104.5 105.5t-77 89.5t-61 99t-17.5 91q0 131 98.5 229.5t230.5 98.5q143 0 241 -129q103 129 246 129q129 0 226 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-203 -198 -293 -323zM844 524l12 12 q64 62 97.5 97t64.5 79t31 72q0 71 -48 119t-105 48q-74 0 -132 -82l-118 -171l-114 174q-51 79 -123 79q-60 0 -109.5 -49t-49.5 -118q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203z" />
+<glyph unicode="&#xe144;" d="M476 406l19 -17l105 105l-212 212l389 389l247 -247l-95 -96l18 -18q46 -46 77 -99l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159q0 -93 66 -159zM123 193l141 -141q66 -66 159 -66q95 0 159 66 l283 283q66 66 66 159t-66 159l-141 141q-12 12 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159q0 -94 66 -160z" />
+<glyph unicode="&#xe145;" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM900 1000h-600v-700h600v700zM600 46q43 0 73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5t-73.5 -30.5t-30.5 -73.5 t30.5 -73.5t73.5 -30.5z" />
+<glyph unicode="&#xe148;" d="M700 1029v-307l64 -14q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5h139q5 -77 48.5 -126.5t117.5 -64.5v335l-27 7q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5 t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5zM600 755v274q-61 -8 -97.5 -37.5t-36.5 -102.5q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3zM700 548 v-311q170 18 170 151q0 64 -44 99.5t-126 60.5z" />
+<glyph unicode="&#xe149;" d="M866 300l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5t-30 142.5h-221v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5 t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -11 2.5 -24.5t5.5 -24t9.5 -26.5t10.5 -25t14 -27.5t14 -25.5t15.5 -27t13.5 -24h242v-100h-197q8 -50 -2.5 -115t-31.5 -94 q-41 -59 -99 -113q35 11 84 18t70 7q32 1 102 -16t104 -17q76 0 136 30z" />
+<glyph unicode="&#xe150;" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1200l298 -300h-198v-900h-200v900h-198z" />
+<glyph unicode="&#xe151;" d="M400 300h198l-298 -300l-298 300h198v900h200v-900zM1000 1200v-500h-100v100h-100v-100h-100v500h300zM901 1100h-100v-200h100v200zM700 500h300v-200h-99v-100h-100v100h99v100h-200v100zM800 100h200v-100h-300v200h100v-100z" />
+<glyph unicode="&#xe152;" d="M400 300h198l-298 -300l-298 300h198v900h200v-900zM1000 1200v-200h-99v-100h-100v100h99v100h-200v100h300zM800 800h200v-100h-300v200h100v-100zM700 500h300v-500h-100v100h-100v-100h-100v500zM801 200h100v200h-100v-200z" />
+<glyph unicode="&#xe153;" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1100h-100v100h200v-500h-100v400zM1100 500v-500h-100v100h-200v400h300zM1001 400h-100v-200h100v200z" />
+<glyph unicode="&#xe154;" d="M300 0l298 300h-198v900h-200v-900h-198zM1100 1200v-500h-100v100h-200v400h300zM1001 1100h-100v-200h100v200zM900 400h-100v100h200v-500h-100v400z" />
+<glyph unicode="&#xe155;" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="&#xe156;" d="M300 0l298 300h-198v900h-200v-900h-198zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="&#xe157;" d="M400 1100h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5 t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="&#xe158;" d="M700 0h-300q-163 0 -281.5 117.5t-118.5 282.5v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5 t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5zM400 800v-500l333 250z" />
+<glyph unicode="&#xe159;" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM900 300v500q0 41 -29.5 70.5t-70.5 29.5h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5 t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5zM800 700h-500l250 -333z" />
+<glyph unicode="&#xe160;" d="M1100 700v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5zM900 300v500q0 41 -29.5 70.5t-70.5 29.5h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5 t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5zM550 733l-250 -333h500z" />
+<glyph unicode="&#xe161;" d="M500 1100h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200zM700 550l-400 -350v200h-300v300h300v200z" />
+<glyph unicode="&#xe162;" d="M403 2l9 -1q13 0 26 16l538 630q15 19 6 36q-8 18 -32 16h-300q1 4 78 219.5t79 227.5q2 17 -6 27l-8 8h-9q-16 0 -25 -15q-4 -5 -98.5 -111.5t-228 -257t-209.5 -238.5q-17 -19 -7 -40q10 -19 32 -19h302q-155 -438 -160 -458q-5 -21 4 -32z" />
+<glyph unicode="&#xe163;" d="M800 200h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185zM900 200v200h-300v300h300v200l400 -350z" />
+<glyph unicode="&#xe164;" d="M1200 700l-149 149l-342 -353l-213 213l353 342l-149 149h500v-500zM1022 571l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5v-300 q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98z" />
+<glyph unicode="&#xe165;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM600 794 q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="&#xe166;" d="M700 800v400h-300v-400h-300l445 -500l450 500h-295zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
+<glyph unicode="&#xe167;" d="M400 700v-300h300v300h295l-445 500l-450 -500h300zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
+<glyph unicode="&#xe168;" d="M405 400l596 596l-154 155l-442 -442l-150 151l-155 -155zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
+<glyph unicode="&#xe169;" d="M409 1103l-97 97l-212 -212l97 -98zM650 861l-149 149l-212 -212l149 -149l-238 -248h700v699zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
+<glyph unicode="&#xe170;" d="M539 950l-149 -149l212 -212l149 148l248 -237v700h-699zM297 709l-97 -97l212 -212l98 97zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
+<glyph unicode="&#xe171;" d="M1200 1199v-1079l-475 272l-310 -393v416h-392zM1166 1148l-672 -712v-226z" />
+<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1200h-100v-200h100v200z" />
+<glyph unicode="&#xe173;" d="M578 500h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120zM700 1200h-100v-200h100v200zM1300 538l-475 -476l-244 244l123 123l120 -120l353 352z" />
+<glyph unicode="&#xe174;" d="M529 500h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170zM700 1200h-100v-200h100v200zM1167 6l-170 170l-170 -170l-127 127l170 170l-170 170l127 127l170 -170l170 170l127 -128 l-170 -169l170 -170z" />
+<glyph unicode="&#xe175;" d="M700 500h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200zM700 1000h-100v200h100v-200zM1000 600h-200v-300h-200l300 -300l300 300h-200v300z" />
+<glyph unicode="&#xe176;" d="M602 500h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200zM700 1000h-100v200h100v-200zM1000 300h200l-300 300l-300 -300h200v-300h200v300z" />
+<glyph unicode="&#xe177;" d="M1200 900v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h1200zM0 800v-550q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200zM100 500h400v-200h-400v200z" />
+<glyph unicode="&#xe178;" d="M500 1000h400v198l300 -298l-300 -298v198h-400v200zM100 800v200h100v-200h-100zM400 800h-100v200h100v-200zM700 300h-400v-198l-300 298l300 298v-198h400v-200zM800 500h100v-200h-100v200zM1000 500v-200h100v200h-100z" />
+<glyph unicode="&#xe179;" d="M1200 50v1106q0 31 -18 40.5t-44 -7.5l-276 -117q-25 -16 -43.5 -50.5t-18.5 -65.5v-359q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5zM550 1200l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447l-100 203v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300z" />
+<glyph unicode="&#xe180;" d="M1100 106v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394 q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5z" />
+<glyph unicode="&#xe181;" d="M675 1000l-100 100h-375l-100 -100h400l200 -200v-98l295 98h105v200h-425zM500 300v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5zM100 800h300v-200h-300v200zM700 565l400 133 v-163l-400 -133v163zM100 500h300v-200h-300v200zM805 300l295 98v-298h-425l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="&#xe182;" d="M179 1169l-162 -162q-1 -11 -0.5 -32.5t16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q16 17 13 40.5t-22 37.5l-192 136q-19 14 -45 12t-42 -19l-119 -118q-143 103 -267 227q-126 126 -227 268l118 118 q17 17 20 41.5t-11 44.5l-139 194q-14 19 -36.5 22t-40.5 -14z" />
+<glyph unicode="&#xe183;" d="M1200 712v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40t-53.5 -36.5t-31 -27.5l-9 -10v-200q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38 t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5zM800 650l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -15 -35.5t-35 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5 t30 -27.5t12 -24l1 -10v-50z" />
+<glyph unicode="&#xe184;" d="M175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250zM1200 100v-100h-1100v100h1100z" />
+<glyph unicode="&#xe185;" d="M600 1100h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300v1000q0 41 29.5 70.5t70.5 29.5zM1000 800h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300v700q0 41 29.5 70.5t70.5 29.5zM400 0v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400h300z" />
+<glyph unicode="&#xe186;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM200 800v-300h200v-100h-200v-100h300v300h-200v100h200v100h-300zM800 800h-200v-500h200v100h100v300h-100 v100zM800 700v-300h-100v300h100z" />
+<glyph unicode="&#xe187;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM400 600h-100v200h-100v-500h100v200h100v-200h100v500h-100v-200zM800 800h-200v-500h200v100h100v300h-100 v100zM800 700v-300h-100v300h100z" />
+<glyph unicode="&#xe188;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM200 800v-500h300v100h-200v300h200v100h-300zM600 800v-500h300v100h-200v300h200v100h-300z" />
+<glyph unicode="&#xe189;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM500 700l-300 -150l300 -150v300zM600 400l300 150l-300 150v-300z" />
+<glyph unicode="&#xe190;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM900 800v-500h-700v500h700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM800 700h-130 q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300z" />
+<glyph unicode="&#xe191;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM200 800v-300h200v-100h-200v-100h300v300h-200v100h200v100h-300zM800 300h100v500h-200v-100h100v-400z M601 300h100v100h-100v-100z" />
+<glyph unicode="&#xe192;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM300 700v100h-100v-500h300v400h-200zM800 300h100v500h-200v-100h100v-400zM401 400h-100v200h100v-200z M601 300h100v100h-100v-100z" />
+<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM1000 900h-900v-700h900v700zM400 700h-200v100h300v-300h-99v-100h-100v100h99v200zM800 700h-100v100h200v-500h-100v400zM201 400h100v-100 h-100v100zM701 300h-100v100h100v-100z" />
+<glyph unicode="&#xe194;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM800 700h-300 v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="&#xe195;" d="M596 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM596 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM800 700v-100 h-100v100h-200v-100h200v-100h-200v-100h-100v400h300zM800 400h-100v100h100v-100z" />
+<glyph unicode="&#xe197;" d="M800 300h128q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5q0 -80 56.5 -137t135.5 -57h222v300h400v-300zM700 200h200l-300 -300 l-300 300h200v300h200v-300z" />
+<glyph unicode="&#xe198;" d="M600 714l403 -403q94 26 154.5 104t60.5 178q0 121 -85 207.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5q0 -80 56.5 -137t135.5 -57h8zM700 -100h-200v300h-200l300 300 l300 -300h-200v-300z" />
+<glyph unicode="&#xe199;" d="M700 200h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-155l-75 -45h350l-75 45v155z" />
+<glyph unicode="&#xe200;" d="M700 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -12t1 -11q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5 q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350z" />
+<glyph unicode="&#x1f4bc;" d="M800 1000h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100zM500 1000h200v100h-200v-100zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="&#x1f4c5;" d="M1100 900v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150h1100zM0 800v-750q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100zM100 600h100v-100h-100v100zM300 600h100v-100h-100v100z M500 600h100v-100h-100v100zM700 600h100v-100h-100v100zM900 600h100v-100h-100v100zM100 400h100v-100h-100v100zM300 400h100v-100h-100v100zM500 400h100v-100h-100v100zM700 400h100v-100h-100v100zM900 400h100v-100h-100v100zM100 200h100v-100h-100v100zM300 200 h100v-100h-100v100zM500 200h100v-100h-100v100zM700 200h100v-100h-100v100zM900 200h100v-100h-100v100z" />
+<glyph unicode="&#x1f4cc;" d="M902 1185l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207l-380 -303l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15z" />
+<glyph unicode="&#x1f4ce;" d="M518 119l69 -60l517 511q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163t35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84 t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -79.5 -17t-67.5 -51l-388 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23q38 0 53 -36q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348 q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256z" />
+<glyph unicode="&#x1f4f7;" d="M1200 200v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5z M1000 700h-100v100h100v-100zM844 500q0 -100 -72 -172t-172 -72t-172 72t-72 172t72 172t172 72t172 -72t72 -172zM706 500q0 44 -31 75t-75 31t-75 -31t-31 -75t31 -75t75 -31t75 31t31 75z" />
+<glyph unicode="&#x1f512;" d="M900 800h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" />
+<glyph unicode="&#x1f514;" d="M1062 400h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-22 -9 -63 -23t-167.5 -37t-251.5 -23t-245.5 20.5t-178.5 41.5l-58 20q-18 7 -31 27.5t-13 40.5q0 21 13.5 35.5t33.5 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94 q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327zM600 104q-54 0 -103 6q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6z" />
+<glyph unicode="&#x1f516;" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
+<glyph unicode="&#x1f525;" d="M400 755q2 -12 8 -41.5t8 -43t6 -39.5t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85t5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5 q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129 q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5z" />
+<glyph unicode="&#x1f527;" d="M948 778l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138z" />
+</font>
+</defs></svg> 
\ No newline at end of file

=== added file 'web_bootstrap3/static/src/fonts/glyphicons-halflings-regular.ttf'
Binary files web_bootstrap3/static/src/fonts/glyphicons-halflings-regular.ttf	1970-01-01 00:00:00 +0000 and web_bootstrap3/static/src/fonts/glyphicons-halflings-regular.ttf	2014-04-22 22:55:50 +0000 differ
=== added file 'web_bootstrap3/static/src/fonts/glyphicons-halflings-regular.woff'
Binary files web_bootstrap3/static/src/fonts/glyphicons-halflings-regular.woff	1970-01-01 00:00:00 +0000 and web_bootstrap3/static/src/fonts/glyphicons-halflings-regular.woff	2014-04-22 22:55:50 +0000 differ
=== added directory 'web_bootstrap3/static/src/img'
=== added file 'web_bootstrap3/static/src/img/icon.png'
Binary files web_bootstrap3/static/src/img/icon.png	1970-01-01 00:00:00 +0000 and web_bootstrap3/static/src/img/icon.png	2014-04-22 22:55:50 +0000 differ
=== added file 'web_bootstrap3/static/src/index.html'
--- web_bootstrap3/static/src/index.html	1970-01-01 00:00:00 +0000
+++ web_bootstrap3/static/src/index.html	2014-04-22 22:55:50 +0000
@@ -0,0 +1,211 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Bootstrap 3 Lightbox</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
+    <style type="text/css">
+        /* i like padding */
+        div.row > div > div.row { margin-bottom:15px; }
+        body { padding-bottom:50px; }
+        h2.page-header { margin-top:50px; }
+    </style>
+</head>
+<body>
+
+    <div class="container">
+        <div class="row">
+            <div class="col-md-10 col-md-offset-1">
+
+                <h1 class="page-header">Lightbox for Bootstrap 3</h1>
+                <p class="lead">Utilizes Bootstraps modal plugin to implement a lightbox gallery - <a href="https://github.com/ashleydw/lightbox";>GitHub</a></p>
+
+                <h2>Usage</h2>
+                <p>Obviously, you need the modal component that comes with Bootstrap, and jQuery.</p>
+                <h3>Via data attributes</h3>
+                <pre>&lt;a href=&quot;someurl&quot; data-toggle=&quot;lightbox&quot;&gt;Launch modal&lt;/a&gt;</pre>
+                <h3>Via Javascript</h3>
+                <pre>&lt;a href=&quot;someurl&quot; id=&quot;mylink&quot;&gt;Open lightbox&lt;/a&gt;<br />$(&#39;#mylink&#39;).lightbox(options);</pre>
+
+                <h2>Options</h2>
+                <table class="table table-bordered">
+                    <thead>
+                        <tr>
+                            <th>Name</th>
+                            <th>type</th>
+                            <th>default</th>
+                            <th>description</th>
+                        </tr>
+                    </thead>
+                    <tbody>
+                        <tr>
+                            <td>source</td>
+                            <td>string</td>
+                            <td></td>
+                            <td>If you can't/don't want to set the href property of an element, use <code>data-source="something"</code></td>
+                        </tr>
+                        <tr>
+                            <td>gallery</td>
+                            <td>string</td>
+                            <td></td>
+                            <td>For grouping elements</td>
+                        </tr>
+                    </tbody>
+                </table>
+                <p>Images taken from Instagrams <a href="http://blog.instagram.com/post/58570728864/twoi92"; title="Because I was too lazy to find my own">"The Week on Instagram | 92"</a></p>
+
+                <h2 class="page-header" id="single-image">Example #1: Single Image</h2>
+                <div class="row">
+                    <div class="col-sm-offset-4 col-sm-3">
+                        <a href="http://distilleryimage6.ak.instagram.com/ba70b8e8030011e3a31b22000a1fbb63_7.jpg"; data-toggle="lightbox">
+                            <img src="http://distilleryimage6.ak.instagram.com/ba70b8e8030011e3a31b22000a1fbb63_7.jpg"; class="img-responsive">
+                        </a>
+                    </div>
+                </div>
+
+                <h2 class="page-header" id="image-gallery">Example #2: Gallery of Images</h2>
+                <p>Gallery images must be wrapped in a tag (probably <code>&lt;div&gt;</code>) - which doesn't have the class <code>.row</code>. This is so you can create columns/rows.</p>
+                <p>Note how the final image is not in the gallery intentionally.</p>
+                <div class="row">
+                    <div class="col-md-offset-2 col-md-8">
+                        <div class="row">
+                            <a href="http://distilleryimage6.ak.instagram.com/ba70b8e8030011e3a31b22000a1fbb63_7.jpg"; data-toggle="lightbox" data-gallery="multiimages" class="col-sm-4">
+                                <img src="http://distilleryimage6.ak.instagram.com/ba70b8e8030011e3a31b22000a1fbb63_7.jpg"; class="img-responsive">
+                            </a>
+                            <a href="http://distilleryimage3.ak.instagram.com/f0c3343c046511e393b222000aa8011b_7.jpg"; data-toggle="lightbox" data-gallery="multiimages" class="col-sm-4">
+                                <img src="http://distilleryimage3.ak.instagram.com/f0c3343c046511e393b222000aa8011b_7.jpg"; class="img-responsive">
+                            </a>
+                            <a href="http://distilleryimage5.ak.instagram.com/59e9419c05d111e3896922000a1fbe1a_7.jpg"; data-toggle="lightbox" data-gallery="multiimages" class="col-sm-4">
+                                <img src="http://distilleryimage5.ak.instagram.com/59e9419c05d111e3896922000a1fbe1a_7.jpg"; class="img-responsive">
+                            </a>
+                        </div>
+                        <div class="row">
+                            <a href="http://distilleryimage2.ak.instagram.com/e3493b0a045411e3a4fb22000a1f97ec_7.jpg"; data-toggle="lightbox" data-gallery="multiimages" class="col-sm-4">
+                                <img src="http://distilleryimage2.ak.instagram.com/e3493b0a045411e3a4fb22000a1f97ec_7.jpg"; class="img-responsive">
+                            </a>
+                            <a href="http://distilleryimage10.ak.instagram.com/85c5d0e4039411e3bd9b22000aa82186_7.jpg"; data-toggle="lightbox" data-gallery="multiimages" class="col-sm-4">
+                                <img src="http://distilleryimage10.ak.instagram.com/85c5d0e4039411e3bd9b22000aa82186_7.jpg"; class="img-responsive">
+                            </a>
+                            <a href="http://distilleryimage3.ak.instagram.com/aa7088e6048c11e3a32722000aa800c4_7.jpg"; data-toggle="lightbox" class="col-sm-4">
+                                <img src="http://distilleryimage3.ak.instagram.com/aa7088e6048c11e3a32722000aa800c4_7.jpg"; class="img-responsive">
+                            </a>
+                        </div>
+                    </div>
+                </div>
+
+                <h2 class="page-header" id="single-youtube">Example #3: Single YouTube Video</h2>
+                <a href="http://www.youtube.com/watch?v=k6mFF3VmVAs"; data-toggle="lightbox">
+                    Ghostpoet - Cash and Carry Me Home (Official Video)
+                </a>
+
+                <h2 class="page-header" id="youtube-gallery">Example #4: Gallery of YouTube Videos</h2>
+                <div class="row">
+                    <div class="col-md-offset-1 col-md-10">
+                        <div class="row">
+                            <a href="http://www.youtube.com/watch?v=k6mFF3VmVAs"; data-toggle="lightbox" data-gallery="youtubevideos" class="col-sm-4">
+                               <img src="http://i1.ytimg.com/vi/yP11r5n5RNg/mqdefault.jpg"; class="img-responsive">
+                            </a>
+                            <a href="http://youtu.be/iQ4D273C7Ac"; data-toggle="lightbox" data-gallery="youtubevideos" class="col-sm-4">
+                               <img src="http://i1.ytimg.com/vi/iQ4D273C7Ac/mqdefault.jpg"; class="img-responsive">
+                            </a>
+                            <a href="//www.youtube.com/embed/b0jqPvpn3sY" data-toggle="lightbox" data-gallery="youtubevideos" class="col-sm-4">
+                               <img src="http://i1.ytimg.com/vi/b0jqPvpn3sY/mqdefault.jpg"; class="img-responsive">
+                            </a>
+                        </div>
+                    </div>
+                </div>
+
+                <h2 class="page-header" id="mixed-gallery">Example #5: Mixed gallery</h2>
+                <div class="row">
+                    <div class="col-md-offset-1 col-md-10">
+                        <div class="row">
+                            <a href="http://www.youtube.com/watch?v=k6mFF3VmVAs"; data-toggle="lightbox" data-gallery="mixedgallery" class="col-sm-4">
+                               <img src="http://i1.ytimg.com/vi/yP11r5n5RNg/mqdefault.jpg"; class="img-responsive">
+                            </a>
+                            <a href="http://distilleryimage10.ak.instagram.com/85c5d0e4039411e3bd9b22000aa82186_7.jpg"; data-toggle="lightbox" data-gallery="mixedgallery" class="col-sm-4">
+                                <img src="http://distilleryimage10.ak.instagram.com/85c5d0e4039411e3bd9b22000aa82186_7.jpg"; class="img-responsive">
+                            </a>
+                            <a href="//www.youtube.com/embed/b0jqPvpn3sY" data-toggle="lightbox" data-gallery="mixedgallery" class="col-sm-4">
+                               <img src="http://i1.ytimg.com/vi/b0jqPvpn3sY/mqdefault.jpg"; class="img-responsive">
+                            </a>
+                        </div>
+                    </div>
+                </div>
+
+                <h2 class="page-header" id="programatically-call">Example #6: Programatically call</h2>
+                <div class="row">
+                    <div class="col-md-offset-1 col-md-10">
+                        <div class="row">
+                            <a href="http://distilleryimage3.ak.instagram.com/f0c3343c046511e393b222000aa8011b_7.jpg"; id="open-image" class="col-sm-4">
+                                <img src="http://distilleryimage3.ak.instagram.com/f0c3343c046511e393b222000aa8011b_7.jpg"; class="img-responsive">
+                            </a>
+                            <a href="http://youtu.be/iQ4D273C7Ac"; id="open-youtube" class="col-sm-4">
+                                <img src="http://i1.ytimg.com/vi/iQ4D273C7Ac/mqdefault.jpg"; class="img-responsive">
+                            </a>
+                        </div>
+                    </div>
+                </div>
+
+                <h2 class="page-header" id="programatically-call">Example #7: Via <code>data-source</code></h2>
+                <div class="row">
+                    <div class="col-md-offset-1 col-md-10">
+                        <div class="row">
+                            <img src="http://distilleryimage2.ak.instagram.com/e3493b0a045411e3a4fb22000a1f97ec_7.jpg"; data-toggle="lightbox" data-source="http://distilleryimage2.ak.instagram.com/e3493b0a045411e3a4fb22000a1f97ec_7.jpg"; class="img-responsive col-sm-4">
+                            <img src="http://i1.ytimg.com/vi/b0jqPvpn3sY/mqdefault.jpg"; data-toggle="lightbox" data-source="//www.youtube.com/embed/b0jqPvpn3sY" class="img-responsive col-sm-4">
+                        </div>
+                    </div>
+                </div>
+
+                <h2 class="page-header" id="different-sizes">Example #8: Gallery of different sized images</h2>
+                <div class="row">
+                    <div class="col-md-offset-1 col-md-10">
+                        <div class="row">
+                            <a href="https://lh5.googleusercontent.com/-jl_I19YyRVM/T0oJ3PCKZuI/AAAAAAAARRs/-gfmn1LxMJ8/s1280/tilt%2520shift%2520baseball.jpg"; data-toggle="lightbox" data-gallery="imagesizes" class="col-sm-3">
+                                <img src="https://lh5.googleusercontent.com/-jl_I19YyRVM/T0oJ3PCKZuI/AAAAAAAARRs/-gfmn1LxMJ8/s128/tilt%20shift%20baseball.jpg"; class="img-responsive">
+                            </a>
+                            <a href="https://lh4.googleusercontent.com/-lB-KDQlhdAE/T0oJGy0-UOI/AAAAAAAAQyw/K-1hc5M7EQM/s800/IMG_1193%2520-%2520original.jpg"; data-toggle="lightbox" data-gallery="imagesizes" class="col-sm-3">
+                                <img src="https://lh4.googleusercontent.com/-lB-KDQlhdAE/T0oJGy0-UOI/AAAAAAAAQyw/K-1hc5M7EQM/s128/IMG_1193%20-%20original.jpg"; class="img-responsive">
+                            </a>
+                            <a href="https://lh5.googleusercontent.com/-cfT_8CMK26k/T0oJMAxOl2I/AAAAAAAAQzI/TaDocinT6So/s912/P1010046%2520-%2520original.jpg"; data-toggle="lightbox" data-gallery="imagesizes" class="col-sm-3">
+                                <img src="https://lh5.googleusercontent.com/-cfT_8CMK26k/T0oJMAxOl2I/AAAAAAAAQzI/TaDocinT6So/s128/P1010046%20-%20original.jpg"; class="img-responsive">
+                            </a>
+                            <a href="https://lh3.googleusercontent.com/-kgMllZrb20s/T0oJD2nFklI/AAAAAAAAQyg/pnMfqLAGNJs/s1024/IMG_0736%2520-%2520original.jpg"; data-toggle="lightbox" data-gallery="imagesizes" class="col-sm-3">
+                                <img src="https://lh3.googleusercontent.com/-kgMllZrb20s/T0oJD2nFklI/AAAAAAAAQyg/pnMfqLAGNJs/s128/IMG_0736%20-%20original.jpg"; class="img-responsive">
+                            </a>
+                        </div>
+                    </div>
+                </div>
+
+                <h2 class="page-header" id="too-large">Example #9: Images too wide for display</h2>
+                <p>All examples on this page are this example. Too high images don't count, scrolling works fine with the original modal.</p>
+
+            </div>
+        </div>
+    </div>
+
+    <script src="//code.jquery.com/jquery.js"></script>
+    <script src="../js/ekko-lightbox.js"></script>
+    <script type="text/javascript">
+        $(document).ready(function($) {
+           $('#open-image').click(function(e) {
+               e.preventDefault();
+               $(this).ekkoLightbox();
+           });
+           $('#open-youtube').click(function(e) {
+               e.preventDefault();
+               $(this).ekkoLightbox();
+           });
+           $('#open-source-image').click(function(e) {
+               e.preventDefault();
+               $(this).ekkoLightbox();
+           });
+           $('#open-source-youtube').click(function(e) {
+               e.preventDefault();
+               $(this).ekkoLightbox();
+           });
+        });
+    </script>
+    <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
+
+</body>
+</html>

=== added file 'web_bootstrap3/static/src/index2.html'
--- web_bootstrap3/static/src/index2.html	1970-01-01 00:00:00 +0000
+++ web_bootstrap3/static/src/index2.html	2014-04-22 22:55:50 +0000
@@ -0,0 +1,89 @@
+<html>
+<head>
+  <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
+  <title>Test bs3 Lightbox</title>
+  <script type="text/javascript" language="javascript" charset="utf-8" src="/web/static/lib/jquery/jquery-1.8.3.js"></script>
+  <script type="text/javascript" language="javascript" charset="utf-8" src="/web_bootstrap3/static/src/js/bootstrap.js"></script>
+  <script type="text/javascript" language="javascript" charset="utf-8" src="/web_bootstrap3/static/src/js/bootstrap-lightbox.js"></script>
+  <link rel="stylesheet" href="/web_bootstrap3/static/src/css/bs3-openerp.css" type="text/css" media="screen" title="no title" charset="utf-8" />
+  <link rel="stylesheet" href="/web_bootstrap3/static/src/css/bs3-lightbox.css" type="text/css" media="screen" title="no title" charset="utf-8" />
+</head>
+<body id="base" class="bs3"> <!-- Wrap all the example with bs3 namespace-->
+<!-- Example 1: Simple lightbox responsive Element-->
+<div class="row text-center">
+<p><a data-toggle="lightbox" href="#demoLightbox1">Small Lightbox</a> 
+
+</p>
+<div id="demoLightbox1" class="lightbox fade" tabindex="-1" role="dialog" aria-hidden="true">
+    <div class="lightbox-dialog">
+        <div class="lightbox-content">
+            <img src='data:image/gif;base64,R0lGODdhjACMAOMAAMzMzJaWlsXFxaOjo7GxsZycnLe3t76+vqqqqgAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAjACMAAAE/hDISau9OOvNu/9gKI5kaZ5oqq5s675wLM90bd94ru987//AoHBILBqPyKRyyWw6n9CodEqtWq/YrHbL7Xq/4LB4TC6bz+i0es1uu9/wuHxOr9vv+Lx+z+/7/4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWeQI1mWkCAwEXBgGbAAQFBQQinZ8WoaOlp2EEAbMXphMHAQOeByCytBa2Eri6Abxfp54WssYACKICAQggyKsUyxPOAtDSYckU0AMUwcETswe41RTeE+DiBRLkX+sSzge6ErkS86TRzqgW++rdA5APwL4u84YZDEeQ4UFn0TAkzDew4EEu8zwZEFCAocV0mxKgiZKYTiNHjw5BIkw3q+Wqce8qhApggCQFl79giplnoGeomNm2AesYE2A6nz/pPYsIplQAAv9uMhy2q4KznkytFXgatdzUXFXB4LRQkJSprvhG/rrpkixDs7AuyZ1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTpuxEAADs='>
+        </div>
+    </div>
+</div>
+<!--  -->
+<!-- End First Example -->
+<!-- Example 2: Gallery Elements with Html in the pop up-->
+<section class="row">
+  <div class="container">
+    <ul class="thumbnails">
+      <li class="col-md-3">
+        <a href="#example1" data-toggle="lightbox" class="thumbnail">
+        <img src="/web_bootstrap3/static/src/img/icon.png"/>
+        </a>
+      </li>
+      <li class="col-md-3">
+        <a href="#example2" data-toggle="lightbox" class="thumbnail">
+        <img src="http://www.hello.es/wp-content/uploads/2013/05/512-youtube-icon.png"/>
+        </a>
+      </li>
+      <li class="col-md-3">
+        <a href="#example3" data-toggle="lightbox" class="thumbnail">
+        <img src="/web_bootstrap3/static/src/img/icon.png"/>
+        </a>
+      </li>
+    </ul>
+    <div id="example1" class="lightbox fade" tabindex="-1" role="dialog" aria-hidden="true">
+    <div class="lightbox-dialog">
+        <div class="lightbox-content">
+            <img src='data:image/gif;base64,R0lGODdhjACMAOMAAMzMzJaWlsXFxaOjo7GxsZycnLe3t76+vqqqqgAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAjACMAAAE/hDISau9OOvNu/9gKI5kaZ5oqq5s675wLM90bd94ru987//AoHBILBqPyKRyyWw6n9CodEqtWq/YrHbL7Xq/4LB4TC6bz+i0es1uu9/wuHxOr9vv+Lx+z+/7/4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWeQI1mWkCAwEXBgGbAAQFBQQinZ8WoaOlp2EEAbMXphMHAQOeByCytBa2Eri6Abxfp54WssYACKICAQggyKsUyxPOAtDSYckU0AMUwcETswe41RTeE+DiBRLkX+sSzge6ErkS86TRzqgW++rdA5APwL4u84YZDEeQ4UFn0TAkzDew4EEu8zwZEFCAocV0mxKgiZKYTiNHjw5BIkw3q+Wqce8qhApggCQFl79giplnoGeomNm2AesYE2A6nz/pPYsIplQAAv9uMhy2q4KznkytFXgatdzUXFXB4LRQkJSprvhG/rrpkixDs7AuyZ1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTpuxEAADs='>
+            
+         <div class="lightbox-caption"><p>Your caption here</p></div>
+        </div>
+    </div>
+  </div>
+    <div id="example2" class="lightbox fade" tabindex="-1" role="dialog" aria-hidden="true">
+    <div class="lightbox-dialog">
+        <div class="lightbox-content">
+            <img src='data:image/gif;base64,R0lGODdhjACMAOMAAMzMzJaWlsXFxaOjo7GxsZycnLe3t76+vqqqqgAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAjACMAAAE/hDISau9OOvNu/9gKI5kaZ5oqq5s675wLM90bd94ru987//AoHBILBqPyKRyyWw6n9CodEqtWq/YrHbL7Xq/4LB4TC6bz+i0es1uu9/wuHxOr9vv+Lx+z+/7/4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWeQI1mWkCAwEXBgGbAAQFBQQinZ8WoaOlp2EEAbMXphMHAQOeByCytBa2Eri6Abxfp54WssYACKICAQggyKsUyxPOAtDSYckU0AMUwcETswe41RTeE+DiBRLkX+sSzge6ErkS86TRzqgW++rdA5APwL4u84YZDEeQ4UFn0TAkzDew4EEu8zwZEFCAocV0mxKgiZKYTiNHjw5BIkw3q+Wqce8qhApggCQFl79giplnoGeomNm2AesYE2A6nz/pPYsIplQAAv9uMhy2q4KznkytFXgatdzUXFXB4LRQkJSprvhG/rrpkixDs7AuyZ1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTpuxEAADs='>
+            
+         <div class="lightbox-caption"><p>Your caption here</p></div>
+        </div>
+    </div>
+  </div>
+  <div id="example3" class="lightbox fade lightbox-html" tabindex="-1" role="dialog" aria-hidden="true">
+    <div class="lightbox-dialog">
+        <div class="lightbox-content lead">
+        <div>
+         <div class="col-md-3">
+          <ul>
+             <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
+             <li>Aliquam tincidunt mauris eu risus.</li>
+             <li>Vestibulum auctor dapibus neque.</li>
+          </ul>
+         </div>
+         <div class="col-md-9">
+         <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
+         <iframe width="560" height="315" src="//www.youtube.com/embed/858kpMv7hDQ" frameborder="0" allowfullscreen></iframe>
+         <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
+         </div>
+        </div>
+         <div class="lightbox-caption"><p>Your caption here</p></div>
+        </div>
+    </div>
+  </div>
+  </div>
+</section>
+
+</body>
+</html>

=== added directory 'web_bootstrap3/static/src/js'
=== added file 'web_bootstrap3/static/src/js/bootstrap-lightbox.js'
--- web_bootstrap3/static/src/js/bootstrap-lightbox.js	1970-01-01 00:00:00 +0000
+++ web_bootstrap3/static/src/js/bootstrap-lightbox.js	2014-04-22 22:55:50 +0000
@@ -0,0 +1,300 @@
+/*!
+ * bootstrap-lightbox.js v0.6.1
+ * Copyright 2013 Jason Butz
+ * http://www.apache.org/licenses/LICENSE-2.0.txt
+ */
+
++ function ($) {
+    "use strict";
+
+    // LIGHTBOX CLASS DEFINITION
+    // ======================
+
+    var Lightbox = function (element, options) {
+        this.options = options
+        this.$element = $(element)
+        this.$backdrop = null
+        this.isShown = null
+
+        if (this.options.remote) this.$element.load(this.options.remote)
+    }
+
+    // We depend upon Twitter Bootstrap's Modal library to simplify things here
+    Lightbox.prototype = $.extend({}, $.fn.modal.Constructor.prototype);
+
+    Lightbox.prototype.constructor = Lightbox;
+
+    Lightbox.DEFAULTS = {
+        backdrop: true,
+        keyboard: true,
+        show: true
+    }
+
+    Lightbox.prototype.show = function (_relatedTarget) {
+        var that = this;
+        var e = $.Event('show.bs.lightbox', {
+            relatedTarget: _relatedTarget
+        });
+
+        this.$element.trigger(e);
+
+        if (this.isShown || e.isDefaultPrevented()) return;
+
+        this.isShown = true;
+
+        this.escape();
+
+        this.$element.on('click.dismiss.lightbox', '[data-dismiss="lightbox"]', $.proxy(this.hide, this));
+
+        // This bit is added since we don't display until we have the size
+        //  which prevents image jumping
+        this.preloadSize(function () {
+            that.backdrop(function () {
+                var transition = $.support.transition && that.$element.hasClass('fade');
+
+                if (!that.$element.parent().length) {
+                    that.$element.appendTo(document.body); // don't move modals dom position
+                }
+
+                that.$element.show();
+
+                if (transition) {
+                    that.$element[0].offsetWidth; // force reflow
+                }
+
+                that.$element.addClass('in')
+                    .attr('aria-hidden', false);
+
+                that.enforceFocus();
+
+                var e = $.Event('shown.bs.lightbox', {
+                    relatedTarget: _relatedTarget
+                });
+
+                transition ? that.$element.find('.lightbox-dialog') // wait for modal to slide in
+                .one($.support.transition.end, function () {
+                    that.$element.focus().trigger(e);
+                })
+                    .emulateTransitionEnd(300) : that.$element.focus().trigger(e);
+            });
+        });
+    };
+
+    Lightbox.prototype.hide = function (e) {
+        if (e) e.preventDefault();
+
+        e = $.Event('hide.bs.lightbox');
+
+        this.$element.trigger(e);
+
+        if (!this.isShown || e.isDefaultPrevented()) return;
+
+        this.isShown = false;
+
+        this.escape();
+
+        $(document).off('focusin.bs.lightbox');
+
+        this.$element.removeClass('in')
+            .attr('aria-hidden', true)
+            .off('click.dismiss.lightbox');
+
+        $.support.transition && this.$element.hasClass('fade') ? this.$element.one($.support.transition.end, $.proxy(this.hideModal, this))
+            .emulateTransitionEnd(300) : this.hideModal();
+    };
+
+    Lightbox.prototype.enforceFocus = function () {
+        $(document)
+            .off('focusin.bs.lightbox') // guard against infinite focus loop
+        .on('focusin.bs.lightbox', $.proxy(function (e) {
+            if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
+                this.$element.focus();
+            }
+        }, this));
+    };
+
+    Lightbox.prototype.escape = function () {
+        if (this.isShown && this.options.keyboard) {
+            this.$element.on('keyup.dismiss.bs.lightbox', $.proxy(function (e) {
+                e.which == 27 && this.hide();
+            }, this));
+        } else if (!this.isShown) {
+            this.$element.off('keyup.dismiss.bs.lightbox');
+        }
+    }
+
+    Lightbox.prototype.hideModal = function () {
+        var that = this;
+        this.$element.hide();
+        this.backdrop(function () {
+            that.removeBackdrop();
+            that.$element.trigger('hidden.bs.lightbox');
+        });
+    };
+
+    Lightbox.prototype.backdrop = function (callback) {
+        var that = this
+        var animate = this.$element.hasClass('fade') ? 'fade' : ''
+        if (this.isShown && this.options.backdrop) {
+            var doAnimate = $.support.transition && animate;
+
+            this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
+                .appendTo(document.body);
+
+            this.$element.on('click.dismiss.lightbox', $.proxy(function (e) {
+                if (e.target !== e.currentTarget) return;
+                this.options.backdrop == 'static' ? this.$element[0].focus.call(this.$element[0]) : this.hide.call(this);
+            }, this));
+
+            if (doAnimate) this.$backdrop[0].offsetWidth; // force reflow
+
+            this.$backdrop.addClass('in');
+
+            if (!callback) return;
+
+            doAnimate ? this.$backdrop.one($.support.transition.end, callback)
+                .emulateTransitionEnd(150) : callback();
+
+        } else if (!this.isShown && this.$backdrop) {
+            this.$backdrop.removeClass('in');
+
+            $.support.transition && this.$element.hasClass('fade') ? this.$backdrop.one($.support.transition.end, callback)
+                .emulateTransitionEnd(150) : callback();
+
+        } else if (callback) {
+            callback();
+        }
+    };
+
+    Lightbox.prototype.preloadSize = function (callback) {
+        var callbacks = $.Callbacks();
+        if (callback) callbacks.add(callback);
+        var that = this;
+
+        var windowHeight,
+        windowWidth,
+        padTop,
+        padBottom,
+        padLeft,
+        padRight,
+        $image,
+        preloader,
+        originalWidth,
+        originalHeight;
+        // Get the window width and height.
+        windowHeight = $(window).height();
+        windowWidth = $(window).width();
+
+        // Get the top, bottom, right, and left padding
+        padTop = parseInt(that.$element.find('.lightbox-content').css('padding-top'), 10);
+        padBottom = parseInt(that.$element.find('.lightbox-content').css('padding-bottom'), 10);
+        padLeft = parseInt(that.$element.find('.lightbox-content').css('padding-left'), 10);
+        padRight = parseInt(that.$element.find('.lightbox-content').css('padding-right'), 10);
+
+        // Load the image, we have to do this because if the image isn't already loaded we get a bad size
+        $image = that.$element.find('.lightbox-content').find('img:first');
+        if ($image.length <= 0) return callbacks.fire();
+        preloader = new Image();
+        preloader.onload = function () {
+            //$image.width = preloader.width;
+            //$image.height = preloader.height;
+            //return _this.sizeContainer(preloader.width, preloader.height);
+
+            // The image could be bigger than the window, that is an issue.
+            if ((preloader.width + padLeft + padRight) >= windowWidth) {
+                originalWidth = preloader.width;
+                originalHeight = preloader.height;
+                preloader.width = windowWidth - padLeft - padRight;
+                preloader.height = originalHeight / originalWidth * preloader.width;
+            }
+
+            if ((preloader.height + padTop + padBottom) >= windowHeight) {
+                originalWidth = preloader.width;
+                originalHeight = preloader.height;
+                preloader.height = windowHeight - padTop - padBottom;
+                preloader.width = originalWidth / originalHeight * preloader.height;
+            }
+            console.log(that.$element);
+            that.$element.find('.lightbox-dialog').css({
+                'position': 'fixed',
+                    'width': preloader.width + padLeft + padRight,
+                    'height': preloader.height + padTop + padBottom,
+                    'top': (windowHeight / 2) - ((preloader.height + padTop + padBottom) / 2),
+                    'left': '50%',
+                    'margin-left': -1 * (preloader.width + padLeft + padRight) / 2
+            });
+            that.$element.find('.lightbox-content').css({
+                'width': preloader.width + padLeft + padRight,
+                    'height': preloader.height + padTop + padBottom
+            });
+            $image.css({
+                'width': preloader.width,
+                    'height': preloader.height
+            })
+
+            // We have everything sized!
+            callbacks.fire();
+        };
+        preloader.src = $image.attr('src');
+    };
+
+
+    // LIGHTBOX PLUGIN DEFINITION
+    // =======================
+
+    var old = $.fn.lightbox
+
+    $.fn.lightbox = function (option, _relatedTarget) {
+        return this.each(function () {
+            var $this = $(this);
+            var data = $this.data('bs.lightbox');
+            var options = $.extend({}, Lightbox.DEFAULTS, $this.data(), typeof option == 'object' && option);
+
+            if (!data) $this.data('bs.lightbox', (data = new Lightbox(this, options)));
+            if (typeof option == 'string') data[option](_relatedTarget);
+            else if (options.show) data.show(_relatedTarget)
+        })
+    }
+
+    $.fn.lightbox.Constructor = Lightbox;
+
+
+    // MODAL NO CONFLICT
+    // =================
+
+    $.fn.lightbox.noConflict = function () {
+        $.fn.lightbox = old;
+        return this;
+    }
+
+
+    // MODAL DATA-API
+    // ==============
+
+    $(document).on('click.bs.lightbox.data-api', '[data-toggle="lightbox"]', function (e) {
+        var $this = $(this);
+        var href = $this.attr('href');
+        var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))); //strip for ie7
+        var option = $target.data('lightbox') ? 'toggle' : $.extend({
+            remote: !/#/.test(href) && href
+        }, $target.data(), $this.data());
+
+        e.preventDefault()
+
+        $target.lightbox(option, this)
+            .one('hide', function () {
+            $this.is(':visible') && $this.focus()
+        });
+    });
+
+    $(document)
+        .on('show.bs.lightbox', '.lightbox', function () {
+        $(document.body).addClass('lightbox-open');
+        $(document.body).addClass('bs3');
+    })
+        .on('hidden.bs.lightbox', '.lightbox', function () {
+        $(document.body).removeClass('lightbox-open');
+        $(document.body).removeClass('bs3');
+    })
+
+}(window.jQuery);

=== added file 'web_bootstrap3/static/src/js/bootstrap.js'
--- web_bootstrap3/static/src/js/bootstrap.js	1970-01-01 00:00:00 +0000
+++ web_bootstrap3/static/src/js/bootstrap.js	2014-04-22 22:55:50 +0000
@@ -0,0 +1,2001 @@
+/**
+* Bootstrap v3.0.0 by @fat and @mdo
+* Copyright 2013 Twitter Inc.
+* Licensed under http://www.apache.org/licenses/LICENSE-2.0.
+*
+* Designed and built with all the love in the world by @mdo and @fat.
+*/
+if (!jQuery) { throw new Error("Bootstrap requires jQuery") }
+
+/* ========================================================================
+ * Bootstrap: transition.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#transitions
+ * ========================================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
+  // ============================================================
+
+  function transitionEnd() {
+    var el = document.createElement('bootstrap')
+
+    var transEndEventNames = {
+      'WebkitTransition' : 'webkitTransitionEnd'
+    , 'MozTransition'    : 'transitionend'
+    , 'OTransition'      : 'oTransitionEnd otransitionend'
+    , 'transition'       : 'transitionend'
+    }
+
+    for (var name in transEndEventNames) {
+      if (el.style[name] !== undefined) {
+        return { end: transEndEventNames[name] }
+      }
+    }
+  }
+
+  // http://blog.alexmaccaw.com/css-transitions
+  $.fn.emulateTransitionEnd = function (duration) {
+    var called = false, $el = this
+    $(this).one($.support.transition.end, function () { called = true })
+    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
+    setTimeout(callback, duration)
+    return this
+  }
+
+  $(function () {
+    $.support.transition = transitionEnd()
+  })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: alert.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#alerts
+ * ========================================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // ALERT CLASS DEFINITION
+  // ======================
+
+  var dismiss = '[data-dismiss="alert"]'
+  var Alert   = function (el) {
+    $(el).on('click', dismiss, this.close)
+  }
+
+  Alert.prototype.close = function (e) {
+    var $this    = $(this)
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    var $parent = $(selector)
+
+    if (e) e.preventDefault()
+
+    if (!$parent.length) {
+      $parent = $this.hasClass('alert') ? $this : $this.parent()
+    }
+
+    $parent.trigger(e = $.Event('close.bs.alert'))
+
+    if (e.isDefaultPrevented()) return
+
+    $parent.removeClass('in')
+
+    function removeElement() {
+      $parent.trigger('closed.bs.alert').remove()
+    }
+
+    $.support.transition && $parent.hasClass('fade') ?
+      $parent
+        .one($.support.transition.end, removeElement)
+        .emulateTransitionEnd(150) :
+      removeElement()
+  }
+
+
+  // ALERT PLUGIN DEFINITION
+  // =======================
+
+  var old = $.fn.alert
+
+  $.fn.alert = function (option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.alert')
+
+      if (!data) $this.data('bs.alert', (data = new Alert(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  $.fn.alert.Constructor = Alert
+
+
+  // ALERT NO CONFLICT
+  // =================
+
+  $.fn.alert.noConflict = function () {
+    $.fn.alert = old
+    return this
+  }
+
+
+  // ALERT DATA-API
+  // ==============
+
+  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: button.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#buttons
+ * ========================================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // BUTTON PUBLIC CLASS DEFINITION
+  // ==============================
+
+  var Button = function (element, options) {
+    this.$element = $(element)
+    this.options  = $.extend({}, Button.DEFAULTS, options)
+  }
+
+  Button.DEFAULTS = {
+    loadingText: 'loading...'
+  }
+
+  Button.prototype.setState = function (state) {
+    var d    = 'disabled'
+    var $el  = this.$element
+    var val  = $el.is('input') ? 'val' : 'html'
+    var data = $el.data()
+
+    state = state + 'Text'
+
+    if (!data.resetText) $el.data('resetText', $el[val]())
+
+    $el[val](data[state] || this.options[state])
+
+    // push to event loop to allow forms to submit
+    setTimeout(function () {
+      state == 'loadingText' ?
+        $el.addClass(d).attr(d, d) :
+        $el.removeClass(d).removeAttr(d);
+    }, 0)
+  }
+
+  Button.prototype.toggle = function () {
+    var $parent = this.$element.closest('[data-toggle="buttons"]')
+
+    if ($parent.length) {
+      var $input = this.$element.find('input')
+        .prop('checked', !this.$element.hasClass('active'))
+        .trigger('change')
+      if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active')
+    }
+
+    this.$element.toggleClass('active')
+  }
+
+
+  // BUTTON PLUGIN DEFINITION
+  // ========================
+
+  var old = $.fn.button
+
+  $.fn.button = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.button')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.button', (data = new Button(this, options)))
+
+      if (option == 'toggle') data.toggle()
+      else if (option) data.setState(option)
+    })
+  }
+
+  $.fn.button.Constructor = Button
+
+
+  // BUTTON NO CONFLICT
+  // ==================
+
+  $.fn.button.noConflict = function () {
+    $.fn.button = old
+    return this
+  }
+
+
+  // BUTTON DATA-API
+  // ===============
+
+  $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {
+    var $btn = $(e.target)
+    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
+    $btn.button('toggle')
+    e.preventDefault()
+  })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: carousel.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#carousel
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // CAROUSEL CLASS DEFINITION
+  // =========================
+
+  var Carousel = function (element, options) {
+    this.$element    = $(element)
+    this.$indicators = this.$element.find('.carousel-indicators')
+    this.options     = options
+    this.paused      =
+    this.sliding     =
+    this.interval    =
+    this.$active     =
+    this.$items      = null
+
+    this.options.pause == 'hover' && this.$element
+      .on('mouseenter', $.proxy(this.pause, this))
+      .on('mouseleave', $.proxy(this.cycle, this))
+  }
+
+  Carousel.DEFAULTS = {
+    interval: 5000
+  , pause: 'hover'
+  , wrap: true
+  }
+
+  Carousel.prototype.cycle =  function (e) {
+    e || (this.paused = false)
+
+    this.interval && clearInterval(this.interval)
+
+    this.options.interval
+      && !this.paused
+      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+
+    return this
+  }
+
+  Carousel.prototype.getActiveIndex = function () {
+    this.$active = this.$element.find('.item.active')
+    this.$items  = this.$active.parent().children()
+
+    return this.$items.index(this.$active)
+  }
+
+  Carousel.prototype.to = function (pos) {
+    var that        = this
+    var activeIndex = this.getActiveIndex()
+
+    if (pos > (this.$items.length - 1) || pos < 0) return
+
+    if (this.sliding)       return this.$element.one('slid', function () { that.to(pos) })
+    if (activeIndex == pos) return this.pause().cycle()
+
+    return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
+  }
+
+  Carousel.prototype.pause = function (e) {
+    e || (this.paused = true)
+
+    if (this.$element.find('.next, .prev').length && $.support.transition.end) {
+      this.$element.trigger($.support.transition.end)
+      this.cycle(true)
+    }
+
+    this.interval = clearInterval(this.interval)
+
+    return this
+  }
+
+  Carousel.prototype.next = function () {
+    if (this.sliding) return
+    return this.slide('next')
+  }
+
+  Carousel.prototype.prev = function () {
+    if (this.sliding) return
+    return this.slide('prev')
+  }
+
+  Carousel.prototype.slide = function (type, next) {
+    var $active   = this.$element.find('.item.active')
+    var $next     = next || $active[type]()
+    var isCycling = this.interval
+    var direction = type == 'next' ? 'left' : 'right'
+    var fallback  = type == 'next' ? 'first' : 'last'
+    var that      = this
+
+    if (!$next.length) {
+      if (!this.options.wrap) return
+      $next = this.$element.find('.item')[fallback]()
+    }
+
+    this.sliding = true
+
+    isCycling && this.pause()
+
+    var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })
+
+    if ($next.hasClass('active')) return
+
+    if (this.$indicators.length) {
+      this.$indicators.find('.active').removeClass('active')
+      this.$element.one('slid', function () {
+        var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
+        $nextIndicator && $nextIndicator.addClass('active')
+      })
+    }
+
+    if ($.support.transition && this.$element.hasClass('slide')) {
+      this.$element.trigger(e)
+      if (e.isDefaultPrevented()) return
+      $next.addClass(type)
+      $next[0].offsetWidth // force reflow
+      $active.addClass(direction)
+      $next.addClass(direction)
+      $active
+        .one($.support.transition.end, function () {
+          $next.removeClass([type, direction].join(' ')).addClass('active')
+          $active.removeClass(['active', direction].join(' '))
+          that.sliding = false
+          setTimeout(function () { that.$element.trigger('slid') }, 0)
+        })
+        .emulateTransitionEnd(600)
+    } else {
+      this.$element.trigger(e)
+      if (e.isDefaultPrevented()) return
+      $active.removeClass('active')
+      $next.addClass('active')
+      this.sliding = false
+      this.$element.trigger('slid')
+    }
+
+    isCycling && this.cycle()
+
+    return this
+  }
+
+
+  // CAROUSEL PLUGIN DEFINITION
+  // ==========================
+
+  var old = $.fn.carousel
+
+  $.fn.carousel = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.carousel')
+      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
+      var action  = typeof option == 'string' ? option : options.slide
+
+      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
+      if (typeof option == 'number') data.to(option)
+      else if (action) data[action]()
+      else if (options.interval) data.pause().cycle()
+    })
+  }
+
+  $.fn.carousel.Constructor = Carousel
+
+
+  // CAROUSEL NO CONFLICT
+  // ====================
+
+  $.fn.carousel.noConflict = function () {
+    $.fn.carousel = old
+    return this
+  }
+
+
+  // CAROUSEL DATA-API
+  // =================
+
+  $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
+    var $this   = $(this), href
+    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+    var options = $.extend({}, $target.data(), $this.data())
+    var slideIndex = $this.attr('data-slide-to')
+    if (slideIndex) options.interval = false
+
+    $target.carousel(options)
+
+    if (slideIndex = $this.attr('data-slide-to')) {
+      $target.data('bs.carousel').to(slideIndex)
+    }
+
+    e.preventDefault()
+  })
+
+  $(window).on('load', function () {
+    $('[data-ride="carousel"]').each(function () {
+      var $carousel = $(this)
+      $carousel.carousel($carousel.data())
+    })
+  })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: collapse.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#collapse
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // COLLAPSE PUBLIC CLASS DEFINITION
+  // ================================
+
+  var Collapse = function (element, options) {
+    this.$element      = $(element)
+    this.options       = $.extend({}, Collapse.DEFAULTS, options)
+    this.transitioning = null
+
+    if (this.options.parent) this.$parent = $(this.options.parent)
+    if (this.options.toggle) this.toggle()
+  }
+
+  Collapse.DEFAULTS = {
+    toggle: true
+  }
+
+  Collapse.prototype.dimension = function () {
+    var hasWidth = this.$element.hasClass('width')
+    return hasWidth ? 'width' : 'height'
+  }
+
+  Collapse.prototype.show = function () {
+    if (this.transitioning || this.$element.hasClass('in')) return
+
+    var startEvent = $.Event('show.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    var actives = this.$parent && this.$parent.find('> .panel > .in')
+
+    if (actives && actives.length) {
+      var hasData = actives.data('bs.collapse')
+      if (hasData && hasData.transitioning) return
+      actives.collapse('hide')
+      hasData || actives.data('bs.collapse', null)
+    }
+
+    var dimension = this.dimension()
+
+    this.$element
+      .removeClass('collapse')
+      .addClass('collapsing')
+      [dimension](0)
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.$element
+        .removeClass('collapsing')
+        .addClass('in')
+        [dimension]('auto')
+      this.transitioning = 0
+      this.$element.trigger('shown.bs.collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
+
+    this.$element
+      .one($.support.transition.end, $.proxy(complete, this))
+      .emulateTransitionEnd(350)
+      [dimension](this.$element[0][scrollSize])
+  }
+
+  Collapse.prototype.hide = function () {
+    if (this.transitioning || !this.$element.hasClass('in')) return
+
+    var startEvent = $.Event('hide.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    var dimension = this.dimension()
+
+    this.$element
+      [dimension](this.$element[dimension]())
+      [0].offsetHeight
+
+    this.$element
+      .addClass('collapsing')
+      .removeClass('collapse')
+      .removeClass('in')
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.transitioning = 0
+      this.$element
+        .trigger('hidden.bs.collapse')
+        .removeClass('collapsing')
+        .addClass('collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    this.$element
+      [dimension](0)
+      .one($.support.transition.end, $.proxy(complete, this))
+      .emulateTransitionEnd(350)
+  }
+
+  Collapse.prototype.toggle = function () {
+    this[this.$element.hasClass('in') ? 'hide' : 'show']()
+  }
+
+
+  // COLLAPSE PLUGIN DEFINITION
+  // ==========================
+
+  var old = $.fn.collapse
+
+  $.fn.collapse = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.collapse')
+      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.collapse.Constructor = Collapse
+
+
+  // COLLAPSE NO CONFLICT
+  // ====================
+
+  $.fn.collapse.noConflict = function () {
+    $.fn.collapse = old
+    return this
+  }
+
+
+  // COLLAPSE DATA-API
+  // =================
+
+  $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {
+    var $this   = $(this), href
+    var target  = $this.attr('data-target')
+        || e.preventDefault()
+        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
+    var $target = $(target)
+    var data    = $target.data('bs.collapse')
+    var option  = data ? 'toggle' : $this.data()
+    var parent  = $this.attr('data-parent')
+    var $parent = parent && $(parent)
+
+    if (!data || !data.transitioning) {
+      if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed')
+      $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
+    }
+
+    $target.collapse(option)
+  })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: dropdown.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#dropdowns
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // DROPDOWN CLASS DEFINITION
+  // =========================
+
+  var backdrop = '.dropdown-backdrop'
+  var toggle   = '[data-toggle=dropdown]'
+  var Dropdown = function (element) {
+    var $el = $(element).on('click.bs.dropdown', this.toggle)
+  }
+
+  Dropdown.prototype.toggle = function (e) {
+    var $this = $(this)
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    clearMenus()
+
+    if (!isActive) {
+      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
+        // if mobile we we use a backdrop because click events don't delegate
+        $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
+      }
+
+      $parent.trigger(e = $.Event('show.bs.dropdown'))
+
+      if (e.isDefaultPrevented()) return
+
+      $parent
+        .toggleClass('open')
+        .trigger('shown.bs.dropdown')
+
+      $this.focus()
+    }
+
+    return false
+  }
+
+  Dropdown.prototype.keydown = function (e) {
+    if (!/(38|40|27)/.test(e.keyCode)) return
+
+    var $this = $(this)
+
+    e.preventDefault()
+    e.stopPropagation()
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    if (!isActive || (isActive && e.keyCode == 27)) {
+      if (e.which == 27) $parent.find(toggle).focus()
+      return $this.click()
+    }
+
+    var $items = $('[role=menu] li:not(.divider):visible a', $parent)
+
+    if (!$items.length) return
+
+    var index = $items.index($items.filter(':focus'))
+
+    if (e.keyCode == 38 && index > 0)                 index--                        // up
+    if (e.keyCode == 40 && index < $items.length - 1) index++                        // down
+    if (!~index)                                      index=0
+
+    $items.eq(index).focus()
+  }
+
+  function clearMenus() {
+    $(backdrop).remove()
+    $(toggle).each(function (e) {
+      var $parent = getParent($(this))
+      if (!$parent.hasClass('open')) return
+      $parent.trigger(e = $.Event('hide.bs.dropdown'))
+      if (e.isDefaultPrevented()) return
+      $parent.removeClass('open').trigger('hidden.bs.dropdown')
+    })
+  }
+
+  function getParent($this) {
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+    }
+
+    var $parent = selector && $(selector)
+
+    return $parent && $parent.length ? $parent : $this.parent()
+  }
+
+
+  // DROPDOWN PLUGIN DEFINITION
+  // ==========================
+
+  var old = $.fn.dropdown
+
+  $.fn.dropdown = function (option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('dropdown')
+
+      if (!data) $this.data('dropdown', (data = new Dropdown(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  $.fn.dropdown.Constructor = Dropdown
+
+
+  // DROPDOWN NO CONFLICT
+  // ====================
+
+  $.fn.dropdown.noConflict = function () {
+    $.fn.dropdown = old
+    return this
+  }
+
+
+  // APPLY TO STANDARD DROPDOWN ELEMENTS
+  // ===================================
+
+  $(document)
+    .on('click.bs.dropdown.data-api', clearMenus)
+    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+    .on('click.bs.dropdown.data-api'  , toggle, Dropdown.prototype.toggle)
+    .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: modal.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#modals
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // MODAL CLASS DEFINITION
+  // ======================
+
+  var Modal = function (element, options) {
+    this.options   = options
+    this.$element  = $(element)
+    this.$backdrop =
+    this.isShown   = null
+
+    if (this.options.remote) this.$element.load(this.options.remote)
+  }
+
+  Modal.DEFAULTS = {
+      backdrop: true
+    , keyboard: true
+    , show: true
+  }
+
+  Modal.prototype.toggle = function (_relatedTarget) {
+    return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)
+  }
+
+  Modal.prototype.show = function (_relatedTarget) {
+    var that = this
+    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
+
+    this.$element.trigger(e)
+
+    if (this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = true
+
+    this.escape()
+
+    this.$element.on('click.dismiss.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
+
+    this.backdrop(function () {
+      var transition = $.support.transition && that.$element.hasClass('fade')
+
+      if (!that.$element.parent().length) {
+        that.$element.appendTo(document.body) // don't move modals dom position
+      }
+
+      that.$element.show()
+
+      if (transition) {
+        that.$element[0].offsetWidth // force reflow
+      }
+
+      that.$element
+        .addClass('in')
+        .attr('aria-hidden', false)
+
+      that.enforceFocus()
+
+      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
+
+      transition ?
+        that.$element.find('.modal-dialog') // wait for modal to slide in
+          .one($.support.transition.end, function () {
+            that.$element.focus().trigger(e)
+          })
+          .emulateTransitionEnd(300) :
+        that.$element.focus().trigger(e)
+    })
+  }
+
+  Modal.prototype.hide = function (e) {
+    if (e) e.preventDefault()
+
+    e = $.Event('hide.bs.modal')
+
+    this.$element.trigger(e)
+
+    if (!this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = false
+
+    this.escape()
+
+    $(document).off('focusin.bs.modal')
+
+    this.$element
+      .removeClass('in')
+      .attr('aria-hidden', true)
+      .off('click.dismiss.modal')
+
+    $.support.transition && this.$element.hasClass('fade') ?
+      this.$element
+        .one($.support.transition.end, $.proxy(this.hideModal, this))
+        .emulateTransitionEnd(300) :
+      this.hideModal()
+  }
+
+  Modal.prototype.enforceFocus = function () {
+    $(document)
+      .off('focusin.bs.modal') // guard against infinite focus loop
+      .on('focusin.bs.modal', $.proxy(function (e) {
+        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
+          this.$element.focus()
+        }
+      }, this))
+  }
+
+  Modal.prototype.escape = function () {
+    if (this.isShown && this.options.keyboard) {
+      this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
+        e.which == 27 && this.hide()
+      }, this))
+    } else if (!this.isShown) {
+      this.$element.off('keyup.dismiss.bs.modal')
+    }
+  }
+
+  Modal.prototype.hideModal = function () {
+    var that = this
+    this.$element.hide()
+    this.backdrop(function () {
+      that.removeBackdrop()
+      that.$element.trigger('hidden.bs.modal')
+    })
+  }
+
+  Modal.prototype.removeBackdrop = function () {
+    this.$backdrop && this.$backdrop.remove()
+    this.$backdrop = null
+  }
+
+  Modal.prototype.backdrop = function (callback) {
+    var that    = this
+    var animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+    if (this.isShown && this.options.backdrop) {
+      var doAnimate = $.support.transition && animate
+
+      this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
+        .appendTo(document.body)
+
+      this.$element.on('click.dismiss.modal', $.proxy(function (e) {
+        if (e.target !== e.currentTarget) return
+        this.options.backdrop == 'static'
+          ? this.$element[0].focus.call(this.$element[0])
+          : this.hide.call(this)
+      }, this))
+
+      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+      this.$backdrop.addClass('in')
+
+      if (!callback) return
+
+      doAnimate ?
+        this.$backdrop
+          .one($.support.transition.end, callback)
+          .emulateTransitionEnd(150) :
+        callback()
+
+    } else if (!this.isShown && this.$backdrop) {
+      this.$backdrop.removeClass('in')
+
+      $.support.transition && this.$element.hasClass('fade')?
+        this.$backdrop
+          .one($.support.transition.end, callback)
+          .emulateTransitionEnd(150) :
+        callback()
+
+    } else if (callback) {
+      callback()
+    }
+  }
+
+
+  // MODAL PLUGIN DEFINITION
+  // =======================
+
+  var old = $.fn.modal
+
+  $.fn.modal = function (option, _relatedTarget) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.modal')
+      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
+      if (typeof option == 'string') data[option](_relatedTarget)
+      else if (options.show) data.show(_relatedTarget)
+    })
+  }
+
+  $.fn.modal.Constructor = Modal
+
+
+  // MODAL NO CONFLICT
+  // =================
+
+  $.fn.modal.noConflict = function () {
+    $.fn.modal = old
+    return this
+  }
+
+
+  // MODAL DATA-API
+  // ==============
+
+  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
+    var $this   = $(this)
+    var href    = $this.attr('href')
+    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
+    var option  = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
+
+    e.preventDefault()
+
+    $target
+      .modal(option, this)
+      .one('hide', function () {
+        $this.is(':visible') && $this.focus()
+      })
+  })
+
+  $(document)
+    .on('show.bs.modal',  '.modal', function () { $(document.body).addClass('modal-open') })
+    .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: tooltip.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#tooltip
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // TOOLTIP PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Tooltip = function (element, options) {
+    this.type       =
+    this.options    =
+    this.enabled    =
+    this.timeout    =
+    this.hoverState =
+    this.$element   = null
+
+    this.init('tooltip', element, options)
+  }
+
+  Tooltip.DEFAULTS = {
+    animation: true
+  , placement: 'top'
+  , selector: false
+  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
+  , trigger: 'hover focus'
+  , title: ''
+  , delay: 0
+  , html: false
+  , container: false
+  }
+
+  Tooltip.prototype.init = function (type, element, options) {
+    this.enabled  = true
+    this.type     = type
+    this.$element = $(element)
+    this.options  = this.getOptions(options)
+
+    var triggers = this.options.trigger.split(' ')
+
+    for (var i = triggers.length; i--;) {
+      var trigger = triggers[i]
+
+      if (trigger == 'click') {
+        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+      } else if (trigger != 'manual') {
+        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focus'
+        var eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
+
+        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+      }
+    }
+
+    this.options.selector ?
+      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+      this.fixTitle()
+  }
+
+  Tooltip.prototype.getDefaults = function () {
+    return Tooltip.DEFAULTS
+  }
+
+  Tooltip.prototype.getOptions = function (options) {
+    options = $.extend({}, this.getDefaults(), this.$element.data(), options)
+
+    if (options.delay && typeof options.delay == 'number') {
+      options.delay = {
+        show: options.delay
+      , hide: options.delay
+      }
+    }
+
+    return options
+  }
+
+  Tooltip.prototype.getDelegateOptions = function () {
+    var options  = {}
+    var defaults = this.getDefaults()
+
+    this._options && $.each(this._options, function (key, value) {
+      if (defaults[key] != value) options[key] = value
+    })
+
+    return options
+  }
+
+  Tooltip.prototype.enter = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'in'
+
+    if (!self.options.delay || !self.options.delay.show) return self.show()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'in') self.show()
+    }, self.options.delay.show)
+  }
+
+  Tooltip.prototype.leave = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'out'
+
+    if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'out') self.hide()
+    }, self.options.delay.hide)
+  }
+
+  Tooltip.prototype.show = function () {
+    var e = $.Event('show.bs.'+ this.type)
+
+    if (this.hasContent() && this.enabled) {
+      this.$element.trigger(e)
+
+      if (e.isDefaultPrevented()) return
+
+      var $tip = this.tip()
+
+      this.setContent()
+
+      if (this.options.animation) $tip.addClass('fade')
+
+      var placement = typeof this.options.placement == 'function' ?
+        this.options.placement.call(this, $tip[0], this.$element[0]) :
+        this.options.placement
+
+      var autoToken = /\s?auto?\s?/i
+      var autoPlace = autoToken.test(placement)
+      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
+
+      $tip
+        .detach()
+        .css({ top: 0, left: 0, display: 'block' })
+        .addClass(placement)
+
+      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
+
+      var pos          = this.getPosition()
+      var actualWidth  = $tip[0].offsetWidth
+      var actualHeight = $tip[0].offsetHeight
+
+      if (autoPlace) {
+        var $parent = this.$element.parent()
+
+        var orgPlacement = placement
+        var docScroll    = document.documentElement.scrollTop || document.body.scrollTop
+        var parentWidth  = this.options.container == 'body' ? window.innerWidth  : $parent.outerWidth()
+        var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()
+        var parentLeft   = this.options.container == 'body' ? 0 : $parent.offset().left
+
+        placement = placement == 'bottom' && pos.top   + pos.height  + actualHeight - docScroll > parentHeight  ? 'top'    :
+                    placement == 'top'    && pos.top   - docScroll   - actualHeight < 0                         ? 'bottom' :
+                    placement == 'right'  && pos.right + actualWidth > parentWidth                              ? 'left'   :
+                    placement == 'left'   && pos.left  - actualWidth < parentLeft                               ? 'right'  :
+                    placement
+
+        $tip
+          .removeClass(orgPlacement)
+          .addClass(placement)
+      }
+
+      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
+
+      this.applyPlacement(calculatedOffset, placement)
+      this.$element.trigger('shown.bs.' + this.type)
+    }
+  }
+
+  Tooltip.prototype.applyPlacement = function(offset, placement) {
+    var replace
+    var $tip   = this.tip()
+    var width  = $tip[0].offsetWidth
+    var height = $tip[0].offsetHeight
+
+    // manually read margins because getBoundingClientRect includes difference
+    var marginTop = parseInt($tip.css('margin-top'), 10)
+    var marginLeft = parseInt($tip.css('margin-left'), 10)
+
+    // we must check for NaN for ie 8/9
+    if (isNaN(marginTop))  marginTop  = 0
+    if (isNaN(marginLeft)) marginLeft = 0
+
+    offset.top  = offset.top  + marginTop
+    offset.left = offset.left + marginLeft
+
+    $tip
+      .offset(offset)
+      .addClass('in')
+
+    // check to see if placing tip in new offset caused the tip to resize itself
+    var actualWidth  = $tip[0].offsetWidth
+    var actualHeight = $tip[0].offsetHeight
+
+    if (placement == 'top' && actualHeight != height) {
+      replace = true
+      offset.top = offset.top + height - actualHeight
+    }
+
+    if (/bottom|top/.test(placement)) {
+      var delta = 0
+
+      if (offset.left < 0) {
+        delta       = offset.left * -2
+        offset.left = 0
+
+        $tip.offset(offset)
+
+        actualWidth  = $tip[0].offsetWidth
+        actualHeight = $tip[0].offsetHeight
+      }
+
+      this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
+    } else {
+      this.replaceArrow(actualHeight - height, actualHeight, 'top')
+    }
+
+    if (replace) $tip.offset(offset)
+  }
+
+  Tooltip.prototype.replaceArrow = function(delta, dimension, position) {
+    this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
+  }
+
+  Tooltip.prototype.setContent = function () {
+    var $tip  = this.tip()
+    var title = this.getTitle()
+
+    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
+    $tip.removeClass('fade in top bottom left right')
+  }
+
+  Tooltip.prototype.hide = function () {
+    var that = this
+    var $tip = this.tip()
+    var e    = $.Event('hide.bs.' + this.type)
+
+    function complete() {
+      if (that.hoverState != 'in') $tip.detach()
+    }
+
+    this.$element.trigger(e)
+
+    if (e.isDefaultPrevented()) return
+
+    $tip.removeClass('in')
+
+    $.support.transition && this.$tip.hasClass('fade') ?
+      $tip
+        .one($.support.transition.end, complete)
+        .emulateTransitionEnd(150) :
+      complete()
+
+    this.$element.trigger('hidden.bs.' + this.type)
+
+    return this
+  }
+
+  Tooltip.prototype.fixTitle = function () {
+    var $e = this.$element
+    if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
+      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
+    }
+  }
+
+  Tooltip.prototype.hasContent = function () {
+    return this.getTitle()
+  }
+
+  Tooltip.prototype.getPosition = function () {
+    var el = this.$element[0]
+    return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
+      width: el.offsetWidth
+    , height: el.offsetHeight
+    }, this.$element.offset())
+  }
+
+  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
+    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2  } :
+           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2  } :
+           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
+        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width   }
+  }
+
+  Tooltip.prototype.getTitle = function () {
+    var title
+    var $e = this.$element
+    var o  = this.options
+
+    title = $e.attr('data-original-title')
+      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
+
+    return title
+  }
+
+  Tooltip.prototype.tip = function () {
+    return this.$tip = this.$tip || $(this.options.template)
+  }
+
+  Tooltip.prototype.arrow = function () {
+    return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')
+  }
+
+  Tooltip.prototype.validate = function () {
+    if (!this.$element[0].parentNode) {
+      this.hide()
+      this.$element = null
+      this.options  = null
+    }
+  }
+
+  Tooltip.prototype.enable = function () {
+    this.enabled = true
+  }
+
+  Tooltip.prototype.disable = function () {
+    this.enabled = false
+  }
+
+  Tooltip.prototype.toggleEnabled = function () {
+    this.enabled = !this.enabled
+  }
+
+  Tooltip.prototype.toggle = function (e) {
+    var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this
+    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
+  }
+
+  Tooltip.prototype.destroy = function () {
+    this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
+  }
+
+
+  // TOOLTIP PLUGIN DEFINITION
+  // =========================
+
+  var old = $.fn.tooltip
+
+  $.fn.tooltip = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.tooltip')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.tooltip.Constructor = Tooltip
+
+
+  // TOOLTIP NO CONFLICT
+  // ===================
+
+  $.fn.tooltip.noConflict = function () {
+    $.fn.tooltip = old
+    return this
+  }
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: popover.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#popovers
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // POPOVER PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Popover = function (element, options) {
+    this.init('popover', element, options)
+  }
+
+  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
+
+  Popover.DEFAULTS = $.extend({} , $.fn.tooltip.Constructor.DEFAULTS, {
+    placement: 'right'
+  , trigger: 'click'
+  , content: ''
+  , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
+  })
+
+
+  // NOTE: POPOVER EXTENDS tooltip.js
+  // ================================
+
+  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
+
+  Popover.prototype.constructor = Popover
+
+  Popover.prototype.getDefaults = function () {
+    return Popover.DEFAULTS
+  }
+
+  Popover.prototype.setContent = function () {
+    var $tip    = this.tip()
+    var title   = this.getTitle()
+    var content = this.getContent()
+
+    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
+    $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
+
+    $tip.removeClass('fade top bottom left right in')
+
+    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
+    // this manually by checking the contents.
+    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
+  }
+
+  Popover.prototype.hasContent = function () {
+    return this.getTitle() || this.getContent()
+  }
+
+  Popover.prototype.getContent = function () {
+    var $e = this.$element
+    var o  = this.options
+
+    return $e.attr('data-content')
+      || (typeof o.content == 'function' ?
+            o.content.call($e[0]) :
+            o.content)
+  }
+
+  Popover.prototype.arrow = function () {
+    return this.$arrow = this.$arrow || this.tip().find('.arrow')
+  }
+
+  Popover.prototype.tip = function () {
+    if (!this.$tip) this.$tip = $(this.options.template)
+    return this.$tip
+  }
+
+
+  // POPOVER PLUGIN DEFINITION
+  // =========================
+
+  var old = $.fn.popover
+
+  $.fn.popover = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.popover')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.popover.Constructor = Popover
+
+
+  // POPOVER NO CONFLICT
+  // ===================
+
+  $.fn.popover.noConflict = function () {
+    $.fn.popover = old
+    return this
+  }
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: scrollspy.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#scrollspy
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // SCROLLSPY CLASS DEFINITION
+  // ==========================
+
+  function ScrollSpy(element, options) {
+    var href
+    var process  = $.proxy(this.process, this)
+
+    this.$element       = $(element).is('body') ? $(window) : $(element)
+    this.$body          = $('body')
+    this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)
+    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
+    this.selector       = (this.options.target
+      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+      || '') + ' .nav li > a'
+    this.offsets        = $([])
+    this.targets        = $([])
+    this.activeTarget   = null
+
+    this.refresh()
+    this.process()
+  }
+
+  ScrollSpy.DEFAULTS = {
+    offset: 10
+  }
+
+  ScrollSpy.prototype.refresh = function () {
+    var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
+
+    this.offsets = $([])
+    this.targets = $([])
+
+    var self     = this
+    var $targets = this.$body
+      .find(this.selector)
+      .map(function () {
+        var $el   = $(this)
+        var href  = $el.data('target') || $el.attr('href')
+        var $href = /^#\w/.test(href) && $(href)
+
+        return ($href
+          && $href.length
+          && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null
+      })
+      .sort(function (a, b) { return a[0] - b[0] })
+      .each(function () {
+        self.offsets.push(this[0])
+        self.targets.push(this[1])
+      })
+  }
+
+  ScrollSpy.prototype.process = function () {
+    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
+    var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
+    var maxScroll    = scrollHeight - this.$scrollElement.height()
+    var offsets      = this.offsets
+    var targets      = this.targets
+    var activeTarget = this.activeTarget
+    var i
+
+    if (scrollTop >= maxScroll) {
+      return activeTarget != (i = targets.last()[0]) && this.activate(i)
+    }
+
+    for (i = offsets.length; i--;) {
+      activeTarget != targets[i]
+        && scrollTop >= offsets[i]
+        && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
+        && this.activate( targets[i] )
+    }
+  }
+
+  ScrollSpy.prototype.activate = function (target) {
+    this.activeTarget = target
+
+    $(this.selector)
+      .parents('.active')
+      .removeClass('active')
+
+    var selector = this.selector
+      + '[data-target="' + target + '"],'
+      + this.selector + '[href="' + target + '"]'
+
+    var active = $(selector)
+      .parents('li')
+      .addClass('active')
+
+    if (active.parent('.dropdown-menu').length)  {
+      active = active
+        .closest('li.dropdown')
+        .addClass('active')
+    }
+
+    active.trigger('activate')
+  }
+
+
+  // SCROLLSPY PLUGIN DEFINITION
+  // ===========================
+
+  var old = $.fn.scrollspy
+
+  $.fn.scrollspy = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.scrollspy')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.scrollspy.Constructor = ScrollSpy
+
+
+  // SCROLLSPY NO CONFLICT
+  // =====================
+
+  $.fn.scrollspy.noConflict = function () {
+    $.fn.scrollspy = old
+    return this
+  }
+
+
+  // SCROLLSPY DATA-API
+  // ==================
+
+  $(window).on('load', function () {
+    $('[data-spy="scroll"]').each(function () {
+      var $spy = $(this)
+      $spy.scrollspy($spy.data())
+    })
+  })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: tab.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#tabs
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // TAB CLASS DEFINITION
+  // ====================
+
+  var Tab = function (element) {
+    this.element = $(element)
+  }
+
+  Tab.prototype.show = function () {
+    var $this    = this.element
+    var $ul      = $this.closest('ul:not(.dropdown-menu)')
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+    }
+
+    if ($this.parent('li').hasClass('active')) return
+
+    var previous = $ul.find('.active:last a')[0]
+    var e        = $.Event('show.bs.tab', {
+      relatedTarget: previous
+    })
+
+    $this.trigger(e)
+
+    if (e.isDefaultPrevented()) return
+
+    var $target = $(selector)
+
+    this.activate($this.parent('li'), $ul)
+    this.activate($target, $target.parent(), function () {
+      $this.trigger({
+        type: 'shown.bs.tab'
+      , relatedTarget: previous
+      })
+    })
+  }
+
+  Tab.prototype.activate = function (element, container, callback) {
+    var $active    = container.find('> .active')
+    var transition = callback
+      && $.support.transition
+      && $active.hasClass('fade')
+
+    function next() {
+      $active
+        .removeClass('active')
+        .find('> .dropdown-menu > .active')
+        .removeClass('active')
+
+      element.addClass('active')
+
+      if (transition) {
+        element[0].offsetWidth // reflow for transition
+        element.addClass('in')
+      } else {
+        element.removeClass('fade')
+      }
+
+      if (element.parent('.dropdown-menu')) {
+        element.closest('li.dropdown').addClass('active')
+      }
+
+      callback && callback()
+    }
+
+    transition ?
+      $active
+        .one($.support.transition.end, next)
+        .emulateTransitionEnd(150) :
+      next()
+
+    $active.removeClass('in')
+  }
+
+
+  // TAB PLUGIN DEFINITION
+  // =====================
+
+  var old = $.fn.tab
+
+  $.fn.tab = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.tab')
+
+      if (!data) $this.data('bs.tab', (data = new Tab(this)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.tab.Constructor = Tab
+
+
+  // TAB NO CONFLICT
+  // ===============
+
+  $.fn.tab.noConflict = function () {
+    $.fn.tab = old
+    return this
+  }
+
+
+  // TAB DATA-API
+  // ============
+
+  $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
+    e.preventDefault()
+    $(this).tab('show')
+  })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: affix.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#affix
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // AFFIX CLASS DEFINITION
+  // ======================
+
+  var Affix = function (element, options) {
+    this.options = $.extend({}, Affix.DEFAULTS, options)
+    this.$window = $(window)
+      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
+      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
+
+    this.$element = $(element)
+    this.affixed  =
+    this.unpin    = null
+
+    this.checkPosition()
+  }
+
+  Affix.RESET = 'affix affix-top affix-bottom'
+
+  Affix.DEFAULTS = {
+    offset: 0
+  }
+
+  Affix.prototype.checkPositionWithEventLoop = function () {
+    setTimeout($.proxy(this.checkPosition, this), 1)
+  }
+
+  Affix.prototype.checkPosition = function () {
+    if (!this.$element.is(':visible')) return
+
+    var scrollHeight = $(document).height()
+    var scrollTop    = this.$window.scrollTop()
+    var position     = this.$element.offset()
+    var offset       = this.options.offset
+    var offsetTop    = offset.top
+    var offsetBottom = offset.bottom
+
+    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
+    if (typeof offsetTop == 'function')    offsetTop    = offset.top()
+    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
+
+    var affix = this.unpin   != null && (scrollTop + this.unpin <= position.top) ? false :
+                offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
+                offsetTop    != null && (scrollTop <= offsetTop) ? 'top' : false
+
+    if (this.affixed === affix) return
+    if (this.unpin) this.$element.css('top', '')
+
+    this.affixed = affix
+    this.unpin   = affix == 'bottom' ? position.top - scrollTop : null
+
+    this.$element.removeClass(Affix.RESET).addClass('affix' + (affix ? '-' + affix : ''))
+
+    if (affix == 'bottom') {
+      this.$element.offset({ top: document.body.offsetHeight - offsetBottom - this.$element.height() })
+    }
+  }
+
+
+  // AFFIX PLUGIN DEFINITION
+  // =======================
+
+  var old = $.fn.affix
+
+  $.fn.affix = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.affix')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.affix.Constructor = Affix
+
+
+  // AFFIX NO CONFLICT
+  // =================
+
+  $.fn.affix.noConflict = function () {
+    $.fn.affix = old
+    return this
+  }
+
+
+  // AFFIX DATA-API
+  // ==============
+
+  $(window).on('load', function () {
+    $('[data-spy="affix"]').each(function () {
+      var $spy = $(this)
+      var data = $spy.data()
+
+      data.offset = data.offset || {}
+
+      if (data.offsetBottom) data.offset.bottom = data.offsetBottom
+      if (data.offsetTop)    data.offset.top    = data.offsetTop
+
+      $spy.affix(data)
+    })
+  })
+
+}(window.jQuery);

=== added file 'web_bootstrap3/static/src/js/ekko-lightbox.js'
--- web_bootstrap3/static/src/js/ekko-lightbox.js	1970-01-01 00:00:00 +0000
+++ web_bootstrap3/static/src/js/ekko-lightbox.js	2014-04-22 22:55:50 +0000
@@ -0,0 +1,194 @@
+// Generated by CoffeeScript 1.6.3
+/*
+Lightbox for Bootstrap 3 by @ashleydw
+https://github.com/ashleydw/lightbox
+
+License: https://github.com/ashleydw/lightbox/blob/master/LICENSE
+*/
+
+
+(function() {
+  var EkkoLightbox;
+
+  EkkoLightbox = function(element, options) {
+    var content, footer, header, youtube;
+    this.options = $.extend({
+      title: null,
+      footer: null,
+      remote: null,
+      keyboard: true,
+      onShow: function() {},
+      onShown: function() {},
+      onHide: function() {},
+      onHidden: function() {
+        if (this.gallery) {
+          $(document).off('keydown.ekkoLightbox');
+        }
+        return this.modal.remove();
+      },
+      id: false
+    }, options || {});
+    this.$element = $(element);
+    content = '';
+    this.modal_id = this.options.modal_id ? this.options.modal_id : 'ekkoLightbox-' + Math.floor((Math.random() * 1000) + 1);
+    header = this.options.title ? '<div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button><h4 class="modal-title">' + this.options.title + '</h4></div>' : '';
+    footer = this.options.footer ? '<div class="modal-footer">' + this.options.footer + '</div>' : '';
+    $(document.body).append('<div id="' + this.modal_id + '" class="modal fade" tabindex="-1"><div class="modal-dialog"><div class="modal-content">' + header + '<div class="modal-body"></div>' + footer + '</div></div></div>');
+    this.modal = $('#' + this.modal_id);
+    this.modal_body = this.modal.find('.modal-body').first();
+    this.padding = {
+      left: parseFloat(this.modal_body.css('padding-left'), 10),
+      right: parseFloat(this.modal_body.css('padding-right'), 10),
+      bottom: parseFloat(this.modal_body.css('padding-bottom'), 10),
+      top: parseFloat(this.modal_body.css('padding-top'), 10)
+    };
+    if (!this.options.remote) {
+      this.error('No remote target given');
+    } else {
+      if (this.isImage(this.options.remote)) {
+        this.preloadImage(this.options.remote, true);
+      } else if (youtube = this.getYoutubeId(this.options.remote)) {
+        this.showYoutubeVideo(youtube);
+      } else if (this.isSwf(this.options.remote)) {
+        console.log('todo');
+      }
+      this.gallery = this.$element.data('gallery');
+      if (this.gallery) {
+        this.gallery_items = this.$element.parents('*:not(.row)').first().find('*[data-toggle="lightbox"][data-gallery="' + this.gallery + '"]');
+        this.gallery_index = this.gallery_items.index(this.$element);
+        $(document).on('keydown.ekkoLightbox', this.navigate.bind(this));
+      }
+    }
+    this.modal.on('show.bs.modal', this.options.onShow.bind(this)).on('shown.bs.modal', this.options.onShown.bind(this)).on('hide.bs.modal', this.options.onHide.bind(this)).on('hidden.bs.modal', this.options.onHidden.bind(this)).modal('show', options);
+    return this.modal;
+  };
+
+  EkkoLightbox.prototype = {
+    isImage: function(str) {
+      return str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i);
+    },
+    isSwf: function(str) {
+      return str.match(/\.(swf)((\?|#).*)?$/i);
+    },
+    getYoutubeId: function(str) {
+      var match;
+      match = str.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/);
+      if (match && match[2].length === 11) {
+        return match[2];
+      } else {
+        return false;
+      }
+    },
+    navigate: function(event) {
+      var next, src, youtube;
+      event = event || window.event;
+      if (event.keyCode === 39 || event.keyCode === 37) {
+        if (event.keyCode === 39 && this.gallery_index + 1 < this.gallery_items.length) {
+          this.gallery_index++;
+          this.$element = $(this.gallery_items.get(this.gallery_index));
+          src = this.$element.attr('data-source') || this.$element.attr('href');
+          if (this.isImage(src)) {
+            this.preloadImage(src, true);
+          } else if (youtube = this.getYoutubeId(src)) {
+            this.showYoutubeVideo(youtube);
+          }
+          if (this.gallery_index + 1 < this.gallery_items.length) {
+            next = $(this.gallery_items.get(this.gallery_index + 1), false);
+            src = next.attr('data-source') || next.attr('href');
+            if (this.isImage(src)) {
+              return this.preloadImage(src, false);
+            }
+          }
+        } else if (event.keyCode === 37 && this.gallery_index > 0) {
+          this.gallery_index--;
+          this.$element = $(this.gallery_items.get(this.gallery_index));
+          src = this.$element.attr('data-source') || this.$element.attr('href');
+          if (this.isImage(src)) {
+            return this.preloadImage(src, true);
+          } else if (youtube = this.getYoutubeId(src)) {
+            return this.showYoutubeVideo(youtube);
+          }
+        }
+      }
+    },
+    showLoading: function() {
+      return this.modal_body.html('<div class="modal-loading">Loading..</div>');
+    },
+    showYoutubeVideo: function(id) {
+      this.resize(560, 315);
+      return this.modal_body.html('<iframe width="560" height="315" src="//www.youtube.com/embed/' + id + '?autoplay=1" frameborder="0" allowfullscreen></iframe>');
+    },
+    error: function(message) {
+      return this.modal_body.html(message);
+    },
+    preloadImage: function(src, onLoadShowImage) {
+      var img,
+        _this = this;
+      img = new Image();
+      if ((onLoadShowImage == null) || onLoadShowImage === true) {
+        img.onload = function() {
+          var i, width;
+          _this.checkImageDimensions(img);
+          _this.modal_body.html(img);
+          i = _this.modal_body.find('img').first();
+          width = i && i.width() > 0 ? i.width() : img.width;
+          return _this.resize(width, i.height());
+        };
+        img.onerror = function() {
+          return _this.error('Failed to load image: ' + src);
+        };
+      }
+      return img.src = src;
+    },
+    close: function() {
+      return this.modal.modal('hide');
+    },
+    center: function() {
+      return this.modal.find('.modal-dialog').css({
+        'left': function() {
+          return -($(this).width() / 2);
+        }
+      });
+    },
+    resize: function(width, height) {
+      width = width + this.padding.left + this.padding.right;
+      this.modal.find('.modal-content').css({
+        'width': width
+      });
+      this.modal.find('.modal-dialog').css({
+        'width': width + 20
+      });
+      return this.center();
+    },
+    checkImageDimensions: function(img) {
+      var w;
+      w = $(window);
+      if ((img.width + (this.padding.left + this.padding.right + 20)) > w.width()) {
+        return img.width = w.width() - (this.padding.left + this.padding.right + 20);
+      }
+    }
+  };
+
+  $.fn.ekkoLightbox = function(options) {
+    return this.each(function() {
+      var $this;
+      $this = $(this);
+      new EkkoLightbox(this, {
+        remote: $this.attr('data-source') || $this.attr('href')
+      });
+      return this;
+    });
+  };
+
+  $(document).delegate('*[data-toggle="lightbox"]', 'click', function(event) {
+    var $this;
+    event.preventDefault();
+    $this = $(this);
+    return $this.ekkoLightbox({
+      remote: $this.attr('data-source') || $this.attr('href')
+    }).one('hide', function() {
+      return $this.is(':visible') && $this.focus();
+    });
+  });
+
+}).call(this);

=== added directory 'web_bootstrap3/static/src/less'
=== added file 'web_bootstrap3/static/src/less/bs3-openerp.less'
--- web_bootstrap3/static/src/less/bs3-openerp.less	1970-01-01 00:00:00 +0000
+++ web_bootstrap3/static/src/less/bs3-openerp.less	2014-04-22 22:55:50 +0000
@@ -0,0 +1,3 @@
+.bs3 {
+   @import "bootstrap.less";
+}

=== added directory 'web_camera'
=== added file 'web_camera/__init__.py'
--- web_camera/__init__.py	1970-01-01 00:00:00 +0000
+++ web_camera/__init__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+#    Tech-Receptives Solutions Pvt. Ltd.
+#    Copyright (C) 2009-TODAY Tech-Receptives(<http://www.tech-receptives.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'web_camera/__openerp__.py'
--- web_camera/__openerp__.py	1970-01-01 00:00:00 +0000
+++ web_camera/__openerp__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+#    Tech-Receptives Solutions Pvt. Ltd.
+#    Copyright (C) 2009-TODAY Tech-Receptives(<http://www.tech-receptives.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+{
+    'name': "Webcam Widget Module",
+    'version': "1.0",
+    'description': """
+Widget for Capturing Image using a webcam.
+==========================================
+
+How can you use this widget?
+
+Define a field type "binary"
+Define in the view for the field widget="webcam"
+
+It is all!
+    """,
+    'depends': ['web'],
+    'website' : "http://www.techreceptives.com";,
+    'author': "Tech-Receptives Solutions Pvt. Ltd",
+    'js': ['static/src/js/view.js'],
+    'qweb': ['static/src/xml/webcam_template.xml'],
+    'css' : ['static/src/css/base.css'],
+    'installable': True,
+    'auto_install': False,
+    'application': True,
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added directory 'web_camera/static'
=== added directory 'web_camera/static/src'
=== added directory 'web_camera/static/src/css'
=== added file 'web_camera/static/src/css/base.css'
--- web_camera/static/src/css/base.css	1970-01-01 00:00:00 +0000
+++ web_camera/static/src/css/base.css	2014-04-22 22:55:50 +0000
@@ -0,0 +1,21 @@
+@charset "UTF-8";
+.openerp .oe_form .oe_form_field_image .oe_form_field_image_controls_upload {
+  position: absolute;
+  bottom: 10px;
+  padding: 4px 0;
+  width: 100%;
+  display: none;
+  text-align: center;
+  color: #eeeeee;
+  background: rgba(37, 37, 37, 0.9);
+  -moz-border-radius: 3px 3px 0 0;
+  -webkit-border-radius: 3px 3px 0 0;
+  border-radius: 3px 3px 0 0;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -ms-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.openerp .oe_form .oe_form_field_image:hover .oe_form_field_image_controls_upload {
+  display: block;
+}
\ No newline at end of file

=== added directory 'web_camera/static/src/img'
=== added file 'web_camera/static/src/img/icon.png'
Binary files web_camera/static/src/img/icon.png	1970-01-01 00:00:00 +0000 and web_camera/static/src/img/icon.png	2014-04-22 22:55:50 +0000 differ
=== added directory 'web_camera/static/src/js'
=== added file 'web_camera/static/src/js/view.js'
--- web_camera/static/src/js/view.js	1970-01-01 00:00:00 +0000
+++ web_camera/static/src/js/view.js	2014-04-22 22:55:50 +0000
@@ -0,0 +1,189 @@
+openerp.web_camera = function(instance){
+	var _t = instance.web._t,
+	_lt = instance.web._lt;
+	var Enable_change_button;
+	var width;
+	var height
+	var check;
+	var canvas;
+	var context;
+	var videoObj;
+	var video;
+	var errBack;
+	var QWeb = instance.web.qweb;
+    instance.web.form.widgets.add('webcam', 'instance.web.form.webcam_Mywidget');
+    instance.web.form.webcam_Mywidget = instance.web.form.FieldBinaryImage.extend(
+    			{
+    			template : 'webcam_temp',
+    			placeholder: "/web/static/src/img/placeholder.png",
+    			    render_value: function() {
+    			        var self = this;
+    			        var url;
+    			        			        
+    			        width=this.options.width;
+    			        height=this.options.height;
+    			        if (this.get('value') && !instance.web.form.is_bin_size(this.get('value'))) {
+    			        	check="yes";
+    			        	if(self.field_manager.get("actual_mode")=='edit'){
+    			        		var self=this;
+    			        		$("#save_as").children("img").remove();
+    			        		$('#change_snap').attr('disabled',false);
+    			        	}
+    			        	
+    			        	$('#snap').hide();
+    			        	$('canvas').hide();
+    			        	$('video').hide();
+    			        	$("#change_snap").children("img").hide();
+    			            	url = 'data:image/png;base64,' + this.get('value');
+    			            
+    			            
+    			        } 
+    			        else if (this.get('value')) {
+    			        	$("#save_as").children("img").remove();
+    			        	check="yes";
+    			        	
+    			            var id = JSON.stringify(this.view.datarecord.id || null);
+    			            var field = this.name;
+    			            if (this.options.preview_image)
+    			                field = this.options.preview_image;
+    			            
+    			            url = this.session.url('/web/binary/image', {
+    			                                        model: this.view.dataset.model,
+    			                                        id: id,
+    			                                        field: field,
+    			                                        t: (new Date().getTime()),
+    			            });
+    			            if(self.field_manager.get("actual_mode")=='edit')
+    			            	{
+    			            	var self=this;
+    			            	$('#change_snap').attr("disabled",false);
+
+    			            	}
+    			            $('#snap').hide();
+    			            $('#canvas').hide();
+    			            $('#video').hide();
+    			        }
+    			        else {
+    			        	var self=this
+    			        	first="yes";
+    			        	$("#save_as").children("img").remove();
+    			        	$("#save_button").hide();
+    			        	if(check=="yes")
+			    			        	{
+    			        				$("#video").show();
+    			        				$("#change_snap").attr("disabled",true);
+    			        				$("#snap").show();    			        				
+			    			        	}
+    			        	 self.on_start_camera();
+    			        	 url = this.placeholder;
+    			            }
+    			         
+    			        var $img = $(QWeb.render("FieldBinaryImage-camimg", { widget: this, url: url }));
+    			        this.$el.find('> img').remove();
+    			        this.$el.prepend($img);
+    			        $img.load(function() {
+    			            if (! self.options.size)
+    			                return;
+    			            $img.css("max-width", "" + self.options.size[0] + "px");
+    			            $img.css("max-height", "" + self.options.size[1] + "px");
+    			            $img.css("margin-left", "" + (self.options.size[0] - $img.width()) / 2 + "px");
+    			            $img.css("margin-top", "" + (self.options.size[1] - $img.height()) / 2 + "px");
+    			        });
+    			        if(Enable_change_button == "yes")
+    			        {
+    			        	$("#change_snap").attr("disabled",false);
+    			        	Enable_change_button="no"
+    			        }
+    			        
+    			        
+    			        $("#save_as").children("img").remove();
+    			        $("#change_snap").children("img").remove();
+    			        $("#snap").click(function(){
+    			        	
+    			        	$('#canvas').attr('width', video.videoWidth);
+    			        	$('#canvas').attr('height', video.videoHeight);
+    			        	$("#change_snap").attr("disabled",false);
+    			        	context.drawImage(video, 0, 0);
+			            	var image = new Image();
+			            	image_src = canvas.toDataURL("image/png");
+			            	$("#canvas").hide();
+			            	$("#video").hide();
+			            	$('#snap').hide();
+			            	file_base64=image_src.replace("data:image/png;base64,", "");
+			                self.on_file_uploaded_and_valid1(file_base64);
+			                $("#change_snap").children("img").hide();
+			                $("#save_button").show()
+			                $("#save_as").children("img").remove();
+			           });
+    			        $("#change_snap").click(function(){
+    			        	self.on_start_camera();
+    			        	$("#save_as").children("img").remove();
+    			        	$("#change_snap").attr("disabled",true);
+    			        	  $('#snap').show();
+    			        	  $('#video').show();
+    			          });
+    			    },
+    			    on_start_camera:function()
+    			    {
+    			    	canvas = document.getElementById("canvas");
+	            		context = canvas.getContext("2d");
+	            		video = document.getElementById("video");
+	            		videoObj = { "video": true };
+	            		errBack = function(error) {
+	            			console.log("Video capture error: ", error.code); 
+	            		};
+	            	
+	            		if(navigator.getUserMedia) { 
+		            		
+		            		navigator.getUserMedia(videoObj, function(stream) {
+		            			video.src = stream;
+		            			video.play();
+		            		}, errBack);
+		            	} else if(navigator.webkitGetUserMedia) { 
+		            		
+		            		navigator.webkitGetUserMedia(videoObj, function(stream){
+		            			video.src = window.webkitURL.createObjectURL(stream);
+		            			video.play();
+		            		}, errBack);
+		            		
+		            	}
+		            	
+		            	else if (navigator.mozGetUserMedia){     				        			
+		        			navigator.mozGetUserMedia(videoObj, function(stream){
+		        				video.mozSrcObject = stream;
+			        			video.play();
+		            		}, errBack);
+		        		}
+		        		
+		        		else if (navigator.msGetUserMedia){
+		        			navigator.msGetUserMedia({video:true, audio:false}, gotStream, noStream);
+		        			video.src = stream;
+		        			video.play();
+		            	}
+    			    },
+    			    
+    			    on_file_uploaded_and_valid: function(size, name, content_type, file_base64) {
+    			    	
+    			    	Enable_change_button="yes";
+    			        this.internal_set_value(file_base64);
+    			        this.binary_value = true;
+    			        this.render_value();
+    			        this.set_filename(name);
+    			    },
+    			    
+    			    on_file_uploaded_and_valid1: function(file_base64) {
+    			    	
+    			        this.internal_set_value(file_base64);
+    			        this.binary_value = true;
+    			        this.render_value();
+    			        this.set_filename(name);
+    			    },
+    			    on_clear: function() {
+    			    	
+    			        this._super.apply(this, arguments);
+    			        this.render_value();
+    			        this.set_filename('');
+    			    }
+    			
+    		});
+}

=== added directory 'web_camera/static/src/xml'
=== added file 'web_camera/static/src/xml/webcam_template.xml'
--- web_camera/static/src/xml/webcam_template.xml	1970-01-01 00:00:00 +0000
+++ web_camera/static/src/xml/webcam_template.xml	2014-04-22 22:55:50 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<templates id="template" xml:space="preserve">
+<t t-name="webcam_temp">
+
+<span class="oe_form_field oe_form_field_image" t-att-style="widget.node.attrs.style">
+        <div class="oe_form_field_image_controls oe_edit_only">
+            <t t-call="HiddenInputFile">
+                <t t-set="fileupload_id" t-value="widget.fileupload_id"/>
+               		Edit
+            </t>
+            <div class="oe_form_binary_progress" style="display: none">
+                <img t-att-src='_s + "/web/static/src/img/throbber.gif"' width="16" height="16"/>
+                <b>Uploading ...</b>
+            </div>
+        </div>
+        
+        <div class="oe_form_field_image_controls_upload oe_edit_only" id="camera_oe_edit_only_div">
+            <span id="snap">Click here</span>
+        </div>
+</span>
+<button id="change_snap" disabled="disabled"><b>Change Image</b></button>
+<div class="oe_form_binary_file_save_data" id="save_as">
+    <button class="oe_button oe_form_binary_file_save" id="save_button" type="button" title="Save As">
+        <img t-att-src='_s + "/web/static/src/img/icons/gtk-save.png"'/>
+        <span>Save</span>
+    </button>
+</div>
+<video id="video" style="margin-top:20px"></video>
+<canvas id="canvas"></canvas>
+
+</t>
+<t t-name="FieldBinaryImage-camimg">
+    <img t-att-src='url'/>
+</t>
+</templates>
\ No newline at end of file

=== added directory 'web_fancybox'
=== added file 'web_fancybox/__init__.py'
=== added file 'web_fancybox/__openerp__.py'
--- web_fancybox/__openerp__.py	1970-01-01 00:00:00 +0000
+++ web_fancybox/__openerp__.py	2014-04-22 22:55:50 +0000
@@ -0,0 +1,46 @@
+#-*- coding: utf-8 -*-
+###################################################################################################
+#
+#   OpenERP, Open Source Management Solution Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#   All Rights Reserved
+#   Financed and Planified by Vauxoo
+#   developed by: nhomar@xxxxxxxxxx
+#   This program is free software: you can redistribute it and/or modify it under the terms of the
+#   GNU General Public License as published by the Free Software Foundation, either version 3 of
+#   the License, or (at your option) any later version.
+#   This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+#   without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
+#   the GNU General Public License for more details.
+#   You should have received a copy of the GNU General Public License    along with this program.
+#   If not, see <http://www.gnu.org/licenses/>.
+###################################################################################################
+
+{
+    'name': "FancyBox for OpenERP",
+    'author': "Vauxoo",
+    'category': "Hidden",
+    'description': """
+Fancy box plugin for openerp
+============================
+
+This module only make available this lib_ for openerp.
+
+.. _lib http://fancybox.net/
+    """,
+    'version': "1.0",
+    'depends': [
+        'web'
+        ],
+    'js': [
+        'static/src/lib/fancyapps-fancyBox-18d1712/source/jquery.fancybox.js',
+        'static/src/lib/fancyapps-fancyBox-18d1712/source/helpers/*.js',
+    ],
+    'css': [
+        'static/src/lib/fancyapps-fancyBox-18d1712/source/jquery.fancybox.css',
+    ],
+    'qweb': [
+    ],
+    'installable': True,
+    'auto_install': False,
+    'web_preload': False, #set to True if you want this module be available always without ask.
+}

=== added directory 'web_fancybox/static'
=== added directory 'web_fancybox/static/src'
=== added directory 'web_fancybox/static/src/lib'
=== added directory 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712'
=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/CHANGELOG.md'
--- web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/CHANGELOG.md	1970-01-01 00:00:00 +0000
+++ web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/CHANGELOG.md	2014-04-22 22:55:50 +0000
@@ -0,0 +1,125 @@
+fancyBox - Changelog
+=========
+
+### Version 2.1.5 - June 14, 2013
+* Fixed #493 - Broken slideshow
+* Fixed #556 - Parent option
+* Retina graphics (#564) and retina display support (#420)
+* Improved "lock" feature
+
+### Version 2.1.4 - January 10, 2013
+* Update to be compatible with jQuery v1.9
+* Small changes that should fix usability issues for certain users
+
+### Version 2.1.3 - October 23, 2012
+
+* Fixed #426 - Broken IE7
+* Fixed #423 - Background flickering on iOS
+* Fixed #418 - Automatically Grow/Shrink and Center
+* Updated the script to work with jQuery 1.6
+* Media helper supports YouTube video series
+
+### Version 2.1.2 - October 15, 2012
+
+* Fixed #414 - Don't allow nextClick if there is only one item
+* Fixed #397 - Button helper 'Menu' not visible in IE7
+* Overlay can be opened/closed manually:
+*     $.fancybox.helpers.overlay.open();
+*     $.fancybox.helpers.overlay.open({closeClick : false});
+*     $.fancybox.helpers.overlay.close();
+* Optimized for Internet Explorer 10 (Windows 8)
+
+### Version 2.1.1 - October 01, 2012
+
+* Fixed #357 - Converting values like 'auto' in getScalar()
+* Fixed #358 - Updated overlay background image
+* New "fancybox-href" and "fancybox-title" HTML5 data-attributes (#317)
+* Improved helpers:
+*     - now they can have a property 'defaults' that contains default settings
+*     - updated vimeo and youtube parsers for media helper
+* Content locking now can be turned off
+
+### Version 2.1.0 - August 20, 2012
+
+* Fixed #103 - DOM element re-injection after closing
+* Fixed #188 - navigation keys inside editable content
+* New animation directions (see https://github.com/fancyapps/fancyBox/issues/233#issuecomment-5512453)
+* New option "iframe" - it is now possible to separate scrolling for iframe and wrapping element; choose to preload
+* New option "swf" - brings back functionality from fancyBox v1
+* Improved media helper - better support for vimeo and youtube; links are now configurable
+* Rewritten overlay helper:
+*     - new option "showEarly" - toggles if should be open before of after content is loaded
+*     - Facebook-style (https://github.com/fancyapps/fancyBox/issues/24) and therefore uses image for background
+* Option "padding" accepts array (e.g., padding: [15, 50, 10, 5])
+* One of dimensions (width or height) can now be set to "auto" (option "autoSize" needs to be "false")
+* Updated callbacks:
+*     - "beforeClose" is now called only once
+*     - "afterLoad" receives current and previous object as arguments
+* Method "$.fancybox.update();" recalculates content width/height
+* Updated to work with jQuery v1.8
+
+### Version 2.0.6 - April 16, 2012
+
+* Fixed #188 - keystrokes in contenteditable
+* Fixed #171 - non-images should not be preloaded
+* Fixed #158 - 'closeClick: true' breaks gallery navigation
+* New "media" helper - detects and displays various media types
+* New option "groupAttr" - name of group selector attribute, default is "data-fancybox-group"
+* New feature - selector expressions in URLs, see #170
+* Improved 'overlay' helper to use "position: fixed"
+* Improved autoSize, fixed wrong height in some cases
+* Improved centering and iframe scrolling for iOS
+* Updated markup, new element '.fancybox-skin' is now used for styling
+
+### Version 2.0.5 - February 21, 2012
+
+* Fixed #155 - easing for prev/next animations
+* Fixed #153 - overriding "keys" options
+* Fixed #147 - IE7 problem with #hash links
+* Fixed #130 - changing dynamically data-fancybox-group
+* Fixed #126 - obey minWidth/minHeight
+* Fixed #118 - placement of loading icon and navigation arrows
+* Fixed #101 - "index" option not working
+* Fixed #94 - "orig" option not working
+* Fixed #80 - does not work on IE6
+* Fixed #72 - can't set overlay opacity to 0
+* Fixed #63 - properly set gallery index
+* New option "autoCenter" - toggles centering on window resize or scroll, disabled for mobile devices by default
+* New option "autoResize" - toggles responsivity, disabled for mobile devices by default
+* New option "preload" - number of images to preload
+* New feature to target mobile/desktop browsers using CSS, see #108
+* Changed ajax option defaults to "{ dataType: 'html', headers: { 'X-fancyBox': true } }", see #150 and #128
+* Updated loading icon for IE7, IE8
+* Calculates height of the iframe if 'autoSize' is set to 'true' and the iframe is on the same domain as the main page
+
+### Version 2.0.4 - December 12, 2011
+
+* Fixed #47 - fix overriding properties
+* New option "position" to thumbnail and button helpers
+
+
+### Version 2.0.3 - November 29, 2011
+
+* Fixed #29 - broken elastic transitions
+
+
+### Version 2.0.2 - November 28, 2011
+
+* Fixed slideshow
+* Fixed scrollbars issue when displayed a very tall image
+* New option "nextClick" - navigate to next gallery item when user clicks the content
+* New option "modal" - to disable navigation and closing
+* Add 'metadata' plugin support
+* Add ability to create groups using 'data-fancybox-group' attribute
+* Updated manual usage to match earlier releases
+
+
+### Version 2.0.1 - November 23, 2011
+
+* Fixed keyboard events inside form elements
+* Fixed manual usage
+
+
+### Version 2.0.0 - November 21, 2011
+
+First release - completely rewritten, many new features and updated graphics.
\ No newline at end of file

=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/README.md'
--- web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/README.md	1970-01-01 00:00:00 +0000
+++ web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/README.md	2014-04-22 22:55:50 +0000
@@ -0,0 +1,217 @@
+fancyBox
+========
+
+fancyBox is a tool that offers a nice and elegant way to add zooming functionality for images, html content and multi-media on your webpages.
+
+More information and examples: http://www.fancyapps.com/fancybox/
+
+License: http://www.fancyapps.com/fancybox/#license
+
+Copyright (c) 2012 Janis Skarnelis - janis@xxxxxxxxxxxxx
+
+
+How to use
+----------
+
+To get started, download the plugin, unzip it and copy files to your website/application directory.
+Load files in the <head> section of your HTML document. Make sure you also add the jQuery library.
+
+    <head>
+        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js";></script>
+        <link rel="stylesheet" href="/fancybox/jquery.fancybox.css" type="text/css" media="screen" />
+        <script type="text/javascript" src="/fancybox/jquery.fancybox.pack.js"></script>
+    </head>
+
+Create your links with a `title` if you want a title to be shown, and add a class:
+
+    <a href="large_image.jpg" class="fancybox" title="Sample title"><img src="small_image.jpg" /></a>
+
+If you have a set of related items that you would like to group,
+additionally include a group name in the `rel` (or `data-fancybox-group`) attribute:
+
+    <a href="large_1.jpg" class="fancybox" rel="gallery" title="Sample title 1"><img src="small_1.jpg" /></a>
+    <a href="large_2.jpg" class="fancybox" rel="gallery" title="Sample title 1"><img src="small_2.jpg" /></a>
+
+Initialise the script like this:
+
+    <script>
+        $(document).ready(function() {
+            $('.fancybox').fancybox();
+        });
+    </script>
+
+May also be passed an optional options object which will extend the default values. Example:
+
+    <script>
+        $(document).ready(function() {
+            $('.fancybox').fancybox({
+                padding : 0,
+                openEffect  : 'elastic'
+            });
+        });
+    </script>
+
+Tip: Automatically group and apply fancyBox to all images:
+
+    $("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.png'],a[href$='.gif']").attr('rel', 'gallery').fancybox();
+
+Script uses the `href` attribute of the matched elements to obtain the location of the content and to figure out content type you want to display.
+You can specify type directly by adding classname (fancybox.image, fancybox.iframe, etc) or `data-fancybox-type` attribute:
+
+    //Ajax:
+    <a href="/example.html" class="fancybox fancybox.ajax">Example</a>
+    //or
+    <a href="/example.html" class="fancybox" data-fancybox-type="ajax">Example</a>
+
+    //Iframe:
+    <a href="example.html" class="fancybox fancybox.iframe">Example</a>
+
+    //Inline (will display an element with `id="example"`)
+    <a href="#example" class="fancybox">Example</a>
+
+    //SWF:
+    <a href="example.swf" class="fancybox">Example</a>
+
+    //Image:
+    <a href="example.jpg" class="fancybox">Example</a>
+
+Note, ajax requests are subject to the [same origin policy](http://en.wikipedia.org/wiki/Same_origin_policy).
+If fancyBox will not be able to get content type, it will try to guess based on 'href' and will quit silently if would not succeed.
+(this is different from previsous versions where 'ajax' was used as default type or an error message was displayed).
+
+Advanced
+--------
+
+### Helpers
+
+Helpers provide a simple mechanism to extend the capabilities of fancyBox. There are two built-in helpers - 'overlay' and 'title'.
+You can disable them, set custom options or enable other helpers. Examples:
+
+    //Disable title helper
+    $(".fancybox").fancybox({
+        helpers:  {
+            title:  null
+        }
+    });
+
+    //Disable overlay helper
+    $(".fancybox").fancybox({
+        helpers:  {
+            overlay : null
+        }
+    });
+
+    //Change title position and overlay color
+    $(".fancybox").fancybox({
+        helpers:  {
+            title : {
+                type : 'inside'
+            },
+            overlay : {
+                css : {
+                    'background' : 'rgba(255,255,255,0.5)'
+                }
+            }
+        }
+    });
+
+    //Enable thumbnail helper and set custom options
+    $(".fancybox").fancybox({
+        helpers:  {
+            thumbs : {
+                width: 50,
+                height: 50
+            }
+        }
+    });
+
+
+### API
+
+Also available are event driven callback methods.  The `this` keyword refers to the current or upcoming object (depends on callback method). Here is how you can change title:
+
+    $(".fancybox").fancybox({
+        beforeLoad : function() {
+            this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
+
+            /*
+                "this.element" refers to current element, so you can, for example, use the "alt" attribute of the image to store the title:
+                this.title = $(this.element).find('img').attr('alt');
+            */
+        }
+    });
+
+It`s possible to open fancyBox programmatically in various ways:
+
+    //HTML content:
+    $.fancybox( '<div><h1>Lorem Lipsum</h1><p>Lorem lipsum</p></div>', {
+        title : 'Custom Title'
+    });
+
+    //DOM element:
+    $.fancybox( $("#inline"), {
+        title : 'Custom Title'
+    });
+
+    //Custom object:
+    $.fancybox({
+        href: 'example.jpg',
+        title : 'Custom Title'
+    });
+
+    //Array of objects:
+    $.fancybox([
+        {
+            href: 'example1.jpg',
+            title : 'Custom Title 1'
+        },
+        {
+            href: 'example2.jpg',
+            title : 'Custom Title 2'
+        }
+    ], {
+        padding: 0
+    });
+
+There are several methods that allow you to interact with and manipulate fancyBox, example:
+
+    //Close fancybox:
+    $.fancybox.close();
+
+There is a simply way to access wrapping elements using JS:
+
+    $.fancybox.wrap
+    $.fancybox.skin
+    $.fancybox.outer
+    $.fancybox.inner
+
+You can override CSS to customize the look. For example, make navigation arrows always visible,
+change width and move them outside of area (use this snippet after including fancybox.css):
+
+    .fancybox-nav span {
+        visibility: visible;
+    }
+
+    .fancybox-nav {
+        width: 80px;
+    }
+
+    .fancybox-prev {
+        left: -80px;
+    }
+
+    .fancybox-next {
+        right: -80px;
+    }
+
+In that case, you might want to increase space around box:
+
+    $(".fancybox").fancybox({
+        margin : [20, 60, 20, 60]
+    });
+
+
+Bug tracker
+-----------
+
+Have a bug? Please create an issue on GitHub at https://github.com/fancyapps/fancyBox/issues
\ No newline at end of file

=== added directory 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo'
=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/1_b.jpg'
Binary files web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/1_b.jpg	1970-01-01 00:00:00 +0000 and web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/1_b.jpg	2014-04-22 22:55:50 +0000 differ
=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/1_s.jpg'
Binary files web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/1_s.jpg	1970-01-01 00:00:00 +0000 and web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/1_s.jpg	2014-04-22 22:55:50 +0000 differ
=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/2_b.jpg'
Binary files web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/2_b.jpg	1970-01-01 00:00:00 +0000 and web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/2_b.jpg	2014-04-22 22:55:50 +0000 differ
=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/2_s.jpg'
Binary files web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/2_s.jpg	1970-01-01 00:00:00 +0000 and web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/2_s.jpg	2014-04-22 22:55:50 +0000 differ
=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/3_b.jpg'
Binary files web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/3_b.jpg	1970-01-01 00:00:00 +0000 and web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/3_b.jpg	2014-04-22 22:55:50 +0000 differ
=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/3_s.jpg'
Binary files web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/3_s.jpg	1970-01-01 00:00:00 +0000 and web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/3_s.jpg	2014-04-22 22:55:50 +0000 differ
=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/4_b.jpg'
Binary files web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/4_b.jpg	1970-01-01 00:00:00 +0000 and web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/4_b.jpg	2014-04-22 22:55:50 +0000 differ
=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/4_s.jpg'
Binary files web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/4_s.jpg	1970-01-01 00:00:00 +0000 and web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/4_s.jpg	2014-04-22 22:55:50 +0000 differ
=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/5_b.jpg'
Binary files web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/5_b.jpg	1970-01-01 00:00:00 +0000 and web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/5_b.jpg	2014-04-22 22:55:50 +0000 differ
=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/5_s.jpg'
Binary files web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/5_s.jpg	1970-01-01 00:00:00 +0000 and web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/5_s.jpg	2014-04-22 22:55:50 +0000 differ
=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/ajax.txt'
--- web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/ajax.txt	1970-01-01 00:00:00 +0000
+++ web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/ajax.txt	2014-04-22 22:55:50 +0000
@@ -0,0 +1,15 @@
+<div style="max-width:700px;">
+	<h2>Lorem ipsum dolor sit amet3</h2>
+	<p>
+		<a href="javascript:jQuery.fancybox.close();">Close me</a>
+	</p>
+	<p>
+	Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas fermentum ante et sapien dignissim in viverra magna feugiat. Donec tempus ipsum nec neque dignissim quis eleifend eros gravida. Praesent nisi massa, sodales quis tincidunt ac, semper quis risus. In suscipit nisl sed leo aliquet consequat. Integer vitae augue in risus porttitor pellentesque eu eget odio. Fusce ut sagittis quam. Morbi aliquam interdum blandit. Integer pharetra tempor velit, aliquam dictum justo tempus sed. Morbi congue fringilla justo a feugiat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent quis metus et nisl consectetur pharetra. Nam bibendum turpis eu metus luctus eu volutpat sem molestie. Nam sollicitudin porttitor lorem, ac ultricies est venenatis eu. Ut dignissim elit et orci feugiat ac placerat purus euismod. Ut mi lorem, cursus et sagittis elementum, luctus ac massa.
+	</p>
+	<p>
+	Phasellus et ligula vel diam ullamcorper volutpat. Integer rhoncus rhoncus aliquam. Aliquam erat volutpat. Aenean luctus vestibulum placerat. Quisque quam neque, lacinia aliquet eleifend ac, aliquet blandit felis. Curabitur porta ultricies dui, sit amet mattis quam euismod a. Ut eleifend scelerisque neque, sit amet accumsan odio consequat ut. Proin facilisis auctor elit sed accumsan. Cras dapibus nisl in nisi rhoncus laoreet. Nullam pellentesque tortor libero, eget facilisis ipsum. Donec ultricies tellus tellus, in tincidunt purus. Nullam in est aliquam velit scelerisque blandit. In tincidunt, magna a dapibus imperdiet, quam urna elementum leo, vitae rhoncus nisl velit cursus velit. In dignissim sem ac mauris rhoncus ornare.
+	</p>
+	<p>
+	Duis imperdiet velit vel quam malesuada suscipit imperdiet tellus hendrerit. Mauris vestibulum odio mauris, ut placerat leo. Mauris quis neque at tellus feugiat congue id non enim. Nam vehicula posuere nulla eget vehicula. Donec pretium purus nec ligula porta eu laoreet sapien venenatis. Nulla facilisi. Phasellus eget mi enim. Phasellus molestie tincidunt ultrices. Aenean id sem a tellus lobortis tincidunt. Nam laoreet nulla vel velit tincidunt ac rutrum libero malesuada. Nulla consequat dolor quis nisl tempor fermentum. Integer sodales pretium varius. Aenean a leo vitae odio dictum dignissim malesuada nec dolor. Phasellus adipiscing viverra est, ac sagittis libero sagittis quis. Sed interdum dapibus nunc et fringilla. Nunc vel velit et urna laoreet bibendum. 
+	</p>
+</div>
\ No newline at end of file

=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/iframe.html'
--- web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/iframe.html	1970-01-01 00:00:00 +0000
+++ web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/iframe.html	2014-04-22 22:55:50 +0000
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>fancyBox - iframe demo</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+</head>
+<body>
+	<h1>fancyBox - iframe demo</h1>
+
+	<p>
+		<a href="javascript:parent.jQuery.fancybox.close();">Close iframe parent</a>
+
+		|
+
+		<a href="javascript:parent.jQuery.fancybox.open({href : '1_b.jpg', title : 'My title'});">Change content</a>
+	</p>
+
+	<p>
+		Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque justo ac eros consectetur bibendum. In hac habitasse platea dictumst. Nulla aliquam turpis et tellus elementum luctus. Duis sit amet rhoncus velit. Duis nisl ligula, mattis interdum blandit laoreet, mattis id ante. Cras pulvinar lacus vitae nisi egestas non euismod neque bibendum. Vestibulum faucibus libero id ante molestie ultricies. Vestibulum quis nibh felis. Vestibulum libero nisl, vehicula vel ullamcorper sit amet, tristique sit amet augue. Etiam urna neque, porttitor sed sodales lacinia, posuere a nisl. Vestibulum blandit neque in sapien volutpat ac condimentum sapien auctor. Ut imperdiet venenatis ultricies. Phasellus accumsan, sem eu placerat commodo, felis purus commodo ipsum, sit amet vulputate orci est viverra est.
+	</p>
+
+	<p>
+		Aenean velit est, condimentum ut iaculis ut, accumsan at mi. Maecenas velit mi, venenatis ut condimentum at, ultrices vel tortor. Curabitur pharetra ornare dapibus. Ut volutpat cursus semper. In hac habitasse platea dictumst. Donec eu iaculis ipsum. Morbi eu dolor velit, a semper nunc.
+	</p>
+</body>
+</html>
\ No newline at end of file

=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/index.html'
--- web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/index.html	1970-01-01 00:00:00 +0000
+++ web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/demo/index.html	2014-04-22 22:55:50 +0000
@@ -0,0 +1,312 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>fancyBox - Fancy jQuery Lightbox Alternative | Demonstration</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+
+	<!-- Add jQuery library -->
+	<script type="text/javascript" src="../lib/jquery-1.10.1.min.js"></script>
+
+	<!-- Add mousewheel plugin (this is optional) -->
+	<script type="text/javascript" src="../lib/jquery.mousewheel-3.0.6.pack.js"></script>
+
+	<!-- Add fancyBox main JS and CSS files -->
+	<script type="text/javascript" src="../source/jquery.fancybox.js?v=2.1.5"></script>
+	<link rel="stylesheet" type="text/css" href="../source/jquery.fancybox.css?v=2.1.5" media="screen" />
+
+	<!-- Add Button helper (this is optional) -->
+	<link rel="stylesheet" type="text/css" href="../source/helpers/jquery.fancybox-buttons.css?v=1.0.5" />
+	<script type="text/javascript" src="../source/helpers/jquery.fancybox-buttons.js?v=1.0.5"></script>
+
+	<!-- Add Thumbnail helper (this is optional) -->
+	<link rel="stylesheet" type="text/css" href="../source/helpers/jquery.fancybox-thumbs.css?v=1.0.7" />
+	<script type="text/javascript" src="../source/helpers/jquery.fancybox-thumbs.js?v=1.0.7"></script>
+
+	<!-- Add Media helper (this is optional) -->
+	<script type="text/javascript" src="../source/helpers/jquery.fancybox-media.js?v=1.0.6"></script>
+
+	<script type="text/javascript">
+		$(document).ready(function() {
+			/*
+			 *  Simple image gallery. Uses default settings
+			 */
+
+			$('.fancybox').fancybox();
+
+			/*
+			 *  Different effects
+			 */
+
+			// Change title type, overlay closing speed
+			$(".fancybox-effects-a").fancybox({
+				helpers: {
+					title : {
+						type : 'outside'
+					},
+					overlay : {
+						speedOut : 0
+					}
+				}
+			});
+
+			// Disable opening and closing animations, change title type
+			$(".fancybox-effects-b").fancybox({
+				openEffect  : 'none',
+				closeEffect	: 'none',
+
+				helpers : {
+					title : {
+						type : 'over'
+					}
+				}
+			});
+
+			// Set custom style, close if clicked, change title type and overlay color
+			$(".fancybox-effects-c").fancybox({
+				wrapCSS    : 'fancybox-custom',
+				closeClick : true,
+
+				openEffect : 'none',
+
+				helpers : {
+					title : {
+						type : 'inside'
+					},
+					overlay : {
+						css : {
+							'background' : 'rgba(238,238,238,0.85)'
+						}
+					}
+				}
+			});
+
+			// Remove padding, set opening and closing animations, close if clicked and disable overlay
+			$(".fancybox-effects-d").fancybox({
+				padding: 0,
+
+				openEffect : 'elastic',
+				openSpeed  : 150,
+
+				closeEffect : 'elastic',
+				closeSpeed  : 150,
+
+				closeClick : true,
+
+				helpers : {
+					overlay : null
+				}
+			});
+
+			/*
+			 *  Button helper. Disable animations, hide close button, change title type and content
+			 */
+
+			$('.fancybox-buttons').fancybox({
+				openEffect  : 'none',
+				closeEffect : 'none',
+
+				prevEffect : 'none',
+				nextEffect : 'none',
+
+				closeBtn  : false,
+
+				helpers : {
+					title : {
+						type : 'inside'
+					},
+					buttons	: {}
+				},
+
+				afterLoad : function() {
+					this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
+				}
+			});
+
+
+			/*
+			 *  Thumbnail helper. Disable animations, hide close button, arrows and slide to next gallery item if clicked
+			 */
+
+			$('.fancybox-thumbs').fancybox({
+				prevEffect : 'none',
+				nextEffect : 'none',
+
+				closeBtn  : false,
+				arrows    : false,
+				nextClick : true,
+
+				helpers : {
+					thumbs : {
+						width  : 50,
+						height : 50
+					}
+				}
+			});
+
+			/*
+			 *  Media helper. Group items, disable animations, hide arrows, enable media and button helpers.
+			*/
+			$('.fancybox-media')
+				.attr('rel', 'media-gallery')
+				.fancybox({
+					openEffect : 'none',
+					closeEffect : 'none',
+					prevEffect : 'none',
+					nextEffect : 'none',
+
+					arrows : false,
+					helpers : {
+						media : {},
+						buttons : {}
+					}
+				});
+
+			/*
+			 *  Open manually
+			 */
+
+			$("#fancybox-manual-a").click(function() {
+				$.fancybox.open('1_b.jpg');
+			});
+
+			$("#fancybox-manual-b").click(function() {
+				$.fancybox.open({
+					href : 'iframe.html',
+					type : 'iframe',
+					padding : 5
+				});
+			});
+
+			$("#fancybox-manual-c").click(function() {
+				$.fancybox.open([
+					{
+						href : '1_b.jpg',
+						title : 'My title'
+					}, {
+						href : '2_b.jpg',
+						title : '2nd title'
+					}, {
+						href : '3_b.jpg'
+					}
+				], {
+					helpers : {
+						thumbs : {
+							width: 75,
+							height: 50
+						}
+					}
+				});
+			});
+
+
+		});
+	</script>
+	<style type="text/css">
+		.fancybox-custom .fancybox-skin {
+			box-shadow: 0 0 50px #222;
+		}
+
+		body {
+			max-width: 700px;
+			margin: 0 auto;
+		}
+	</style>
+</head>
+<body>
+	<h1>fancyBox</h1>
+
+	<p>This is a demonstration. More information and examples: <a href="http://fancyapps.com/fancybox/";>www.fancyapps.com/fancybox/</a></p>
+
+	<h3>Simple image gallery</h3>
+	<p>
+		<a class="fancybox" href="1_b.jpg" data-fancybox-group="gallery" title="Lorem ipsum dolor sit amet"><img src="1_s.jpg" alt="" /></a>
+
+		<a class="fancybox" href="2_b.jpg" data-fancybox-group="gallery" title="Etiam quis mi eu elit temp"><img src="2_s.jpg" alt="" /></a>
+
+		<a class="fancybox" href="3_b.jpg" data-fancybox-group="gallery" title="Cras neque mi, semper leon"><img src="3_s.jpg" alt="" /></a>
+
+		<a class="fancybox" href="4_b.jpg" data-fancybox-group="gallery" title="Sed vel sapien vel sem uno"><img src="4_s.jpg" alt="" /></a>
+	</p>
+
+	<h3>Different effects</h3>
+	<p>
+		<a class="fancybox-effects-a" href="5_b.jpg" title="Lorem ipsum dolor sit amet, consectetur adipiscing elit"><img src="5_s.jpg" alt="" /></a>
+
+		<a class="fancybox-effects-b" href="5_b.jpg" title="Lorem ipsum dolor sit amet, consectetur adipiscing elit"><img src="5_s.jpg" alt="" /></a>
+
+		<a class="fancybox-effects-c" href="5_b.jpg" title="Lorem ipsum dolor sit amet, consectetur adipiscing elit"><img src="5_s.jpg" alt="" /></a>
+
+		<a class="fancybox-effects-d" href="5_b.jpg" title="Lorem ipsum dolor sit amet, consectetur adipiscing elit"><img src="5_s.jpg" alt="" /></a>
+	</p>
+
+	<h3>Various types</h3>
+	<p>
+		fancyBox will try to guess content type from href attribute but you can specify it directly by adding classname (fancybox.image, fancybox.iframe, etc).
+	</p>
+	<ul>
+		<li><a class="fancybox" href="#inline1" title="Lorem ipsum dolor sit amet">Inline</a></li>
+		<li><a class="fancybox fancybox.ajax" href="ajax.txt">Ajax</a></li>
+		<li><a class="fancybox fancybox.iframe" href="iframe.html">Iframe</a></li>
+		<li><a class="fancybox" href="http://www.adobe.com/jp/events/cs3_web_edition_tour/swfs/perform.swf";>Swf</a></li>
+	</ul>
+
+	<div id="inline1" style="width:400px;display: none;">
+		<h3>Etiam quis mi eu elit</h3>
+		<p>
+			Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis mi eu elit tempor facilisis id et neque. Nulla sit amet sem sapien. Vestibulum imperdiet porta ante ac ornare. Nulla et lorem eu nibh adipiscing ultricies nec at lacus. Cras laoreet ultricies sem, at blandit mi eleifend aliquam. Nunc enim ipsum, vehicula non pretium varius, cursus ac tortor. Vivamus fringilla congue laoreet. Quisque ultrices sodales orci, quis rhoncus justo auctor in. Phasellus dui eros, bibendum eu feugiat ornare, faucibus eu mi. Nunc aliquet tempus sem, id aliquam diam varius ac. Maecenas nisl nunc, molestie vitae eleifend vel, iaculis sed magna. Aenean tempus lacus vitae orci posuere porttitor eget non felis. Donec lectus elit, aliquam nec eleifend sit amet, vestibulum sed nunc.
+		</p>
+	</div>
+
+	<p>
+		Ajax example will not run from your local computer and requires a server to run.
+	</p>
+
+	<h3>Button helper</h3>
+	<p>
+		<a class="fancybox-buttons" data-fancybox-group="button" href="1_b.jpg"><img src="1_s.jpg" alt="" /></a>
+
+		<a class="fancybox-buttons" data-fancybox-group="button" href="2_b.jpg"><img src="2_s.jpg" alt="" /></a>
+
+		<a class="fancybox-buttons" data-fancybox-group="button" href="3_b.jpg"><img src="3_s.jpg" alt="" /></a>
+
+		<a class="fancybox-buttons" data-fancybox-group="button" href="4_b.jpg"><img src="4_s.jpg" alt="" /></a>
+	</p>
+
+	<h3>Thumbnail helper</h3>
+	<p>
+		<a class="fancybox-thumbs" data-fancybox-group="thumb" href="4_b.jpg"><img src="4_s.jpg" alt="" /></a>
+
+		<a class="fancybox-thumbs" data-fancybox-group="thumb" href="3_b.jpg"><img src="3_s.jpg" alt="" /></a>
+
+		<a class="fancybox-thumbs" data-fancybox-group="thumb" href="2_b.jpg"><img src="2_s.jpg" alt="" /></a>
+
+		<a class="fancybox-thumbs" data-fancybox-group="thumb" href="1_b.jpg"><img src="1_s.jpg" alt="" /></a>
+	</p>
+
+	<h3>Media helper</h3>
+	<p>
+		Will not run from your local computer, requires a server to run.
+	</p>
+
+	<ul>
+		<li><a class="fancybox-media" href="http://www.youtube.com/watch?v=opj24KnzrWo";>Youtube</a></li>
+		<li><a class="fancybox-media" href="http://vimeo.com/47480346";>Vimeo</a></li>
+		<li><a class="fancybox-media" href="http://www.metacafe.com/watch/7635964/";>Metacafe</a></li>
+		<li><a class="fancybox-media" href="http://www.dailymotion.com/video/xoeylt_electric-guest-this-head-i-hold_music";>Dailymotion</a></li>
+		<li><a class="fancybox-media" href="http://twitvid.com/QY7MD";>Twitvid</a></li>
+		<li><a class="fancybox-media" href="http://twitpic.com/7p93st";>Twitpic</a></li>
+		<li><a class="fancybox-media" href="http://instagr.am/p/IejkuUGxQn";>Instagram</a></li>
+	</ul>
+
+	<h3>Open manually</h3>
+	<ul>
+		<li><a id="fancybox-manual-a" href="javascript:;">Open single item</a></li>
+		<li><a id="fancybox-manual-b" href="javascript:;">Open single item, custom options</a></li>
+		<li><a id="fancybox-manual-c" href="javascript:;">Open gallery</a></li>
+	</ul>
+
+	<p>
+		Photo Credit: Instagrammer @whitjohns
+	</p>
+</body>
+</html>

=== added directory 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/lib'
=== added file 'web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/lib/jquery-1.10.1.min.js'
--- web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/lib/jquery-1.10.1.min.js	1970-01-01 00:00:00 +0000
+++ web_fancybox/static/src/lib/fancyapps-fancyBox-18d1712/lib/jquery-1.10.1.min.js	2014-04-22 22:55:50 +0000
@@ -0,0 +1,6 @@
+/*! jQuery v1.10.1 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-1.10.1.min.map
+*/
+(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.1",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=lt(),k=lt(),E=lt(),S=!1,A=function(){return 0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=bt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+xt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return At(e.replace(z,"$1"),t,n,i)}function st(e){return K.test(e+"")}function lt(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function ut(e){return e[b]=!0,e}function ct(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function pt(e,t,n){e=e.split("|");var r,i=e.length,a=n?null:t;while(i--)(r=o.attrHandle[e[i]])&&r!==t||(o.attrHandle[e[i]]=a)}function ft(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:e[t]===!0?t.toLowerCase():null}function dt(e,t){return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}function ht(e){return"input"===e.nodeName.toLowerCase()?e.defaultValue:t}function gt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function mt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function yt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function vt(e){return ut(function(t){return t=+t,ut(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.parentWindow;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.frameElement&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ct(function(e){return e.innerHTML="<a href='#'></a>",pt("type|href|height|width",dt,"#"===e.firstChild.getAttribute("href")),pt(B,ft,null==e.getAttribute("disabled")),e.className="i",!e.getAttribute("className")}),r.input=ct(function(e){return e.innerHTML="<input>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}),pt("value",ht,r.attributes&&r.input),r.getElementsByTagName=ct(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ct(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ct(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=st(n.querySelectorAll))&&(ct(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ct(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=st(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ct(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=st(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},r.sortDetached=ct(function(e){return 1&e.compareDocumentPosition(n.createElement("div"))}),A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return gt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?gt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:ut,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=bt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?ut(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ut(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?ut(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ut(function(e){return function(t){return at(e,t).length>0}}),contains:ut(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:ut(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:vt(function(){return[0]}),last:vt(function(e,t){return[t-1]}),eq:vt(function(e,t,n){return[0>n?n+t:n]}),even:vt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:vt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:vt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:vt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=mt(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=yt(n);function bt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function xt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function wt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function Tt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Ct(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function Nt(e,t,n,r,i,o){return r&&!r[b]&&(r=Nt(r)),i&&!i[b]&&(i=Nt(i,o)),ut(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||St(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:Ct(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=Ct(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=Ct(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function kt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=wt(function(e){return e===t},s,!0),p=wt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[wt(Tt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return Nt(l>1&&Tt(f),l>1&&xt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&kt(e.slice(l,r)),i>r&&kt(e=e.slice(r)),i>r&&xt(e))}f.push(n)}return Tt(f)}function Et(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=Ct(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?ut(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=bt(e)),n=t.length;while(n--)o=kt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Et(i,r))}return o};function St(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function At(e,t,n,i){var a,s,u,c,p,f=bt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&xt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}o.pseudos.nth=o.pseudos.eq;function jt(){}jt.prototype=o.filters=o.pseudos,o.setFilters=new jt,r.sortStable=b.split("").sort(A).join("")===b,p(),[0,0].sort(A),r.detectDuplicates=S,x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!l||i&&!u||(n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)
+}),n=s=l=u=r=o=null,t}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=x(this),l=t,u=e.match(T)||[];while(o=u[a++])l=r?l:!s.hasClass(o),s[l?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},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(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.

Follow ups