diff --git a/bower.json b/bower.json
index 6332d8ddb9bbf42b55ed79c073bbf8a10a8f2ef5..74a1749f1312bac2f6a2e8a3df910b25042a5212 100644
--- a/bower.json
+++ b/bower.json
@@ -13,26 +13,26 @@
     "tests"
   ],
   "dependencies": {
-    "autosize": "^4.0.0",
-    "backbone": "~1.2.3",
-    "base64": "~0.3.0",
-    "blueimp-md5": "^2.7.0",
-    "bootstrap": "~3.3.6",
+    "autosize": "4.0.2",
+    "backbone": "1.2.3",
+    "base64": "0.3.0",
+    "blueimp-md5": "2.7.0",
+    "bootstrap": "3.3.7",
     "clipboard": "1.7.1",
     "davclient.js": "https://github.com/evert/davclient.js.git#0.1.2",
-    "es6-promise": "https://github.com/jakearchibald/es6-promise.git#~2.3.0",
-    "handlebars": "^4.0.5",
-    "jcrop": "~0.9.12",
-    "jquery": "~2.2.0",
-    "jquery-migrate": "~1.4.0",
+    "es6-promise": "https://github.com/jakearchibald/es6-promise.git#2.3.0",
+    "handlebars": "4.0.5",
+    "jcrop": "0.9.12",
+    "jquery": "2.1.4",
+    "jquery-migrate": "1.4.0",
     "jquery-ui": "1.10.0",
-    "jsTimezoneDetect": "~1.0.5",
-    "marked": "^0.3.6",
-    "moment": "^2.15.0",
-    "select2": "~3.4.8",
-    "snapjs": "~2.0.0-rc1",
-    "strengthify": "^0.5.5",
-    "underscore": "~1.8.0",
-    "zxcvbn": "*"
+    "jsTimezoneDetect": "1.0.6",
+    "marked": "0.3.6",
+    "moment": "2.18.1",
+    "select2": "3.4.8",
+    "snapjs": "2.0.0-rc1",
+    "strengthify": "0.5.5",
+    "underscore": "1.8.3",
+    "zxcvbn": "4.4.2"
   }
 }
diff --git a/core/vendor/autosize/.bower.json b/core/vendor/autosize/.bower.json
index d1bcb9577b1ac85875b1ff5c70843b5cb0db078e..3cbd4e408df79f3806d10d498f22bad6f4c49b31 100644
--- a/core/vendor/autosize/.bower.json
+++ b/core/vendor/autosize/.bower.json
@@ -9,6 +9,6 @@
     "commit": "e394a257cc1e059eadc4198f56c301702289dd88"
   },
   "_source": "https://github.com/jackmoore/autosize.git",
-  "_target": "^4.0.0",
+  "_target": "4.0.2",
   "_originalSource": "autosize"
 }
\ No newline at end of file
diff --git a/core/vendor/backbone/.bower.json b/core/vendor/backbone/.bower.json
index 38a9c03af75c67d7e2a8d9fbf5ed659a3ed50fa1..14b5ba14e4737cafaf7c6d54328761c0464bb5fd 100644
--- a/core/vendor/backbone/.bower.json
+++ b/core/vendor/backbone/.bower.json
@@ -26,7 +26,7 @@
     "tag": "1.2.3",
     "commit": "05fde9e201f7e2137796663081105cd6dad12a98"
   },
-  "_source": "git://github.com/jashkenas/backbone.git",
-  "_target": "~1.2.3",
+  "_source": "https://github.com/jashkenas/backbone.git",
+  "_target": "1.2.3",
   "_originalSource": "backbone"
 }
\ No newline at end of file
diff --git a/core/vendor/base64/.bower.json b/core/vendor/base64/.bower.json
index 43a7299706bc916770366e4595d80dd8559f477d..a1c0e495a5bf3bab43047cfd481452f89a4fbd60 100644
--- a/core/vendor/base64/.bower.json
+++ b/core/vendor/base64/.bower.json
@@ -22,8 +22,7 @@
     "tag": "0.3.0",
     "commit": "772df096a5ffe983f40202684ad45eed1e0e2d59"
   },
-  "_source": "git://github.com/davidchambers/Base64.js.git",
-  "_target": "~0.3.0",
-  "_originalSource": "base64",
-  "_direct": true
+  "_source": "https://github.com/davidchambers/Base64.js.git",
+  "_target": "0.3.0",
+  "_originalSource": "base64"
 }
\ No newline at end of file
diff --git a/core/vendor/blueimp-md5/.bower.json b/core/vendor/blueimp-md5/.bower.json
index 0c43e8cd6d572a5a161864b5628a5b07bce2adb6..dc2ef5a3af813e92a89626dda1a57fe96d419a3a 100644
--- a/core/vendor/blueimp-md5/.bower.json
+++ b/core/vendor/blueimp-md5/.bower.json
@@ -9,6 +9,6 @@
     "commit": "31cbd8e463b43882c7b0cf461508ddf1c8f14154"
   },
   "_source": "https://github.com/blueimp/JavaScript-MD5.git",
-  "_target": "^2.2.7",
+  "_target": "2.7.0",
   "_originalSource": "blueimp-md5"
 }
\ No newline at end of file
diff --git a/core/vendor/bootstrap/.bower.json b/core/vendor/bootstrap/.bower.json
index 712f89a908a345f37291e58a1eab224c528665b6..af176f90c250553188e784ee4c1610d5e14924ed 100644
--- a/core/vendor/bootstrap/.bower.json
+++ b/core/vendor/bootstrap/.bower.json
@@ -39,6 +39,6 @@
     "commit": "0b9c4a4007c44201dce9a6cc1a38407005c26c86"
   },
   "_source": "https://github.com/twbs/bootstrap.git",
-  "_target": "~3.3.6",
+  "_target": "3.3.7",
   "_originalSource": "bootstrap"
 }
\ No newline at end of file
diff --git a/core/vendor/bootstrap/js/tooltip.js b/core/vendor/bootstrap/js/tooltip.js
index 7094b34dce7ded575166d9c70bccbfe9d274f9fe..e35d9c7cccd904d0c95bde55b15f27e3c341cf53 100644
--- a/core/vendor/bootstrap/js/tooltip.js
+++ b/core/vendor/bootstrap/js/tooltip.js
@@ -1,9 +1,9 @@
 /* ========================================================================
- * Bootstrap: tooltip.js v3.3.6
+ * Bootstrap: tooltip.js v3.3.7
  * http://getbootstrap.com/javascript/#tooltip
  * Inspired by the original jQuery.tipsy by Jason Frame
  * ========================================================================
- * Copyright 2011-2015 Twitter, Inc.
+ * Copyright 2011-2016 Twitter, Inc.
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
  * ======================================================================== */
 
@@ -26,7 +26,7 @@
     this.init('tooltip', element, options)
   }
 
-  Tooltip.VERSION  = '3.3.6'
+  Tooltip.VERSION  = '3.3.7'
 
   Tooltip.TRANSITION_DURATION = 150
 
@@ -317,9 +317,11 @@
 
     function complete() {
       if (that.hoverState != 'in') $tip.detach()
-      that.$element
-        .removeAttr('aria-describedby')
-        .trigger('hidden.bs.' + that.type)
+      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
+        that.$element
+          .removeAttr('aria-describedby')
+          .trigger('hidden.bs.' + that.type)
+      }
       callback && callback()
     }
 
@@ -362,7 +364,10 @@
       // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
       elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
     }
-    var elOffset  = isBody ? { top: 0, left: 0 } : $element.offset()
+    var isSvg = window.SVGElement && el instanceof window.SVGElement
+    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
+    // See https://github.com/twbs/bootstrap/issues/20280
+    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
     var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
     var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
 
@@ -478,6 +483,7 @@
       that.$tip = null
       that.$arrow = null
       that.$viewport = null
+      that.$element = null
     })
   }
 
diff --git a/core/vendor/es6-promise/.bower.json b/core/vendor/es6-promise/.bower.json
index 04a9e9cf935247e98095decc8d64689f486ccd67..505b3c61ff4cce4e45e2b3158c6853b11a007c50 100644
--- a/core/vendor/es6-promise/.bower.json
+++ b/core/vendor/es6-promise/.bower.json
@@ -34,6 +34,6 @@
     "commit": "fcbab11a1a981eb2290bfff89017cb764335a2a5"
   },
   "_source": "https://github.com/jakearchibald/es6-promise.git",
-  "_target": "~2.3.0",
+  "_target": "2.3.0",
   "_originalSource": "https://github.com/jakearchibald/es6-promise.git"
 }
\ No newline at end of file
diff --git a/core/vendor/handlebars/.bower.json b/core/vendor/handlebars/.bower.json
index b526f462e1913ace6f60359e8fd49b94f5f06c49..1fd3d3c61825dbe5d5637de2e0e913b6cc68da9a 100644
--- a/core/vendor/handlebars/.bower.json
+++ b/core/vendor/handlebars/.bower.json
@@ -12,6 +12,6 @@
     "commit": "9b7adf2df23cf0ecc7bd60b43d43989e63222f5a"
   },
   "_source": "https://github.com/components/handlebars.js.git",
-  "_target": "^4.0.5",
+  "_target": "4.0.5",
   "_originalSource": "handlebars"
 }
\ No newline at end of file
diff --git a/core/vendor/jcrop/.bower.json b/core/vendor/jcrop/.bower.json
index 4fba44732cfdc2f2432cd3d5a836f262be8989d4..091166d3b2da16a6e5cf36dece1685957edd7045 100644
--- a/core/vendor/jcrop/.bower.json
+++ b/core/vendor/jcrop/.bower.json
@@ -8,7 +8,7 @@
     "tag": "v0.9.12",
     "commit": "1902fbc6afa14481dc019a17e0dcb7d62b808a98"
   },
-  "_source": "git://github.com/tapmodo/Jcrop.git",
-  "_target": "~0.9.12",
+  "_source": "https://github.com/tapmodo/Jcrop.git",
+  "_target": "0.9.12",
   "_originalSource": "jcrop"
 }
\ No newline at end of file
diff --git a/core/vendor/jquery-migrate/.bower.json b/core/vendor/jquery-migrate/.bower.json
index 19fcdbf9b3306e60593c5ca0e1815b76ca9a980f..a06d6222b85b5a0a0469dc5e7678027edd7bc67b 100644
--- a/core/vendor/jquery-migrate/.bower.json
+++ b/core/vendor/jquery-migrate/.bower.json
@@ -10,6 +10,6 @@
     "commit": "d70e5a532864fdc2263f0d15030ef84671fc5807"
   },
   "_source": "https://github.com/appleboy/jquery-migrate.git",
-  "_target": "~1.4.0",
+  "_target": "1.4.0",
   "_originalSource": "jquery-migrate"
 }
\ No newline at end of file
diff --git a/core/vendor/jquery/.bower.json b/core/vendor/jquery/.bower.json
index 015b3496cdb5a98ef1b53c584d5242e2db354452..b4040a31ba1457cbdb4ca5bdceecce79dc60f19f 100644
--- a/core/vendor/jquery/.bower.json
+++ b/core/vendor/jquery/.bower.json
@@ -33,6 +33,6 @@
     "commit": "7751e69b615c6eca6f783a81e292a55725af6b85"
   },
   "_source": "https://github.com/jquery/jquery-dist.git",
-  "_target": "~2.1.0",
+  "_target": "2.1.4",
   "_originalSource": "jquery"
 }
\ No newline at end of file
diff --git a/core/vendor/jsTimezoneDetect/.bower.json b/core/vendor/jsTimezoneDetect/.bower.json
index 2a3668ff30937703e98d17ee795521c04d29d6ff..9b76ebe25a7a65867d5e2d7f096cdfbabd1e6ed9 100644
--- a/core/vendor/jsTimezoneDetect/.bower.json
+++ b/core/vendor/jsTimezoneDetect/.bower.json
@@ -17,7 +17,7 @@
     "tag": "v1.0.6",
     "commit": "bd595ed253292934991a414979007f3d51a1547d"
   },
-  "_source": "git://github.com/HenningM/jstimezonedetect.git",
-  "_target": "~1.0.5",
+  "_source": "https://github.com/HenningM/jstimezonedetect.git",
+  "_target": "1.0.6",
   "_originalSource": "jsTimezoneDetect"
 }
\ No newline at end of file
diff --git a/core/vendor/moment/.bower.json b/core/vendor/moment/.bower.json
index 09f10909ae02158e6432e7deeacaaaa892cdcef1..ca7114fd3763b9bce8edcb25d7cb1853c383baa1 100644
--- a/core/vendor/moment/.bower.json
+++ b/core/vendor/moment/.bower.json
@@ -31,6 +31,6 @@
     "commit": "0af7d4f5f25f911c2eaab2a7ccb534c17e65c536"
   },
   "_source": "https://github.com/moment/moment.git",
-  "_target": "^2.15.0",
+  "_target": "2.18.1",
   "_originalSource": "moment"
 }
\ No newline at end of file
diff --git a/core/vendor/select2/.bower.json b/core/vendor/select2/.bower.json
index 0c915721f10b020837546caa1efdaf9189fcda36..0f0da210e20d45ae0f837f203e028c671c02c7eb 100644
--- a/core/vendor/select2/.bower.json
+++ b/core/vendor/select2/.bower.json
@@ -18,7 +18,7 @@
     "tag": "3.4.8",
     "commit": "ee0f36a47e2133b23330fbec740b2d3a17a0d9c2"
   },
-  "_source": "git://github.com/ivaynberg/select2.git",
-  "_target": "~3.4.8",
+  "_source": "https://github.com/ivaynberg/select2.git",
+  "_target": "3.4.8",
   "_originalSource": "select2"
 }
\ No newline at end of file
diff --git a/core/vendor/snapjs/.bower.json b/core/vendor/snapjs/.bower.json
index b10afbb2d87d6df741031c9b0a4eac3d68ed22a2..f8ea6e338d3a6ad024ab30252fb99c66acdc93c0 100644
--- a/core/vendor/snapjs/.bower.json
+++ b/core/vendor/snapjs/.bower.json
@@ -25,7 +25,7 @@
     "tag": "v2.0.0-rc1",
     "commit": "15c77da330d9e8ca580a922bc748d88553838a73"
   },
-  "_source": "git://github.com/jakiestfu/Snap.js.git",
-  "_target": "~2.0.0-rc1",
+  "_source": "https://github.com/jakiestfu/Snap.js.git",
+  "_target": "2.0.0-rc1",
   "_originalSource": "snapjs"
 }
\ No newline at end of file
diff --git a/core/vendor/snapjs/dist/latest/snap.js b/core/vendor/snapjs/dist/latest/snap.js
index 7ae088d0aea8614f2979c4e0aa8085fe6550500f..a0274138de098d5daad0c9070b502fe82e0006da 100644
--- a/core/vendor/snapjs/dist/latest/snap.js
+++ b/core/vendor/snapjs/dist/latest/snap.js
@@ -744,13 +744,9 @@
 
         /**
          * Disables Snap.js events
-         * @param {Boolean} endCurrentDrag Whether to end the current drag (if any) or not.
          */
-        disable: function(endCurrentDrag) {
+        disable: function() {
             utils.dispatchEvent('disable');
-            if (endCurrentDrag) {
-                this.action.drag.endDrag();
-            }
             this.action.drag.stopListening();
         },
 
diff --git a/core/vendor/strengthify/.bower.json b/core/vendor/strengthify/.bower.json
index ead8cd7e5e8c2b93010bb57f448a535b6ccaddff..ed1f313963393ef958c2f7c354282ad03fbc09df 100644
--- a/core/vendor/strengthify/.bower.json
+++ b/core/vendor/strengthify/.bower.json
@@ -13,9 +13,9 @@
   "_resolution": {
     "type": "version",
     "tag": "0.5.5",
-    "commit": "5fa214146e2c7760046fb6c2e01aa9b02759e7d6"
+    "commit": "54553d678d7894beff368ce4b4393bcc1f387037"
   },
   "_source": "https://github.com/MorrisJobke/strengthify.git",
-  "_target": "^0.5.5",
+  "_target": "0.5.5",
   "_originalSource": "strengthify"
 }
\ No newline at end of file
diff --git a/core/vendor/underscore/.bower.json b/core/vendor/underscore/.bower.json
index aafb969ae9014f0bc3c05693a7769ee4e0dae8a8..def96479c42ee592a168c1128374778158bcbd49 100644
--- a/core/vendor/underscore/.bower.json
+++ b/core/vendor/underscore/.bower.json
@@ -29,7 +29,7 @@
     "tag": "1.8.3",
     "commit": "e4743ab712b8ab42ad4ccb48b155034d02394e4d"
   },
-  "_source": "git://github.com/jashkenas/underscore.git",
-  "_target": "~1.8.0",
+  "_source": "https://github.com/jashkenas/underscore.git",
+  "_target": "1.8.3",
   "_originalSource": "underscore"
 }
\ No newline at end of file
diff --git a/core/vendor/zxcvbn/.bower.json b/core/vendor/zxcvbn/.bower.json
index 5f68368786f23a2b0939465ecbe1a09be7d0e125..e15402e3cdf471c97cbbce65ddd17ef5c50da52f 100644
--- a/core/vendor/zxcvbn/.bower.json
+++ b/core/vendor/zxcvbn/.bower.json
@@ -39,6 +39,6 @@
     "commit": "0b7f691c370d922399fe60927433338c062dde23"
   },
   "_source": "https://github.com/dropbox/zxcvbn.git",
-  "_target": "*",
+  "_target": "4.4.2",
   "_originalSource": "zxcvbn"
 }
\ No newline at end of file