This closes #38

Set default JVM memory settings for the build
diff --git a/LICENSE b/LICENSE
index ee8677c..51ba4e6 100644
--- a/LICENSE
+++ b/LICENSE
@@ -263,6 +263,14 @@
   Used under the following license: The MIT License (http://opensource.org/licenses/MIT)
   Copyright (c) "Cowboy" Ben Alman (2010)"
 
+This project includes the software: jQuery hashchange event
+  Available at: http://benalman.com/projects/jquery-hashchange-plugin/
+  Developed by: "Cowboy" Ben Alman (http://benalman.com/)
+  Inclusive of: jquery.ba-bbq*.js
+  Version used: 1.2
+  Used under the following license: The MIT License (http://opensource.org/licenses/MIT)
+  Copyright (c) "Cowboy" Ben Alman (2010)"
+
 This project includes the software: DataTables Table plug-in for jQuery
   Available at: http://www.datatables.net/
   Developed by: SpryMedia Ltd (http://sprymedia.co.uk/)
@@ -273,7 +281,7 @@
 
 This project includes the software: jquery.easy-autocomplete.js
   Available at: https://github.com/pawelczak/EasyAutocomplete
-  Version used: 1.3.1
+  Version used: 1.3.3
   Used under the following license: The MIT License (http://opensource.org/licenses/MIT)
   Copyright (c) Łukasz Pawełczak (2015)
 
diff --git a/src/main/license/files/LICENSE b/src/main/license/files/LICENSE
index ee8677c..51ba4e6 100644
--- a/src/main/license/files/LICENSE
+++ b/src/main/license/files/LICENSE
@@ -263,6 +263,14 @@
   Used under the following license: The MIT License (http://opensource.org/licenses/MIT)
   Copyright (c) "Cowboy" Ben Alman (2010)"
 
+This project includes the software: jQuery hashchange event
+  Available at: http://benalman.com/projects/jquery-hashchange-plugin/
+  Developed by: "Cowboy" Ben Alman (http://benalman.com/)
+  Inclusive of: jquery.ba-bbq*.js
+  Version used: 1.2
+  Used under the following license: The MIT License (http://opensource.org/licenses/MIT)
+  Copyright (c) "Cowboy" Ben Alman (2010)"
+
 This project includes the software: DataTables Table plug-in for jQuery
   Available at: http://www.datatables.net/
   Developed by: SpryMedia Ltd (http://sprymedia.co.uk/)
@@ -273,7 +281,7 @@
 
 This project includes the software: jquery.easy-autocomplete.js
   Available at: https://github.com/pawelczak/EasyAutocomplete
-  Version used: 1.3.1
+  Version used: 1.3.3
   Used under the following license: The MIT License (http://opensource.org/licenses/MIT)
   Copyright (c) Łukasz Pawełczak (2015)
 
diff --git a/src/main/license/source-inclusions.yaml b/src/main/license/source-inclusions.yaml
index 1c3040e..a9fcd00 100644
--- a/src/main/license/source-inclusions.yaml
+++ b/src/main/license/source-inclusions.yaml
@@ -33,6 +33,7 @@
 - id: async.js
 - id: handlebars.js
 - id: jquery.ba-bbq.js
+- id: jquery.ba-bbq.js-hashchange
 - id: moment.js
 - id: ZeroClipboard
 - id: jquery.dataTables
diff --git a/src/main/webapp/assets/js/model/server-extended-status.js b/src/main/webapp/assets/js/model/server-extended-status.js
index aa9e5fa..2bde5ee 100644
--- a/src/main/webapp/assets/js/model/server-extended-status.js
+++ b/src/main/webapp/assets/js/model/server-extended-status.js
@@ -22,6 +22,13 @@
         callbacks: [],
         loaded: false,
         url: "/v1/server/up/extended",
+        sync: function(method, collection, options){
+            options = options || {};
+            options.beforeSend = function (xhr) {
+                xhr.setRequestHeader('X-Csrf-Token-Required-For-Requests', 'write');
+            };
+            return Backbone.Model.prototype.sync.apply(this, arguments);
+        },
         onError: function(thiz,xhr,modelish) {
             log("ServerExtendedStatus: error contacting Brooklyn server");
             log(xhr);
diff --git a/src/main/webapp/assets/js/router.js b/src/main/webapp/assets/js/router.js
index d26bec2..6404285 100644
--- a/src/main/webapp/assets/js/router.js
+++ b/src/main/webapp/assets/js/router.js
@@ -254,7 +254,7 @@
     });
 
     /*
-     * Prepend a base URL to REST API calls
+     * Prepend a base URL to REST API calls, and add the CSRF token if present.
      */
     $.ajaxSetup({
         beforeSend: function(jqXHR, settings) {
@@ -264,6 +264,17 @@
             if (baseURL && settings.url.startsWith("/v1")) {
                 settings.url = (baseURL + settings.url).replace("//", "/");
             }
+            
+            // add CSRF token as header
+            var ca = document.cookie.split(';');
+            for (var i=0; i<ca.length; i++) {
+                var c = ca[i];
+                while (c.charAt(0)==' ') c = c.substring(1);
+                if (c.toLowerCase().indexOf('csrf-token') != -1) {
+                    var parts = c.split('=');
+                    jqXHR.setRequestHeader('X-'+parts[0], parts[1]);
+                }
+            }
         }
     });