Added GUI Environment
diff --git a/xos-apps/auto-scale/gui/src/vendor/Chart.js/gulpfile.js b/xos-apps/auto-scale/gui/src/vendor/Chart.js/gulpfile.js
new file mode 100644
index 0000000..e8fe1c7
--- /dev/null
+++ b/xos-apps/auto-scale/gui/src/vendor/Chart.js/gulpfile.js
@@ -0,0 +1,137 @@
+var gulp = require('gulp'),
+	concat = require('gulp-concat'),
+	uglify = require('gulp-uglify'),
+	util = require('gulp-util'),
+	jshint = require('gulp-jshint'),
+	size = require('gulp-size'),
+	connect = require('gulp-connect'),
+	replace = require('gulp-replace'),
+	htmlv = require('gulp-html-validator'),
+	inquirer = require('inquirer'),
+	semver = require('semver'),
+	exec = require('child_process').exec,
+	fs = require('fs'),
+	package = require('./package.json'),
+	bower = require('./bower.json');
+
+var srcDir = './src/';
+/*
+ *	Usage : gulp build --types=Bar,Line,Doughnut
+ *	Output: - A built Chart.js file with Core and types Bar, Line and Doughnut concatenated together
+ *			- A minified version of this code, in Chart.min.js
+ */
+
+gulp.task('build', function(){
+
+	// Default to all of the chart types, with Chart.Core first
+	var srcFiles = [FileName('Core')],
+		isCustom = !!(util.env.types),
+		outputDir = (isCustom) ? 'custom' : '.';
+	if (isCustom){
+		util.env.types.split(',').forEach(function(type){ return srcFiles.push(FileName(type))});
+	}
+	else{
+		// Seems gulp-concat remove duplicates - nice!
+		// So we can use this to sort out dependency order - aka include Core first!
+		srcFiles.push(srcDir+'*');
+	}
+
+	return gulp.src(srcFiles)
+		.pipe(concat('Chart.js'))
+		.pipe(replace('{{ version }}', package.version))
+		.pipe(gulp.dest(outputDir))
+		.pipe(uglify({preserveComments:'some'}))
+		.pipe(concat('Chart.min.js'))
+		.pipe(gulp.dest(outputDir));
+
+	function FileName(moduleName){
+		return srcDir+'Chart.'+moduleName+'.js';
+	};
+});
+
+/*
+ *	Usage : gulp bump
+ *	Prompts: Version increment to bump
+ *	Output: - New version number written into package.json & bower.json
+ */
+
+gulp.task('bump', function(complete){
+	util.log('Current version:', util.colors.cyan(package.version));
+	var choices = ['major', 'premajor', 'minor', 'preminor', 'patch', 'prepatch', 'prerelease'].map(function(versionType){
+		return versionType + ' (v' + semver.inc(package.version, versionType) + ')';
+	});
+	inquirer.prompt({
+		type: 'list',
+		name: 'version',
+		message: 'What version update would you like?',
+		choices: choices
+	}, function(res){
+		var increment = res.version.split(' ')[0],
+			newVersion = semver.inc(package.version, increment);
+
+		// Set the new versions into the bower/package object
+		package.version = newVersion;
+		bower.version = newVersion;
+
+		// Write these to their own files, then build the output
+		fs.writeFileSync('package.json', JSON.stringify(package, null, 2));
+		fs.writeFileSync('bower.json', JSON.stringify(bower, null, 2));
+
+		complete();
+	});
+});
+
+gulp.task('release', ['build'], function(){
+	exec('git tag -a v' + package.version);
+});
+
+gulp.task('jshint', function(){
+	return gulp.src(srcDir + '*.js')
+		.pipe(jshint())
+		.pipe(jshint.reporter('default'));
+});
+
+gulp.task('valid', function(){
+	return gulp.src('samples/*.html')
+    .pipe(htmlv());
+});
+
+gulp.task('library-size', function(){
+	return gulp.src('Chart.min.js')
+		.pipe(size({
+			gzip: true
+		}));
+});
+
+gulp.task('module-sizes', function(){
+	return gulp.src(srcDir + '*.js')
+	.pipe(uglify({preserveComments:'some'}))
+	.pipe(size({
+		showFiles: true,
+		gzip: true
+	}))
+});
+
+gulp.task('watch', function(){
+	gulp.watch('./src/*', ['build']);
+});
+
+gulp.task('test', ['jshint', 'valid']);
+
+gulp.task('size', ['library-size', 'module-sizes']);
+
+gulp.task('default', ['build', 'watch']);
+
+gulp.task('server', function(){
+	connect.server({
+		port: 8000
+	});
+});
+
+// Convenience task for opening the project straight from the command line
+gulp.task('_open', function(){
+	exec('open http://localhost:8000');
+	exec('subl .');
+});
+
+gulp.task('dev', ['server', 'default']);