diff --git a/assets/javascripts/app/models/repository.coffee b/assets/javascripts/app/models/repository.coffee
index c6f47a3e..77921440 100644
--- a/assets/javascripts/app/models/repository.coffee
+++ b/assets/javascripts/app/models/repository.coffee
@@ -1,3 +1,4 @@
+require 'travis/expandable_record_array'
 require 'travis/model'
 
 @Travis.Repository = Travis.Model.extend
@@ -13,14 +14,28 @@ require 'travis/model'
 
   builds: (->
     id = @get('id')
-    Travis.Build.byRepositoryId id, event_type: 'push'
-    Travis.Build.filter (data) -> parseInt(data.get('repository_id')) == id && !data.get('pull_request')
+    builds = Travis.Build.byRepositoryId id, event_type: 'push'
+    array  = Travis.ExpandableRecordArray.create
+      type: Travis.Build
+      content: Ember.A([])
+      store: @get('store')
+
+    array.load(builds)
+
+    array
   ).property()
 
   pullRequests: (->
     id = @get('id')
-    Travis.Build.byRepositoryId id, event_type: 'pull_request'
-    Travis.Build.filter (data) -> parseInt(data.get('repository_id')) == id && data.get('pull_request')
+    builds = Travis.Build.byRepositoryId id, event_type: 'pull_request'
+    array  = Travis.ExpandableRecordArray.create
+      type: Travis.Build
+      content: Ember.A([])
+      store: @get('store')
+
+    array.load(builds)
+
+    array
   ).property()
 
   branches: (->
diff --git a/assets/javascripts/app/templates/builds/list.hbs b/assets/javascripts/app/templates/builds/list.hbs
index 26219916..e9f46669 100644
--- a/assets/javascripts/app/templates/builds/list.hbs
+++ b/assets/javascripts/app/templates/builds/list.hbs
@@ -40,9 +40,7 @@
     </tbody>
   </table>
   <p>
-    <button {{action showMore on="click" target="this" isVisibleBinding="hasMore"}}>
-      {{t builds.show_more}}
-    </button>
+    {{view view.ShowMoreButton}}
   </p>
 {{else}}
   <div class="loading"><span>Loading</span></div>
diff --git a/assets/javascripts/app/views/build.coffee b/assets/javascripts/app/views/build.coffee
index c74f2bcf..be5764ff 100644
--- a/assets/javascripts/app/views/build.coffee
+++ b/assets/javascripts/app/views/build.coffee
@@ -1,12 +1,28 @@
 @Travis.reopen
   BuildsView: Travis.View.extend
     templateName: 'builds/list'
-    buildsBinding: 'controller'
+    buildsBinding: 'controller.builds'
 
     showMore: ->
       id = @get('controller.repository.id')
-      number = @get('controller.builds.lastObject.number')
-      Travis.Build.olderThanNumber(id, number)
+      number = @get('builds.lastObject.number')
+      @get('builds').load Travis.Build.olderThanNumber(id, number)
+
+    ShowMoreButton: Em.View.extend
+      tagName: 'button'
+      classNameBindings: ['isLoading']
+      attributeBindings: ['disabled']
+      isLoadingBinding: 'controller.builds.isLoading'
+      template: Em.Handlebars.compile('{{view.label}}')
+
+      disabledBinding: 'isLoading'
+
+      label: (->
+        if @get('isLoading') then 'Loading' else 'Show more'
+      ).property('isLoading')
+
+      click: ->
+        @get('parentView').showMore()
 
   BuildsItemView: Travis.View.extend
     tagName: 'tr'
diff --git a/assets/javascripts/lib/travis/expandable_record_array.coffee b/assets/javascripts/lib/travis/expandable_record_array.coffee
new file mode 100644
index 00000000..06ce4199
--- /dev/null
+++ b/assets/javascripts/lib/travis/expandable_record_array.coffee
@@ -0,0 +1,29 @@
+Travis.ExpandableRecordArray = DS.RecordArray.extend
+  isLoaded: false
+  isLoading: false
+
+  load: (array) ->
+    @set 'isLoading', true
+    self = this
+
+    observer = ->
+      if @get 'isLoaded'
+        content = self.get 'content'
+
+        array.removeObserver 'isLoaded', observer
+        array.forEach (record) ->
+          self.pushObject record
+
+        self.set 'isLoading', false
+        self.set 'isLoaded',  true
+
+    array.addObserver 'isLoaded', observer
+
+  pushObject: (record) ->
+    ids      = @get 'content'
+    id       = record.get 'id'
+    clientId = record.get 'clientId'
+
+    return if ids.contains clientId
+
+    ids.pushObject clientId
diff --git a/public/javascripts/application.js b/public/javascripts/application.js
index 4262d239..87aa0e20 100644
--- a/public/javascripts/application.js
+++ b/public/javascripts/application.js
@@ -30146,4 +30146,4 @@ var _require=function(){function c(a,c){document.addEventListener?a.addEventList
 ++g&&setTimeout(c,0)})}}();
 (function(){!window.WebSocket&&window.MozWebSocket&&(window.WebSocket=window.MozWebSocket);if(window.WebSocket)Pusher.Transport=window.WebSocket,Pusher.TransportType="native";var c=(document.location.protocol=="http:"?Pusher.cdn_http:Pusher.cdn_https)+Pusher.VERSION,a=[];window.JSON||a.push(c+"/json2"+Pusher.dependency_suffix+".js");if(!window.WebSocket)window.WEB_SOCKET_DISABLE_AUTO_INITIALIZATION=!0,a.push(c+"/flashfallback"+Pusher.dependency_suffix+".js");var b=function(){return window.WebSocket?function(){Pusher.ready()}:
 function(){window.WebSocket?(Pusher.Transport=window.WebSocket,Pusher.TransportType="flash",window.WEB_SOCKET_SWF_LOCATION=c+"/WebSocketMain.swf",WebSocket.__addTask(function(){Pusher.ready()}),WebSocket.__initialize()):(Pusher.Transport=null,Pusher.TransportType="none",Pusher.ready())}}(),e=function(a){var b=function(){document.body?a():setTimeout(b,0)};b()},g=function(){e(b)};a.length>0?_require(a,g):g()})();
-minispade.register('app', "(function() {(function() {\nminispade.require('travis');\nminispade.require('auth');\nminispade.require('controllers');\nminispade.require('helpers');\nminispade.require('models');\nminispade.require('pusher');\nminispade.require('routes');\nminispade.require('slider');\nminispade.require('store');\nminispade.require('tailing');\nminispade.require('templates');\nminispade.require('views');\nminispade.require('config/locales');\nminispade.require('data/sponsors');\n\n  Travis.reopen({\n    App: Em.Application.extend({\n      autoinit: false,\n      currentUserBinding: 'auth.user',\n      authStateBinding: 'auth.state',\n      init: function() {\n        this._super.apply(this, arguments);\n        this.store = Travis.Store.create();\n        this.store.loadMany(Travis.Sponsor, Travis.SPONSORS);\n        this.set('auth', Travis.Auth.create({\n          store: this.store,\n          endpoint: Travis.config.api_endpoint\n        }));\n        this.slider = new Travis.Slider();\n        this.pusher = new Travis.Pusher(Travis.config.pusher);\n        return this.tailing = new Travis.Tailing();\n      },\n      signIn: function() {\n        return this.get('auth').signIn();\n      },\n      signOut: function() {\n        this.get('auth').signOut();\n        return this.get('router').send('showAuthenticated');\n      },\n      receive: function() {\n        return this.store.receive.apply(this.store, arguments);\n      },\n      toggleSidebar: function() {\n        var element;\n        $('body').toggleClass('maximized');\n        element = $('<span></span>');\n        $('#top .profile').append(element);\n        Em.run.later((function() {\n          return element.remove();\n        }), 10);\n        element = $('<span></span>');\n        $('#repository').append(element);\n        return Em.run.later((function() {\n          return element.remove();\n        }), 10);\n      }\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=app");minispade.register('auth', "(function() {(function() {\n\n  this.Travis.Auth = Ember.Object.extend({\n    iframe: $('<iframe id=\"auth-frame\" />').hide(),\n    timeout: 5000,\n    state: 'signed-out',\n    receivingEnd: \"\" + location.protocol + \"//\" + location.host,\n    init: function() {\n      var _this = this;\n      this.iframe.appendTo('body');\n      window.addEventListener('message', function(e) {\n        return _this.receiveMessage(e);\n      });\n      return this.loadUser();\n    },\n    accessToken: (function() {\n      return sessionStorage.getItem('travis.token');\n    }).property(),\n    loadUser: function() {\n      var user;\n      if (user = typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.getItem('travis.user') : void 0) {\n        return this.setData({\n          user: JSON.parse(user)\n        });\n      } else if (typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.getItem('travis.auto_signin') : void 0) {\n        return this.trySignIn();\n      }\n    },\n    signIn: function() {\n      this.set('state', 'signing-in');\n      this.trySignIn();\n      return Ember.run.later(this, this.checkSignIn.bind(this), this.timeout);\n    },\n    trySignIn: function() {\n      return this.iframe.attr('src', \"\" + this.endpoint + \"/auth/post_message?origin=\" + this.receivingEnd);\n    },\n    checkSignIn: function() {\n      if (this.get('state') === 'signing-in') {\n        return this.forceSignIn();\n      }\n    },\n    forceSignIn: function() {\n      if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n        localStorage.setItem('travis.auto_signin', 'true');\n      }\n      return window.location = \"\" + this.endpoint + \"/auth/handshake?redirect_uri=\" + location;\n    },\n    signOut: function() {\n      if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n        localStorage.clear();\n      }\n      if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n        sessionStorage.clear();\n      }\n      return this.setData();\n    },\n    setData: function(data) {\n      var user;\n      if (typeof data === 'string') {\n        data = JSON.parse(data);\n      }\n      if (data != null ? data.token : void 0) {\n        this.storeToken(data.token);\n      }\n      if (data != null ? data.user : void 0) {\n        user = this.storeUser(data.user);\n      }\n      this.set('state', user ? 'signed-in' : 'signed-out');\n      return this.set('user', user ? user : void 0);\n    },\n    storeToken: function(token) {\n      if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n        sessionStorage.setItem('travis.token', token);\n      }\n      return this.notifyPropertyChange('accessToken');\n    },\n    storeUser: function(user) {\n      if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n        localStorage.setItem('travis.auto_signin', 'true');\n      }\n      if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n        sessionStorage.setItem('travis.user', JSON.stringify(user));\n      }\n      this.store.load(Travis.User, user);\n      return this.store.find(Travis.User, user.id);\n    },\n    receiveMessage: function(event) {\n      if (event.origin === this.expectedOrigin()) {\n        this.setData(event.data);\n        return console.log(\"signed in as \" + event.data.user.login);\n      } else {\n        return console.log(\"unexpected message \" + event.origin + \": \" + event.data);\n      }\n    },\n    expectedOrigin: function() {\n      if (this.endpoint[0] === '/') {\n        return this.receivingEnd;\n      } else {\n        return this.endpoint;\n      }\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=auth");minispade.register('controllers', "(function() {(function() {\nminispade.require('helpers');\nminispade.require('travis/ticker');\n\n  Travis.reopen({\n    Controller: Em.Controller.extend({\n      connectOutlet: function() {\n        var view, _connectedOutletViews;\n        view = this._super.apply(this, arguments);\n        if (view) {\n          _connectedOutletViews = Travis.app.get('_connectedOutletViews');\n          if (!_connectedOutletViews) {\n            _connectedOutletViews = [];\n          }\n          _connectedOutletViews.pushObject(view);\n          Travis.app.set('_connectedOutletViews', _connectedOutletViews);\n        }\n        return view;\n      }\n    }),\n    TopController: Em.Controller.extend({\n      userBinding: 'Travis.app.currentUser'\n    }),\n    ApplicationController: Em.Controller.extend(),\n    MainController: Em.Controller.extend(),\n    StatsLayoutController: Em.Controller.extend(),\n    ProfileLayoutController: Em.Controller.extend()\n  });\nminispade.require('controllers/accounts');\nminispade.require('controllers/builds');\nminispade.require('controllers/home');\nminispade.require('controllers/profile');\nminispade.require('controllers/repositories');\nminispade.require('controllers/repository');\nminispade.require('controllers/sidebar');\nminispade.require('controllers/stats');\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers");minispade.register('controllers/accounts', "(function() {(function() {\n\n  Travis.AccountsController = Ember.ArrayController.extend({\n    tab: 'accounts',\n    init: function() {\n      return this._super();\n    },\n    findByLogin: function(login) {\n      return this.find(function(account) {\n        return account.get('login') === 'login';\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/accounts");minispade.register('controllers/builds', "(function() {(function() {\n\n  Travis.BuildsController = Em.ArrayController.extend({\n    repositoryBinding: 'parent.repository',\n    contentBinding: 'parent.builds'\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/builds");minispade.register('controllers/home', "(function() {(function() {\n\n  Travis.HomeController = Travis.Controller.extend();\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/home");minispade.register('controllers/job', "(function() {(function() {\n\n\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/job");minispade.register('controllers/profile', "(function() {(function() {\n\n  Travis.ProfileController = Travis.Controller.extend({\n    name: 'profile',\n    userBinding: 'Travis.app.currentUser',\n    accountsBinding: 'Travis.app.router.accountsController',\n    account: (function() {\n      var login;\n      login = this.get('params.login') || Travis.app.get('currentUser.login');\n      return this.get('accounts').filter(function(account) {\n        if (account.get('login') === login) {\n          return account;\n        }\n      })[0];\n    }).property('accounts.length', 'params.login'),\n    activate: function(action, params) {\n      this.setParams(params || this.get('params'));\n      return this[\"view\" + ($.camelize(action))]();\n    },\n    viewHooks: function() {\n      this.connectTab('hooks');\n      return this.set('hooks', Travis.Hook.find({\n        owner_name: this.get('params.login') || Travis.app.get('currentUser.login')\n      }));\n    },\n    viewUser: function() {\n      return this.connectTab('user');\n    },\n    connectTab: function(tab) {\n      var viewClass;\n      viewClass = Travis[\"\" + ($.camelize(tab)) + \"View\"];\n      this.set('tab', tab);\n      return this.connectOutlet({\n        outletName: 'pane',\n        controller: this,\n        viewClass: viewClass\n      });\n    },\n    setParams: function(params) {\n      var key, value, _results;\n      this.set('params', {});\n      _results = [];\n      for (key in params) {\n        value = params[key];\n        _results.push(this.set(\"params.\" + key, params[key]));\n      }\n      return _results;\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/profile");minispade.register('controllers/repositories', "(function() {(function() {\n\n  Travis.RepositoriesController = Ember.ArrayController.extend({\n    defaultTab: 'recent',\n    sortProperties: ['sortOrder'],\n    init: function() {\n      this.activate(this.defaultTab);\n      return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n    },\n    updateTimes: function() {\n      var content;\n      if (content = this.get('content')) {\n        content.forEach(function(r) {\n          return r.updateTimes();\n        });\n      }\n      return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n    },\n    activate: function(tab, params) {\n      this.set('tab', tab);\n      return this[\"view\" + ($.camelize(tab))](params);\n    },\n    viewRecent: function() {\n      return this.set('content', Travis.Repository.find());\n    },\n    viewOwned: function() {\n      return this.set('content', Travis.Repository.ownedBy(Travis.app.get('currentUser.login')));\n    },\n    viewSearch: function(params) {\n      return this.set('content', Travis.Repository.search(params.search));\n    },\n    searchObserver: (function() {\n      var search, tab;\n      search = this.get('search');\n      tab = search ? 'search' : 'recent';\n      return this.activate(tab, {\n        search: search\n      });\n    }).observes('search')\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/repositories");minispade.register('controllers/repository', "(function() {(function() {\n\n  Travis.RepositoryController = Travis.Controller.extend({\n    bindings: [],\n    init: function() {\n      this._super.apply(this, arguments);\n      return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n    },\n    updateTimes: function() {\n      var build, builds;\n      if (builds = this.get('builds')) {\n        builds.forEach(function(b) {\n          return b.updateTimes();\n        });\n      }\n      if (build = this.get('build')) {\n        build.updateTimes();\n        build.get('jobs').forEach(function(j) {\n          return j.updateTimes();\n        });\n      }\n      return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n    },\n    activate: function(action) {\n      this._unbind();\n      return this[\"view\" + ($.camelize(action))]();\n    },\n    viewIndex: function() {\n      this._bind('repository', 'controllers.repositoriesController.firstObject');\n      this._bind('build', 'repository.lastBuild');\n      return this.connectTab('current');\n    },\n    viewCurrent: function() {\n      this.connectTab('current');\n      return this._bind('build', 'repository.lastBuild');\n    },\n    viewBuilds: function() {\n      this.connectTab('builds');\n      return this._bind('builds', 'repository.builds');\n    },\n    viewPullRequests: function() {\n      this.connectTab('pull_requests');\n      return this._bind('builds', 'repository.pullRequests');\n    },\n    viewBranches: function() {\n      this.connectTab('branches');\n      return this._bind('builds', 'repository.branches');\n    },\n    viewBuild: function() {\n      return this.connectTab('build');\n    },\n    viewJob: function() {\n      this._bind('build', 'job.build');\n      return this.connectTab('job');\n    },\n    repositoryObserver: (function() {\n      var repository;\n      repository = this.get('repository');\n      if (repository) {\n        return repository.select();\n      }\n    }).observes('repository.id'),\n    connectTab: function(tab) {\n      var name, viewClass;\n      name = tab === 'current' ? 'build' : tab;\n      viewClass = name === 'builds' || name === 'branches' || name === 'pull_requests' ? Travis.BuildsView : Travis[\"\" + ($.camelize(name)) + \"View\"];\n      this.set('tab', tab);\n      return this.connectOutlet({\n        outletName: 'pane',\n        controller: this,\n        viewClass: viewClass\n      });\n    },\n    _bind: function(to, from) {\n      return this.bindings.push(Ember.oneWay(this, to, from));\n    },\n    _unbind: function() {\n      var binding, _i, _len, _ref;\n      _ref = this.bindings;\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        binding = _ref[_i];\n        binding.disconnect(this);\n      }\n      return this.bindings.length = 0;\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/repository");minispade.register('controllers/sidebar', "(function() {(function() {\n\n  Travis.reopen({\n    SidebarController: Em.ArrayController.extend({\n      init: function() {\n        this.tickables = [];\n        return Travis.Ticker.create({\n          target: this,\n          interval: Travis.INTERVALS.sponsors\n        });\n      },\n      tick: function() {\n        var tickable, _i, _len, _ref, _results;\n        _ref = this.tickables;\n        _results = [];\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          tickable = _ref[_i];\n          _results.push(tickable.tick());\n        }\n        return _results;\n      }\n    }),\n    QueuesController: Em.ArrayController.extend(),\n    WorkersController: Em.ArrayController.extend({\n      groups: (function() {\n        var content, groups, host, worker, _i, _len, _ref;\n        if (content = this.get('content')) {\n          groups = {};\n          _ref = content.toArray();\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            worker = _ref[_i];\n            host = worker.get('host');\n            if (!groups[host]) {\n              groups[host] = Em.ArrayProxy.create({\n                content: []\n              });\n            }\n            groups[host].pushObject(worker);\n          }\n          return $.values(groups);\n        }\n      }).property('content.length')\n    }),\n    SponsorsController: Em.ArrayController.extend({\n      page: 0,\n      arrangedContent: (function() {\n        return this.get('shuffled').slice(this.start(), this.end());\n      }).property('shuffled.length', 'page'),\n      shuffled: (function() {\n        var content;\n        if (content = this.get('content')) {\n          return $.shuffle(content);\n        } else {\n          return [];\n        }\n      }).property('content.length'),\n      tick: function() {\n        return this.set('page', this.isLast() ? 0 : this.get('page') + 1);\n      },\n      pages: (function() {\n        var length;\n        length = this.get('content.length');\n        if (length) {\n          return parseInt(length / this.get('perPage') + 1);\n        } else {\n          return 1;\n        }\n      }).property('length'),\n      isLast: function() {\n        return this.get('page') === this.get('pages') - 1;\n      },\n      start: function() {\n        return this.get('page') * this.get('perPage');\n      },\n      end: function() {\n        return this.start() + this.get('perPage');\n      }\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/sidebar");minispade.register('controllers/stats', "(function() {(function() {\n\n  Travis.StatsController = Travis.Controller.extend({\n    name: 'stats',\n    init: function() {\n      return this._super('top');\n    },\n    activate: function(action, params) {}\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/stats");minispade.register('helpers', "(function() {(function() {\nminispade.require('helpers/handlebars');\nminispade.require('helpers/helpers');\nminispade.require('helpers/urls');\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers");minispade.register('helpers/handlebars', "(function() {(function() {\n  var safe;\nminispade.require('ext/ember/bound_helper');\n\n  safe = function(string) {\n    return new Handlebars.SafeString(string);\n  };\n\n  Handlebars.registerHelper('tipsy', function(text, tip) {\n    return safe('<span class=\"tool-tip\" original-title=\"' + tip + '\">' + text + '</span>');\n  });\n\n  Handlebars.registerHelper('t', function(key) {\n    return safe(I18n.t(key));\n  });\n\n  Ember.registerBoundHelper('formatTime', function(value, options) {\n    return safe(Travis.Helpers.timeAgoInWords(value) || '-');\n  });\n\n  Ember.registerBoundHelper('formatDuration', function(duration, options) {\n    return safe(Travis.Helpers.timeInWords(duration));\n  });\n\n  Ember.registerBoundHelper('formatCommit', function(commit, options) {\n    if (commit) {\n      return safe(Travis.Helpers.formatCommit(commit.get('sha'), commit.get('branch')));\n    }\n  });\n\n  Ember.registerBoundHelper('formatSha', function(sha, options) {\n    return safe(Travis.Helpers.formatSha(sha));\n  });\n\n  Ember.registerBoundHelper('pathFrom', function(url, options) {\n    return safe(Travis.Helpers.pathFrom(url));\n  });\n\n  Ember.registerBoundHelper('formatMessage', function(message, options) {\n    return safe(Travis.Helpers.formatMessage(message, options));\n  });\n\n  Ember.registerBoundHelper('formatConfig', function(config, options) {\n    return safe(Travis.Helpers.formatConfig(config));\n  });\n\n  Ember.registerBoundHelper('formatLog', function(log, options) {\n    return Travis.Helpers.formatLog(log) || '';\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/handlebars");minispade.register('helpers/helpers', "(function() {(function() {\nminispade.require('travis/log');\nminispade.require('emoij');\n\n  this.Travis.Helpers = {\n    compact: function(object) {\n      var key, result, value, _ref;\n      result = {};\n      _ref = object || {};\n      for (key in _ref) {\n        value = _ref[key];\n        if (!$.isEmpty(value)) {\n          result[key] = value;\n        }\n      }\n      return result;\n    },\n    safe: function(string) {\n      return new Handlebars.SafeString(string);\n    },\n    colorForResult: function(result) {\n      if (result === 0) {\n        return 'green';\n      } else {\n        if (result === 1) {\n          return 'red';\n        } else {\n          return null;\n        }\n      }\n    },\n    formatCommit: function(sha, branch) {\n      return Travis.Helpers.formatSha(sha) + (branch ? \" (\" + branch + \")\" : '');\n    },\n    formatSha: function(sha) {\n      return (sha || '').substr(0, 7);\n    },\n    formatConfig: function(config) {\n      var values;\n      config = $.only(config, 'rvm', 'gemfile', 'env', 'otp_release', 'php', 'node_js', 'scala', 'jdk', 'python', 'perl');\n      values = $.map(config, function(value, key) {\n        value = (value && value.join ? value.join(', ') : value) || '';\n        return '%@: %@'.fmt($.camelize(key), value);\n      });\n      if (values.length === 0) {\n        return '-';\n      } else {\n        return values.join(', ');\n      }\n    },\n    formatMessage: function(message, options) {\n      message = message || '';\n      if (options.short) {\n        message = message.split(/\\n/)[0];\n      }\n      return this._emojize(this._escape(message)).replace(/\\n/g, '<br/>');\n    },\n    formatLog: function(log) {\n      return Travis.Log.filter(log);\n    },\n    pathFrom: function(url) {\n      return (url || '').split('/').pop();\n    },\n    timeAgoInWords: function(date) {\n      return $.timeago.distanceInWords(date);\n    },\n    durationFrom: function(started, finished) {\n      started = started && this._toUtc(new Date(this._normalizeDateString(started)));\n      finished = finished ? this._toUtc(new Date(this._normalizeDateString(finished))) : this._nowUtc();\n      if (started && finished) {\n        return Math.round((finished - started) / 1000);\n      } else {\n        return 0;\n      }\n    },\n    timeInWords: function(duration) {\n      var days, hours, minutes, result, seconds;\n      days = Math.floor(duration / 86400);\n      hours = Math.floor(duration % 86400 / 3600);\n      minutes = Math.floor(duration % 3600 / 60);\n      seconds = duration % 60;\n      if (days > 0) {\n        return 'more than 24 hrs';\n      } else {\n        result = [];\n        if (hours === 1) {\n          result.push(hours + ' hr');\n        }\n        if (hours > 1) {\n          result.push(hours + ' hrs');\n        }\n        if (minutes > 0) {\n          result.push(minutes + ' min');\n        }\n        if (seconds > 0) {\n          result.push(seconds + ' sec');\n        }\n        if (result.length > 0) {\n          return result.join(' ');\n        } else {\n          return '-';\n        }\n      }\n    },\n    _normalizeDateString: function(string) {\n      if (window.JHW) {\n        string = string.replace('T', ' ').replace(/-/g, '/');\n        string = string.replace('Z', '').replace(/\\..*$/, '');\n      }\n      return string;\n    },\n    _nowUtc: function() {\n      return this._toUtc(new Date());\n    },\n    _toUtc: function(date) {\n      return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n    },\n    _emojize: function(text) {\n      var emojis;\n      emojis = text.match(/:\\S+?:/g);\n      if (emojis !== null) {\n        $.each(emojis.uniq(), function(ix, emoji) {\n          var image, strippedEmoji;\n          strippedEmoji = emoji.substring(1, emoji.length - 1);\n          if (EmojiDictionary.indexOf(strippedEmoji) !== -1) {\n            image = '<img class=\\'emoji\\' title=\\'' + emoji + '\\' alt=\\'' + emoji + '\\' src=\\'' + '/images/emoji/' + strippedEmoji + '.png\\'/>';\n            return text = text.replace(new RegExp(emoji, 'g'), image);\n          }\n        });\n      }\n      return text;\n    },\n    _escape: function(text) {\n      return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n    }\n  };\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/helpers");minispade.register('helpers/urls', "(function() {(function() {\n\n  this.Travis.Urls = {\n    repository: function(slug) {\n      return \"/\" + slug;\n    },\n    builds: function(slug) {\n      return \"/\" + slug + \"/builds\";\n    },\n    pullRequests: function(slug) {\n      return \"/\" + slug + \"/pull_requests\";\n    },\n    branches: function(slug) {\n      return \"/\" + slug + \"/branches\";\n    },\n    build: function(slug, id) {\n      return \"/\" + slug + \"/builds/\" + id;\n    },\n    job: function(slug, id) {\n      return \"/\" + slug + \"/jobs/\" + id;\n    },\n    githubCommit: function(slug, sha) {\n      return \"http://github.com/\" + slug + \"/commit/\" + sha;\n    },\n    githubRepository: function(slug) {\n      return \"http://github.com/\" + slug;\n    },\n    githubWatchers: function(slug) {\n      return \"http://github.com/\" + slug + \"/watchers\";\n    },\n    githubNetwork: function(slug) {\n      return \"http://github.com/\" + slug + \"/network\";\n    },\n    githubAdmin: function(slug) {\n      return \"http://github.com/\" + slug + \"/admin/hooks#travis_minibucket\";\n    },\n    statusImage: function(slug, branch) {\n      return (\"https://secure.travis-ci.org/\" + slug + \".png\") + (branch ? \"?branch=\" + branch : '');\n    },\n    email: function(email) {\n      return \"mailto:\" + email;\n    },\n    account: function(login) {\n      return \"/profile/\" + login;\n    },\n    user: function(login) {\n      return \"/profile/\" + login + \"/me\";\n    }\n  };\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/urls");minispade.register('models', "(function() {(function() {\nminispade.require('models/extensions');\nminispade.require('models/account');\nminispade.require('models/artifact');\nminispade.require('models/branch');\nminispade.require('models/build');\nminispade.require('models/commit');\nminispade.require('models/hook');\nminispade.require('models/job');\nminispade.require('models/repository');\nminispade.require('models/sponsor');\nminispade.require('models/user');\nminispade.require('models/worker');\n\n}).call(this);\n\n})();\n//@ sourceURL=models");minispade.register('models/account', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Account = Travis.Model.extend({\n    primaryKey: 'login',\n    login: DS.attr('string'),\n    name: DS.attr('string'),\n    type: DS.attr('string'),\n    reposCount: DS.attr('number'),\n    urlGithub: (function() {\n      return \"http://github.com/\" + (this.get('login'));\n    }).property()\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/account");minispade.register('models/artifact', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Artifact = Travis.Model.extend({\n    body: DS.attr('string'),\n    init: function() {\n      this._super.apply(this, arguments);\n      return this.set('queue', Ember.A([]));\n    },\n    append: function(body) {\n      if (this.get('isLoaded')) {\n        return this.set('body', this.get('body') + body);\n      } else {\n        return this.get('queue').pushObject(body);\n      }\n    },\n    recordDidLoad: (function() {\n      var queue;\n      if (this.get('isLoaded')) {\n        queue = this.get('queue');\n        if (queue.get('length') > 0) {\n          return this.append(queue.toArray().join(''));\n        }\n      }\n    }).observes('isLoaded')\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/artifact");minispade.register('models/branch', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Branch = Travis.Model.extend(Travis.Helpers, {\n    repositoryId: DS.attr('number'),\n    commitId: DS.attr('number'),\n    number: DS.attr('number'),\n    branch: DS.attr('string'),\n    message: DS.attr('string'),\n    result: DS.attr('number'),\n    duration: DS.attr('number'),\n    startedAt: DS.attr('string'),\n    finishedAt: DS.attr('string'),\n    commit: DS.belongsTo('Travis.Commit'),\n    repository: (function() {\n      if (this.get('repositoryId')) {\n        return Travis.Repository.find(this.get('repositoryId'));\n      }\n    }).property('repositoryId'),\n    updateTimes: function() {\n      this.notifyPropertyChange('started_at');\n      return this.notifyPropertyChange('finished_at');\n    }\n  });\n\n  this.Travis.Branch.reopenClass({\n    byRepositoryId: function(id) {\n      return this.find({\n        repository_id: id\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/branch");minispade.register('models/build', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Build = Travis.Model.extend(Travis.DurationCalculations, {\n    eventType: DS.attr('string'),\n    repositoryId: DS.attr('number'),\n    commitId: DS.attr('number'),\n    state: DS.attr('string'),\n    number: DS.attr('number'),\n    branch: DS.attr('string'),\n    message: DS.attr('string'),\n    result: DS.attr('number'),\n    _duration: DS.attr('number', {\n      key: 'duration'\n    }),\n    startedAt: DS.attr('string', {\n      key: 'started_at'\n    }),\n    finishedAt: DS.attr('string', {\n      key: 'finished_at'\n    }),\n    repository: DS.belongsTo('Travis.Repository'),\n    commit: DS.belongsTo('Travis.Commit'),\n    jobs: DS.hasMany('Travis.Job', {\n      key: 'job_ids'\n    }),\n    config: (function() {\n      return Travis.Helpers.compact(this.get('data.config'));\n    }).property('data.config'),\n    isMatrix: (function() {\n      return this.get('data.job_ids.length') > 1;\n    }).property('data.job_ids.length'),\n    requiredJobs: (function() {\n      return this.get('jobs').filter(function(data) {\n        return !data.get('allowFailure');\n      });\n    }).property('jobs.@each.allowFailure'),\n    allowedFailureJobs: (function() {\n      return this.get('jobs').filter(function(data) {\n        return data.get('allowFailure');\n      });\n    }).property('jobs.@each.allowFailure'),\n    configKeys: (function() {\n      var config, headers, key, keys;\n      if (!(config = this.get('config'))) {\n        return [];\n      }\n      keys = $.intersect($.keys(config), Travis.CONFIG_KEYS);\n      headers = (function() {\n        var _i, _len, _ref, _results;\n        _ref = ['build.job', 'build.duration', 'build.finished_at'];\n        _results = [];\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          key = _ref[_i];\n          _results.push(I18n.t(key));\n        }\n        return _results;\n      })();\n      return $.map(headers.concat(keys), function(key) {\n        return $.camelize(key);\n      });\n    }).property('config')\n  });\n\n  this.Travis.Build.reopenClass({\n    byRepositoryId: function(id, parameters) {\n      return this.find($.extend(parameters || {}, {\n        repository_id: id,\n        orderBy: 'number DESC'\n      }));\n    },\n    olderThanNumber: function(id, build_number) {\n      return this.find({\n        url: \"/builds\",\n        repository_id: id,\n        after_number: build_number\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/build");minispade.register('models/commit', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Commit = Travis.Model.extend({\n    buildId: DS.attr('number'),\n    sha: DS.attr('string'),\n    branch: DS.attr('string'),\n    message: DS.attr('string'),\n    compareUrl: DS.attr('string'),\n    authorName: DS.attr('string'),\n    authorEmail: DS.attr('string'),\n    committerName: DS.attr('string'),\n    committerEmail: DS.attr('string'),\n    build: DS.belongsTo('Travis.Build', {\n      key: 'buildId'\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/commit");minispade.register('models/extensions', "(function() {(function() {\n\n  Travis.DurationCalculations = Ember.Mixin.create({\n    duration: (function() {\n      var duration;\n      if (duration = this.get('_duration')) {\n        return duration;\n      } else {\n        return Travis.Helpers.durationFrom(this.get('startedAt'), this.get('finishedAt'));\n      }\n    }).property('_duration', 'finishedAt', 'startedAt'),\n    updateTimes: function() {\n      this.notifyPropertyChange('_duration');\n      return this.notifyPropertyChange('finished_at');\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/extensions");minispade.register('models/hook', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Hook = Travis.Model.extend({\n    name: DS.attr('string'),\n    ownerName: DS.attr('string'),\n    description: DS.attr('string'),\n    active: DS.attr('boolean'),\n    account: (function() {\n      return this.get('slug').split('/')[0];\n    }).property('slug'),\n    slug: (function() {\n      return \"\" + (this.get('ownerName')) + \"/\" + (this.get('name'));\n    }).property('ownerName', 'name'),\n    urlGithub: (function() {\n      return \"http://github.com/\" + (this.get('slug'));\n    }).property(),\n    urlGithubAdmin: (function() {\n      return \"http://github.com/\" + (this.get('slug')) + \"/admin/hooks#travis_minibucket\";\n    }).property(),\n    toggle: function() {\n      var transaction;\n      transaction = this.get('store').transaction();\n      transaction.add(this);\n      this.set('active', !this.get('active'));\n      return transaction.commit();\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/hook");minispade.register('models/job', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Job = Travis.Model.extend(Travis.DurationCalculations, {\n    repositoryId: DS.attr('number'),\n    buildId: DS.attr('number'),\n    commitId: DS.attr('number'),\n    logId: DS.attr('number'),\n    queue: DS.attr('string'),\n    state: DS.attr('string'),\n    number: DS.attr('string'),\n    result: DS.attr('number'),\n    _duration: DS.attr('number', {\n      key: 'duration'\n    }),\n    startedAt: DS.attr('string'),\n    finishedAt: DS.attr('string'),\n    allowFailure: DS.attr('boolean', {\n      key: 'allow_failure'\n    }),\n    repository: DS.belongsTo('Travis.Repository', {\n      key: 'repository_id'\n    }),\n    build: DS.belongsTo('Travis.Build', {\n      key: 'build_id'\n    }),\n    commit: DS.belongsTo('Travis.Commit', {\n      key: 'commit_id'\n    }),\n    log: DS.belongsTo('Travis.Artifact', {\n      key: 'log_id'\n    }),\n    isQueued: (function() {}).property('state'),\n    config: (function() {\n      return Travis.Helpers.compact(this.get('data.config'));\n    }).property('data.config'),\n    sponsor: (function() {\n      return this.get('data.sponsor');\n    }).property('data.sponsor'),\n    configValues: (function() {\n      var config;\n      if (config = this.get('config')) {\n        return $.values($.only.apply(config, Travis.CONFIG_KEYS));\n      } else {\n        return [];\n      }\n    }).property('config'),\n    appendLog: function(text) {\n      var log;\n      if (log = this.get('log')) {\n        return log.append(text);\n      }\n    },\n    subscribe: function() {\n      var id;\n      if (id = this.get('id')) {\n        return Travis.app.pusher.subscribe(\"job-\" + id);\n      }\n    },\n    onStateChange: (function() {\n      if (this.get('state') === 'finished') {\n        return Travis.app.pusher.unsubscribe(\"job-\" + (this.get('id')));\n      }\n    }).observes('state')\n  });\n\n  this.Travis.Job.reopenClass({\n    queued: function(queue) {\n      this.find();\n      return Travis.app.store.filter(this, function(job) {\n        var queued;\n        queued = ['created', 'queued'].indexOf(job.get('state')) !== -1;\n        return queued && job.get('queue') === (\"builds.\" + queue);\n      });\n    },\n    findMany: function(ids) {\n      return Travis.app.store.findMany(this, ids);\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/job");minispade.register('models/repository', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Repository = Travis.Model.extend({\n    slug: DS.attr('string'),\n    description: DS.attr('string'),\n    lastBuildId: DS.attr('number'),\n    lastBuildNumber: DS.attr('string'),\n    lastBuildResult: DS.attr('number'),\n    lastBuildStartedAt: DS.attr('string'),\n    lastBuildFinishedAt: DS.attr('string'),\n    lastBuild: DS.belongsTo('Travis.Build'),\n    builds: (function() {\n      var id;\n      id = this.get('id');\n      Travis.Build.byRepositoryId(id, {\n        event_type: 'push'\n      });\n      return Travis.Build.filter(function(data) {\n        return parseInt(data.get('repository_id')) === id && !data.get('pull_request');\n      });\n    }).property(),\n    pullRequests: (function() {\n      var id;\n      id = this.get('id');\n      Travis.Build.byRepositoryId(id, {\n        event_type: 'pull_request'\n      });\n      return Travis.Build.filter(function(data) {\n        return parseInt(data.get('repository_id')) === id && data.get('pull_request');\n      });\n    }).property(),\n    branches: (function() {\n      return Travis.Branch.byRepositoryId(this.get('id'));\n    }).property(),\n    owner: (function() {\n      return (this.get('slug') || '').split('/')[0];\n    }).property('slug'),\n    name: (function() {\n      return (this.get('slug') || '').split('/')[1];\n    }).property('slug'),\n    lastBuildDuration: (function() {\n      var duration;\n      duration = this.get('data.last_build_duration');\n      if (!duration) {\n        duration = Travis.Helpers.durationFrom(this.get('lastBuildStartedAt'), this.get('lastBuildFinishedAt'));\n      }\n      return duration;\n    }).property('data.last_build_duration', 'lastBuildStartedAt', 'lastBuildFinishedAt'),\n    sortOrder: (function() {\n      var lastBuildFinishedAt;\n      if (lastBuildFinishedAt = this.get('lastBuildFinishedAt')) {\n        return -new Date(lastBuildFinishedAt).getTime();\n      } else {\n        return -new Date('9999').getTime() - parseInt(this.get('lastBuildId'));\n      }\n    }).property('lastBuildFinishedAt', 'lastBuildId'),\n    stats: (function() {\n      var _this = this;\n      return this.get('_stats') || $.get(\"https://api.github.com/repos/\" + (this.get('slug')), function(data) {\n        _this.set('_stats', data);\n        return _this.notifyPropertyChange('stats');\n      }) && {};\n    }).property(),\n    select: function() {\n      return Travis.Repository.select(this.get('id'));\n    },\n    updateTimes: function() {\n      return this.notifyPropertyChange('lastBuildDuration');\n    }\n  });\n\n  this.Travis.Repository.reopenClass({\n    recent: function() {\n      return this.find();\n    },\n    ownedBy: function(login) {\n      return this.find({\n        owner_name: login,\n        orderBy: 'name'\n      });\n    },\n    search: function(query) {\n      return this.find({\n        search: query,\n        orderBy: 'name'\n      });\n    },\n    bySlug: function(slug) {\n      var repo;\n      repo = $.select(this.find().toArray(), function(repo) {\n        return repo.get('slug') === slug;\n      });\n      if (repo.length > 0) {\n        return repo;\n      } else {\n        return this.find({\n          slug: slug\n        });\n      }\n    },\n    select: function(id) {\n      return this.find().forEach(function(repository) {\n        return repository.set('selected', repository.get('id') === id);\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/repository");minispade.register('models/sponsor', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Sponsor = Travis.Model.extend({\n    type: DS.attr('string'),\n    url: DS.attr('string'),\n    link: DS.attr('string'),\n    image: (function() {\n      return \"/images/sponsors/\" + (this.get('data.image'));\n    }).property('data.image')\n  });\n\n  Travis.Sponsor.reopenClass({\n    decks: function() {\n      return this.platinum().concat(this.gold());\n    },\n    platinum: function() {\n      var platinum, sponsor, _i, _len, _results;\n      platinum = this.byType('platinum').toArray();\n      _results = [];\n      for (_i = 0, _len = platinum.length; _i < _len; _i++) {\n        sponsor = platinum[_i];\n        _results.push([sponsor]);\n      }\n      return _results;\n    },\n    gold: function() {\n      var gold, _results;\n      gold = this.byType('gold').toArray();\n      _results = [];\n      while (gold.length > 0) {\n        _results.push(gold.splice(0, 2));\n      }\n      return _results;\n    },\n    links: function() {\n      return this.byType('silver');\n    },\n    byType: function() {\n      var types;\n      types = Array.prototype.slice.apply(arguments);\n      return Travis.Sponsor.filter(function(sponsor) {\n        return types.indexOf(sponsor.get('type')) !== -1;\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/sponsor");minispade.register('models/user', "(function() {(function() {\nminispade.require('travis/ajax');\nminispade.require('travis/model');\n\n  this.Travis.User = Travis.Model.extend(Travis.Ajax, {\n    name: DS.attr('string'),\n    email: DS.attr('string'),\n    login: DS.attr('string'),\n    token: DS.attr('string'),\n    locale: DS.attr('string'),\n    gravatarId: DS.attr('string'),\n    isSyncing: DS.attr('boolean'),\n    syncedAt: DS.attr('string'),\n    repoCount: DS.attr('number'),\n    init: function() {\n      if (this.get('isSyncing')) {\n        this.poll();\n      }\n      this._super();\n      return Ember.run.next(this, function() {\n        var transaction;\n        transaction = this.get('store').transaction();\n        return transaction.add(this);\n      });\n    },\n    urlGithub: (function() {\n      return \"https://github.com/\" + (this.get('login'));\n    }).property(),\n    updateLocale: function(locale) {\n      var observer, self, transaction;\n      this.setWithSession('locale', locale);\n      transaction = this.get('transaction');\n      transaction.commit();\n      self = this;\n      observer = function() {\n        if (!self.get('isSaving')) {\n          self.removeObserver('isSaving', observer);\n          transaction = self.get('store').transaction();\n          return transaction.add(self);\n        }\n      };\n      return this.addObserver('isSaving', observer);\n    },\n    type: (function() {\n      return 'user';\n    }).property(),\n    sync: function() {\n      this.post('/users/sync');\n      this.setWithSession('isSyncing', true);\n      return this.poll();\n    },\n    poll: function() {\n      var _this = this;\n      return this.ajax('/users', 'get', {\n        success: function(data) {\n          if (data.user.is_syncing) {\n            return Ember.run.later(_this, _this.poll.bind(_this), 3000);\n          } else {\n            _this.set('isSyncing', false);\n            return _this.setWithSession('syncedAt', data.user.synced_at);\n          }\n        }\n      });\n    },\n    setWithSession: function(name, value) {\n      var user;\n      this.set(name, value);\n      user = JSON.parse(typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.getItem('travis.user') : void 0);\n      user[$.underscore(name)] = this.get(name);\n      return typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.setItem('travis.user', JSON.stringify(user)) : void 0;\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/user");minispade.register('models/worker', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Worker = Travis.Model.extend({\n    state: DS.attr('string'),\n    name: DS.attr('string'),\n    host: DS.attr('string'),\n    lastSeenAt: DS.attr('string'),\n    payload: (function() {\n      return this.get('data.payload');\n    }).property('data.payload'),\n    number: (function() {\n      return this.get('name').match(/\\d+$/)[0];\n    }).property('name'),\n    isWorking: (function() {\n      return this.get('state') === 'working';\n    }).property('state'),\n    repository: (function() {\n      return Travis.Repository.find(this.get('payload.repository.id'));\n    }).property('payload.repository.id'),\n    job_id: (function() {\n      return this.get('payload.job.id');\n    }).property('payload.job.id'),\n    job: (function() {\n      return Travis.Job.find(this.get('job_id'));\n    }).property('job_id')\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/worker");minispade.register('pusher', "(function() {(function() {\n\n  Travis.Pusher = function(config) {\n    if (config) {\n      this.init(config);\n    }\n    return this;\n  };\n\n  $.extend(Travis.Pusher, {\n    CHANNELS: ['common'],\n    CHANNEL_PREFIX: ''\n  });\n\n  $.extend(Travis.Pusher.prototype, {\n    active_channels: [],\n    init: function(config) {\n      var channel, _i, _len, _ref, _results;\n      Pusher.warn = this.warn.bind(this);\n      this.pusher = new Pusher(config.key);\n      _ref = Travis.Pusher.CHANNELS;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        channel = _ref[_i];\n        _results.push(this.subscribe(channel));\n      }\n      return _results;\n    },\n    subscribe: function(channel) {\n      var _this = this;\n      if (this.pusher && this.active_channels.indexOf(channel) === -1) {\n        this.active_channels.push(channel);\n        return this.pusher.subscribe(this.prefix(channel)).bind_all(function(event, data) {\n          return _this.receive(event, data);\n        });\n      }\n    },\n    unsubscribe: function(channel) {\n      var ix;\n      ix = this.active_channels.indexOf(channel);\n      if (this.pusher && ix === -1) {\n        this.active_channels.splice(ix, 1);\n        return this.pusher.unsubscribe(this.prefix(channel));\n      }\n    },\n    prefix: function(channel) {\n      return \"\" + Travis.Pusher.CHANNEL_PREFIX + channel;\n    },\n    receive: function(event, data) {\n      if (event.substr(0, 6) === 'pusher') {\n        return;\n      }\n      if (data.id) {\n        data = this.normalize(event, data);\n      }\n      return Ember.run.next(function() {\n        return Travis.app.store.receive(event, data);\n      });\n    },\n    normalize: function(event, data) {\n      switch (event) {\n        case 'build:started':\n        case 'build:finished':\n          return data;\n        case 'job:created':\n        case 'job:started':\n        case 'job:finished':\n        case 'job:log':\n          if (data.queue) {\n            data.queue = data.queue.replace('builds.', '');\n          }\n          return {\n            job: data\n          };\n        case 'worker:added':\n        case 'worker:updated':\n        case 'worker:removed':\n          return {\n            worker: data\n          };\n      }\n    },\n    warn: function(type, warning) {\n      if (!this.ignoreWarning(warning)) {\n        return console.warn(warning);\n      }\n    },\n    ignoreWarning: function(warning) {\n      var message, _ref;\n      if (message = (_ref = warning.data) != null ? _ref.message : void 0) {\n        return message.indexOf('Existing subscription') === 0 || message.indexOf('No current subscription') === 0;\n      }\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=pusher");minispade.register('routes', "(function() {(function() {\n\n  Travis.Router = Ember.Router.extend({\n    location: 'history',\n    enableLogging: true,\n    initialState: 'loading',\n    goToRoot: Ember.Route.transitionTo('root.home.show'),\n    goToStats: Ember.Route.transitionTo('root.stats'),\n    showRepository: Ember.Route.transitionTo('root.home.repository.show'),\n    showBuilds: Ember.Route.transitionTo('root.home.repository.builds.index'),\n    showBuild: Ember.Route.transitionTo('root.home.repository.builds.show'),\n    showPullRequests: Ember.Route.transitionTo('root.home.repository.pullRequests'),\n    showBranches: Ember.Route.transitionTo('root.home.repository.branches'),\n    showJob: Ember.Route.transitionTo('root.home.repository.job'),\n    showProfile: Ember.Route.transitionTo('root.profile'),\n    showAccount: Ember.Route.transitionTo('root.profile.account'),\n    showUserProfile: Ember.Route.transitionTo('root.profile.account.profile'),\n    signedIn: function() {\n      return !!Travis.app.get('auth.user');\n    },\n    requiresAuth: function(path) {\n      return path === '/profile' && !this.signedIn();\n    },\n    loading: Ember.Route.extend({\n      routePath: function(router, path) {\n        router.set('lastAttemptedPath', path);\n        if (router.requiresAuth(path)) {\n          return router.send('showUnauthenticated');\n        } else {\n          return router.send('showAuthenticated');\n        }\n      }\n    }),\n    showUnauthenticated: Ember.State.transitionTo('root.home.show'),\n    showAuthenticated: Ember.State.transitionTo('authenticated.index'),\n    authenticated: Ember.Route.extend({\n      index: Ember.Route.extend({\n        connectOutlets: function(router) {\n          var path;\n          router.transitionTo('root');\n          path = router.get('lastAttemptedPath');\n          if (path && path !== '/') {\n            return router.route(path);\n          }\n        }\n      })\n    }),\n    root: Ember.Route.extend({\n      initialState: 'home',\n      loading: Ember.State.extend(),\n      stats: Ember.Route.extend({\n        route: '/stats',\n        connectOutlets: function(router) {\n          router.get('applicationController').connectOutlet('statsLayout');\n          $('body').attr('id', 'stats');\n          router.get('statsLayoutController').connectOutlet('top', 'top');\n          return router.get('statsLayoutController').connectOutlet('main', 'stats');\n        }\n      }),\n      profile: Ember.Route.extend({\n        initialState: 'index',\n        route: '/profile',\n        connectOutlets: function(router) {\n          router.get('applicationController').connectOutlet('profileLayout');\n          $('body').attr('id', 'profile');\n          router.get('accountsController').set('content', Travis.Account.find());\n          router.get('profileLayoutController').connectOutlet('top', 'top');\n          return router.get('profileLayoutController').connectOutlet('left', 'accounts');\n        },\n        index: Ember.Route.extend({\n          route: '/',\n          connectOutlets: function(router) {\n            router.get('profileLayoutController').connectOutlet('main', 'profile');\n            return router.get('profileController').activate('hooks');\n          }\n        }),\n        account: Ember.Route.extend({\n          initialState: 'index',\n          route: '/:login',\n          connectOutlets: function(router, account) {\n            var params;\n            if (account) {\n              params = {\n                login: account.get('login')\n              };\n              return router.get('profileController').setParams(params);\n            } else {\n              return router.send('showProfile');\n            }\n          },\n          deserialize: function(router, params) {\n            return router.get('accountsController').findByLogin(params.login);\n          },\n          serialize: function(router, account) {\n            if (account) {\n              return {\n                login: account.get('login')\n              };\n            } else {\n              return {};\n            }\n          },\n          index: Ember.Route.extend({\n            route: '/',\n            connectOutlets: function(router) {\n              return router.get('profileController').activate('hooks');\n            }\n          }),\n          profile: Ember.Route.extend({\n            route: '/profile',\n            connectOutlets: function(router) {\n              return router.get('profileController').activate('user');\n            }\n          })\n        })\n      }),\n      home: Ember.Route.extend({\n        initialState: 'show',\n        route: '/',\n        connectOutlets: function(router) {\n          router.get('applicationController').connectOutlet('home');\n          $('body').attr('id', 'home');\n          router.get('homeController').connectOutlet('left', 'repositories');\n          router.get('homeController').connectOutlet('right', 'sidebar');\n          router.get('homeController').connectOutlet('top', 'top');\n          return router.get('homeController').connectOutlet('main', 'repository');\n        },\n        show: Ember.Route.extend({\n          route: '/',\n          connectOutlets: function(router) {\n            return router.get('repositoryController').activate('index');\n          }\n        }),\n        repository: Ember.Route.extend({\n          initialState: 'show',\n          route: '/:owner/:name',\n          connectOutlets: function(router, repository) {\n            return router.get('repositoryController').set('repository', repository);\n          },\n          deserialize: function(router, params) {\n            var deferred, observer, repos, slug;\n            slug = \"\" + params.owner + \"/\" + params.name;\n            repos = Travis.Repository.bySlug(slug);\n            deferred = $.Deferred();\n            observer = function() {\n              if (repos.get('isLoaded')) {\n                repos.removeObserver('isLoaded', observer);\n                return deferred.resolve(repos.objectAt(0));\n              }\n            };\n            repos.addObserver('isLoaded', observer);\n            return deferred.promise();\n          },\n          serialize: function(router, repository) {\n            if (repository) {\n              return {\n                owner: repository.get('owner'),\n                name: repository.get('name')\n              };\n            } else {\n              return {};\n            }\n          },\n          show: Ember.Route.extend({\n            route: '/',\n            connectOutlets: function(router) {\n              return router.get('repositoryController').activate('current');\n            }\n          }),\n          builds: Ember.Route.extend({\n            route: '/builds',\n            initialState: 'index',\n            index: Ember.Route.extend({\n              route: '/',\n              connectOutlets: function(router, repository) {\n                return router.get('repositoryController').activate('builds');\n              }\n            }),\n            show: Ember.Route.extend({\n              route: '/:build_id',\n              connectOutlets: function(router, build) {\n                if (!build.get) {\n                  build = Travis.Build.find(build);\n                }\n                router.get('repositoryController').set('build', build);\n                return router.get('repositoryController').activate('build');\n              },\n              serialize: function(router, build) {\n                if (build.get) {\n                  return {\n                    build_id: build.get('id')\n                  };\n                } else {\n                  return {\n                    build_id: build\n                  };\n                }\n              },\n              deserialize: function(router, params) {\n                var build, deferred, observer;\n                build = Travis.Build.find(params.build_id);\n                deferred = $.Deferred();\n                observer = function() {\n                  if (build.get('id')) {\n                    build.removeObserver('id', observer);\n                    return deferred.resolve(build);\n                  }\n                };\n                build.addObserver('id', observer);\n                return deferred.promise();\n              }\n            })\n          }),\n          pullRequests: Ember.Route.extend({\n            route: '/pull_requests',\n            connectOutlets: function(router, repository) {\n              return router.get('repositoryController').activate('pull_requests');\n            }\n          }),\n          branches: Ember.Route.extend({\n            route: '/branches',\n            connectOutlets: function(router, repository) {\n              return router.get('repositoryController').activate('branches');\n            }\n          }),\n          job: Ember.Route.extend({\n            route: '/jobs/:job_id',\n            connectOutlets: function(router, job) {\n              if (!job.get) {\n                job = Travis.Job.find(job);\n              }\n              router.get('repositoryController').set('job', job);\n              return router.get('repositoryController').activate('job');\n            },\n            serialize: function(router, job) {\n              if (job.get) {\n                return {\n                  job_id: job.get('id')\n                };\n              } else {\n                return {\n                  job_id: job\n                };\n              }\n            },\n            deserialize: function(router, params) {\n              var deferred, job, observer;\n              job = Travis.Job.find(params.job_id);\n              deferred = $.Deferred();\n              observer = function() {\n                if (job.get('id')) {\n                  job.removeObserver('id', observer);\n                  return deferred.resolve(job);\n                }\n              };\n              job.addObserver('id', observer);\n              return deferred.promise();\n            }\n          })\n        })\n      })\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=routes");minispade.register('slider', "(function() {(function() {\n\n  this.Travis.Slider = function() {\n    if ((typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.getItem('travis.maximized') : void 0) === 'true') {\n      this.minimize();\n    }\n    return this;\n  };\n\n  $.extend(Travis.Slider.prototype, {\n    persist: function() {\n      return typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.setItem('travis.maximized', this.isMinimized()) : void 0;\n    },\n    isMinimized: function() {\n      return $('body').hasClass('maximized');\n    },\n    minimize: function() {\n      return $('body').addClass('maximized');\n    },\n    toggle: function() {\n      var element;\n      $('body').toggleClass('maximized');\n      this.persist();\n      element = $('<span></span>');\n      $('#top .profile').append(element);\n      return Em.run.later((function() {\n        return element.remove();\n      }), 10);\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=slider");minispade.register('store', "(function() {(function() {\n  var DATA_PROXY,\n    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\nminispade.require('store/rest_adapter');\n\n  DATA_PROXY = {\n    get: function(name) {\n      return this.savedData[name];\n    }\n  };\n\n  Travis.Store = DS.Store.extend({\n    revision: 4,\n    adapter: Travis.RestAdapter.create(),\n    merge: function(type, id, hash) {\n      var clientId, data, dataCache, primaryKey, record, recordCache, typeMap;\n      if (hash === void 0) {\n        hash = id;\n        primaryKey = type.proto().primaryKey;\n        Ember.assert(\"A data hash was loaded for a record of type \" + type.toString() + \" but no primary key '\" + primaryKey + \"' was provided.\", hash[primaryKey]);\n        id = hash[primaryKey];\n      }\n      typeMap = this.typeMapFor(type);\n      dataCache = typeMap.cidToHash;\n      clientId = typeMap.idToCid[id];\n      recordCache = this.get('recordCache');\n      if (clientId !== void 0) {\n        if (data = dataCache[clientId]) {\n          $.extend(data, hash);\n        } else {\n          dataCache[clientId] = hash;\n        }\n        if (record = recordCache[clientId]) {\n          record.send('didChangeData');\n        }\n      } else {\n        clientId = this.find(type, id).get('clientId');\n      }\n      if (clientId) {\n        DATA_PROXY.savedData = hash;\n        this.updateRecordArrays(type, clientId, DATA_PROXY);\n        return {\n          id: id,\n          clientId: clientId\n        };\n      }\n    },\n    receive: function(event, data) {\n      var job, mappings, name, type, _ref;\n      _ref = event.split(':'), name = _ref[0], type = _ref[1];\n      mappings = this.adapter.get('mappings');\n      type = mappings[name];\n      if (event === 'job:log') {\n        if (job = this.find(Travis.Job, data['job']['id'])) {\n          return job.appendLog(data['job']['_log']);\n        }\n      } else if (data[type.singularName()]) {\n        return this._loadOne(this, type, data);\n      } else if (data[type.pluralName()]) {\n        return this._loadMany(this, type, data);\n      } else {\n        if (!type) {\n          throw \"can't load data for \" + name;\n        }\n      }\n    },\n    _loadOne: function(store, type, json) {\n      var root;\n      root = type.singularName();\n      this.adapter.sideload(store, type, json, root);\n      this.merge(type, json[root]);\n      return this._updateAssociations(type, root, json[root]);\n    },\n    _loadMany: function(store, type, json) {\n      var root;\n      root = type.pluralName();\n      this.adapter.sideload(store, type, json, root);\n      return this.loadMany(type, json[root]);\n    },\n    _updateAssociations: function(type, name, data) {\n      var _this = this;\n      return Em.get(type, 'associationsByName').forEach(function(key, meta) {\n        var clientId, dataProxy, id, ids, parent, _ref;\n        if (meta.kind === 'belongsTo') {\n          id = data[\"\" + key + \"_id\"];\n          if (clientId = _this.typeMapFor(meta.type).idToCid[id]) {\n            if (parent = _this.findByClientId(meta.type, clientId, id)) {\n              dataProxy = parent.get('data');\n              if (ids = dataProxy.get(\"\" + name + \"_ids\")) {\n                if (_ref = data.id, __indexOf.call(ids, _ref) < 0) {\n                  ids.pushObject(data.id);\n                }\n                return parent.send('didChangeData');\n              }\n            }\n          }\n        }\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=store");minispade.register('store/fixture_adapter', "(function() {(function() {\n\n  this.Travis.FixtureAdapter = DS.Adapter.extend({\n    find: function(store, type, id) {\n      var fixtures;\n      fixtures = type.FIXTURES;\n      Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n      if (fixtures.hasLoaded) {\n        return;\n      }\n      return setTimeout((function() {\n        store.loadMany(type, fixtures);\n        return fixtures.hasLoaded = true;\n      }), 300);\n    },\n    findMany: function() {\n      return this.find.apply(this, arguments);\n    },\n    findAll: function(store, type) {\n      var fixtures, ids;\n      fixtures = type.FIXTURES;\n      Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n      ids = fixtures.map(function(item, index, self) {\n        return item.id;\n      });\n      return store.loadMany(type, ids, fixtures);\n    },\n    findQuery: function(store, type, params, array) {\n      var fixture, fixtures, hashes, key, matches, value;\n      fixtures = type.FIXTURES;\n      Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n      hashes = (function() {\n        var _i, _len, _results;\n        _results = [];\n        for (_i = 0, _len = fixtures.length; _i < _len; _i++) {\n          fixture = fixtures[_i];\n          matches = (function() {\n            var _results1;\n            _results1 = [];\n            for (key in params) {\n              value = params[key];\n              _results1.push(key === 'orderBy' || fixture[key] === value);\n            }\n            return _results1;\n          })();\n          if (matches.reduce(function(a, b) {\n            return a && b;\n          })) {\n            _results.push(fixture);\n          } else {\n            _results.push(null);\n          }\n        }\n        return _results;\n      })();\n      return array.load(hashes.compact());\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=store/fixture_adapter");minispade.register('store/rest_adapter', "(function() {(function() {\nminispade.require('travis/ajax');\nminispade.require('models');\n\n  this.Travis.RestAdapter = DS.RESTAdapter.extend(Travis.Ajax, {\n    mappings: {\n      repositories: Travis.Repository,\n      repository: Travis.Repository,\n      builds: Travis.Build,\n      build: Travis.Build,\n      commits: Travis.Commit,\n      commit: Travis.Commit,\n      jobs: Travis.Job,\n      job: Travis.Job,\n      account: Travis.Account,\n      accounts: Travis.Account,\n      worker: Travis.Worker,\n      workers: Travis.Worker\n    },\n    plurals: {\n      repository: 'repositories',\n      build: 'builds',\n      branch: 'branches',\n      job: 'jobs',\n      worker: 'workers',\n      profile: 'profile'\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=store/rest_adapter");minispade.register('tailing', "(function() {(function() {\n\n  this.Travis.Tailing = function() {\n    this.position = $(window).scrollTop();\n    $(window).scroll(this.onScroll.bind(this));\n    return this;\n  };\n\n  $.extend(Travis.Tailing.prototype, {\n    options: {\n      timeout: 200\n    },\n    run: function() {\n      this.autoScroll();\n      this.positionButton();\n      if (this.active()) {\n        return Ember.run.later(this.run.bind(this), this.options.timeout);\n      }\n    },\n    toggle: function(event) {\n      if (this.active()) {\n        return this.stop();\n      } else {\n        return this.start();\n      }\n    },\n    active: function() {\n      return $('#tail').hasClass('active');\n    },\n    start: function() {\n      $('#tail').addClass('active');\n      return this.run();\n    },\n    stop: function() {\n      return $('#tail').removeClass('active');\n    },\n    autoScroll: function() {\n      var log, logBottom, win, winBottom;\n      if (!this.active()) {\n        return;\n      }\n      win = $(window);\n      log = $('#log');\n      logBottom = log.offset().top + log.outerHeight() + 40;\n      winBottom = win.scrollTop() + win.height();\n      if (logBottom - winBottom > 0) {\n        return win.scrollTop(logBottom - win.height());\n      }\n    },\n    onScroll: function() {\n      var position;\n      this.positionButton();\n      position = $(window).scrollTop();\n      if (position < this.position) {\n        this.stop();\n      }\n      return this.position = position;\n    },\n    positionButton: function() {\n      var max, offset, tail;\n      tail = $('#tail');\n      if (tail.length === 0) {\n        return;\n      }\n      offset = $(window).scrollTop() - $('#log').offset().top;\n      max = $('#log').height() - $('#tail').height() + 5;\n      if (offset > max) {\n        offset = max;\n      }\n      if (offset > 0) {\n        return tail.css({\n          top: offset - 2\n        });\n      } else {\n        return tail.css({\n          top: 0\n        });\n      }\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=tailing");minispade.register('views', "(function() {(function() {\nminispade.require('ext/ember/namespace');\n\n  this.Travis.reopen({\n    View: Em.View.extend({\n      popup: function(event) {\n        return $(\"#\" + event.target.name).toggleClass('display');\n      }\n    })\n  });\n\n  this.Travis.reopen({\n    HomeView: Travis.View.extend({\n      templateName: 'layouts/home'\n    }),\n    ProfileLayoutView: Travis.View.extend({\n      templateName: 'layouts/profile'\n    }),\n    StatsLayoutView: Travis.View.extend({\n      templateName: 'layouts/simple'\n    }),\n    ApplicationView: Travis.View.extend({\n      templateName: 'application'\n    })\n  });\nminispade.require('views/accounts');\nminispade.require('views/build');\nminispade.require('views/job');\nminispade.require('views/repo');\nminispade.require('views/profile');\nminispade.require('views/sidebar');\nminispade.require('views/stats');\nminispade.require('views/top');\n\n}).call(this);\n\n})();\n//@ sourceURL=views");minispade.register('views/accounts', "(function() {(function() {\n\n  this.Travis.reopen({\n    AccountsView: Travis.View.extend({\n      tabBinding: 'controller.tab',\n      templateName: 'profile/accounts',\n      classAccounts: (function() {\n        if (this.get('tab') === 'accounts') {\n          return 'active';\n        }\n      }).property('tab')\n    }),\n    AccountsListView: Em.CollectionView.extend({\n      elementId: 'accounts',\n      accountBinding: 'content',\n      tagName: 'ul',\n      emptyView: Ember.View.extend({\n        template: Ember.Handlebars.compile('<div class=\"loading\"><span>Loading</span></div>')\n      }),\n      itemViewClass: Travis.View.extend({\n        accountBinding: 'content',\n        typeBinding: 'content.type',\n        selectedBinding: 'account.selected',\n        classNames: ['account'],\n        classNameBindings: ['type', 'selected'],\n        name: (function() {\n          return this.get('content.name') || this.get('content.login');\n        }).property('content.login', 'content.name'),\n        urlAccount: (function() {\n          return Travis.Urls.account(this.get('account.login'));\n        }).property('account.login')\n      })\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/accounts");minispade.register('views/build', "(function() {(function() {\n\n  this.Travis.reopen({\n    BuildsView: Travis.View.extend({\n      templateName: 'builds/list',\n      buildsBinding: 'controller',\n      showMore: function() {\n        var id, number;\n        id = this.get('controller.repository.id');\n        number = this.get('controller.builds.lastObject.number');\n        return Travis.Build.olderThanNumber(id, number);\n      }\n    }),\n    BuildsItemView: Travis.View.extend({\n      tagName: 'tr',\n      classNameBindings: ['color'],\n      repositoryBinding: 'controller.repository',\n      buildBinding: 'context',\n      commitBinding: 'build.commit',\n      color: (function() {\n        return Travis.Helpers.colorForResult(this.get('build.result'));\n      }).property('build.result'),\n      urlBuild: (function() {\n        return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));\n      }).property('repository.slug', 'build.id'),\n      urlGithubCommit: (function() {\n        return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n      }).property('repository.slug', 'commit.sha')\n    }),\n    BuildView: Travis.View.extend({\n      templateName: 'builds/show',\n      elementId: 'build',\n      classNameBindings: ['color', 'loading'],\n      repositoryBinding: 'controller.repository',\n      buildBinding: 'controller.build',\n      commitBinding: 'build.commit',\n      loading: (function() {\n        return !this.get('build.isLoaded');\n      }).property('build.isLoaded'),\n      color: (function() {\n        return Travis.Helpers.colorForResult(this.get('build.result'));\n      }).property('build.result'),\n      urlBuild: (function() {\n        return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));\n      }).property('repository.slug', 'build.id'),\n      urlGithubCommit: (function() {\n        return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n      }).property('repository.slug', 'commit.sha'),\n      urlAuthor: (function() {\n        return Travis.Urls.email(this.get('commit.authorEmail'));\n      }).property('commit.authorEmail'),\n      urlCommitter: (function() {\n        return Travis.Urls.email(this.get('commit.committerEmail'));\n      }).property('commit.committerEmail')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/build");minispade.register('views/job', "(function() {(function() {\n\n  this.Travis.reopen({\n    JobsView: Travis.View.extend({\n      templateName: 'jobs/list',\n      buildBinding: 'controller.build'\n    }),\n    JobsItemView: Travis.View.extend({\n      tagName: 'tr',\n      classNameBindings: ['color'],\n      repositoryBinding: 'context.repository',\n      jobBinding: 'context',\n      color: (function() {\n        return Travis.Helpers.colorForResult(this.get('job.result'));\n      }).property('job.result'),\n      urlJob: (function() {\n        return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));\n      }).property('repository.slug', 'job.id')\n    }),\n    JobView: Travis.View.extend({\n      templateName: 'jobs/show',\n      repositoryBinding: 'controller.repository',\n      jobBinding: 'controller.job',\n      commitBinding: 'job.commit',\n      color: (function() {\n        return Travis.Helpers.colorForResult(this.get('job.result'));\n      }).property('job.result'),\n      urlJob: (function() {\n        return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));\n      }).property('repository.slug', 'job.id'),\n      urlGithubCommit: (function() {\n        return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n      }).property('repository.slug', 'commit.sha'),\n      urlAuthor: (function() {\n        return Travis.Urls.email(this.get('commit.authorEmail'));\n      }).property('commit.authorEmail'),\n      urlCommitter: (function() {\n        return Travis.Urls.email(this.get('commit.committerEmail'));\n      }).property('commit.committerEmail')\n    }),\n    LogView: Travis.View.extend({\n      templateName: 'jobs/log',\n      logBinding: 'job.log',\n      click: function(event) {\n        return $(event.target).closest('.fold').toggleClass('open');\n      },\n      toTop: function() {\n        return $(window).scrollTop(0);\n      },\n      jobBinding: 'context',\n      toggleTailing: function(event) {\n        Travis.app.tailing.toggle();\n        return event.preventDefault();\n      },\n      logSubscriber: (function() {\n        var job, state;\n        job = this.get('job');\n        state = this.get('job.state');\n        if (job && state !== 'finished') {\n          job.subscribe();\n        }\n        return null;\n      }).property('job', 'job.state')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/job");minispade.register('views/left', "(function() {(function() {\n\n  this.Travis.reopen({\n    ReposView: Travis.View.extend({\n      templateName: 'repos/list',\n      tabBinding: 'controller.tab',\n      classRecent: (function() {\n        if (this.get('tab') === 'recent') {\n          return 'active';\n        }\n      }).property('tab'),\n      classOwned: (function() {\n        var classes;\n        classes = [];\n        if (this.get('tab') === 'owned') {\n          classes.push('active');\n        }\n        if (Travis.app.get('currentUser')) {\n          classes.push('display');\n        }\n        return classes.join(' ');\n      }).property('tab', 'Travis.currentUser'),\n      classSearch: (function() {\n        if (this.get('tab') === 'search') {\n          return 'active';\n        }\n      }).property('tab')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/left");minispade.register('views/profile', "(function() {(function() {\n\n  this.Travis.reopen({\n    ProfileView: Travis.View.extend({\n      templateName: 'profile/show',\n      accountBinding: 'controller.account',\n      name: (function() {\n        return this.get('account.name') || this.get('account.login');\n      }).property('account.name', 'account.login')\n    }),\n    ProfileTabsView: Travis.View.extend({\n      templateName: 'profile/tabs',\n      tabBinding: 'controller.tab',\n      activate: function(event) {\n        return this.get('controller').activate(event.target.name);\n      },\n      classHooks: (function() {\n        if (this.get('tab') === 'hooks') {\n          return 'active';\n        }\n      }).property('tab'),\n      classUser: (function() {\n        if (this.get('tab') === 'user') {\n          return 'active';\n        }\n      }).property('tab'),\n      accountBinding: 'controller.account',\n      displayUser: (function() {\n        return this.get('controller.account.login') === this.get('controller.user.login');\n      }).property('controller.account.login', 'controller.user.login')\n    }),\n    HooksView: Travis.View.extend({\n      templateName: 'profile/tabs/hooks',\n      userBinding: 'controller.user',\n      urlGithubAdmin: (function() {\n        return Travis.Urls.githubAdmin(this.get('hook.slug'));\n      }).property('hook.slug')\n    }),\n    UserView: Travis.View.extend({\n      templateName: 'profile/tabs/user',\n      userBinding: 'controller.user',\n      gravatarUrl: (function() {\n        return \"\" + location.protocol + \"//www.gravatar.com/avatar/\" + (this.get('user.gravatarId')) + \"?s=48&d=mm\";\n      }).property('user.gravatarId'),\n      locales: (function() {\n        return [\n          {\n            key: null,\n            name: ''\n          }, {\n            key: 'en',\n            name: 'English'\n          }, {\n            key: 'ca',\n            name: 'Catalan'\n          }, {\n            key: 'cs',\n            name: 'Čeština'\n          }, {\n            key: 'es',\n            name: 'Español'\n          }, {\n            key: 'fr',\n            name: 'Français'\n          }, {\n            key: 'ja',\n            name: '日本語'\n          }, {\n            key: 'nl',\n            name: 'Nederlands'\n          }, {\n            key: 'nb',\n            name: 'Norsk Bokmål'\n          }, {\n            key: 'pl',\n            name: 'Polski'\n          }, {\n            key: {\n              'pt-BR': {\n                name: 'Português brasileiro'\n              }\n            }\n          }, {\n            key: 'ru',\n            name: 'Русский'\n          }\n        ];\n      }).property(),\n      saveLocale: function(event) {\n        return this.get('user').updateLocale($('#locale').val());\n      }\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/profile");minispade.register('views/repo', "(function() {(function() {\nminispade.require('views/repo/list');\nminispade.require('views/repo/show');\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo");minispade.register('views/repo/list', "(function() {(function() {\n\n  this.Travis.reopen({\n    RepositoriesView: Travis.View.extend({\n      templateName: 'repos/list',\n      toggleInfo: function(event) {\n        return $('#repositories').toggleClass('open');\n      }\n    }),\n    RepositoriesListView: Em.CollectionView.extend({\n      elementId: 'repositories',\n      tagName: 'ul',\n      emptyView: Ember.View.extend({\n        template: Ember.Handlebars.compile('<div class=\"loading\"><span>Loading</span></div>')\n      }),\n      itemViewClass: Travis.View.extend({\n        repositoryBinding: 'content',\n        classNames: ['repository'],\n        classNameBindings: ['color', 'selected'],\n        selectedBinding: 'repository.selected',\n        color: (function() {\n          return Travis.Helpers.colorForResult(this.get('repository.lastBuildResult'));\n        }).property('repository.lastBuildResult'),\n        urlRepository: (function() {\n          return Travis.Urls.repository(this.get('repository.slug'));\n        }).property('repository.slug'),\n        urlLastBuild: (function() {\n          return Travis.Urls.build(this.get('repository.slug'), this.get('repository.lastBuildId'));\n        }).property('repository.slug', 'repository.lastBuildId')\n      })\n    }),\n    ReposListTabsView: Travis.View.extend({\n      templateName: 'repos/list/tabs',\n      tabBinding: 'controller.tab',\n      activate: function(event) {\n        return this.get('controller').activate(event.target.name);\n      },\n      classRecent: (function() {\n        if (this.get('tab') === 'recent') {\n          return 'active';\n        }\n      }).property('tab'),\n      classOwned: (function() {\n        var classes;\n        classes = [];\n        if (this.get('tab') === 'owned') {\n          classes.push('active');\n        }\n        if (Travis.app.get('currentUser')) {\n          classes.push('display-inline');\n        }\n        return classes.join(' ');\n      }).property('tab', 'Travis.app.currentUser'),\n      classSearch: (function() {\n        if (this.get('tab') === 'search') {\n          return 'active';\n        }\n      }).property('tab')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo/list");minispade.register('views/repo/show', "(function() {(function() {\n\n  this.Travis.reopen({\n    RepositoryView: Travis.View.extend({\n      templateName: 'repos/show',\n      repositoryBinding: 'controller.repository',\n      \"class\": (function() {\n        if (!this.get('repository.isLoaded')) {\n          return 'loading';\n        }\n      }).property('repository.isLoaded'),\n      urlGithub: (function() {\n        return Travis.Urls.githubRepository(this.get('repository.slug'));\n      }).property('repository.slug'),\n      urlGithubWatchers: (function() {\n        return Travis.Urls.githubWatchers(this.get('repository.slug'));\n      }).property('repository.slug'),\n      urlGithubNetwork: (function() {\n        return Travis.Urls.githubNetwork(this.get('repository.slug'));\n      }).property('repository.slug')\n    }),\n    RepoShowTabsView: Travis.View.extend({\n      templateName: 'repos/show/tabs',\n      repositoryBinding: 'controller.repository',\n      buildBinding: 'controller.build',\n      jobBinding: 'controller.job',\n      tabBinding: 'controller.tab',\n      classCurrent: (function() {\n        if (this.get('tab') === 'current') {\n          return 'active';\n        }\n      }).property('tab'),\n      classBuilds: (function() {\n        if (this.get('tab') === 'builds') {\n          return 'active';\n        }\n      }).property('tab'),\n      classPullRequests: (function() {\n        if (this.get('tab') === 'pull_requests') {\n          return 'active';\n        }\n      }).property('tab'),\n      classBranches: (function() {\n        if (this.get('tab') === 'branches') {\n          return 'active';\n        }\n      }).property('tab'),\n      classBuild: (function() {\n        var classes, tab;\n        tab = this.get('tab');\n        classes = [];\n        if (tab === 'build') {\n          classes.push('active');\n        }\n        if (tab === 'build' || tab === 'job') {\n          classes.push('display-inline');\n        }\n        return classes.join(' ');\n      }).property('tab'),\n      classJob: (function() {\n        if (this.get('tab') === 'job') {\n          return 'active display-inline';\n        }\n      }).property('tab')\n    }),\n    RepoShowToolsView: Travis.View.extend({\n      templateName: 'repos/show/tools',\n      repositoryBinding: 'controller.repository',\n      buildBinding: 'controller.build',\n      jobBinding: 'controller.job',\n      tabBinding: 'controller.tab',\n      toggle: function() {\n        var element;\n        element = $('#tools .pane').toggleClass('display-inline');\n        return this.set('active', element.hasClass('display-inline'));\n      },\n      branches: (function() {\n        if (this.get('active')) {\n          return this.get('repository.branches');\n        }\n      }).property('active', 'repository.branches'),\n      urlRepository: (function() {\n        return 'https://' + location.host + Travis.Urls.repository(this.get('repository.slug'));\n      }).property('repository.slug'),\n      urlStatusImage: (function() {\n        return Travis.Urls.statusImage(this.get('repository.slug'), this.get('branch.commit.branch'));\n      }).property('repository.slug', 'branch'),\n      markdownStatusImage: (function() {\n        return \"[![Build Status](\" + (this.get('urlStatusImage')) + \")](\" + (this.get('urlRepository')) + \")\";\n      }).property('urlStatusImage'),\n      textileStatusImage: (function() {\n        return \"!\" + (this.get('urlStatusImage')) + \"!:\" + (this.get('urlRepository'));\n      }).property('urlStatusImage'),\n      rdocStatusImage: (function() {\n        return \"{<img src=\\\"\" + (this.get('urlStatusImage')) + \"\\\" alt=\\\"Build Status\\\" />}[\" + (this.get('urlRepository')) + \"]\";\n      }).property('urlStatusImage')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo/show");minispade.register('views/sidebar', "(function() {(function() {\n\n  this.Travis.reopen({\n    SidebarView: Travis.View.extend({\n      templateName: 'layouts/sidebar',\n      DecksView: Em.View.extend({\n        templateName: \"sponsors/decks\",\n        controller: Travis.SponsorsController.create({\n          perPage: 1\n        }),\n        didInsertElement: function() {\n          var controller;\n          controller = this.get('controller');\n          if (!controller.get('content')) {\n            Travis.app.get('router.sidebarController').tickables.push(controller);\n            controller.set('content', Travis.Sponsor.decks());\n          }\n          return this._super.apply(this, arguments);\n        }\n      }),\n      LinksView: Em.View.extend({\n        templateName: \"sponsors/links\",\n        controller: Travis.SponsorsController.create({\n          perPage: 6\n        }),\n        didInsertElement: function() {\n          var controller;\n          controller = this.get('controller');\n          if (!controller.get('content')) {\n            controller.set('content', Travis.Sponsor.links());\n            Travis.app.get('router.sidebarController').tickables.push(controller);\n          }\n          return this._super.apply(this, arguments);\n        }\n      }),\n      WorkersView: Em.View.extend({\n        templateName: 'workers/list',\n        controller: Travis.WorkersController.create(),\n        didInsertElement: function() {\n          this.set('controller.content', Travis.Worker.find());\n          return this._super.apply(this, arguments);\n        }\n      }),\n      QueuesView: Em.View.extend({\n        templateName: 'queues/list',\n        controller: Travis.QueuesController.create(),\n        didInsertElement: function() {\n          var queue, queues;\n          queues = (function() {\n            var _i, _len, _ref, _results;\n            _ref = Travis.QUEUES;\n            _results = [];\n            for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n              queue = _ref[_i];\n              _results.push(Em.ArrayController.create({\n                content: Travis.Job.queued(queue.name),\n                id: \"queue_\" + queue.name,\n                name: queue.display\n              }));\n            }\n            return _results;\n          })();\n          this.set('controller.content', queues);\n          return this._super.apply(this, arguments);\n        }\n      })\n    }),\n    WorkersView: Travis.View.extend({\n      toggleWorkers: function(event) {\n        var handle;\n        handle = $(event.target).toggleClass('open');\n        if (handle.hasClass('open')) {\n          return $('#workers li').addClass('open');\n        } else {\n          return $('#workers li').removeClass('open');\n        }\n      }\n    }),\n    WorkersListView: Travis.View.extend({\n      toggle: function(event) {\n        return $(event.target).closest('li').toggleClass('open');\n      }\n    }),\n    WorkersItemView: Travis.View.extend({\n      display: (function() {\n        var name, number, payload, repo, state;\n        name = (this.get('worker.name') || '').replace('travis-', '');\n        state = this.get('worker.state');\n        payload = this.get('worker.payload');\n        if (state === 'working' && payload !== void 0) {\n          repo = payload.repository.slug;\n          number = ' #' + payload.build.number;\n          return (\"<span class='name'>\" + name + \": \" + repo + \"</span> \" + number).htmlSafe();\n        } else {\n          return \"\" + name + \": \" + state;\n        }\n      }).property('worker.state')\n    }),\n    QueueItemView: Travis.View.extend({\n      tagName: 'li',\n      urlJob: (function() {\n        return Travis.Urls.job(this.get('job.repository.slug'), this.get('job.id'));\n      }).property('job.repository.slug', 'job.id')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/sidebar");minispade.register('views/stats', "(function() {(function() {\n\n  this.Travis.reopen({\n    StatsView: Travis.View.extend({\n      templateName: 'stats/show',\n      didInsertElement: function() {},\n      renderChart: function(config) {\n        var chart;\n        chart = new Highcharts.Chart(config);\n        return this.fetch(config.source, function(data) {\n          var stats;\n          stats = (function() {\n            var _i, _len, _ref, _results;\n            _ref = data.stats;\n            _results = [];\n            for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n              stats = _ref[_i];\n              _results.push(config.map(stats));\n            }\n            return _results;\n          })();\n          return chart.series[0].setData(stats);\n        });\n      },\n      fetch: function(url, callback) {\n        return $.ajax({\n          type: 'GET',\n          url: url,\n          accepts: {\n            json: 'application/vnd.travis-ci.2+json'\n          },\n          success: callback\n        });\n      },\n      CHARTS: {\n        repos: {\n          source: '/api/stats/repos',\n          total: 0,\n          map: function(data) {\n            return [Date.parse(data.date), this.total += parseInt(data.count)];\n          },\n          chart: {\n            renderTo: \"repos_stats\"\n          },\n          title: {\n            text: \"Total Projects/Repositories\"\n          },\n          xAxis: {\n            type: \"datetime\",\n            dateTimeLabelFormats: {\n              month: \"%e. %b\",\n              year: \"%b\"\n            }\n          },\n          yAxis: {\n            title: {\n              text: \"Count\"\n            },\n            min: 0\n          },\n          tooltip: {\n            formatter: function() {\n              return Highcharts.dateFormat(\"%e. %b\", this.x) + \": \" + this.y + \" repos\";\n            }\n          },\n          series: [\n            {\n              name: \"Repository Growth\",\n              data: []\n            }\n          ]\n        },\n        builds: {\n          source: '/api/stats/tests',\n          map: function(data) {\n            return [Date.parse(data.date), parseInt(data.count)];\n          },\n          chart: {\n            renderTo: \"tests_stats\",\n            type: \"column\"\n          },\n          title: {\n            text: \"Build Count\"\n          },\n          subtitle: {\n            text: \"last month\"\n          },\n          xAxis: {\n            type: \"datetime\",\n            dateTimeLabelFormats: {\n              month: \"%e. %b\",\n              year: \"%b\"\n            }\n          },\n          yAxis: {\n            title: {\n              text: \"Count\"\n            },\n            min: 0\n          },\n          tooltip: {\n            formatter: function() {\n              return Highcharts.dateFormat(\"%e. %b\", this.x) + \": \" + this.y + \" builds\";\n            }\n          },\n          series: [\n            {\n              name: \"Total Builds\",\n              data: []\n            }\n          ]\n        }\n      }\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/stats");minispade.register('views/top', "(function() {(function() {\n\n  this.Travis.reopen({\n    TopView: Travis.View.extend({\n      templateName: 'layouts/top',\n      tabBinding: 'controller.tab',\n      userBinding: 'controller.user',\n      gravatarUrl: (function() {\n        return \"\" + location.protocol + \"//www.gravatar.com/avatar/\" + (this.get('user.gravatarId')) + \"?s=24&d=mm\";\n      }).property('user.gravatarId'),\n      classHome: (function() {\n        if (this.get('tab') === 'home') {\n          return 'active';\n        }\n      }).property('tab'),\n      classStats: (function() {\n        if (this.get('tab') === 'stats') {\n          return 'active';\n        }\n      }).property('tab'),\n      classProfile: (function() {\n        var classes;\n        classes = ['profile'];\n        if (this.get('tab') === 'profile') {\n          classes.push('active');\n        }\n        classes.push(Travis.app.get('authState'));\n        return classes.join(' ');\n      }).property('tab', 'Travis.app.authState'),\n      showProfile: function() {\n        return $('#top .profile ul').show();\n      },\n      hideProfile: function() {\n        return $('#top .profile ul').hide();\n      }\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/top");minispade.register('data/sponsors', "(function() {(function() {\n\n  this.Travis.SPONSORS = [\n    {\n      type: 'platinum',\n      url: \"http://www.wooga.com\",\n      image: \"wooga-205x130.png\"\n    }, {\n      type: 'platinum',\n      url: \"http://bendyworks.com\",\n      image: \"bendyworks-205x130.png\"\n    }, {\n      type: 'platinum',\n      url: \"http://cloudcontrol.com\",\n      image: \"cloudcontrol-205x130.png\"\n    }, {\n      type: 'platinum',\n      url: \"http://xing.de\",\n      image: \"xing-205x130.png\"\n    }, {\n      type: 'gold',\n      url: \"http://heroku.com\",\n      image: \"heroku-205x60.png\"\n    }, {\n      type: 'gold',\n      url: \"http://soundcloud.com\",\n      image: \"soundcloud-205x60.png\"\n    }, {\n      type: 'gold',\n      url: \"http://nedap.com\",\n      image: \"nedap-205x60.png\"\n    }, {\n      type: 'gold',\n      url: \"http://mongohq.com\",\n      image: \"mongohq-205x60.png\"\n    }, {\n      type: 'gold',\n      url: \"http://zweitag.de\",\n      image: \"zweitag-205x60.png\"\n    }, {\n      type: 'gold',\n      url: \"http://kanbanery.com\",\n      image: \"kanbanery-205x60.png\"\n    }, {\n      type: 'gold',\n      url: \"http://ticketevolution.com\",\n      image: \"ticketevolution-205x60.jpg\"\n    }, {\n      type: 'gold',\n      url: \"http://plan.io/travis\",\n      image: \"planio-205x60.png\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://cobot.me\\\">Cobot</a><span>: The one tool to run your coworking space</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://jumpstartlab.com\\\">JumpstartLab</a><span>: We build developers</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://evilmartians.com\\\">Evil Martians</a><span>: Agile Ruby on Rails development</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://zendesk.com\\\">Zendesk</a><span>: Love your helpdesk</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://stripe.com\\\">Stripe</a><span>: Payments for developers</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://basho.com\\\">Basho</a><span>: We make Riak!</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://thinkrelevance.com\\\">Relevance</a><span>: We deliver software solutions</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://mindmatters.de\\\">Mindmatters</a><span>: Software für Menschen</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://amenhq.com\\\">Amen</a><span>: The best and worst of everything</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://site5.com\\\">Site5</a><span>: Premium Web Hosting Solutions</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://www.crowdint.com\\\">Crowd Interactive</a><span>: Leading Rails consultancy in Mexico</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://www.atomicobject.com/detroit\\\">Atomic Object</a><span>: Work with really smart people</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://codeminer.com.br\\\">Codeminer</a><span>: smart services for your startup</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://cloudant.com\\\">Cloudant</a><span>: grow into your data layer, not out of it</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://gidsy.com\\\">Gidsy</a><span>: Explore, organize &amp; book unique things to do!</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://5apps.com\\\">5apps</a><span>: Package &amp; deploy HTML5 apps automatically</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://meltmedia.com\\\">Meltmedia</a><span>: We are Interactive Superheroes</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://www.fngtps.com\\\">Fingertips</a><span> offers design and development services</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://www.engineyard.com\\\">Engine Yard</a><span>: Build epic apps, let us handle the rest</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://malwarebytes.org\\\">Malwarebytes</a><span>: Defeat Malware once and for all.</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://readmill.com\\\">Readmill</a><span>: The best reading app on the iPad.</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://www.mdsol.com\\\">Medidata</a><span>: clinical tech improving quality of life</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://coderwall.com/teams/4f27194e973bf000040005f0\\\">ESM</a><span>: Japan's best agile Ruby/Rails consultancy</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://twitter.com\\\">Twitter</a><span>: instantly connects people everywhere</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://agileanimal.com\\\">AGiLE ANiMAL</a><span>: we <3 Travis CI.</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://tupalo.com\\\">Tupalo</a><span>: Discover, review &amp; share local businesses.</span>\"\n    }\n  ];\n\n}).call(this);\n\n})();\n//@ sourceURL=data/sponsors");minispade.register('emoij', "(function() {(function() {\n\n  this.EmojiDictionary = ['-1', '0', '1', '109', '2', '3', '4', '5', '6', '7', '8', '8ball', '9', 'a', 'ab', 'airplane', 'alien', 'ambulance', 'angel', 'anger', 'angry', 'apple', 'aquarius', 'aries', 'arrow_backward', 'arrow_down', 'arrow_forward', 'arrow_left', 'arrow_lower_left', 'arrow_lower_right', 'arrow_right', 'arrow_up', 'arrow_upper_left', 'arrow_upper_right', 'art', 'astonished', 'atm', 'b', 'baby', 'baby_chick', 'baby_symbol', 'balloon', 'bamboo', 'bank', 'barber', 'baseball', 'basketball', 'bath', 'bear', 'beer', 'beers', 'beginner', 'bell', 'bento', 'bike', 'bikini', 'bird', 'birthday', 'black_square', 'blue_car', 'blue_heart', 'blush', 'boar', 'boat', 'bomb', 'book', 'boot', 'bouquet', 'bow', 'bowtie', 'boy', 'bread', 'briefcase', 'broken_heart', 'bug', 'bulb', 'bullettrain_front', 'bullettrain_side', 'bus', 'busstop', 'cactus', 'cake', 'calling', 'camel', 'camera', 'cancer', 'capricorn', 'car', 'cat', 'cd', 'chart', 'checkered_flag', 'cherry_blossom', 'chicken', 'christmas_tree', 'church', 'cinema', 'city_sunrise', 'city_sunset', 'clap', 'clapper', 'clock1', 'clock10', 'clock11', 'clock12', 'clock2', 'clock3', 'clock4', 'clock5', 'clock6', 'clock7', 'clock8', 'clock9', 'closed_umbrella', 'cloud', 'clubs', 'cn', 'cocktail', 'coffee', 'cold_sweat', 'computer', 'confounded', 'congratulations', 'construction', 'construction_worker', 'convenience_store', 'cool', 'cop', 'copyright', 'couple', 'couple_with_heart', 'couplekiss', 'cow', 'crossed_flags', 'crown', 'cry', 'cupid', 'currency_exchange', 'curry', 'cyclone', 'dancer', 'dancers', 'dango', 'dart', 'dash', 'de', 'department_store', 'diamonds', 'disappointed', 'dog', 'dolls', 'dolphin', 'dress', 'dvd', 'ear', 'ear_of_rice', 'egg', 'eggplant', 'egplant', 'eight_pointed_black_star', 'eight_spoked_asterisk', 'elephant', 'email', 'es', 'european_castle', 'exclamation', 'eyes', 'factory', 'fallen_leaf', 'fast_forward', 'fax', 'fearful', 'feelsgood', 'feet', 'ferris_wheel', 'finnadie', 'fire', 'fire_engine', 'fireworks', 'fish', 'fist', 'flags', 'flushed', 'football', 'fork_and_knife', 'fountain', 'four_leaf_clover', 'fr', 'fries', 'frog', 'fuelpump', 'gb', 'gem', 'gemini', 'ghost', 'gift', 'gift_heart', 'girl', 'goberserk', 'godmode', 'golf', 'green_heart', 'grey_exclamation', 'grey_question', 'grin', 'guardsman', 'guitar', 'gun', 'haircut', 'hamburger', 'hammer', 'hamster', 'hand', 'handbag', 'hankey', 'hash', 'headphones', 'heart', 'heart_decoration', 'heart_eyes', 'heartbeat', 'heartpulse', 'hearts', 'hibiscus', 'high_heel', 'horse', 'hospital', 'hotel', 'hotsprings', 'house', 'hurtrealbad', 'icecream', 'id', 'ideograph_advantage', 'imp', 'information_desk_person', 'iphone', 'it', 'jack_o_lantern', 'japanese_castle', 'joy', 'jp', 'key', 'kimono', 'kiss', 'kissing_face', 'kissing_heart', 'koala', 'koko', 'kr', 'leaves', 'leo', 'libra', 'lips', 'lipstick', 'lock', 'loop', 'loudspeaker', 'love_hotel', 'mag', 'mahjong', 'mailbox', 'man', 'man_with_gua_pi_mao', 'man_with_turban', 'maple_leaf', 'mask', 'massage', 'mega', 'memo', 'mens', 'metal', 'metro', 'microphone', 'minidisc', 'mobile_phone_off', 'moneybag', 'monkey', 'monkey_face', 'moon', 'mortar_board', 'mount_fuji', 'mouse', 'movie_camera', 'muscle', 'musical_note', 'nail_care', 'necktie', 'new', 'no_good', 'no_smoking', 'nose', 'notes', 'o', 'o2', 'ocean', 'octocat', 'octopus', 'oden', 'office', 'ok', 'ok_hand', 'ok_woman', 'older_man', 'older_woman', 'open_hands', 'ophiuchus', 'palm_tree', 'parking', 'part_alternation_mark', 'pencil', 'penguin', 'pensive', 'persevere', 'person_with_blond_hair', 'phone', 'pig', 'pill', 'pisces', 'plus1', 'point_down', 'point_left', 'point_right', 'point_up', 'point_up_2', 'police_car', 'poop', 'post_office', 'postbox', 'pray', 'princess', 'punch', 'purple_heart', 'question', 'rabbit', 'racehorse', 'radio', 'rage', 'rage1', 'rage2', 'rage3', 'rage4', 'rainbow', 'raised_hands', 'ramen', 'red_car', 'red_circle', 'registered', 'relaxed', 'relieved', 'restroom', 'rewind', 'ribbon', 'rice', 'rice_ball', 'rice_cracker', 'rice_scene', 'ring', 'rocket', 'roller_coaster', 'rose', 'ru', 'runner', 'sa', 'sagittarius', 'sailboat', 'sake', 'sandal', 'santa', 'satellite', 'satisfied', 'saxophone', 'school', 'school_satchel', 'scissors', 'scorpius', 'scream', 'seat', 'secret', 'shaved_ice', 'sheep', 'shell', 'ship', 'shipit', 'shirt', 'shit', 'shoe', 'signal_strength', 'six_pointed_star', 'ski', 'skull', 'sleepy', 'slot_machine', 'smile', 'smiley', 'smirk', 'smoking', 'snake', 'snowman', 'sob', 'soccer', 'space_invader', 'spades', 'spaghetti', 'sparkler', 'sparkles', 'speaker', 'speedboat', 'squirrel', 'star', 'star2', 'stars', 'station', 'statue_of_liberty', 'stew', 'strawberry', 'sunflower', 'sunny', 'sunrise', 'sunrise_over_mountains', 'surfer', 'sushi', 'suspect', 'sweat', 'sweat_drops', 'swimmer', 'syringe', 'tada', 'tangerine', 'taurus', 'taxi', 'tea', 'telephone', 'tennis', 'tent', 'thumbsdown', 'thumbsup', 'ticket', 'tiger', 'tm', 'toilet', 'tokyo_tower', 'tomato', 'tongue', 'top', 'tophat', 'traffic_light', 'train', 'trident', 'trophy', 'tropical_fish', 'truck', 'trumpet', 'tshirt', 'tulip', 'tv', 'u5272', 'u55b6', 'u6307', 'u6708', 'u6709', 'u6e80', 'u7121', 'u7533', 'u7a7a', 'umbrella', 'unamused', 'underage', 'unlock', 'up', 'us', 'v', 'vhs', 'vibration_mode', 'virgo', 'vs', 'walking', 'warning', 'watermelon', 'wave', 'wc', 'wedding', 'whale', 'wheelchair', 'white_square', 'wind_chime', 'wink', 'wink2', 'wolf', 'woman', 'womans_hat', 'womens', 'x', 'yellow_heart', 'zap', 'zzz'];\n\n}).call(this);\n\n})();\n//@ sourceURL=emoij");minispade.register('ext/jquery', "(function() {(function() {\n\n  $.fn.extend({\n    outerHtml: function() {\n      return $(this).wrap('<div></div>').parent().html();\n    },\n    outerElement: function() {\n      return $($(this).outerHtml()).empty();\n    },\n    flash: function() {\n      return Utils.flash(this);\n    },\n    unflash: function() {\n      return Utils.unflash(this);\n    },\n    filterLog: function() {\n      this.deansi();\n      return this.foldLog();\n    },\n    deansi: function() {\n      return this.html(Utils.deansi(this.html()));\n    },\n    foldLog: function() {\n      return this.html(Utils.foldLog(this.html()));\n    },\n    unfoldLog: function() {\n      return this.html(Utils.unfoldLog(this.html()));\n    },\n    updateTimes: function() {\n      return Utils.updateTimes(this);\n    },\n    activateTab: function(tab) {\n      return Utils.activateTab(this, tab);\n    },\n    timeInWords: function() {\n      return $(this).each(function() {\n        return $(this).text(Utils.timeInWords(parseInt($(this).attr('title'))));\n      });\n    },\n    updateGithubStats: function(repository) {\n      return Utils.updateGithubStats(repository, $(this));\n    }\n  });\n\n  $.extend({\n    isEmpty: function(obj) {\n      if ($.isArray(obj)) {\n        return !obj.length;\n      } else if ($.isObject(obj)) {\n        return !$.keys(obj).length;\n      } else {\n        return !obj;\n      }\n    },\n    isObject: function(obj) {\n      return Object.prototype.toString.call(obj) === '[object Object]';\n    },\n    keys: function(obj) {\n      var keys;\n      keys = [];\n      $.each(obj, function(key) {\n        return keys.push(key);\n      });\n      return keys;\n    },\n    values: function(obj) {\n      var values;\n      values = [];\n      $.each(obj, function(key, value) {\n        return values.push(value);\n      });\n      return values;\n    },\n    underscore: function(string) {\n      return string[0].toLowerCase() + string.substring(1).replace(/([A-Z])?/g, function(match, chr) {\n        if (chr) {\n          return \"_\" + (chr.toUpperCase());\n        } else {\n          return '';\n        }\n      });\n    },\n    camelize: function(string, uppercase) {\n      string = uppercase === false ? $.underscore(string) : $.capitalize(string);\n      return string.replace(/_(.)?/g, function(match, chr) {\n        if (chr) {\n          return chr.toUpperCase();\n        } else {\n          return '';\n        }\n      });\n    },\n    capitalize: function(string) {\n      return string[0].toUpperCase() + string.substring(1);\n    },\n    compact: function(object) {\n      return $.grep(object, function(value) {\n        return !!value;\n      });\n    },\n    all: function(array, callback) {\n      var args, i;\n      args = Array.prototype.slice.apply(arguments);\n      callback = args.pop();\n      array = args.pop() || this;\n      i = 0;\n      while (i < array.length) {\n        if (callback(array[i])) {\n          return false;\n        }\n        i++;\n      }\n      return true;\n    },\n    detect: function(array, callback) {\n      var args, i;\n      args = Array.prototype.slice.apply(arguments);\n      callback = args.pop();\n      array = args.pop() || this;\n      i = 0;\n      while (i < array.length) {\n        if (callback(array[i])) {\n          return array[i];\n        }\n        i++;\n      }\n    },\n    select: function(array, callback) {\n      var args, i, result;\n      args = Array.prototype.slice.apply(arguments);\n      callback = args.pop();\n      array = args.pop() || this;\n      result = [];\n      i = 0;\n      while (i < array.length) {\n        if (callback(array[i])) {\n          result.push(array[i]);\n        }\n        i++;\n      }\n      return result;\n    },\n    slice: function(object, key) {\n      var keys, result;\n      keys = Array.prototype.slice.apply(arguments);\n      object = (typeof keys[0] === 'object' ? keys.shift() : this);\n      result = {};\n      for (key in object) {\n        if (keys.indexOf(key) > -1) {\n          result[key] = object[key];\n        }\n      }\n      return result;\n    },\n    only: function(object) {\n      var key, keys, result;\n      keys = Array.prototype.slice.apply(arguments);\n      object = (typeof keys[0] === 'object' ? keys.shift() : this);\n      result = {};\n      for (key in object) {\n        if (keys.indexOf(key) !== -1) {\n          result[key] = object[key];\n        }\n      }\n      return result;\n    },\n    except: function(object) {\n      var key, keys, result;\n      keys = Array.prototype.slice.apply(arguments);\n      object = (typeof keys[0] === 'object' ? keys.shift() : this);\n      result = {};\n      for (key in object) {\n        if (keys.indexOf(key) === -1) {\n          result[key] = object[key];\n        }\n      }\n      return result;\n    },\n    intersect: function(array, other) {\n      return array.filter(function(element) {\n        return other.indexOf(element) !== -1;\n      });\n    },\n    map: function(elems, callback, arg) {\n      var i, isArray, key, length, ret, value;\n      value = void 0;\n      key = void 0;\n      ret = [];\n      i = 0;\n      length = elems.length;\n      isArray = elems instanceof jQuery || length !== void 0 && typeof length === 'number' && (length > 0 && elems[0] && elems[length - 1]) || length === 0 || jQuery.isArray(elems);\n      if (isArray) {\n        while (i < length) {\n          value = callback(elems[i], i, arg);\n          if (value != null) {\n            ret[ret.length] = value;\n          }\n          i++;\n        }\n      } else {\n        for (key in elems) {\n          value = callback(elems[key], key, arg);\n          if (value != null) {\n            ret[ret.length] = value;\n          }\n        }\n      }\n      return ret.concat.apply([], ret);\n    },\n    shuffle: function(array) {\n      var current, tmp, top;\n      array = array.slice();\n      top = array.length;\n      while (top && --top) {\n        current = Math.floor(Math.random() * (top + 1));\n        tmp = array[current];\n        array[current] = array[top];\n        array[top] = tmp;\n      }\n      return array;\n    },\n    truncate: function(string, length) {\n      if (string.length > length) {\n        return string.trim().substring(0, length) + '...';\n      } else {\n        return string;\n      }\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=ext/jquery");minispade.register('travis/ajax', "(function() {(function() {\n\n  jQuery.support.cors = true;\n\n  this.Travis.Ajax = Ember.Mixin.create({\n    DEFAULT_OPTIONS: {\n      accepts: {\n        json: 'application/vnd.travis-ci.2+json'\n      }\n    },\n    post: function(url, data, callback) {\n      return this.ajax(url, 'post', {\n        data: data,\n        success: callback\n      });\n    },\n    ajax: function(url, method, options) {\n      var accessToken, endpoint, _base, _ref;\n      endpoint = Travis.config.api_endpoint || '';\n      options = options || {};\n      if (accessToken = (_ref = Travis.app) != null ? _ref.get('auth.accessToken') : void 0) {\n        options.headers || (options.headers = {});\n        (_base = options.headers)['Authorization'] || (_base['Authorization'] = \"token \" + accessToken);\n      }\n      options.url = \"\" + endpoint + url;\n      options.type = method;\n      options.dataType = 'json';\n      options.contentType = 'application/json; charset=utf-8';\n      options.context = this;\n      if (options.data && method !== 'GET' && method !== 'get') {\n        options.data = JSON.stringify(options.data);\n      }\n      return $.ajax($.extend(options, this.DEFAULT_OPTIONS));\n    }\n  });\n\n  this.Travis.Ajax.instance = Em.Object.create(this.Travis.Ajax);\n\n  $.extend(this.Travis, {\n    get: function(url, callback) {\n      return this.ajax(url, 'get', {\n        success: callback\n      });\n    },\n    post: function(url, data, callback) {\n      return this.Ajax.instance.post(url, data, callback);\n    },\n    ajax: function(url, method, options) {\n      return this.Ajax.instance.ajax(url, method, options);\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ajax");minispade.register('travis/log', "(function() {(function() {\n\n  this.Travis.Log = {\n    FOLDS: {\n      schema: /(<p.*?\\/a>\\$ (?:bundle exec )?rake( db:create)? db:schema:load[\\s\\S]*?<p.*?\\/a>-- assume_migrated_upto_version[\\s\\S]*?<\\/p>\\n<p.*?\\/a>.*<\\/p>)/g,\n      migrate: /(<p.*?\\/a>\\$ (?:bundle exec )?rake( db:create)? db:migrate[\\s\\S]*== +\\w+: migrated \\(.*\\) =+)/g,\n      bundle: /(<p.*?\\/a>\\$ bundle install.*<\\/p>\\n(<p.*?\\/a>(Updating|Using|Installing|Fetching|remote:|Receiving|Resolving).*?<\\/p>\\n|<p.*?\\/a><\\/p>\\n)*)/g,\n      exec: /(<p.*?\\/a>[\\/\\w]*.rvm\\/rubies\\/[\\S]*?\\/(ruby|rbx|jruby) .*?<\\/p>)/g\n    },\n    filter: function(log) {\n      log = this.escape(log);\n      log = this.deansi(log);\n      log = log.replace(/\\r/g, '');\n      log = this.number(log);\n      log = this.fold(log);\n      log = log.replace(/\\n/g, '');\n      return log;\n    },\n    stripPaths: function(log) {\n      return log.replace(/\\/home\\/vagrant\\/builds(\\/[^\\/\\n]+){2}\\//g, '');\n    },\n    escape: function(log) {\n      return Handlebars.Utils.escapeExpression(log);\n    },\n    escapeRuby: function(log) {\n      return log.replace(/#<(\\w+.*?)>/, '#&lt;$1&gt;');\n    },\n    number: function(log) {\n      var result;\n      result = '';\n      $.each(log.trim().split('\\n'), function(ix, line) {\n        var number, path;\n        number = ix + 1;\n        path = Travis.Log.location().substr(1).replace(/\\/L\\d+/, '') + '/L' + number;\n        return result += '<p><a href=\\'#%@\\' id=\\'%@\\' name=\\'L%@\\'>%@</a>%@</p>\\n'.fmt(path, path, number, number, line);\n      });\n      return result.trim();\n    },\n    deansi: function(log) {\n      var ansi, text;\n      log = log.replace(/\\r\\r/g, '\\r').replace(/\\033\\[K\\r/g, '\\r').replace(/^.*\\r(?!$)/gm, '').replace(/\u001b\\[2K/g, '').replace(/\\033\\(B/g, \"\");\n      ansi = ansiparse(log);\n      text = '';\n      ansi.forEach(function(part) {\n        var classes;\n        classes = [];\n        part.foreground && classes.push(part.foreground);\n        part.background && classes.push('bg-' + part.background);\n        part.bold && classes.push('bold');\n        part.italic && classes.push('italic');\n        return text += (classes.length ? '<span class=\\'' + classes.join(' ') + '\\'>' + part.text + '</span>' : part.text);\n      });\n      return text.replace(/\\033/g, '');\n    },\n    fold: function(log) {\n      log = this.unfold(log);\n      $.each(Travis.Log.FOLDS, function(name, pattern) {\n        return log = log.replace(pattern, function() {\n          return '<div class=\\'fold ' + name + '\\'>' + arguments[1].trim() + '</div>';\n        });\n      });\n      return log;\n    },\n    unfold: function(log) {\n      return log.replace(/<div class='fold[^']*'>([\\s\\S]*?)<\\/div>/g, '$1\\n');\n    },\n    location: function() {\n      return window.location.hash;\n    }\n  };\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/log");minispade.register('travis/model', "(function() {(function() {\n\n  this.Travis.Model = DS.Model.extend({\n    primaryKey: 'id',\n    id: DS.attr('number'),\n    refresh: function() {\n      var id;\n      id = this.get('id');\n      if (id) {\n        return Travis.app.store.adapter.find(Travis.app.store, this.constructor, id);\n      }\n    },\n    update: function(attrs) {\n      var _this = this;\n      $.each(attrs, function(key, value) {\n        if (key !== 'id') {\n          return _this.set(key, value);\n        }\n      });\n      return this;\n    }\n  });\n\n  this.Travis.Model.reopenClass({\n    find: function() {\n      if (arguments.length === 0) {\n        return Travis.app.store.findAll(this);\n      } else {\n        return this._super.apply(this, arguments);\n      }\n    },\n    filter: function(callback) {\n      return Travis.app.store.filter(this, callback);\n    },\n    load: function(attrs) {\n      return Travis.app.store.load(this, attrs);\n    },\n    buildURL: function(suffix) {\n      var base, url;\n      base = this.url || this.pluralName();\n      Ember.assert('Base URL (' + base + ') must not start with slash', !base || base.toString().charAt(0) !== '/');\n      Ember.assert('URL suffix (' + suffix + ') must not start with slash', !suffix || suffix.toString().charAt(0) !== '/');\n      url = [base];\n      if (suffix !== void 0) {\n        url.push(suffix);\n      }\n      return url.join('/');\n    },\n    singularName: function() {\n      var name, parts;\n      parts = this.toString().split('.');\n      name = parts[parts.length - 1];\n      return name.replace(/([A-Z])/g, '_$1').toLowerCase().slice(1);\n    },\n    pluralName: function() {\n      return Travis.app.store.adapter.pluralize(this.singularName());\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/model");minispade.register('travis/ticker', "(function() {(function() {\n\n  this.Travis.Ticker = Ember.Object.extend({\n    init: function() {\n      if (this.get('interval') !== -1) {\n        return this.schedule();\n      }\n    },\n    tick: function() {\n      var context, target, targets, _i, _len;\n      context = this.get('context');\n      targets = this.get('targets') || [this.get('target')];\n      for (_i = 0, _len = targets.length; _i < _len; _i++) {\n        target = targets[_i];\n        if (context) {\n          target = context.get(target);\n        }\n        if (target) {\n          target.tick();\n        }\n      }\n      return this.schedule();\n    },\n    schedule: function() {\n      var _this = this;\n      return Ember.run.later((function() {\n        return _this.tick();\n      }), this.get('interval') || Travis.app.TICK_INTERVAL);\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ticker");minispade.register('travis', "(function() {(function() {\nminispade.require('ext/jquery');\nminispade.require('ext/ember/namespace');\n\n  this.Travis = Em.Namespace.create({\n    config: {\n      api_endpoint: $('meta[rel=\"travis.api_endpoint\"]').attr('href')\n    },\n    CONFIG_KEYS: ['rvm', 'gemfile', 'env', 'jdk', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala'],\n    ROUTES: {\n      'profile/:login/me': ['profile', 'user'],\n      'profile/:login': ['profile', 'hooks'],\n      'profile': ['profile', 'hooks'],\n      'stats': ['stats', 'show'],\n      ':owner/:name/jobs/:id/:line': ['home', 'job'],\n      ':owner/:name/jobs/:id': ['home', 'job'],\n      ':owner/:name/builds/:id': ['home', 'build'],\n      ':owner/:name/builds': ['home', 'builds'],\n      ':owner/:name/pull_requests': ['home', 'pullRequests'],\n      ':owner/:name/branches': ['home', 'branches'],\n      ':owner/:name': ['home', 'current'],\n      '': ['home', 'index'],\n      '#': ['home', 'index']\n    },\n    QUEUES: [\n      {\n        name: 'common',\n        display: 'Common'\n      }, {\n        name: 'php',\n        display: 'PHP, Perl and Python'\n      }, {\n        name: 'node_js',\n        display: 'Node.js'\n      }, {\n        name: 'jvmotp',\n        display: 'JVM and Erlang'\n      }, {\n        name: 'rails',\n        display: 'Rails'\n      }, {\n        name: 'spree',\n        display: 'Spree'\n      }\n    ],\n    INTERVALS: {\n      sponsors: -1,\n      times: -1,\n      updateTimes: 1000\n    },\n    run: function(attrs) {\n      var _this = this;\n      return $(function() {\n        _this.redirectOnHashbang();\n        return _this.loadConfig(function(config) {\n          var app;\n          app = Travis.App.create(attrs || {});\n          $.each(Travis, function(key, value) {\n            if (value && value.isClass && key !== 'constructor') {\n              return app[key] = value;\n            }\n          });\n          _this.app = app;\n          _this.store = app.store;\n          return app.initialize();\n        });\n      });\n    },\n    redirectOnHashbang: function() {\n      if (location.hash.slice(0, 2) === '#!') {\n        return location.href = location.href.replace('#!/', '');\n      }\n    },\n    loadConfig: function(callback) {\n      var _this = this;\n      return this.get('/config', function(data) {\n        $.extend(_this.config, data.config);\n        console.log(\"Connecting to \" + data.config.api_endpoint);\n        return callback(data.config);\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis");minispade.register('templates', "(function() {\nEmber.TEMPLATES['application'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression;\n\n\n  stack1 = helpers._triageMustache.call(depth0, \"outlet\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['builds/list'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n  <table id=\\\"builds\\\" class=\\\"list\\\">\\n    <thead>\\n      <tr>\\n        <th>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.name\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.name\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</th>\\n        <th>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.commit\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</th>\\n        <th>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.message\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</th>\\n        <th>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</th>\\n        <th>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.finished_at\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</th>\\n      </tr>\\n    </thead>\\n\\n    <tbody>\\n      \");\n  stack1 = helpers.each.call(depth0, \"build\", \"in\", \"builds\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </tbody>\\n  </table>\\n  <p>\\n    <button \");\n  stack1 = {};\n  stack1['on'] = \"click\";\n  stack1['target'] = \"this\";\n  stack1['isVisibleBinding'] = \"hasMore\";\n  stack1 = helpers.action.call(depth0, \"showMore\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n      \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.show_more\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.show_more\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n    </button>\\n  </p>\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        \");\n  stack1 = {};\n  stack1['contextBinding'] = \"build\";\n  stack1 = helpers.view.call(depth0, \"Travis.BuildsItemView\", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n      \");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n          <td class=\\\"number\\\">\\n            <span class=\\\"status\\\"></span>\\n            \");\n  stack1 = helpers['if'].call(depth0, \"id\", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          </td>\\n          <td class=\\\"commit\\\">\\n            <a \");\n  stack1 = {};\n  stack1['href'] = \"view.urlGithubCommit\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n              \");\n  foundHelper = helpers.formatCommit;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatCommit\", \"commit\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n            </a>\\n          </td>\\n          <td class=\\\"message\\\">\\n            \");\n  stack1 = {};\n  stack1['short'] = \"true\";\n  foundHelper = helpers.formatMessage;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"commit.message\", {hash:stack1,contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatMessage\", \"commit.message\", {hash:stack1,contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          </td>\\n          <td class=\\\"duration\\\" \");\n  stack1 = {};\n  stack1['title'] = \"duration\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            \");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </td>\\n          <td class=\\\"finished_at timeago\\\" \");\n  stack1 = {};\n  stack1['title'] = \"finishedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            \");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"finishedAt\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </td>\\n        \");\n  return buffer;}\nfunction program4(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n              <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showBuild\", \"\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n                \");\n  stack1 = helpers._triageMustache.call(depth0, \"number\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n              </a>\\n            \");\n  return buffer;}\n\nfunction program6(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n  <div class=\\\"loading\\\"><span>Loading</span></div>\\n\");}\n\n  stack1 = helpers['if'].call(depth0, \"builds.isLoaded\", {hash:{},inverse:self.program(6, program6, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['builds/show'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n  \");\n  stack1 = helpers['if'].call(depth0, \"loading\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n    <span>Loading</span>\\n  \");}\n\nfunction program4(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n    <dl id=\\\"summary\\\">\\n      <div class=\\\"left\\\">\\n        <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.name\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.name\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n        <dd class=\\\"number\\\">\\n          <span class=\\\"status\\\"></span>\\n          \");\n  stack1 = helpers['if'].call(depth0, \"build.id\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n        </dd>\\n        <dt class=\\\"finished_at_label\\\">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.finished_at\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n        <dd class=\\\"finished_at timeago\\\" \");\n  stack1 = {};\n  stack1['title'] = \"finishedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"build.finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"build.finishedAt\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dd>\\n        <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n        <dd class=\\\"duration\\\" \");\n  stack1 = {};\n  stack1['title'] = \"startedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"build.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"build.duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dd>\\n      </div>\\n\\n      <div class=\\\"right\\\">\\n        <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.commit\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n        <dd class=\\\"commit\\\"><a href=\\\"\");\n  stack1 = helpers.unbound.call(depth0, \"urlGithubCommit\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\\">\");\n  foundHelper = helpers.formatCommit;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"build.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatCommit\", \"build.commit\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n        \");\n  stack1 = helpers['if'].call(depth0, \"commit.compareUrl\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n        \");\n  stack1 = helpers['if'].call(depth0, \"commit.authorName\", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n        \");\n  stack1 = helpers['if'].call(depth0, \"commit.committerName\", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n      </div>\\n\\n      <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.message\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n      <dd class=\\\"message\\\">\");\n  foundHelper = helpers.formatMessage;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"build.commit.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatMessage\", \"build.commit.message\", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"</dd>\\n\\n      \");\n  stack1 = helpers.unless.call(depth0, \"isMatrix\", {hash:{},inverse:self.noop,fn:self.program(13, program13, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </dl>\\n\\n    \");\n  stack1 = helpers['if'].call(depth0, \"build.isMatrix\", {hash:{},inverse:self.program(17, program17, data),fn:self.program(15, program15, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n  \");\n  return buffer;}\nfunction program5(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n            <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showBuild\", \"build\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"build.number\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n          \");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n          <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.compare\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.compare\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n          <dd class=\\\"compare\\\"><a href=\\\"\");\n  stack1 = helpers.unbound.call(depth0, \"commit.compareUrl\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\\">\");\n  foundHelper = helpers.pathFrom;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"build.commit.compareUrl\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"pathFrom\", \"build.commit.compareUrl\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n        \");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n          <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.author\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.author\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n          <dd class=\\\"author\\\"><a href=\\\"\");\n  stack1 = helpers.unbound.call(depth0, \"urlAuthor\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"build.commit.authorName\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n        \");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n          <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.committer\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.committer\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n          <dd class=\\\"committer\\\"><a href=\\\"\");\n  stack1 = helpers.unbound.call(depth0, \"urlCommitter\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"build.commit.committerName\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n        \");\n  return buffer;}\n\nfunction program13(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n        <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.config\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n        <dd class=\\\"config\\\">\");\n  foundHelper = helpers.formatConfig;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"build.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatConfig\", \"build.config\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dd>\\n      \");\n  return buffer;}\n\nfunction program15(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n      \");\n  stack1 = {};\n  stack1['jobsBinding'] = \"build.requiredJobs\";\n  stack1['required'] = \"true\";\n  stack1 = helpers.view.call(depth0, \"Travis.JobsView\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      \");\n  stack1 = {};\n  stack1['jobsBinding'] = \"build.allowedFailureJobs\";\n  stack1 = helpers.view.call(depth0, \"Travis.JobsView\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n    \");\n  return buffer;}\n\nfunction program17(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n      \");\n  stack1 = {};\n  stack1['contextBinding'] = \"build.jobs.firstObject\";\n  stack1 = helpers.view.call(depth0, \"Travis.LogView\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n    \");\n  return buffer;}\n\n  stack1 = helpers['with'].call(depth0, \"view\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['jobs/list'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n  \");\n  stack1 = helpers['if'].call(depth0, \"view.required\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    <thead>\\n      <tr>\\n        \");\n  stack1 = helpers.each.call(depth0, \"key\", \"in\", \"view.build.configKeys\", {hash:{},inverse:self.noop,fn:self.program(6, program6, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n      </tr>\\n    </thead>\\n    <tbody>\\n      \");\n  stack1 = helpers.each.call(depth0, \"job\", \"in\", \"view.jobs\", {hash:{},inverse:self.noop,fn:self.program(8, program8, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </tbody>\\n  </table>\\n\\n  \");\n  stack1 = helpers.unless.call(depth0, \"view.required\", {hash:{},inverse:self.noop,fn:self.program(14, program14, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n    <table id=\\\"jobs\\\" class=\\\"list\\\">\\n      <caption>\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.build_matrix\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.build_matrix\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      </caption>\\n  \");\n  return buffer;}\n\nfunction program4(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n    <table id=\\\"allowed_failure_jobs\\\" class=\\\"list\\\">\\n      <caption>\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.allowed_failures\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.allowed_failures\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n        <a title=\\\"What's this?\\\" class=\\\"help\\\" name=\\\"help-allowed_failures\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"popup\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"></a>\\n      </caption>\\n  \");\n  return buffer;}\n\nfunction program6(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n          <th>\");\n  stack1 = helpers._triageMustache.call(depth0, \"key\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</th>\\n        \");\n  return buffer;}\n\nfunction program8(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        \");\n  stack1 = {};\n  stack1['contextBinding'] = \"job\";\n  stack1 = helpers.view.call(depth0, \"Travis.JobsItemView\", {hash:stack1,inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n      \");\n  return buffer;}\nfunction program9(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n          <td class=\\\"number\\\">\\n            <span class=\\\"status\\\"></span>\\n            \");\n  stack1 = helpers['if'].call(depth0, \"job.id\", {hash:{},inverse:self.noop,fn:self.program(10, program10, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          </td>\\n          <td class=\\\"duration\\\" \");\n  stack1 = {};\n  stack1['title'] = \"startedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            \");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </td>\\n          <td class=\\\"finished_at timeago\\\" \");\n  stack1 = {};\n  stack1['title'] = \"finishedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            \");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"finishedAt\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </td>\\n          \");\n  stack1 = helpers.each.call(depth0, \"value\", \"in\", \"configValues\", {hash:{},inverse:self.noop,fn:self.program(12, program12, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n        \");\n  return buffer;}\nfunction program10(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n              <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showJob\", \"repository\", \"job\", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"number\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n            \");\n  return buffer;}\n\nfunction program12(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n            <td>\");\n  stack1 = helpers._triageMustache.call(depth0, \"value\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</td>\\n          \");\n  return buffer;}\n\nfunction program14(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n    <div id=\\\"help-allowed_failures\\\" class=\\\"popup\\\">\\n      <h4>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.allowed_failures\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.allowed_failures\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</h4>\\n      <p>\\n        Allowed Failures are items in your build matrix that are allowed to\\n        fail without causing the entire build to be shown as failed.\\n      </p>\\n      <p>\\n        You can define allowed failures in the build matrix as follows:\\n      </p>\\n      <pre>matrix:\\n  allow_failures:\\n    - rvm: ruby-head</pre>\\n      <p>\\n        This lets you add in experimental and preparatory builds to test against versions or\\n        configurations that you are not ready to officially support.\\n      </p>\\n    </div>\\n  \");\n  return buffer;}\n\n  stack1 = helpers['if'].call(depth0, \"view.jobs.length\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['jobs/log'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n  <pre id=\\\"log\\\" class=\\\"ansi\\\"><a href=\\\"#\\\" id=\\\"tail\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"toggleTailing\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <span class=\\\"status\\\"></span>\\n    <label>Follow logs</label>\\n  </a>\");\n  foundHelper = helpers.formatLog;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"log.body\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatLog\", \"log.body\", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"</pre>\\n\\n  \");\n  stack1 = helpers['if'].call(depth0, \"sponsor.name\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n  <a href='#' class=\\\"to-top\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"toTop\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">To top</a>\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n    <p class=\\\"sponsor\\\">\\n    \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.messages.sponsored_by\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.messages.sponsored_by\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      <a \");\n  stack1 = {};\n  stack1['href'] = \"sponsor.url\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"sponsor.name\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n    </p>\\n  \");\n  return buffer;}\n\nfunction program4(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n  <div id=\\\"log\\\" class=\\\"loading\\\">\\n    <span>Loading</span>\\n  </div>\\n\");}\n\n  stack1 = helpers._triageMustache.call(depth0, \"view.logSubscriber\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\\n\");\n  stack1 = helpers['if'].call(depth0, \"log.isLoaded\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['jobs/show'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n  \");\n  stack1 = helpers['if'].call(depth0, \"job.isLoaded\", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n    <div \");\n  stack1 = {};\n  stack1['class'] = \"view.color\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n      <dl id=\\\"summary\\\">\\n        <div class=\\\"left\\\">\\n          <dt>Job</dt>\\n          <dd class=\\\"number\\\">\\n            <span class=\\\"status\\\"></span>\\n            \");\n  stack1 = helpers['if'].call(depth0, \"job.id\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          </dd>\\n          <dt class=\\\"finished_at_label\\\">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.finished_at\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n          <dd class=\\\"finished_at timeago\\\" \");\n  stack1 = {};\n  stack1['title'] = \"finishedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"job.finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"job.finishedAt\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dd>\\n          <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n          <dd class=\\\"duration\\\" \");\n  stack1 = {};\n  stack1['title'] = \"startedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"job.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"job.duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dd>\\n        </div>\\n\\n        <div class=\\\"right\\\">\\n          <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.commit\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n          <dd class=\\\"commit\\\"><a \");\n  stack1 = {};\n  stack1['href'] = \"urlGithubCommit\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.formatCommit;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatCommit\", \"commit\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n          \");\n  stack1 = helpers['if'].call(depth0, \"commit.compareUrl\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          \");\n  stack1 = helpers['if'].call(depth0, \"commit.authorName\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          \");\n  stack1 = helpers['if'].call(depth0, \"commit.committerName\", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n        </div>\\n\\n        <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.message\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n        <dd class=\\\"message\\\">\");\n  foundHelper = helpers.formatMessage;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"commit.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatMessage\", \"commit.message\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dd>\\n        <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.config\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n        <dd class=\\\"config\\\">\");\n  foundHelper = helpers.formatConfig;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"job.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatConfig\", \"job.config\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dd>\\n      </dl>\\n\\n      \");\n  stack1 = {};\n  stack1['contextBinding'] = \"job\";\n  stack1 = helpers.view.call(depth0, \"Travis.LogView\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n    </div>\\n  \");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n              <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showJob\", \"repository\", \"job\", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"job.number\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n            \");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n            <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.compare\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.compare\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n            <dd class=\\\"compare\\\"><a \");\n  stack1 = {};\n  stack1['href'] = \"commit.compareUrl\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.pathFrom;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"commit.compareUrl\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"pathFrom\", \"commit.compareUrl\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n          \");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n            <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.author\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.author\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n            <dd class=\\\"author\\\"><a \");\n  stack1 = {};\n  stack1['href'] = \"urlAuthor\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"commit.authorName\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n          \");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n            <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.committer\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.committer\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n            <dd class=\\\"committer\\\"><a \");\n  stack1 = {};\n  stack1['href'] = \"urlCommitter\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"commit.committerName\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n          \");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n    <div id=\\\"job\\\" class=\\\"loading\\\">\\n      <span>Loading</span>\\n    </div>\\n  \");}\n\n  stack1 = helpers['with'].call(depth0, \"view\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['layouts/home'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push(\"<div id=\\\"top\\\">\\n  \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"top\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"top\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n</div>\\n\\n<div id=\\\"page\\\">\\n  <div id=\\\"left\\\">\\n    \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"left\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"left\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </div>\\n\\n  <div id=\\\"main\\\">\\n    \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"main\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"main\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </div>\\n\\n  <div id=\\\"right\\\">\\n    \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"right\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"right\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </div>\\n</div>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['layouts/profile'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push(\"<div id=\\\"top\\\">\\n  \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"top\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"top\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n</div>\\n\\n<div id=\\\"page\\\">\\n  <div id=\\\"left\\\">\\n    \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"left\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"left\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </div>\\n\\n  <div id=\\\"main\\\">\\n    \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"main\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"main\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </div>\\n\\n  <div id=\\\"right\\\">\\n    <div id=\\\"slider\\\" \");\n  stack1 = {};\n  stack1['target'] = \"Travis.app.slider\";\n  stack1 = helpers.action.call(depth0, \"toggle\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n      <div class='icon'></div>&nbsp;\\n    </div>\\n\\n    <div class=\\\"box\\\">\\n      <h4>Getting started?</h4>\\n      <p>\\n        Please read our <a href=\\\"http://about.travis-ci.org/docs/user/getting-started\\\">guide</a>.\\n        It will only take a few minutes :)\\n      </p>\\n      <p>\\n        You can find detailled docs on our <a href=\\\"http://about.travis-ci.org/\\\">about</a> site.\\n      </p>\\n      <p>\\n        If you need help please don't hesitate to join\\n        <a href=\\\"irc://irc.freenode.net#travis\\\">#travis</a> on irc.freenode.net\\n        or our <a href=\\\"http://groups.google.com/group/travis-ci\\\">mailinglist</a>.\\n      </p>\\n    </div>\\n  </div>\\n</div>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['layouts/sidebar'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push(\"<a id=\\\"github\\\" href=\\\"https://github.com/travis-ci\\\" title=\\\"Fork me on GitHub\\\">\\n  \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.fork_me\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.fork_me\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n</a>\\n\\n<div id=\\\"slider\\\" \");\n  stack1 = {};\n  stack1['target'] = \"Travis.app.slider\";\n  stack1 = helpers.action.call(depth0, \"toggle\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n  <div class='icon'></div>&nbsp;\\n</div>\\n\\n\");\n  stack1 = helpers.view.call(depth0, \"view.DecksView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\");\n  stack1 = helpers.view.call(depth0, \"view.WorkersView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\");\n  stack1 = helpers.view.call(depth0, \"view.QueuesView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\");\n  stack1 = helpers.view.call(depth0, \"view.LinksView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\\n<div id=\\\"about\\\" class=\\\"box\\\">\\n  <h4>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.join\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.join\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</h4>\\n  <ul>\\n    <li>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.repository\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.repository\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \": <a href=\\\"http://github.com/travis-ci\\\">Github</a></li>\\n    <li>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.twitter\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.twitter\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \": <a href=\\\"http://twitter.com/travisci\\\">@travisci</a></li>\\n    <li>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.mailing_list\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.mailing_list\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \": <a href=\\\"http://groups.google.com/group/travis-ci\\\">travis-ci</a></li>\\n    <li><a href=\\\"irc://irc.freenode.net#travis\\\">irc.freenode.net#travis</a></li>\\n  </ul>\\n</div>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['layouts/simple'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push(\"<div id=\\\"top\\\">\\n  \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"top\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"top\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n</div>\\n\\n<div id=\\\"page\\\">\\n  <div id=\\\"main\\\">\\n    \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"main\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"main\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </div>\\n</div>\\n\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['layouts/top'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push(\"<a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"goToRoot\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n  <h1>Travis</h1>\\n</a>\\n\\n<ul id=\\\"navigation\\\">\\n  <li \");\n  stack1 = {};\n  stack1['class'] = \"view.classHome\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"goToRoot\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">Home</a>\\n  </li>\\n  <li \");\n  stack1 = {};\n  stack1['class'] = \"view.classStats\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"goToStats\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">Stats</a>\\n  </li>\\n  <li>\\n    <a href=\\\"http://about.travis-ci.org/blog\\\">Blog</a>\\n  </li>\\n  <li>\\n    <a href=\\\"http://about.travis-ci.org/docs\\\">Docs</a>\\n  </li>\\n  <li \");\n  stack1 = {};\n  stack1['class'] = \"view.classProfile\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <p class=\\\"handle\\\">\\n      <a class=\\\"signed-out\\\" href=\\\"#\\\" \");\n  stack1 = {};\n  stack1['target'] = \"Travis.app\";\n  stack1 = helpers.action.call(depth0, \"signIn\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.top.github_login\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.top.github_login\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n      <a class=\\\"signed-in\\\" \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showProfile\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"><img \");\n  stack1 = {};\n  stack1['src'] = \"view.gravatarUrl\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"user.name\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n      <span class=\\\"signing-in\\\">Signing in</span>\\n    </p>\\n    <ul>\\n      <li>\\n        <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showProfile\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.top.profile\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.top.profile\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n      </li>\\n      <li>\\n        <a href=\\\"/\\\" \");\n  stack1 = {};\n  stack1['target'] = \"Travis.app\";\n  stack1 = helpers.action.call(depth0, \"signOut\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.top.sign_out\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.top.sign_out\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n      </li>\\n    </ul>\\n  </li>\\n</ul>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['profile/accounts'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n    <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showAccount\", \"view.account\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" class=\\\"name\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"view.name\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n    <p class=\\\"summary\\\">\\n      <span class=\\\"repos_label\\\">Repositories:</span>\\n      <abbr class=\\\"repos\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"view.content.reposCount\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</abbr>\\n    </p>\\n  \");\n  return buffer;}\n\n  data.buffer.push(\"<div id=\\\"search_box\\\">\\n</div>\\n\\n<ul class=\\\"tabs\\\">\\n  <li id=\\\"tab_accounts\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classAccounts\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5><a name=\\\"accounts\\\" href=\\\"\\\">Accounts</a></h5>\\n  </li>\\n</ul>\\n\\n<div class=\\\"tab\\\">\\n  \");\n  stack1 = {};\n  stack1['contentBinding'] = \"controller\";\n  foundHelper = helpers.collection;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"Travis.AccountsListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, \"collection\", \"Travis.AccountsListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n</div>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['profile/show'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push(\"<h3>\");\n  stack1 = helpers._triageMustache.call(depth0, \"view.name\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</h3>\\n\\n\");\n  stack1 = helpers.view.call(depth0, \"Travis.ProfileTabsView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\\n<div class=\\\"tab\\\">\\n  \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"pane\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"pane\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n</div>\\n\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['profile/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n    <li id=\\\"tab_user\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classUser\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n      <h5>\\n        <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showUserProfile\", \"view.account\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">Profile</a>\\n      </h5>\\n    </li>\\n  \");\n  return buffer;}\n\n  data.buffer.push(\"<ul class=\\\"tabs\\\">\\n  <li id=\\\"tab_hooks\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classHooks\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5>\\n      <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showAccount\", \"view.account\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">Repositories</a>\\n    </h5>\\n  </li>\\n  \");\n  stack1 = helpers['if'].call(depth0, \"view.displayUser\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n</ul>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['profile/tabs/hooks'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n  \");\n  stack1 = helpers['if'].call(depth0, \"user.isSyncing\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n    <p class=\\\"message loading\\\">\\n      <span>Please wait while we sync from GitHub</span>\\n    </p>\\n  \");}\n\nfunction program4(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n    <p class=\\\"message\\\">\\n      Last synchronized from GitHub: \");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"user.syncedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"user.syncedAt\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      <button class=\\\"sync_now\\\" \");\n  stack1 = {};\n  stack1['target'] = \"user\";\n  stack1 = helpers.action.call(depth0, \"sync\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        Sync now\\n      </button>\\n    </p>\\n\\n    <ul id=\\\"hooks\\\">\\n      \");\n  stack1 = helpers.each.call(depth0, \"hook\", \"in\", \"hooks\", {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </ul>\\n  \");\n  return buffer;}\nfunction program5(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        <li \");\n  stack1 = {};\n  stack1['class'] = \"hook.active:active\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n          <a \");\n  stack1 = {};\n  stack1['href'] = \"hook.urlGithub\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" rel=\\\"nofollow\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"hook.slug\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n          <p class=\\\"description\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"hook.description\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</p>\\n\\n          <div class=\\\"controls\\\">\\n            <a \");\n  stack1 = {};\n  stack1['href'] = \"hook.urlGithubAdmin\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" class=\\\"github-admin tool-tip\\\" title=\\\"Github service hooks admin page\\\"></a>\\n            <a \");\n  stack1 = {};\n  stack1['target'] = \"hook\";\n  stack1 = helpers.action.call(depth0, \"toggle\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" class=\\\"switch\\\"></a>\\n          </div>\\n        </li>\\n      \");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n        <li>\\n          You do not seem to have any repositories that we could sync.\\n        </li>\\n      \");}\n\nfunction program9(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n  <p class=\\\"message loading\\\">\\n    <span>Loading</span>\\n  </p>\\n\");}\n\n  data.buffer.push(\"<p class=\\\"tip\\\">\\n  \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.message.your_repos\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.message.your_repos\", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n</p>\\n\\n\");\n  stack1 = helpers['if'].call(depth0, \"hooks.isLoaded\", {hash:{},inverse:self.program(9, program9, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['profile/tabs/user'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push(\"<img \");\n  stack1 = {};\n  stack1['src'] = \"view.gravatarUrl\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n\\n<dl class=\\\"profile\\\">\\n  <dt>\\n    \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.github\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.github\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":\\n  </dt>\\n  <dd>\\n    <a \");\n  stack1 = {};\n  stack1['href'] = \"urlGithub\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"user.login\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n  </dd>\\n  <dt>\\n    \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.email\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.email\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":\\n  </dt>\\n  <dd>\\n    \");\n  stack1 = helpers._triageMustache.call(depth0, \"user.email\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </dd>\\n  <dt>\\n    \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.token\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.token\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":\\n  </dt>\\n  <dd>\\n    \");\n  stack1 = helpers._triageMustache.call(depth0, \"user.token\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </dd>\\n</dl>\\n\\n<form>\\n  \");\n  stack1 = {};\n  stack1['id'] = \"locale\";\n  stack1['contentBinding'] = \"view.locales\";\n  stack1['valueBinding'] = \"Travis.app.currentUser.locale\";\n  stack1['optionLabelPath'] = \"content.name\";\n  stack1['optionValuePath'] = \"content.key\";\n  stack1 = helpers.view.call(depth0, \"Ember.Select\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\\n  <button name=\\\"commit\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"saveLocale\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.update_locale\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.update_locale\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </button>\\n</form>\\n\\n\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['queues/list'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n  <li class=\\\"queue\\\">\\n    <h4>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"queue\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"queue\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \": \");\n  stack1 = helpers._triageMustache.call(depth0, \"queue.name\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</h4>\\n    <ul \");\n  stack1 = {};\n  stack1['id'] = \"queue.id\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n      \");\n  stack1 = helpers.each.call(depth0, \"job\", \"in\", \"queue\", {hash:{},inverse:self.program(5, program5, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </ul>\\n  </li>\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        \");\n  stack1 = {};\n  stack1['jobBinding'] = \"job\";\n  stack1 = helpers.view.call(depth0, \"Travis.QueueItemView\", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n      \");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n          <a \");\n  stack1 = {};\n  stack1['target'] = \"Travis.app.router\";\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showJob\", \"job.repository\", \"job\", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            <span class=\\\"slug\\\">\\n              \");\n  stack1 = helpers._triageMustache.call(depth0, \"job.repository.slug\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n            </span>\\n            #\");\n  stack1 = helpers._triageMustache.call(depth0, \"job.number\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </a>\\n        \");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"no_job\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"no_job\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      \");\n  return buffer;}\n\n  data.buffer.push(\"<ul id=\\\"queues\\\">\\n\");\n  stack1 = helpers.each.call(depth0, \"queue\", \"in\", \"controller\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n</ul>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['repos/list'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n    \");\n  stack1 = helpers['with'].call(depth0, \"view.repository\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n  \");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n      <div class=\\\"slug-and-status\\\">\\n        <span class=\\\"status\\\"></span>\\n        \");\n  stack1 = helpers['if'].call(depth0, \"slug\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n      </div>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"lastBuildId\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n      <p class=\\\"summary\\\">\\n        <span class=\\\"duration_label\\\">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":</span>\\n        <abbr class=\\\"duration\\\" \");\n  stack1 = {};\n  stack1['title'] = \"lastBuildStartedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"lastBuildDuration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"lastBuildDuration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</abbr>,\\n        <span class=\\\"finished_at_label\\\">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.finished_at\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":</span>\\n        <abbr class=\\\"finished_at timeago\\\" \");\n  stack1 = {};\n  stack1['title'] = \"lastBuildFinishedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"lastBuildFinishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"lastBuildFinishedAt\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</abbr>\\n      </p>\\n\\n      <div class=\\\"indicator\\\"><span></span></div>\\n\\n      \");\n  stack1 = helpers['if'].call(depth0, \"description\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    \");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n          <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showRepository\", \"\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" class=\\\"slug\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"slug\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n        \");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showBuild\", \"\", \"lastBuildId\", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" class=\\\"last_build\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"lastBuildNumber\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n      \");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        <div class=\\\"info\\\">\\n          <p class=\\\"description\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"description\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</p>\\n        </div>\\n      \");\n  return buffer;}\n\n  data.buffer.push(\"<div id=\\\"search_box\\\">\\n  \");\n  stack1 = {};\n  stack1['valueBinding'] = \"controller.search\";\n  stack1 = helpers.view.call(depth0, \"Ember.TextField\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n</div>\\n\\n\");\n  stack1 = helpers.view.call(depth0, \"Travis.ReposListTabsView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\\n<a \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"toggleInfo\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" class=\\\"toggle-info\\\"></a>\\n\\n<div class=\\\"tab\\\">\\n  \");\n  stack1 = {};\n  stack1['contentBinding'] = \"controller\";\n  foundHelper = helpers.collection;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"Travis.RepositoriesListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, \"collection\", \"Travis.RepositoriesListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n</div>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['repos/list/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push(\"<ul class=\\\"tabs\\\">\\n  <li id=\\\"tab_recent\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classRecent\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5><a name=\\\"recent\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"activate\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.recent\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.recent\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></h5>\\n  </li>\\n  <li id=\\\"tab_owned\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classOwned\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5><a name=\\\"owned\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"activate\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.my_repositories\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.my_repositories\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></h5>\\n  </li>\\n  <li id=\\\"tab_search\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classSearch\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5><a name=\\\"search\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"activate\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.search\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.search\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></h5>\\n  </li>\\n</ul>\\n\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['repos/show'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n    \");\n  stack1 = helpers['with'].call(depth0, \"view.repository\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n  \");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n      <h3>\\n        <a \");\n  stack1 = {};\n  stack1['href'] = \"view.urlGithub\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"slug\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n      </h3>\\n\\n      <p class=\\\"description\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"description\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</p>\\n\\n      <ul class=\\\"github-stats\\\">\\n        <li class=\\\"language\\\">\\n          \");\n  stack1 = helpers._triageMustache.call(depth0, \"lastBuildLanguage\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n        </li>\\n        <li>\\n          <a class=\\\"watchers\\\" title=\\\"Watchers\\\" \");\n  stack1 = {};\n  stack1['href'] = \"view.urlGithubWatchers\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            \");\n  stack1 = helpers._triageMustache.call(depth0, \"stats.watchers\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </a>\\n        </li>\\n        <li>\\n          <a class=\\\"forks\\\" title=\\\"Forks\\\" \");\n  stack1 = {};\n  stack1['href'] = \"view.urlGithubNetwork\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            \");\n  stack1 = helpers._triageMustache.call(depth0, \"stats.forks\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </a>\\n        </li>\\n      </ul>\\n\\n      \");\n  stack1 = helpers.view.call(depth0, \"Travis.RepoShowTabsView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      \");\n  stack1 = helpers.view.call(depth0, \"Travis.RepoShowToolsView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n    \");\n  return buffer;}\n\nfunction program4(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n    <span>Loading</span>\\n  \");}\n\n  data.buffer.push(\"<div id=\\\"repository\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.class\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n  \");\n  stack1 = helpers['if'].call(depth0, \"view.repository.isLoaded\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n  <div class=\\\"tab\\\">\\n    \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"pane\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"pane\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </div>\\n</div>\\n\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['repos/show/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n      <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showRepository\", \"view.repository\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.current\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.current\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      </a>\\n      \");\n  return buffer;}\n\nfunction program3(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n      <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showBuilds\", \"view.repository\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.build_history\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.build_history\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      </a>\\n      \");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n      <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showPullRequests\", \"view.repository\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.pull_requests\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.pull_requests\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      </a>\\n      \");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n      <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showBranches\", \"view.repository\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.branches\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.branches\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      </a>\\n      \");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n      <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showBuild\", \"view.build\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.build\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.build\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" #\");\n  stack1 = helpers._triageMustache.call(depth0, \"view.build.number\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      </a>\\n      \");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n      <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showBuild\", \"view.job\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.job\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.job\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" #\");\n  stack1 = helpers._triageMustache.call(depth0, \"view.job.number\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      </a>\\n      \");\n  return buffer;}\n\n  data.buffer.push(\"<ul class=\\\"tabs\\\">\\n  <li id=\\\"tab_current\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classCurrent\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </h5>\\n  </li>\\n  <li id=\\\"tab_builds\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classBuilds\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </h5>\\n  </li>\\n  <li id=\\\"tab_pull_requests\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classPullRequests\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </h5>\\n  </li>\\n  <li id=\\\"tab_branches\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classBranches\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </h5>\\n  </li>\\n  <li id=\\\"tab_build\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classBuild\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"view.build.id\", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </h5>\\n  </li>\\n  <li id=\\\"tab_job\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classJob\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"view.job.id\", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </h5>\\n  </li>\\n</ul>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['repos/show/tools'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        \");\n  stack1 = {};\n  stack1['contentBinding'] = \"view.branches\";\n  stack1['selectionBinding'] = \"view.branch\";\n  stack1['optionLabelPath'] = \"content.commit.branch\";\n  stack1['optionValuePath'] = \"content.commit.branch\";\n  stack1 = helpers.view.call(depth0, \"Ember.Select\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      \");\n  return buffer;}\n\nfunction program3(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n        <span class=\\\"loading\\\"></span>\\n      \");}\n\n  data.buffer.push(\"<div id=\\\"tools\\\">\\n  <a href=\\\"#\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"toggle\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"></a>\\n  <div class=\\\"pane\\\">\\n    <p>\\n      <label>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.branch\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.branch\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":</label>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"view.branches.isLoaded\", {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </p>\\n    <p>\\n      <label>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.image_url\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.image_url\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":</label>\\n      <input type=\\\"text\\\" class=\\\"url\\\" \");\n  stack1 = {};\n  stack1['value'] = \"view.urlStatusImage\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"></input>\\n    </p>\\n    <p>\\n      <label>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.markdown\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.markdown\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":</label>\\n      <input type=\\\"text\\\" class=\\\"markdown\\\" \");\n  stack1 = {};\n  stack1['value'] = \"view.markdownStatusImage\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"></input>\\n    </p>\\n    <p>\\n      <label>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.textile\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.textile\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":</label>\\n      <input type=\\\"text\\\" class=\\\"textile\\\" \");\n  stack1 = {};\n  stack1['value'] = \"view.textileStatusImage\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"></input>\\n    </p>\\n    <p>\\n      <label>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.rdoc\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.rdoc\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":</label>\\n      <input type=\\\"text\\\" class=\\\"rdoc\\\" \");\n  stack1 = {};\n  stack1['value'] = \"view.rdocStatusImage\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"></input>\\n    </p>\\n  </div>\\n</div>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['sponsors/decks'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n    \");\n  stack1 = helpers.each.call(depth0, \"deck\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n  \");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n      <li \");\n  stack1 = {};\n  stack1['class'] = \"type\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        <a \");\n  stack1 = {};\n  stack1['href'] = \"url\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n          <img \");\n  stack1 = {};\n  stack1['src'] = \"image\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        </a>\\n      </li>\\n    \");\n  return buffer;}\n\n  data.buffer.push(\"<h4>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</h4>\\n\\n<ul class=\\\"sponsors top\\\">\\n  \");\n  stack1 = helpers.each.call(depth0, \"deck\", \"in\", \"controller\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n</ul>\\n\\n<p class=\\\"hint\\\">\\n  <a href=\\\"https://love.travis-ci.org/sponsors\\\">\\n    \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n  </a>\\n</p>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['sponsors/links'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n      <li>\\n        \");\n  stack1 = {};\n  stack1['unescaped'] = \"true\";\n  stack1 = helpers._triageMustache.call(depth0, \"link\", {hash:stack1,contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n      </li>\\n    \");\n  return buffer;}\n\n  data.buffer.push(\"<div class=\\\"box\\\">\\n  <h4>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</h4>\\n\\n  <ul class=\\\"sponsors bottom\\\">\\n    \");\n  stack1 = helpers.each.call(depth0, \"controller\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n  </ul>\\n\\n  <p class=\\\"hint\\\">\\n    <a href=\\\"https://love.travis-ci.org/sponsors\\\">\\n      \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </a>\\n  </p>\\n</div>\\n\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['stats/show'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  \n\n\n  data.buffer.push(\"<div id=\\\"repos_stats\\\"></div>\\n<div id=\\\"tests_stats\\\"></div>\\n\\n\");\n});\n\nEmber.TEMPLATES['workers/list'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n  <h4>\\n    \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"workers\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"workers\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n    <a id=\\\"toggle-workers\\\" \");\n  stack1 = {};\n  stack1['target'] = \"parentView.parentView\";\n  stack1 = helpers.action.call(depth0, \"toggleWorkers\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"></a>\\n  </h4>\\n  <ul id=\\\"workers\\\">\\n    \");\n  stack1 = helpers.each.call(depth0, \"group\", \"in\", \"controller.groups\", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n  </ul>\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n      \");\n  stack1 = helpers.view.call(depth0, \"Travis.WorkersListView\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    \");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        <li class=\\\"group\\\">\\n          <h5 \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"toggle\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            \");\n  stack1 = helpers._triageMustache.call(depth0, \"group.firstObject.host\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </h5>\\n          <ul>\\n          \");\n  stack1 = helpers.each.call(depth0, \"worker\", \"in\", \"group\", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          </ul>\\n        </li>\\n      \");\n  return buffer;}\nfunction program4(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n            \");\n  stack1 = {};\n  stack1['workerBinding'] = \"worker\";\n  stack1 = helpers.view.call(depth0, \"Travis.WorkersItemView\", {hash:stack1,inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          \");\n  return buffer;}\nfunction program5(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n              <li class=\\\"worker\\\">\\n                <div class=\\\"status\\\"></div>\\n                \");\n  stack1 = helpers['if'].call(depth0, \"worker.isWorking\", {hash:{},inverse:self.program(9, program9, data),fn:self.program(6, program6, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n              </li>\\n            \");\n  return buffer;}\nfunction program6(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n                  \");\n  stack1 = helpers['if'].call(depth0, \"worker.job_id\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n                \");\n  return buffer;}\nfunction program7(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n                    <a \");\n  stack1 = {};\n  stack1['target'] = \"Travis.app.router\";\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showJob\", \"worker.repository\", \"worker.job_id\", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" \");\n  stack1 = {};\n  stack1['title'] = \"worker.lastSeenAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n                      \");\n  stack1 = helpers._triageMustache.call(depth0, \"view.display\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n                    </a>\\n                  \");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n                  \");\n  stack1 = helpers._triageMustache.call(depth0, \"view.display\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n                \");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n      No workers\\n    \");}\n\n  stack1 = helpers.view.call(depth0, \"Travis.WorkersView\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n\");\n  return buffer;\n});\n\n})();\n//@ sourceURL=templates");minispade.register('config/locales', "(function() {window.I18n = window.I18n || {}\nwindow.I18n.translations = {\"ca\":{\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"pt-BR\":\"português brasileiro\",\"ru\":\"Русский\"}},\"en\":{\"errors\":{\"messages\":{\"not_found\":\"not found\",\"already_confirmed\":\"was already confirmed\",\"not_locked\":\"was not locked\"}},\"devise\":{\"failure\":{\"unauthenticated\":\"You need to sign in or sign up before continuing.\",\"unconfirmed\":\"You have to confirm your account before continuing.\",\"locked\":\"Your account is locked.\",\"invalid\":\"Invalid email or password.\",\"invalid_token\":\"Invalid authentication token.\",\"timeout\":\"Your session expired, please sign in again to continue.\",\"inactive\":\"Your account was not activated yet.\"},\"sessions\":{\"signed_in\":\"Signed in successfully.\",\"signed_out\":\"Signed out successfully.\"},\"passwords\":{\"send_instructions\":\"You will receive an email with instructions about how to reset your password in a few minutes.\",\"updated\":\"Your password was changed successfully. You are now signed in.\"},\"confirmations\":{\"send_instructions\":\"You will receive an email with instructions about how to confirm your account in a few minutes.\",\"confirmed\":\"Your account was successfully confirmed. You are now signed in.\"},\"registrations\":{\"signed_up\":\"You have signed up successfully. If enabled, a confirmation was sent to your e-mail.\",\"updated\":\"You updated your account successfully.\",\"destroyed\":\"Bye! Your account was successfully cancelled. We hope to see you again soon.\"},\"unlocks\":{\"send_instructions\":\"You will receive an email with instructions about how to unlock your account in a few minutes.\",\"unlocked\":\"Your account was successfully unlocked. You are now signed in.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Confirmation instructions\"},\"reset_password_instructions\":{\"subject\":\"Reset password instructions\"},\"unlock_instructions\":{\"subject\":\"Unlock Instructions\"}}},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hour\",\"other\":\"%{count} hours\"},\"minutes_exact\":{\"one\":\"%{count} minute\",\"other\":\"%{count} minutes\"},\"seconds_exact\":{\"one\":\"%{count} second\",\"other\":\"%{count} seconds\"}}},\"workers\":\"Workers\",\"queue\":\"Queue\",\"no_job\":\"There are no jobs\",\"repositories\":{\"branch\":\"Branch\",\"image_url\":\"Image URL\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\",\"tabs\":{\"current\":\"Current\",\"build_history\":\"Build History\",\"branches\":\"Branch Summary\",\"pull_requests\":\"Pull Requests\",\"build\":\"Build\",\"job\":\"Job\"}},\"build\":{\"job\":\"Job\",\"duration\":\"Duration\",\"finished_at\":\"Finished\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"This test suite was run on a worker box sponsored by\"},\"build_matrix\":\"Build Matrix\",\"allowed_failures\":\"Allowed Failures\",\"author\":\"Author\",\"config\":\"Config\",\"compare\":\"Compare\",\"committer\":\"Committer\",\"branch\":\"Branch\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"This test suite was run on a worker box sponsored by\"},\"build_matrix\":\"Build Matrix\",\"allowed_failures\":\"Allowed Failures\",\"author\":\"Author\",\"config\":\"Config\",\"compare\":\"Compare\",\"committer\":\"Committer\",\"branch\":\"Branch\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\",\"show_more\":\"Show more\"},\"layouts\":{\"top\":{\"home\":\"Home\",\"blog\":\"Blog\",\"docs\":\"Docs\",\"stats\":\"Stats\",\"github_login\":\"Sign in with Github\",\"profile\":\"Profile\",\"sign_out\":\"Sign Out\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"recent\":\"Recent\",\"search\":\"Search\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"See all of our amazing sponsors &rarr;\",\"my_repositories\":\"My Repositories\"},\"about\":{\"alpha\":\"This stuff is alpha.\",\"messages\":{\"alpha\":\"Please do <strong>not</strong> consider this a stable service. We're still far from that! More info <a href='https://github.com/travis-ci'>here.</a>\"},\"join\":\"Join us and help!\",\"mailing_list\":\"Mailing List\",\"repository\":\"Repository\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Author\",\"build\":\"Build\",\"build_matrix\":\"Build Matrix\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Compare\",\"config\":\"Config\",\"duration\":\"Duration\",\"finished_at\":\"Finished at\",\"job\":\"Job\",\"log\":\"Log\"}},\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"your_repos\":\"  Flick the switches below to turn on the Travis service hook for your projects, then push to GitHub.\",\"config\":\"how to configure custom build options\"},\"messages\":{\"notice\":\"To get started, please read our <a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">Getting Started guide</a>.\\n  <small>It will only take a couple of minutes.</small>\"},\"token\":\"Token\",\"your_repos\":\"Your Repositories\",\"update\":\"Update\",\"update_locale\":\"Update\",\"your_locale\":\"Your Locale\"}},\"statistics\":{\"index\":{\"count\":\"Count\",\"repo_growth\":\"Repository Growth\",\"total_projects\":\"Total Projects/Repositories\",\"build_count\":\"Build Count\",\"last_month\":\"last month\",\"total_builds\":\"Total Builds\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"es\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hora\",\"other\":\"%{count} horas\"},\"minutes_exact\":{\"one\":\"%{count} minuto\",\"other\":\"%{count} minutos\"},\"seconds_exact\":{\"one\":\"%{count} segundo\",\"other\":\"%{count} segundos\"}}},\"workers\":\"Procesos\",\"queue\":\"Cola\",\"no_job\":\"No hay trabajos\",\"repositories\":{\"branch\":\"Rama\",\"image_url\":\"Imagen URL\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\",\"tabs\":{\"current\":\"Actual\",\"build_history\":\"Histórico\",\"branches\":\"Ramas\",\"build\":\"Builds\",\"job\":\"Trabajo\"}},\"build\":{\"job\":\"Trabajo\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por\"},\"build_matrix\":\"Matriz de Builds\",\"allowed_failures\":\"Fallos Permitidos\",\"author\":\"Autor\",\"config\":\"Configuración\",\"compare\":\"Comparar\",\"committer\":\"Committer\",\"branch\":\"Rama\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\",\"sponsored_by\":\"Patrocinado por\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por\"},\"build_matrix\":\"Matriz de Builds\",\"allowed_failures\":\"Fallos Permitidos\",\"author\":\"Autor\",\"config\":\"Configuración\",\"compare\":\"Comparar\",\"committer\":\"Committer\",\"branch\":\"Rama\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\"},\"layouts\":{\"top\":{\"home\":\"Inicio\",\"blog\":\"Blog\",\"docs\":\"Documentación\",\"stats\":\"Estadísticas\",\"github_login\":\"Iniciar sesión con Github\",\"profile\":\"Perfil\",\"sign_out\":\"Desconectar\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Hazme un Fork en Github\",\"recent\":\"Reciente\",\"search\":\"Buscar\",\"sponsers\":\"Patrocinadores\",\"sponsors_link\":\"Ver todos nuestros patrocinadores &rarr;\",\"my_repositories\":\"Mis Repositorios\"},\"about\":{\"alpha\":\"Esto es alpha.\",\"messages\":{\"alpha\":\"Por favor <strong>no</strong> considereis esto un servicio estable. Estamos estamos aún lejos de ello! Más información <a href='https://github.com/travis-ci'>aquí.</a>\"},\"join\":\"Únetenos y ayudanos!\",\"mailing_list\":\"Lista de Correos\",\"repository\":\"Repositorio\",\"twitter\":\"Twitter\"}},\"profiles\":{\"show\":{\"email\":\"Correo electrónico\",\"github\":\"Github\",\"message\":{\"your_repos\":\"  Activa los interruptores para inicial el  Travis service hook para tus proyectos, y haz un Push en GitHub.<br />\\n  Para probar varias versiones de ruby, mira\",\"config\":\"como configurar tus propias opciones para el Build\"},\"messages\":{\"notice\":\"Para comenzar, por favor lee nuestra <a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">Guía de Inicio </a>.\\n  <small>Solo tomará unos pocos minutos.</small>\"},\"token\":\"Token\",\"your_repos\":\"Tus repositorios\",\"update\":\"Actualizar\",\"update_locale\":\"Actualizar\",\"your_locale\":\"Tu Idioma\"}},\"statistics\":{\"index\":{\"count\":\"Número\",\"repo_growth\":\"Crecimiento de Repositorios\",\"total_projects\":\"Total de Proyectos/Repositorios\",\"build_count\":\"Número de Builds\",\"last_month\":\"mes anterior\",\"total_builds\":\"Total de Builds\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"fr\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} heure\",\"other\":\"%{count} heures\"},\"minutes_exact\":{\"one\":\"%{count} minute\",\"other\":\"%{count} minutes\"},\"seconds_exact\":{\"one\":\"%{count} seconde\",\"other\":\"%{count} secondes\"}}},\"workers\":\"Processus\",\"queue\":\"File\",\"no_job\":\"Pas de tâches\",\"repositories\":{\"branch\":\"Branche\",\"image_url\":\"Image\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\",\"tabs\":{\"current\":\"Actuel\",\"build_history\":\"Historique des tâches\",\"branches\":\"Résumé des branches\",\"build\":\"Construction\",\"job\":\"Tâche\"}},\"build\":{\"job\":\"Tâche\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"build_matrix\":\"Matrice des versions\",\"allowed_failures\":\"Échecs autorisés\",\"author\":\"Auteur\",\"config\":\"Config\",\"compare\":\"Comparer\",\"committer\":\"Committeur\",\"branch\":\"Branche\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\",\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"builds\":{\"name\":\"Version\",\"messages\":{\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"build_matrix\":\"Matrice des versions\",\"allowed_failures\":\"Échecs autorisés\",\"author\":\"Auteur\",\"config\":\"Config\",\"compare\":\"Comparer\",\"committer\":\"Committeur\",\"branch\":\"Branche\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\"},\"layouts\":{\"top\":{\"home\":\"Accueil\",\"blog\":\"Blog\",\"docs\":\"Documentation\",\"stats\":\"Statistiques\",\"github_login\":\"Connection Github\",\"profile\":\"Profil\",\"sign_out\":\"Déconnection\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Faites un Fork sur Github\",\"recent\":\"Récent\",\"search\":\"Chercher\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"Voir tous nos extraordinaire sponsors &rarr;\",\"my_repositories\":\"Mes dépôts\"},\"about\":{\"alpha\":\"Ceci est en alpha.\",\"messages\":{\"alpha\":\"S'il vous plaît ne considérez <strong>pas</strong> ce service comme étant stable. Nous sommes loin de ça! Plus d'infos <a href='https://github.com/travis-ci'>ici.</a>\"},\"join\":\"Joignez-vous à nous et aidez-nous!\",\"mailing_list\":\"Liste de distribution\",\"repository\":\"Dépôt\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Auteur\",\"build\":\"Version\",\"build_matrix\":\"Matrice des versions\",\"commit\":\"Commit\",\"committer\":\"Committeur\",\"compare\":\"Comparer\",\"config\":\"Config\",\"duration\":\"Durée\",\"finished_at\":\"Terminé à\",\"job\":\"Tâche\",\"log\":\"Journal\"}},\"profiles\":{\"show\":{\"github\":\"Github\",\"message\":{\"your_repos\":\"Utilisez les boutons ci-dessous pour activer Travis sur vos projets puis déployez sur GitHub.<br />\\nPour tester sur plus de versions de ruby, voir\",\"config\":\"comment configurer des options de version personnalisées\"},\"messages\":{\"notice\":\"Pour commencer, veuillez lire notre <a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">guide de démarrage</a>.\\n <small>Cela ne vous prendra que quelques minutes.</small>\"},\"token\":\"Jeton\",\"your_repos\":\"Vos dépôts\",\"email\":\"Courriel\",\"update\":\"Modifier\",\"update_locale\":\"Modifier\",\"your_locale\":\"Votre langue\"}},\"statistics\":{\"index\":{\"count\":\"Décompte\",\"repo_growth\":\"Croissance de dépôt\",\"total_projects\":\"Total des projets/dépôts\",\"build_count\":\"Décompte des versions\",\"last_month\":\"mois dernier\",\"total_builds\":\"Total des versions\"}},\"admin\":{\"actions\":{\"create\":\"créer\",\"created\":\"créé\",\"delete\":\"supprimer\",\"deleted\":\"supprimé\",\"update\":\"mise à jour\",\"updated\":\"mis à jour\"},\"credentials\":{\"log_out\":\"Déconnection\"},\"delete\":{\"confirmation\":\"Oui, je suis sure\",\"flash_confirmation\":\"%{name} a été détruit avec succès\"},\"flash\":{\"error\":\"%{name} n'a pas pu être %{action}\",\"noaction\":\"Aucune action n'a été entreprise\",\"successful\":\"%{name} a réussi à %{action}\"},\"history\":{\"name\":\"Historique\",\"no_activity\":\"Aucune activité\",\"page_name\":\"Historique pour %{name}\"},\"list\":{\"add_new\":\"Ajouter un nouveau\",\"delete_action\":\"Supprimer\",\"delete_selected\":\"Supprimer la sélection\",\"edit_action\":\"Modifier\",\"search\":\"Rechercher\",\"select\":\"Sélectionner le %{name} à modifier\",\"select_action\":\"Sélectionner\",\"show_all\":\"Montrer tout\"},\"new\":{\"basic_info\":\"Information de base\",\"cancel\":\"Annuler\",\"chosen\":\"%{name} choisi\",\"chose_all\":\"Choisir tout\",\"clear_all\":\"Déselectionner tout\",\"many_chars\":\"caractères ou moins\",\"one_char\":\"caractère.\",\"optional\":\"Optionnel\",\"required\":\"Requis\",\"save\":\"Sauvegarder\",\"save_and_add_another\":\"Sauvegarder et en ajouter un autre\",\"save_and_edit\":\"Sauvegarder et modifier\",\"select_choice\":\"Faites vos choix et cliquez\"},\"dashboard\":{\"add_new\":\"Ajouter un nouveau\",\"last_used\":\"Dernière utilisation\",\"model_name\":\"Nom du modèle\",\"modify\":\"Modification\",\"name\":\"Tableau de bord\",\"pagename\":\"Administration du site\",\"records\":\"Enregistrements\",\"show\":\"Voir\",\"ago\":\"plus tôt\"}},\"home\":{\"name\":\"accueil\"},\"repository\":{\"duration\":\"Durée\"},\"devise\":{\"confirmations\":{\"confirmed\":\"Votre compte a été crée avec succès. Vous être maintenant connecté.\",\"send_instructions\":\"Vous allez recevoir un courriel avec les instructions de confirmation de votre compte dans quelques minutes.\"},\"failure\":{\"inactive\":\"Votre compte n'a pas encore été activé.\",\"invalid\":\"Adresse courriel ou mot de passe invalide.\",\"invalid_token\":\"Jeton d'authentification invalide.\",\"locked\":\"Votre compte est bloqué.\",\"timeout\":\"Votre session est expirée, veuillez vous reconnecter pour continuer.\",\"unauthenticated\":\"Vous devez vous connecter ou vous enregistrer afin de continuer\",\"unconfirmed\":\"Vous devez confirmer votre compte avant de continuer.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Instructions de confirmations\"},\"reset_password_instructions\":{\"subject\":\"Instruction de remise à zéro du mot de passe\"},\"unlock_instructions\":{\"subject\":\"Instruction de débloquage\"}},\"passwords\":{\"send_instructions\":\"Vous recevrez un courriel avec les instructions de remise à zéro du mot de passe dans quelques minutes.\",\"updated\":\"Votre mot de passe a été changé avec succès. Vous êtes maintenant connecté.\"},\"registrations\":{\"destroyed\":\"Au revoir! Votre compte a été annulé avec succès. Nous espérons vous revoir bientôt.\",\"signed_up\":\"Vous êtes enregistré avec succès. Si activé, une confirmation vous a été envoyé par courriel.\",\"updated\":\"Votre compte a été mis a jour avec succès\"},\"sessions\":{\"signed_in\":\"Connecté avec succès\",\"signed_out\":\"Déconnecté avec succès\"},\"unlocks\":{\"send_instructions\":\"Vous recevrez un courriel contenant les instructions pour débloquer votre compte dans quelques minutes.\",\"unlocked\":\"Votre compte a été débloqué avec succès.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"étais déja confirmé\",\"not_found\":\"n'a pas été trouvé\",\"not_locked\":\"n'étais pas bloqué\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"ja\":{\"workers\":\"ワーカー\",\"queue\":\"キュー\",\"no_job\":\"ジョブはありません\",\"repositories\":{\"branch\":\"ブランチ\",\"image_url\":\"画像URL\",\"markdown\":\".md\",\"textile\":\".textile\",\"rdoc\":\".rdoc\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\",\"tabs\":{\"current\":\"最新\",\"build_history\":\"ビルド履歴\",\"branches\":\"ブランチまとめ\",\"build\":\"ビルド\",\"job\":\"ジョブ\"}},\"build\":{\"job\":\"ジョブ\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"このテストは以下のスポンサーの協力で行いました。\"},\"build_matrix\":\"ビルドマトリクス\",\"allowed_failures\":\"失敗許容範囲内\",\"author\":\"制作者\",\"config\":\"設定\",\"compare\":\"比較\",\"committer\":\"コミット者\",\"branch\":\"ブランチ\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"builds\":{\"name\":\"ビルド\",\"messages\":{\"sponsored_by\":\"このテストは以下のスポンサーの協力で行いました。\"},\"build_matrix\":\"失敗許容範囲外\",\"allowed_failures\":\"失敗許容範囲内\",\"author\":\"制作者\",\"config\":\"設定\",\"compare\":\"比較\",\"committer\":\"コミット者\",\"branch\":\"ブランチ\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"layouts\":{\"about\":{\"alpha\":\"まだアルファですよ!\",\"join\":\"参加してみよう!\",\"mailing_list\":\"メールリスト\",\"messages\":{\"alpha\":\"Travis-ciは安定したサービスまで後一歩!詳しくは<a href='https://github.com/travis-ci'>こちら</a>\"},\"repository\":\"リポジトリ\",\"twitter\":\"ツイッター\"},\"application\":{\"fork_me\":\"Githubでフォークしよう\",\"my_repositories\":\"マイリポジトリ\",\"recent\":\"最近\",\"search\":\"検索\",\"sponsers\":\"スポンサー\",\"sponsors_link\":\"スポンサーをもっと見る &rarr;\"},\"top\":{\"blog\":\"ブログ\",\"docs\":\"Travisとは?\",\"github_login\":\"Githubでログイン\",\"home\":\"ホーム\",\"profile\":\"プロフィール\",\"sign_out\":\"ログアウト\",\"stats\":\"統計\",\"admin\":\"管理\"},\"mobile\":{\"author\":\"制作者\",\"build\":\"ビルド\",\"build_matrix\":\"ビルドマトリクス\",\"commit\":\"コミット\",\"committer\":\"コミット者\",\"compare\":\"比較\",\"config\":\"設定\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\",\"job\":\"ジョブ\",\"log\":\"ログ\"}},\"profiles\":{\"show\":{\"github\":\"Github\",\"email\":\"メール\",\"message\":{\"config\":\"詳細設定\",\"your_repos\":\"以下のスイッチを設定し、Travis-ciを有効にします。Githubへプッシュしたらビルドは自動的に開始します。複数バーションや細かい設定はこちらへ:\"},\"messages\":{\"notice\":\"まずは<a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">Travisのはじめ方</a>を参照してください。\"},\"token\":\"トークン\",\"your_repos\":\"リポジトリ\",\"update\":\"更新\",\"update_locale\":\"更新\",\"your_locale\":\"言語設定\"}},\"statistics\":{\"index\":{\"build_count\":\"ビルド数\",\"count\":\"数\",\"last_month\":\"先月\",\"repo_growth\":\"リポジトリ\",\"total_builds\":\"合計ビルド数\",\"total_projects\":\"合計リポジトリ\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"nb\":{\"admin\":{\"actions\":{\"create\":\"opprett\",\"created\":\"opprettet\",\"delete\":\"slett\",\"deleted\":\"slettet\",\"update\":\"oppdater\",\"updated\":\"oppdatert\"},\"credentials\":{\"log_out\":\"Logg ut\"},\"dashboard\":{\"add_new\":\"Legg til ny\",\"ago\":\"siden\",\"last_used\":\"Sist brukt\",\"model_name\":\"Modell\",\"modify\":\"Rediger\",\"name\":\"Dashbord\",\"pagename\":\"Nettstedsadministrasjon\",\"records\":\"Oppføringer\",\"show\":\"Vis\"},\"delete\":{\"confirmation\":\"Ja, jeg er sikker\",\"flash_confirmation\":\"%{name} ble slettet\"},\"flash\":{\"error\":\"%{name} kunne ikke bli %{action}\",\"noaction\":\"Ingen handlinger ble utført\",\"successful\":\"%{name} ble %{action}\"},\"history\":{\"name\":\"Logg\",\"no_activity\":\"Ingen aktivitet\",\"page_name\":\"Logg for %{name}\"},\"list\":{\"add_new\":\"Legg til ny\",\"delete_action\":\"Slett\",\"delete_selected\":\"Slett valgte\",\"edit_action\":\"Rediger\",\"search\":\"Søk\",\"select\":\"Velg %{name} for å redigere\",\"select_action\":\"Velg\",\"show_all\":\"Vis alle \"},\"new\":{\"basic_info\":\"Basisinformasjon\",\"cancel\":\"Avbryt\",\"chosen\":\"Valgt %{name}\",\"chose_all\":\"Velg alle\",\"clear_all\":\"Fjern alle\",\"many_chars\":\"eller færre tegn.\",\"one_char\":\"tegn.\",\"optional\":\"Valgfri\",\"required\":\"Påkrevd\",\"save\":\"Lagre\",\"save_and_add_another\":\"Lagre og legg til ny\",\"save_and_edit\":\"Lagre og rediger\",\"select_choice\":\"Kryss av for dine valg og klikk\"}},\"build\":{\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"job\":\"Jobb\"},\"builds\":{\"allowed_failures\":\"Tillatte feil\",\"author\":\"Forfatter\",\"branch\":\"Gren\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"message\":\"Beskrivelse\",\"messages\":{\"sponsored_by\":\"Denne testen ble kjørt på en maskin sponset av\"},\"name\":\"Jobb\",\"started_at\":\"Startet\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} time\",\"other\":\"%{count} timer\"},\"minutes_exact\":{\"one\":\"%{count} minutt\",\"other\":\"%{count} minutter\"},\"seconds_exact\":{\"one\":\"%{count} sekund\",\"other\":\"%{count} sekunder\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Din konto er aktivert og du er nå innlogget.\",\"send_instructions\":\"Om noen få minutter så vil du få en e-post med informasjon om hvordan du bekrefter kontoen din.\"},\"failure\":{\"inactive\":\"Kontoen din har ikke blitt aktivert enda.\",\"invalid\":\"Ugyldig e-post eller passord.\",\"invalid_token\":\"Ugyldig autentiseringskode.\",\"locked\":\"Kontoen din er låst.\",\"timeout\":\"Du ble logget ut siden på grunn av mangel på aktivitet, vennligst logg inn på nytt.\",\"unauthenticated\":\"Du må logge inn eller registrere deg for å fortsette.\",\"unconfirmed\":\"Du må bekrefte kontoen din før du kan fortsette.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Bekreftelsesinformasjon\"},\"reset_password_instructions\":{\"subject\":\"Instruksjoner for å få nytt passord\"},\"unlock_instructions\":{\"subject\":\"Opplåsningsinstruksjoner\"}},\"passwords\":{\"send_instructions\":\"Om noen få minutter så vil du få en epost med informasjon om hvordan du kan få et nytt passord.\",\"updated\":\"Passordet ditt ble endret, og du er logget inn.\"},\"registrations\":{\"destroyed\":\"Adjø! Kontoen din ble kansellert. Vi håper vi ser deg igjen snart.\",\"signed_up\":\"Du er nå registrert.\",\"updated\":\"Kontoen din ble oppdatert.\"},\"sessions\":{\"signed_in\":\"Du er nå logget inn.\",\"signed_out\":\"Du er nå logget ut.\"},\"unlocks\":{\"send_instructions\":\"Om noen få minutter så kommer du til å få en e-post med informasjon om hvordan du kan låse opp kontoen din.\",\"unlocked\":\"Kontoen din ble låst opp, og du er nå logget inn igjen.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"har allerede blitt bekreftet\",\"not_found\":\"ikke funnnet\",\"not_locked\":\"var ikke låst\"}},\"home\":{\"name\":\"hjem\"},\"jobs\":{\"allowed_failures\":\"Tillatte feil\",\"author\":\"Forfatter\",\"branch\":\"Gren\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"message\":\"Beskrivelse\",\"messages\":{\"sponsored_by\":\"Denne testserien ble kjørt på en maskin sponset av\"},\"started_at\":\"Startet\"},\"layouts\":{\"about\":{\"alpha\":\"Dette er alfa-greier.\",\"join\":\"Bli med og hjelp oss!\",\"mailing_list\":\"E-postliste\",\"messages\":{\"alpha\":\"Dette er <strong>ikke</strong> en stabil tjeneste. Vi har fremdeles et stykke igjen! Mer informasjon finner du <a href=\\\"https://github.com/travis-ci\\\">her</a>.\"},\"repository\":\"Kodelager\",\"twitter\":\"Twitter.\"},\"application\":{\"fork_me\":\"Se koden på Github\",\"my_repositories\":\"Mine kodelagre\",\"recent\":\"Nylig\",\"search\":\"Søk\",\"sponsers\":\"Sponsorer\",\"sponsors_link\":\"Se alle de flotte sponsorene våre &rarr;\"},\"mobile\":{\"author\":\"Forfatter\",\"build\":\"Jobb\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"job\":\"Jobb\",\"log\":\"Logg\"},\"top\":{\"admin\":\"Administrator\",\"blog\":\"Blogg\",\"docs\":\"Dokumentasjon\",\"github_login\":\"Logg inn med Github\",\"home\":\"Hjem\",\"profile\":\"Profil\",\"sign_out\":\"Logg ut\",\"stats\":\"Statistikk\"}},\"no_job\":\"Ingen jobber finnnes\",\"profiles\":{\"show\":{\"email\":\"E-post\",\"github\":\"Github\",\"message\":{\"config\":\"hvordan sette opp egne jobbinnstillinger\",\"your_repos\":\"Slå\\u0010 på Travis for prosjektene dine ved å dra i bryterne under, og send koden til Github.<br />\\nFor å teste mot flere ruby-versjoner, se dokumentasjonen for\"},\"messages\":{\"notice\":\"For å komme i gang, vennligst les <a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">kom-i-gang-veivisereren</a> vår. <small>Det tar bare et par minutter.</small>\"},\"token\":\"Kode\",\"update\":\"Oppdater\",\"update_locale\":\"Oppdater\",\"your_locale\":\"Ditt språk\",\"your_repos\":\"Dine kodelagre\"}},\"queue\":\"Kø\",\"repositories\":{\"branch\":\"Gren\",\"commit\":\"Innsender\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"image_url\":\"Bilde-URL\",\"markdown\":\"Markdown\",\"message\":\"Beskrivelse\",\"rdoc\":\"RDOC\",\"started_at\":\"Startet\",\"tabs\":{\"branches\":\"Grensammendrag\",\"build\":\"Jobb\",\"build_history\":\"Jobblogg\",\"current\":\"Siste\",\"job\":\"Jobb\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Varighet\"},\"statistics\":{\"index\":{\"build_count\":\"Antall jobber\",\"count\":\"Antall\",\"last_month\":\"siste måned\",\"repo_growth\":\"Vekst i kodelager\",\"total_builds\":\"Totale jobber\",\"total_projects\":\"Antall prosjekter/kodelagre\"}},\"workers\":\"Arbeidere\",\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"nl\":{\"admin\":{\"actions\":{\"create\":\"aanmaken\",\"created\":\"aangemaakt\",\"delete\":\"verwijderen\",\"deleted\":\"verwijderd\",\"update\":\"bijwerken\",\"updated\":\"bijgewerkt\"},\"credentials\":{\"log_out\":\"Afmelden\"},\"dashboard\":{\"add_new\":\"Nieuwe toevoegen\",\"ago\":\"geleden\",\"last_used\":\"Laatst gebruikt\",\"model_name\":\"Model naam\",\"modify\":\"Wijzigen\",\"pagename\":\"Site administratie\",\"show\":\"Laten zien\",\"records\":\"Gegevens\"},\"delete\":{\"confirmation\":\"Ja, ik ben zeker\",\"flash_confirmation\":\"%{name} is vernietigd\"},\"flash\":{\"error\":\"%{name} kon niet worden %{action}\",\"noaction\":\"Er zijn geen acties genomen\",\"successful\":\"%{name} is %{action}\"},\"history\":{\"name\":\"Geschiedenis\",\"no_activity\":\"Geen activiteit\",\"page_name\":\"Geschiedenis van %{name}\"},\"list\":{\"add_new\":\"Nieuwe toevoegen\",\"delete_action\":\"Verwijderen\",\"delete_selected\":\"Verwijder geselecteerden\",\"edit_action\":\"Bewerken\",\"search\":\"Zoeken\",\"select\":\"Selecteer %{name} om te bewerken\",\"select_action\":\"Selecteer\",\"show_all\":\"Laat allen zien\"},\"new\":{\"basic_info\":\"Basisinfo\",\"cancel\":\"Annuleren\",\"chosen\":\"%{name} gekozen\",\"chose_all\":\"Kies allen\",\"clear_all\":\"Deselecteer allen\",\"many_chars\":\"tekens of minder.\",\"one_char\":\"teken.\",\"optional\":\"Optioneel\",\"required\":\"Vereist\",\"save\":\"Opslaan\",\"save_and_add_another\":\"Opslaan en een nieuwe toevoegen\",\"save_and_edit\":\"Opslaan en bewerken\",\"select_choice\":\"Selecteer uw keuzes en klik\"}},\"build\":{\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"job\":\"Taak\"},\"builds\":{\"allowed_failures\":\"Toegestane mislukkingen\",\"author\":\"Auteur\",\"branch\":\"Tak\",\"build_matrix\":\"Bouw Matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"message\":\"Bericht\",\"messages\":{\"sponsored_by\":\"Deze tests zijn gedraaid op een machine gesponsord door\"},\"name\":\"Bouw\",\"started_at\":\"Gestart\",\"commit\":\"Commit\",\"committer\":\"Committer\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} uur\",\"other\":\"%{count} uren\"},\"minutes_exact\":{\"one\":\"%{count} minuut\",\"other\":\"%{count} minuten\"},\"seconds_exact\":{\"one\":\"%{count} seconde\",\"other\":\"%{count} seconden\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Uw account is bevestigd. U wordt nu ingelogd.\",\"send_instructions\":\"Binnen enkele minuten zal u een email ontvangen met instructies om uw account te bevestigen.\"},\"failure\":{\"inactive\":\"Uw account is nog niet geactiveerd.\",\"invalid\":\"Ongeldig email adres of wachtwoord.\",\"invalid_token\":\"Ongeldig authenticatie token.\",\"locked\":\"Uw account is vergrendeld.\",\"timeout\":\"Uw sessie is verlopen, gelieve opnieuw in te loggen om verder te gaan.\",\"unauthenticated\":\"U moet inloggen of u registeren voordat u verder gaat.\",\"unconfirmed\":\"U moet uw account bevestigen voordat u verder gaat.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Bevestigings-instructies\"},\"reset_password_instructions\":{\"subject\":\"Wachtwoord herstel instructies\"},\"unlock_instructions\":{\"subject\":\"Ontgrendel-instructies\"}},\"passwords\":{\"send_instructions\":\"Binnen enkele minuten zal u een email krijgen met instructies om uw wachtwoord opnieuw in te stellen.\",\"updated\":\"Uw wachtwoord is veranderd. U wordt nu ingelogd.\"},\"registrations\":{\"destroyed\":\"Dag! Uw account is geannuleerd. We hopen u vlug terug te zien.\",\"signed_up\":\"Uw registratie is voltooid. Als het ingeschakeld is wordt een bevestiging naar uw email adres verzonden.\",\"updated\":\"Het bijwerken van uw account is gelukt.\"},\"sessions\":{\"signed_in\":\"Inloggen gelukt.\",\"signed_out\":\"Uitloggen gelukt.\"},\"unlocks\":{\"send_instructions\":\"Binnen enkele minuten zal u een email krijgen met instructies om uw account te ontgrendelen.\",\"unlocked\":\"Uw account is ontgrendeld. U wordt nu ingelogd.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"was al bevestigd\",\"not_found\":\"niet gevonden\",\"not_locked\":\"was niet vergrendeld\"}},\"jobs\":{\"allowed_failures\":\"Toegestane mislukkingen\",\"author\":\"Auteur\",\"branch\":\"Tak\",\"build_matrix\":\"Bouw matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"message\":\"Bericht\",\"messages\":{\"sponsored_by\":\"Deze testen zijn uitgevoerd op een machine gesponsord door\"},\"started_at\":\"Gestart\",\"commit\":\"Commit\",\"committer\":\"Committer\"},\"layouts\":{\"about\":{\"alpha\":\"Dit is in alfa-stadium.\",\"join\":\"Doe met ons mee en help!\",\"mailing_list\":\"Mailing lijst\",\"messages\":{\"alpha\":\"Gelieve deze service <strong>niet</strong> te beschouwen als stabiel. Daar zijn we nog lang niet! Meer info <a href='https://github.com/travis-ci'>hier.</a>\"},\"repository\":\"Repository\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Maak een fork op Github\",\"my_repositories\":\"Mijn repositories\",\"recent\":\"Recent\",\"search\":\"Zoeken\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"Bekijk al onze geweldige sponsors &rarr;\"},\"mobile\":{\"author\":\"Auteur\",\"build\":\"Bouw\",\"build_matrix\":\"Bouw matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid op\",\"job\":\"Taak\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"log\":\"Logboek\"},\"top\":{\"admin\":\"Administratie\",\"blog\":\"Blog\",\"docs\":\"Documentatie\",\"github_login\":\"Inloggen met Github\",\"home\":\"Home\",\"profile\":\"Profiel\",\"sign_out\":\"Uitloggen\",\"stats\":\"Statistieken\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"pt-BR\":\"português brasileiro\"},\"no_job\":\"Er zijn geen taken\",\"profiles\":{\"show\":{\"email\":\"Email adres\",\"github\":\"Github\",\"message\":{\"config\":\"hoe eigen bouw-opties in te stellen\",\"your_repos\":\"Zet de schakelaars hieronder aan om de Travis hook voor uw projecten te activeren en push daarna naar Github<br />\\nOm te testen tegen meerdere rubies, zie\"},\"messages\":{\"notice\":\"Om te beginnen kunt u onze <a href=\\\\\\\"http://about.travis-ci.org/docs/user/getting-started/\\\\\\\">startersgids</a> lezen.\\\\n  <small>Het zal maar enkele minuten van uw tijd vergen.</small>\"},\"update\":\"Bijwerken\",\"update_locale\":\"Bijwerken\",\"your_locale\":\"Uw taal\",\"your_repos\":\"Uw repositories\",\"token\":\"Token\"}},\"queue\":\"Wachtrij\",\"repositories\":{\"branch\":\"Tak\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"image_url\":\"Afbeeldings URL\",\"message\":\"Bericht\",\"started_at\":\"Gestart\",\"tabs\":{\"branches\":\"Tak samenvatting\",\"build\":\"Bouw\",\"build_history\":\"Bouw geschiedenis\",\"current\":\"Huidig\",\"job\":\"Taak\"},\"commit\":\"Commit\",\"markdown\":\"Markdown\",\"rdoc\":\"RDOC\",\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Duur\"},\"statistics\":{\"index\":{\"build_count\":\"Bouw aantal\",\"count\":\"Aantal\",\"last_month\":\"voorbije maand\",\"repo_growth\":\"Repository groei\",\"total_builds\":\"Bouw totaal\",\"total_projects\":\"Projecten/Repository totaal\"}},\"workers\":\"Machines\",\"home\":{\"name\":\"Hoofdpagina\"}},\"pl\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} godzina\",\"other\":\"%{count} godziny\"},\"minutes_exact\":{\"one\":\"%{count} minuta\",\"other\":\"%{count} minuty\"},\"seconds_exact\":{\"one\":\"%{count} sekunda\",\"other\":\"%{count} sekundy\"}}},\"workers\":\"Workers\",\"queue\":\"Kolejka\",\"no_job\":\"Brak zadań\",\"repositories\":{\"branch\":\"Gałąź\",\"image_url\":\"URL obrazka\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"tabs\":{\"current\":\"Aktualny\",\"build_history\":\"Historia Buildów\",\"branches\":\"Wszystkie Gałęzie\",\"build\":\"Build\",\"job\":\"Zadanie\"}},\"build\":{\"job\":\"Zadanie\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"build_matrix\":\"Macierz Buildów\",\"allowed_failures\":\"Dopuszczalne Niepowodzenia\",\"author\":\"Autor\",\"config\":\"Konfiguracja\",\"compare\":\"Porównanie\",\"committer\":\"Committer\",\"branch\":\"Gałąź\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"build_matrix\":\"Macierz Buildów\",\"allowed_failures\":\"Dopuszczalne Niepowodzenia\",\"author\":\"Autor\",\"config\":\"Konfiguracja\",\"compare\":\"Porównanie\",\"committer\":\"Komitujący\",\"branch\":\"Gałąź\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\"},\"layouts\":{\"top\":{\"home\":\"Start\",\"blog\":\"Blog\",\"docs\":\"Dokumentacja\",\"stats\":\"Statystki\",\"github_login\":\"Zaloguj się przy pomocy Githuba\",\"profile\":\"Profil\",\"sign_out\":\"Wyloguj się\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"recent\":\"Ostatnie\",\"search\":\"Wyniki\",\"sponsers\":\"Sponsorzy\",\"sponsors_link\":\"Zobacz naszych wszystkich wspaniałych sponsorów &rarr;\",\"my_repositories\":\"Moje repozytoria\"},\"about\":{\"alpha\":\"To wciąż jest wersja alpha.\",\"messages\":{\"alpha\":\"Proszę <strong>nie</strong> traktuj tego jako stabilnej usługi. Wciąż nam wiele do tego brakuje! Więcej informacji znajdziesz <a href='https://github.com/travis-ci'>tutaj.</a>\"},\"join\":\"Pomóż i dołącz do nas!\",\"mailing_list\":\"Lista mailingowa\",\"repository\":\"Repozytorium\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Autor\",\"build\":\"Build\",\"build_matrix\":\"Macierz Buildów\",\"commit\":\"Commit\",\"committer\":\"Komitujący\",\"compare\":\"Porównianie\",\"config\":\"Konfiguracja\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"job\":\"Zadanie\",\"log\":\"Log\"}},\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"your_repos\":\"  Przesuń suwak poniżej, aby włączyć Travisa, dla twoich projektów, a następnie umieść swój kod na GitHubie.<br />\\n Aby testować swój kod przy użyciu wielu wersji Rubiego, zobacz\",\"config\":\"jak skonfigurować niestandardowe opcje builda\"},\"messages\":{\"notice\":\"Aby zacząć, przeczytaj nasz <a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">Przewodnik </a>.\\n  <small>Zajmie ci to tylko kilka minut.</small>\"},\"token\":\"Token\",\"your_repos\":\"Twoje repozytoria\"}},\"statistics\":{\"index\":{\"count\":\"Ilość\",\"repo_growth\":\"Przyrost repozytoriów\",\"total_projects\":\"Łącznie projektów/repozytoriów\",\"build_count\":\"Liczba buildów\",\"last_month\":\"ostatni miesiąc\",\"total_builds\":\"Łącznie Buildów\"}},\"date\":{\"abbr_day_names\":[\"nie\",\"pon\",\"wto\",\"śro\",\"czw\",\"pią\",\"sob\"],\"abbr_month_names\":[\"sty\",\"lut\",\"mar\",\"kwi\",\"maj\",\"cze\",\"lip\",\"sie\",\"wrz\",\"paź\",\"lis\",\"gru\"],\"day_names\":[\"niedziela\",\"poniedziałek\",\"wtorek\",\"środa\",\"czwartek\",\"piątek\",\"sobota\"],\"formats\":{\"default\":\"%d-%m-%Y\",\"long\":\"%B %d, %Y\",\"short\":\"%d %b\"},\"month_names\":[\"styczeń\",\"luty\",\"marzec\",\"kwiecień\",\"maj\",\"czerwiec\",\"lipiec\",\"sierpień\",\"wrzesień\",\"październik\",\"listopad\",\"grudzień\"],\"order\":[\"day\",\"month\",\"year\"]},\"errors\":{\"format\":\"%{attribute} %{message}\",\"messages\":{\"accepted\":\"musi zostać zaakceptowane\",\"blank\":\"nie może być puste\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"pt-BR\":{\"admin\":{\"actions\":{\"create\":\"criar\",\"created\":\"criado\",\"delete\":\"deletar\",\"deleted\":\"deletado\",\"update\":\"atualizar\",\"updated\":\"atualizado\"},\"credentials\":{\"log_out\":\"Deslogar\"},\"dashboard\":{\"add_new\":\"Adicionar novo\",\"ago\":\"atrás\",\"last_used\":\"Última utilização\",\"model_name\":\"Nome do modelo\",\"modify\":\"Modificar\",\"name\":\"Dashboard\",\"pagename\":\"Administração do site\",\"records\":\"Registros\",\"show\":\"Mostrar\"},\"delete\":{\"confirmation\":\"Sim, tenho certeza\",\"flash_confirmation\":\"%{name} foi destruído com sucesso\"},\"flash\":{\"error\":\"%{name} falhou ao %{action}\",\"noaction\":\"Nenhuma ação foi tomada\",\"successful\":\"%{name} foi %{action} com sucesso\"},\"history\":{\"name\":\"Histórico\",\"no_activity\":\"Nenhuma Atividade\",\"page_name\":\"Histórico para %{name}\"},\"list\":{\"add_new\":\"Adicionar novo\",\"delete_action\":\"Deletar\",\"delete_selected\":\"Deletar selecionados\",\"edit_action\":\"Editar\",\"search\":\"Buscar\",\"select\":\"Selecionar %{name} para editar\",\"select_action\":\"Selecionar\",\"show_all\":\"Mostrar todos\"},\"new\":{\"basic_info\":\"Informações básicas\",\"cancel\":\"Cancelar\",\"chosen\":\"Escolhido %{name}\",\"chose_all\":\"Escolher todos\",\"clear_all\":\"Limpar todos\",\"many_chars\":\"caracteres ou menos.\",\"one_char\":\"caractere.\",\"optional\":\"Opcional\",\"required\":\"Requerido\",\"save\":\"Salvar\",\"save_and_add_another\":\"Salvar e adicionar outro\",\"save_and_edit\":\"Salvar e alterar\",\"select_choice\":\"Selecione e clique\"}},\"build\":{\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"job\":\"Trabalho\"},\"builds\":{\"allowed_failures\":\"Falhas Permitidas\",\"author\":\"Autor\",\"branch\":\"Branch\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"message\":\"Mensagem\",\"messages\":{\"sponsored_by\":\"Esta série de testes foi executada em uma caixa de processos patrocinada por\"},\"name\":\"Build\",\"started_at\":\"Iniciou em\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hora\",\"other\":\"%{count} horas\"},\"minutes_exact\":{\"one\":\"%{count} minuto\",\"other\":\"%{count} minutos\"},\"seconds_exact\":{\"one\":\"%{count} segundo\",\"other\":\"%{count} segundos\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Sua conta foi confirmada com sucesso. Você agora está logado.\",\"send_instructions\":\"Você receberá um email com instruções de como confirmar sua conta em alguns minutos.\"},\"failure\":{\"inactive\":\"Sua conta ainda não foi ativada.\",\"invalid\":\"Email ou senha inválidos.\",\"invalid_token\":\"Token de autenticação inválido.\",\"locked\":\"Sua conta está trancada.\",\"timeout\":\"Sua sessão expirou, por favor faça seu login novamente.\",\"unauthenticated\":\"Você precisa fazer o login ou cadastrar-se antes de continuar.\",\"unconfirmed\":\"Você precisa confirmar sua conta antes de continuar.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Instruções de confirmação\"},\"reset_password_instructions\":{\"subject\":\"Instruções de atualização de senha\"},\"unlock_instructions\":{\"subject\":\"Instruções de destrancamento\"}},\"passwords\":{\"send_instructions\":\"Você receberá um email com instruções de como atualizar sua senha em alguns minutos.\",\"updated\":\"Sua senha foi alterada com sucesso. Você agora está logado.\"},\"registrations\":{\"destroyed\":\"Tchau! Sua conta foi cancelada com sucesso. Esperamos vê-lo novamente em breve!\",\"signed_up\":\"Você se cadastrou com sucesso. Se ativada, uma confirmação foi enviada para seu email.\",\"updated\":\"Você atualizou sua conta com sucesso.\"},\"sessions\":{\"signed_in\":\"Logado com sucesso.\",\"signed_out\":\"Deslogado com sucesso.\"},\"unlocks\":{\"send_instructions\":\"Você receberá um email com instruções de como destrancar sua conta em alguns minutos.\",\"unlocked\":\"Sua conta foi destrancada com sucesso. Você agora está logado.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"já foi confirmado\",\"not_found\":\"não encontrado\",\"not_locked\":\"não estava trancado\"}},\"home\":{\"name\":\"home\"},\"jobs\":{\"allowed_failures\":\"Falhas Permitidas\",\"author\":\"Autor\",\"branch\":\"Branch\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"message\":\"Mensagem\",\"messages\":{\"sponsored_by\":\"Esta série de testes foi executada em uma caixa de processos patrocinada por\"},\"started_at\":\"Iniciou em\"},\"layouts\":{\"about\":{\"alpha\":\"Isto é um alpha.\",\"join\":\"Junte-se à nós e ajude!\",\"mailing_list\":\"Lista de email\",\"messages\":{\"alpha\":\"Por favor, <strong>não</strong> considere isto um serviço estável. Estamos muito longe disso! Mais informações <a href='https://github.com/travis-ci'>aqui.</a>\"},\"repository\":\"Repositório\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Faça fork no Github\",\"my_repositories\":\"Meus Repositórios\",\"recent\":\"Recentes\",\"search\":\"Buscar\",\"sponsers\":\"Patrocinadores\",\"sponsors_link\":\"Conheça todos os nossos patrocinadores &rarr;\"},\"mobile\":{\"author\":\"Autor\",\"build\":\"Build\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"job\":\"Trabalho\",\"log\":\"Log\"},\"top\":{\"admin\":\"Admin\",\"blog\":\"Blog\",\"docs\":\"Documentação\",\"github_login\":\"Logue com o Github\",\"home\":\"Home\",\"profile\":\"Perfil\",\"sign_out\":\"Sair\",\"stats\":\"Estatísticas\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"pt-BR\":\"português brasileiro\"},\"no_job\":\"Não há trabalhos\",\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"config\":\"como configurar opções de build\",\"your_repos\":\"Use os botões abaixo para ligar ou desligar o hook de serviço do Travis para seus projetos, e então, faça um push para o Github.<br />Para testar com múltiplas versões do Ruby, leia\"},\"messages\":{\"notice\":\"Para começar, leia nosso <a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">Guia de início</a>. <small>Só leva alguns minutinhos.</small>\"},\"token\":\"Token\",\"update\":\"Atualizar\",\"update_locale\":\"Atualizar\",\"your_locale\":\"Sua língua\",\"your_repos\":\"Seus Repositórios\"}},\"queue\":\"Fila\",\"repositories\":{\"branch\":\"Branch\",\"commit\":\"Commit\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"image_url\":\"URL da imagem\",\"markdown\":\"Markdown\",\"message\":\"Mensagem\",\"rdoc\":\"RDOC\",\"started_at\":\"Iniciou em\",\"tabs\":{\"branches\":\"Sumário do Branch\",\"build\":\"Build\",\"build_history\":\"Histórico de Build\",\"current\":\"Atual\",\"job\":\"Trabalho\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Duração\"},\"statistics\":{\"index\":{\"build_count\":\"Número de Builds\",\"count\":\"Número\",\"last_month\":\"último mês\",\"repo_growth\":\"Crescimento de Repositório\",\"total_builds\":\"Total de Builds\",\"total_projects\":\"Total de Projetos/Repositórios\"}},\"workers\":\"Processos\"},\"ru\":{\"admin\":{\"actions\":{\"create\":\"создать\",\"created\":\"создано\",\"delete\":\"удалить\",\"deleted\":\"удалено\",\"update\":\"обновить\",\"updated\":\"обновлено\"},\"credentials\":{\"log_out\":\"Выход\"},\"dashboard\":{\"add_new\":\"Добавить\",\"ago\":\"назад\",\"last_used\":\"Использовалось в последний раз\",\"model_name\":\"Имя модели\",\"modify\":\"Изменить\",\"name\":\"Панель управления\",\"pagename\":\"Управление сайтом\",\"records\":\"Записи\",\"show\":\"Показать\"},\"delete\":{\"confirmation\":\"Да, я уверен\",\"flash_confirmation\":\"%{name} успешно удалено\"},\"history\":{\"name\":\"История\",\"no_activity\":\"Нет активности\",\"page_name\":\"История %{name}\"},\"list\":{\"add_new\":\"Добавить\",\"delete_action\":\"Удалить\",\"delete_selected\":\"Удалить выбранные\",\"edit_action\":\"Редактировать\",\"search\":\"Поиск\",\"select\":\"Для редактирования выберите %{name}\",\"select_action\":\"Выбрать\",\"show_all\":\"Показать все\"},\"new\":{\"basic_info\":\"Основная информация\",\"cancel\":\"Отмена\",\"chosen\":\"Выбрано %{name}\",\"chose_all\":\"Выбрать все\",\"clear_all\":\"Очистить все\",\"one_char\":\"символ.\",\"optional\":\"Необязательно\",\"required\":\"Обязательно\",\"save\":\"Сохранить\",\"save_and_add_another\":\"Сохранить и добавить другое\",\"save_and_edit\":\"Сохранить и продолжить редактирование\",\"select_choice\":\"Выберите и кликните\",\"many_chars\":\"символов или меньше.\"},\"flash\":{\"error\":\"%{name} не удалось %{action}\",\"noaction\":\"Никаких действий не произведено\",\"successful\":\"%{name} было успешно %{action}\"}},\"build\":{\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"job\":\"Задача\"},\"builds\":{\"allowed_failures\":\"Допустимые неудачи\",\"author\":\"Автор\",\"branch\":\"Ветка\",\"build_matrix\":\"Матрица\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Дифф\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"message\":\"Комментарий\",\"messages\":{\"sponsored_by\":\"Эта серия тестов была запущена на машине, спонсируемой\"},\"name\":\"Билд\",\"started_at\":\"Начало\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} час\",\"few\":\"%{count} часа\",\"many\":\"%{count} часов\",\"other\":\"%{count} часа\"},\"minutes_exact\":{\"one\":\"%{count} минута\",\"few\":\"%{count} минуты\",\"many\":\"%{count} минут\",\"other\":\"%{count} минуты\"},\"seconds_exact\":{\"one\":\"%{count} секунда\",\"few\":\"%{count} секунды\",\"many\":\"%{count} секунд\",\"other\":\"%{count} секунды\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Ваш аккаунт успешно подтвержден. Приветствуем!\",\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциями для прохождения процедуры подтверждения аккаунта.\"},\"failure\":{\"inactive\":\"Ваш аккаунт еще не активирован.\",\"invalid\":\"Ошибка в адресе почты или пароле.\",\"invalid_token\":\"Неправильный токен аутентификации.\",\"locked\":\"Ваш аккаунт заблокирован.\",\"timeout\":\"Сессия окончена. Для продолжения работы войдите снова.\",\"unauthenticated\":\"Вам нужно войти или зарегистрироваться.\",\"unconfirmed\":\"Вы должны сначала подтвердить свой аккаунт.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Инструкции для подтверждению аккаунта\"},\"reset_password_instructions\":{\"subject\":\"Инструкции для сброса пароля\"},\"unlock_instructions\":{\"subject\":\"Инструкции для разблокирования аккаунта\"}},\"passwords\":{\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциями для сброса пароля.\",\"updated\":\"Ваш пароль успешно изменен. Приветствуем!\"},\"registrations\":{\"destroyed\":\"Ваш аккаунт был успешно удален. Живите долго и процветайте!\",\"signed_up\":\"Вы успешно прошли регистрацию. Инструкции для подтверждения аккаунта отправлены на ваш электронный адрес.\",\"updated\":\"Аккаунт успешно обновлен.\"},\"sessions\":{\"signed_in\":\"Приветствуем!\",\"signed_out\":\"Удачи!\"},\"unlocks\":{\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциям для разблокировния аккаунта.\",\"unlocked\":\"Ваш аккаунт успешно разблокирован. Приветствуем!\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"уже подтвержден\",\"not_found\":\"не найден\",\"not_locked\":\"не заблокирован\"}},\"home\":{\"name\":\"Главная\"},\"jobs\":{\"allowed_failures\":\"Допустимые неудачи\",\"author\":\"Автор\",\"branch\":\"Ветка\",\"build_matrix\":\"Матрица\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Сравнение\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"message\":\"Комментарий\",\"messages\":{\"sponsored_by\":\"Эта серия тестов была запущена на машине спонсируемой\"},\"started_at\":\"Начало\"},\"layouts\":{\"about\":{\"alpha\":\"Это альфа-версия\",\"join\":\"Присоединяйтесь к нам и помогайте!\",\"mailing_list\":\"Лист рассылки\",\"messages\":{\"alpha\":\"Пожалуйста, <strong>не</strong> считайте данный сервис стабильным. Мы еще очень далеки от стабильности! <a href='https://github.com/travis-ci'>Подробности</a>\"},\"repository\":\"Репозиторий\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"my_repositories\":\"Мои репозитории\",\"recent\":\"Недавние\",\"search\":\"Поиск\",\"sponsers\":\"Спонсоры\",\"sponsors_link\":\"Список всех наших замечательных спонсоров &rarr;\"},\"mobile\":{\"author\":\"Автор\",\"build\":\"Сборка\",\"build_matrix\":\"Матрица сборок\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Сравнение\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"job\":\"Задача\",\"log\":\"Журнал\"},\"top\":{\"admin\":\"Управление\",\"blog\":\"Блог\",\"docs\":\"Документация\",\"github_login\":\"Войти через Github\",\"home\":\"Главная\",\"profile\":\"Профиль\",\"sign_out\":\"Выход\",\"stats\":\"Статистика\"}},\"no_job\":\"Очередь пуста\",\"profiles\":{\"show\":{\"email\":\"Электронная почта\",\"github\":\"Github\",\"message\":{\"config\":\"как настроить специальные опции билда\",\"your_repos\":\"Используйте переключатели, чтобы включить Travis service hook для вашего проекта, а потом отправьте код на GitHub.<br />\\nДля тестирования на нескольких версиях Ruby смотрите\"},\"messages\":{\"notice\":\"Перед началом, пожалуйста, прочтите <a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">Руководство для быстрого старта</a>. <small>Это займет всего несколько минут.</small>\"},\"token\":\"Токен\",\"update\":\"Обновить\",\"update_locale\":\"Обновить\",\"your_locale\":\"Ваш язык\",\"your_repos\":\"Ваши репозитории\"}},\"queue\":\"Очередь\",\"repositories\":{\"branch\":\"Ветка\",\"commit\":\"Коммит\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"image_url\":\"URL изображения\",\"markdown\":\"Markdown\",\"message\":\"Комментарий\",\"rdoc\":\"RDOC\",\"started_at\":\"Начало\",\"tabs\":{\"branches\":\"Статус веток\",\"build\":\"Билд\",\"build_history\":\"История\",\"current\":\"Текущий\",\"job\":\"Задача\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Длительность\"},\"statistics\":{\"index\":{\"build_count\":\"Количество билдов\",\"count\":\"Количество\",\"last_month\":\"прошлый месяц\",\"repo_growth\":\"Рост числа репозиториев\",\"total_builds\":\"Всего билдов\",\"total_projects\":\"Всего проектов/репозиториев\"}},\"workers\":\"Машины\",\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}}};\n\n\n})();\n//@ sourceURL=config/locales");minispade.register('ext/ember/bound_helper', "(function() {// https://gist.github.com/2018185\n// For reference: https://github.com/wagenet/ember.js/blob/ac66dcb8a1cbe91d736074441f853e0da474ee6e/packages/ember-handlebars/lib/views/bound_property_view.js\nvar BoundHelperView = Ember.View.extend(Ember._Metamorph, {\n\n  context: null,\n  options: null,\n  property: null,\n  // paths of the property that are also observed\n  propertyPaths: [],\n\n  value: Ember.K,\n\n  valueForRender: function() {\n    var value = this.value(Ember.get(this.context, this.property), this.options);\n    if (this.options.escaped) { value = Handlebars.Utils.escapeExpression(value); }\n    return value;\n  },\n\n  render: function(buffer) {\n    buffer.push(this.valueForRender());\n  },\n\n  valueDidChange: function() {\n    if (this.morph.isRemoved()) { return; }\n    this.morph.html(this.valueForRender());\n  },\n\n  didInsertElement: function() {\n    this.valueDidChange();\n  },\n\n  init: function() {\n    this._super();\n    Ember.addObserver(this.context, this.property, this, 'valueDidChange');\n    this.get('propertyPaths').forEach(function(propName) {\n        Ember.addObserver(this.context, this.property + '.' + propName, this, 'valueDidChange');\n    }, this);\n  },\n\n  destroy: function() {\n    Ember.removeObserver(this.context, this.property, this, 'valueDidChange');\n    this.get('propertyPaths').forEach(function(propName) {\n        this.context.removeObserver(this.property + '.' + propName, this, 'valueDidChange');\n    }, this);\n    this._super();\n  }\n\n});\n\nEmber.registerBoundHelper = function(name, func) {\n  var propertyPaths = Array.prototype.slice.call(arguments, 2);\n  Ember.Handlebars.registerHelper(name, function(property, options) {\n    var data = options.data,\n        view = data.view,\n        ctx  = this;\n\n    var bindView = view.createChildView(BoundHelperView, {\n      property: property,\n      propertyPaths: propertyPaths,\n      context: ctx,\n      options: options.hash,\n      value: func\n    });\n\n    view.appendChild(bindView);\n  });\n};\n\n\n})();\n//@ sourceURL=ext/ember/bound_helper");minispade.register('ext/ember/namespace', "(function() {Em.Namespace.reopen = Em.Namespace.reopenClass\n\n\n\n})();\n//@ sourceURL=ext/ember/namespace");
\ No newline at end of file
+minispade.register('app', "(function() {(function() {\nminispade.require('travis');\nminispade.require('auth');\nminispade.require('controllers');\nminispade.require('helpers');\nminispade.require('models');\nminispade.require('pusher');\nminispade.require('routes');\nminispade.require('slider');\nminispade.require('store');\nminispade.require('tailing');\nminispade.require('templates');\nminispade.require('views');\nminispade.require('config/locales');\nminispade.require('data/sponsors');\n\n  Travis.reopen({\n    App: Em.Application.extend({\n      autoinit: false,\n      currentUserBinding: 'auth.user',\n      authStateBinding: 'auth.state',\n      init: function() {\n        this._super.apply(this, arguments);\n        this.store = Travis.Store.create();\n        this.store.loadMany(Travis.Sponsor, Travis.SPONSORS);\n        this.set('auth', Travis.Auth.create({\n          store: this.store,\n          endpoint: Travis.config.api_endpoint\n        }));\n        this.slider = new Travis.Slider();\n        this.pusher = new Travis.Pusher(Travis.config.pusher);\n        return this.tailing = new Travis.Tailing();\n      },\n      signIn: function() {\n        return this.get('auth').signIn();\n      },\n      signOut: function() {\n        this.get('auth').signOut();\n        return this.get('router').send('showAuthenticated');\n      },\n      receive: function() {\n        return this.store.receive.apply(this.store, arguments);\n      },\n      toggleSidebar: function() {\n        var element;\n        $('body').toggleClass('maximized');\n        element = $('<span></span>');\n        $('#top .profile').append(element);\n        Em.run.later((function() {\n          return element.remove();\n        }), 10);\n        element = $('<span></span>');\n        $('#repository').append(element);\n        return Em.run.later((function() {\n          return element.remove();\n        }), 10);\n      }\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=app");minispade.register('auth', "(function() {(function() {\n\n  this.Travis.Auth = Ember.Object.extend({\n    iframe: $('<iframe id=\"auth-frame\" />').hide(),\n    timeout: 5000,\n    state: 'signed-out',\n    receivingEnd: \"\" + location.protocol + \"//\" + location.host,\n    init: function() {\n      var _this = this;\n      this.iframe.appendTo('body');\n      window.addEventListener('message', function(e) {\n        return _this.receiveMessage(e);\n      });\n      return this.loadUser();\n    },\n    accessToken: (function() {\n      return sessionStorage.getItem('travis.token');\n    }).property(),\n    loadUser: function() {\n      var user;\n      if (user = typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.getItem('travis.user') : void 0) {\n        return this.setData({\n          user: JSON.parse(user)\n        });\n      } else if (typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.getItem('travis.auto_signin') : void 0) {\n        return this.trySignIn();\n      }\n    },\n    signIn: function() {\n      this.set('state', 'signing-in');\n      this.trySignIn();\n      return Ember.run.later(this, this.checkSignIn.bind(this), this.timeout);\n    },\n    trySignIn: function() {\n      return this.iframe.attr('src', \"\" + this.endpoint + \"/auth/post_message?origin=\" + this.receivingEnd);\n    },\n    checkSignIn: function() {\n      if (this.get('state') === 'signing-in') {\n        return this.forceSignIn();\n      }\n    },\n    forceSignIn: function() {\n      if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n        localStorage.setItem('travis.auto_signin', 'true');\n      }\n      return window.location = \"\" + this.endpoint + \"/auth/handshake?redirect_uri=\" + location;\n    },\n    signOut: function() {\n      if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n        localStorage.clear();\n      }\n      if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n        sessionStorage.clear();\n      }\n      return this.setData();\n    },\n    setData: function(data) {\n      var user;\n      if (typeof data === 'string') {\n        data = JSON.parse(data);\n      }\n      if (data != null ? data.token : void 0) {\n        this.storeToken(data.token);\n      }\n      if (data != null ? data.user : void 0) {\n        user = this.storeUser(data.user);\n      }\n      this.set('state', user ? 'signed-in' : 'signed-out');\n      return this.set('user', user ? user : void 0);\n    },\n    storeToken: function(token) {\n      if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n        sessionStorage.setItem('travis.token', token);\n      }\n      return this.notifyPropertyChange('accessToken');\n    },\n    storeUser: function(user) {\n      if (typeof localStorage !== \"undefined\" && localStorage !== null) {\n        localStorage.setItem('travis.auto_signin', 'true');\n      }\n      if (typeof sessionStorage !== \"undefined\" && sessionStorage !== null) {\n        sessionStorage.setItem('travis.user', JSON.stringify(user));\n      }\n      this.store.load(Travis.User, user);\n      return this.store.find(Travis.User, user.id);\n    },\n    receiveMessage: function(event) {\n      if (event.origin === this.expectedOrigin()) {\n        this.setData(event.data);\n        return console.log(\"signed in as \" + event.data.user.login);\n      } else {\n        return console.log(\"unexpected message \" + event.origin + \": \" + event.data);\n      }\n    },\n    expectedOrigin: function() {\n      if (this.endpoint[0] === '/') {\n        return this.receivingEnd;\n      } else {\n        return this.endpoint;\n      }\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=auth");minispade.register('controllers', "(function() {(function() {\nminispade.require('helpers');\nminispade.require('travis/ticker');\n\n  Travis.reopen({\n    Controller: Em.Controller.extend({\n      connectOutlet: function() {\n        var view, _connectedOutletViews;\n        view = this._super.apply(this, arguments);\n        if (view) {\n          _connectedOutletViews = Travis.app.get('_connectedOutletViews');\n          if (!_connectedOutletViews) {\n            _connectedOutletViews = [];\n          }\n          _connectedOutletViews.pushObject(view);\n          Travis.app.set('_connectedOutletViews', _connectedOutletViews);\n        }\n        return view;\n      }\n    }),\n    TopController: Em.Controller.extend({\n      userBinding: 'Travis.app.currentUser'\n    }),\n    ApplicationController: Em.Controller.extend(),\n    MainController: Em.Controller.extend(),\n    StatsLayoutController: Em.Controller.extend(),\n    ProfileLayoutController: Em.Controller.extend()\n  });\nminispade.require('controllers/accounts');\nminispade.require('controllers/builds');\nminispade.require('controllers/home');\nminispade.require('controllers/profile');\nminispade.require('controllers/repositories');\nminispade.require('controllers/repository');\nminispade.require('controllers/sidebar');\nminispade.require('controllers/stats');\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers");minispade.register('controllers/accounts', "(function() {(function() {\n\n  Travis.AccountsController = Ember.ArrayController.extend({\n    tab: 'accounts',\n    init: function() {\n      return this._super();\n    },\n    findByLogin: function(login) {\n      return this.find(function(account) {\n        return account.get('login') === 'login';\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/accounts");minispade.register('controllers/builds', "(function() {(function() {\n\n  Travis.BuildsController = Em.ArrayController.extend({\n    repositoryBinding: 'parent.repository',\n    contentBinding: 'parent.builds'\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/builds");minispade.register('controllers/home', "(function() {(function() {\n\n  Travis.HomeController = Travis.Controller.extend();\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/home");minispade.register('controllers/job', "(function() {(function() {\n\n\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/job");minispade.register('controllers/profile', "(function() {(function() {\n\n  Travis.ProfileController = Travis.Controller.extend({\n    name: 'profile',\n    userBinding: 'Travis.app.currentUser',\n    accountsBinding: 'Travis.app.router.accountsController',\n    account: (function() {\n      var login;\n      login = this.get('params.login') || Travis.app.get('currentUser.login');\n      return this.get('accounts').filter(function(account) {\n        if (account.get('login') === login) {\n          return account;\n        }\n      })[0];\n    }).property('accounts.length', 'params.login'),\n    activate: function(action, params) {\n      this.setParams(params || this.get('params'));\n      return this[\"view\" + ($.camelize(action))]();\n    },\n    viewHooks: function() {\n      this.connectTab('hooks');\n      return this.set('hooks', Travis.Hook.find({\n        owner_name: this.get('params.login') || Travis.app.get('currentUser.login')\n      }));\n    },\n    viewUser: function() {\n      return this.connectTab('user');\n    },\n    connectTab: function(tab) {\n      var viewClass;\n      viewClass = Travis[\"\" + ($.camelize(tab)) + \"View\"];\n      this.set('tab', tab);\n      return this.connectOutlet({\n        outletName: 'pane',\n        controller: this,\n        viewClass: viewClass\n      });\n    },\n    setParams: function(params) {\n      var key, value, _results;\n      this.set('params', {});\n      _results = [];\n      for (key in params) {\n        value = params[key];\n        _results.push(this.set(\"params.\" + key, params[key]));\n      }\n      return _results;\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/profile");minispade.register('controllers/repositories', "(function() {(function() {\n\n  Travis.RepositoriesController = Ember.ArrayController.extend({\n    defaultTab: 'recent',\n    sortProperties: ['sortOrder'],\n    init: function() {\n      this.activate(this.defaultTab);\n      return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n    },\n    updateTimes: function() {\n      var content;\n      if (content = this.get('content')) {\n        content.forEach(function(r) {\n          return r.updateTimes();\n        });\n      }\n      return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n    },\n    activate: function(tab, params) {\n      this.set('tab', tab);\n      return this[\"view\" + ($.camelize(tab))](params);\n    },\n    viewRecent: function() {\n      return this.set('content', Travis.Repository.find());\n    },\n    viewOwned: function() {\n      return this.set('content', Travis.Repository.ownedBy(Travis.app.get('currentUser.login')));\n    },\n    viewSearch: function(params) {\n      return this.set('content', Travis.Repository.search(params.search));\n    },\n    searchObserver: (function() {\n      var search, tab;\n      search = this.get('search');\n      tab = search ? 'search' : 'recent';\n      return this.activate(tab, {\n        search: search\n      });\n    }).observes('search')\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/repositories");minispade.register('controllers/repository', "(function() {(function() {\n\n  Travis.RepositoryController = Travis.Controller.extend({\n    bindings: [],\n    init: function() {\n      this._super.apply(this, arguments);\n      return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n    },\n    updateTimes: function() {\n      var build, builds;\n      if (builds = this.get('builds')) {\n        builds.forEach(function(b) {\n          return b.updateTimes();\n        });\n      }\n      if (build = this.get('build')) {\n        build.updateTimes();\n        build.get('jobs').forEach(function(j) {\n          return j.updateTimes();\n        });\n      }\n      return Ember.run.later(this.updateTimes.bind(this), Travis.INTERVALS.updateTimes);\n    },\n    activate: function(action) {\n      this._unbind();\n      return this[\"view\" + ($.camelize(action))]();\n    },\n    viewIndex: function() {\n      this._bind('repository', 'controllers.repositoriesController.firstObject');\n      this._bind('build', 'repository.lastBuild');\n      return this.connectTab('current');\n    },\n    viewCurrent: function() {\n      this.connectTab('current');\n      return this._bind('build', 'repository.lastBuild');\n    },\n    viewBuilds: function() {\n      this.connectTab('builds');\n      return this._bind('builds', 'repository.builds');\n    },\n    viewPullRequests: function() {\n      this.connectTab('pull_requests');\n      return this._bind('builds', 'repository.pullRequests');\n    },\n    viewBranches: function() {\n      this.connectTab('branches');\n      return this._bind('builds', 'repository.branches');\n    },\n    viewBuild: function() {\n      return this.connectTab('build');\n    },\n    viewJob: function() {\n      this._bind('build', 'job.build');\n      return this.connectTab('job');\n    },\n    repositoryObserver: (function() {\n      var repository;\n      repository = this.get('repository');\n      if (repository) {\n        return repository.select();\n      }\n    }).observes('repository.id'),\n    connectTab: function(tab) {\n      var name, viewClass;\n      name = tab === 'current' ? 'build' : tab;\n      viewClass = name === 'builds' || name === 'branches' || name === 'pull_requests' ? Travis.BuildsView : Travis[\"\" + ($.camelize(name)) + \"View\"];\n      this.set('tab', tab);\n      return this.connectOutlet({\n        outletName: 'pane',\n        controller: this,\n        viewClass: viewClass\n      });\n    },\n    _bind: function(to, from) {\n      return this.bindings.push(Ember.oneWay(this, to, from));\n    },\n    _unbind: function() {\n      var binding, _i, _len, _ref;\n      _ref = this.bindings;\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        binding = _ref[_i];\n        binding.disconnect(this);\n      }\n      return this.bindings.length = 0;\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/repository");minispade.register('controllers/sidebar', "(function() {(function() {\n\n  Travis.reopen({\n    SidebarController: Em.ArrayController.extend({\n      init: function() {\n        this.tickables = [];\n        return Travis.Ticker.create({\n          target: this,\n          interval: Travis.INTERVALS.sponsors\n        });\n      },\n      tick: function() {\n        var tickable, _i, _len, _ref, _results;\n        _ref = this.tickables;\n        _results = [];\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          tickable = _ref[_i];\n          _results.push(tickable.tick());\n        }\n        return _results;\n      }\n    }),\n    QueuesController: Em.ArrayController.extend(),\n    WorkersController: Em.ArrayController.extend({\n      groups: (function() {\n        var content, groups, host, worker, _i, _len, _ref;\n        if (content = this.get('content')) {\n          groups = {};\n          _ref = content.toArray();\n          for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n            worker = _ref[_i];\n            host = worker.get('host');\n            if (!groups[host]) {\n              groups[host] = Em.ArrayProxy.create({\n                content: []\n              });\n            }\n            groups[host].pushObject(worker);\n          }\n          return $.values(groups);\n        }\n      }).property('content.length')\n    }),\n    SponsorsController: Em.ArrayController.extend({\n      page: 0,\n      arrangedContent: (function() {\n        return this.get('shuffled').slice(this.start(), this.end());\n      }).property('shuffled.length', 'page'),\n      shuffled: (function() {\n        var content;\n        if (content = this.get('content')) {\n          return $.shuffle(content);\n        } else {\n          return [];\n        }\n      }).property('content.length'),\n      tick: function() {\n        return this.set('page', this.isLast() ? 0 : this.get('page') + 1);\n      },\n      pages: (function() {\n        var length;\n        length = this.get('content.length');\n        if (length) {\n          return parseInt(length / this.get('perPage') + 1);\n        } else {\n          return 1;\n        }\n      }).property('length'),\n      isLast: function() {\n        return this.get('page') === this.get('pages') - 1;\n      },\n      start: function() {\n        return this.get('page') * this.get('perPage');\n      },\n      end: function() {\n        return this.start() + this.get('perPage');\n      }\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/sidebar");minispade.register('controllers/stats', "(function() {(function() {\n\n  Travis.StatsController = Travis.Controller.extend({\n    name: 'stats',\n    init: function() {\n      return this._super('top');\n    },\n    activate: function(action, params) {}\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=controllers/stats");minispade.register('helpers', "(function() {(function() {\nminispade.require('helpers/handlebars');\nminispade.require('helpers/helpers');\nminispade.require('helpers/urls');\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers");minispade.register('helpers/handlebars', "(function() {(function() {\n  var safe;\nminispade.require('ext/ember/bound_helper');\n\n  safe = function(string) {\n    return new Handlebars.SafeString(string);\n  };\n\n  Handlebars.registerHelper('tipsy', function(text, tip) {\n    return safe('<span class=\"tool-tip\" original-title=\"' + tip + '\">' + text + '</span>');\n  });\n\n  Handlebars.registerHelper('t', function(key) {\n    return safe(I18n.t(key));\n  });\n\n  Ember.registerBoundHelper('formatTime', function(value, options) {\n    return safe(Travis.Helpers.timeAgoInWords(value) || '-');\n  });\n\n  Ember.registerBoundHelper('formatDuration', function(duration, options) {\n    return safe(Travis.Helpers.timeInWords(duration));\n  });\n\n  Ember.registerBoundHelper('formatCommit', function(commit, options) {\n    if (commit) {\n      return safe(Travis.Helpers.formatCommit(commit.get('sha'), commit.get('branch')));\n    }\n  });\n\n  Ember.registerBoundHelper('formatSha', function(sha, options) {\n    return safe(Travis.Helpers.formatSha(sha));\n  });\n\n  Ember.registerBoundHelper('pathFrom', function(url, options) {\n    return safe(Travis.Helpers.pathFrom(url));\n  });\n\n  Ember.registerBoundHelper('formatMessage', function(message, options) {\n    return safe(Travis.Helpers.formatMessage(message, options));\n  });\n\n  Ember.registerBoundHelper('formatConfig', function(config, options) {\n    return safe(Travis.Helpers.formatConfig(config));\n  });\n\n  Ember.registerBoundHelper('formatLog', function(log, options) {\n    return Travis.Helpers.formatLog(log) || '';\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/handlebars");minispade.register('helpers/helpers', "(function() {(function() {\nminispade.require('travis/log');\nminispade.require('emoij');\n\n  this.Travis.Helpers = {\n    compact: function(object) {\n      var key, result, value, _ref;\n      result = {};\n      _ref = object || {};\n      for (key in _ref) {\n        value = _ref[key];\n        if (!$.isEmpty(value)) {\n          result[key] = value;\n        }\n      }\n      return result;\n    },\n    safe: function(string) {\n      return new Handlebars.SafeString(string);\n    },\n    colorForResult: function(result) {\n      if (result === 0) {\n        return 'green';\n      } else {\n        if (result === 1) {\n          return 'red';\n        } else {\n          return null;\n        }\n      }\n    },\n    formatCommit: function(sha, branch) {\n      return Travis.Helpers.formatSha(sha) + (branch ? \" (\" + branch + \")\" : '');\n    },\n    formatSha: function(sha) {\n      return (sha || '').substr(0, 7);\n    },\n    formatConfig: function(config) {\n      var values;\n      config = $.only(config, 'rvm', 'gemfile', 'env', 'otp_release', 'php', 'node_js', 'scala', 'jdk', 'python', 'perl');\n      values = $.map(config, function(value, key) {\n        value = (value && value.join ? value.join(', ') : value) || '';\n        return '%@: %@'.fmt($.camelize(key), value);\n      });\n      if (values.length === 0) {\n        return '-';\n      } else {\n        return values.join(', ');\n      }\n    },\n    formatMessage: function(message, options) {\n      message = message || '';\n      if (options.short) {\n        message = message.split(/\\n/)[0];\n      }\n      return this._emojize(this._escape(message)).replace(/\\n/g, '<br/>');\n    },\n    formatLog: function(log) {\n      return Travis.Log.filter(log);\n    },\n    pathFrom: function(url) {\n      return (url || '').split('/').pop();\n    },\n    timeAgoInWords: function(date) {\n      return $.timeago.distanceInWords(date);\n    },\n    durationFrom: function(started, finished) {\n      started = started && this._toUtc(new Date(this._normalizeDateString(started)));\n      finished = finished ? this._toUtc(new Date(this._normalizeDateString(finished))) : this._nowUtc();\n      if (started && finished) {\n        return Math.round((finished - started) / 1000);\n      } else {\n        return 0;\n      }\n    },\n    timeInWords: function(duration) {\n      var days, hours, minutes, result, seconds;\n      days = Math.floor(duration / 86400);\n      hours = Math.floor(duration % 86400 / 3600);\n      minutes = Math.floor(duration % 3600 / 60);\n      seconds = duration % 60;\n      if (days > 0) {\n        return 'more than 24 hrs';\n      } else {\n        result = [];\n        if (hours === 1) {\n          result.push(hours + ' hr');\n        }\n        if (hours > 1) {\n          result.push(hours + ' hrs');\n        }\n        if (minutes > 0) {\n          result.push(minutes + ' min');\n        }\n        if (seconds > 0) {\n          result.push(seconds + ' sec');\n        }\n        if (result.length > 0) {\n          return result.join(' ');\n        } else {\n          return '-';\n        }\n      }\n    },\n    _normalizeDateString: function(string) {\n      if (window.JHW) {\n        string = string.replace('T', ' ').replace(/-/g, '/');\n        string = string.replace('Z', '').replace(/\\..*$/, '');\n      }\n      return string;\n    },\n    _nowUtc: function() {\n      return this._toUtc(new Date());\n    },\n    _toUtc: function(date) {\n      return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n    },\n    _emojize: function(text) {\n      var emojis;\n      emojis = text.match(/:\\S+?:/g);\n      if (emojis !== null) {\n        $.each(emojis.uniq(), function(ix, emoji) {\n          var image, strippedEmoji;\n          strippedEmoji = emoji.substring(1, emoji.length - 1);\n          if (EmojiDictionary.indexOf(strippedEmoji) !== -1) {\n            image = '<img class=\\'emoji\\' title=\\'' + emoji + '\\' alt=\\'' + emoji + '\\' src=\\'' + '/images/emoji/' + strippedEmoji + '.png\\'/>';\n            return text = text.replace(new RegExp(emoji, 'g'), image);\n          }\n        });\n      }\n      return text;\n    },\n    _escape: function(text) {\n      return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n    }\n  };\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/helpers");minispade.register('helpers/urls', "(function() {(function() {\n\n  this.Travis.Urls = {\n    repository: function(slug) {\n      return \"/\" + slug;\n    },\n    builds: function(slug) {\n      return \"/\" + slug + \"/builds\";\n    },\n    pullRequests: function(slug) {\n      return \"/\" + slug + \"/pull_requests\";\n    },\n    branches: function(slug) {\n      return \"/\" + slug + \"/branches\";\n    },\n    build: function(slug, id) {\n      return \"/\" + slug + \"/builds/\" + id;\n    },\n    job: function(slug, id) {\n      return \"/\" + slug + \"/jobs/\" + id;\n    },\n    githubCommit: function(slug, sha) {\n      return \"http://github.com/\" + slug + \"/commit/\" + sha;\n    },\n    githubRepository: function(slug) {\n      return \"http://github.com/\" + slug;\n    },\n    githubWatchers: function(slug) {\n      return \"http://github.com/\" + slug + \"/watchers\";\n    },\n    githubNetwork: function(slug) {\n      return \"http://github.com/\" + slug + \"/network\";\n    },\n    githubAdmin: function(slug) {\n      return \"http://github.com/\" + slug + \"/admin/hooks#travis_minibucket\";\n    },\n    statusImage: function(slug, branch) {\n      return (\"https://secure.travis-ci.org/\" + slug + \".png\") + (branch ? \"?branch=\" + branch : '');\n    },\n    email: function(email) {\n      return \"mailto:\" + email;\n    },\n    account: function(login) {\n      return \"/profile/\" + login;\n    },\n    user: function(login) {\n      return \"/profile/\" + login + \"/me\";\n    }\n  };\n\n}).call(this);\n\n})();\n//@ sourceURL=helpers/urls");minispade.register('models', "(function() {(function() {\nminispade.require('models/extensions');\nminispade.require('models/account');\nminispade.require('models/artifact');\nminispade.require('models/branch');\nminispade.require('models/build');\nminispade.require('models/commit');\nminispade.require('models/hook');\nminispade.require('models/job');\nminispade.require('models/repository');\nminispade.require('models/sponsor');\nminispade.require('models/user');\nminispade.require('models/worker');\n\n}).call(this);\n\n})();\n//@ sourceURL=models");minispade.register('models/account', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Account = Travis.Model.extend({\n    primaryKey: 'login',\n    login: DS.attr('string'),\n    name: DS.attr('string'),\n    type: DS.attr('string'),\n    reposCount: DS.attr('number'),\n    urlGithub: (function() {\n      return \"http://github.com/\" + (this.get('login'));\n    }).property()\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/account");minispade.register('models/artifact', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Artifact = Travis.Model.extend({\n    body: DS.attr('string'),\n    init: function() {\n      this._super.apply(this, arguments);\n      return this.set('queue', Ember.A([]));\n    },\n    append: function(body) {\n      if (this.get('isLoaded')) {\n        return this.set('body', this.get('body') + body);\n      } else {\n        return this.get('queue').pushObject(body);\n      }\n    },\n    recordDidLoad: (function() {\n      var queue;\n      if (this.get('isLoaded')) {\n        queue = this.get('queue');\n        if (queue.get('length') > 0) {\n          return this.append(queue.toArray().join(''));\n        }\n      }\n    }).observes('isLoaded')\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/artifact");minispade.register('models/branch', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Branch = Travis.Model.extend(Travis.Helpers, {\n    repositoryId: DS.attr('number'),\n    commitId: DS.attr('number'),\n    number: DS.attr('number'),\n    branch: DS.attr('string'),\n    message: DS.attr('string'),\n    result: DS.attr('number'),\n    duration: DS.attr('number'),\n    startedAt: DS.attr('string'),\n    finishedAt: DS.attr('string'),\n    commit: DS.belongsTo('Travis.Commit'),\n    repository: (function() {\n      if (this.get('repositoryId')) {\n        return Travis.Repository.find(this.get('repositoryId'));\n      }\n    }).property('repositoryId'),\n    updateTimes: function() {\n      this.notifyPropertyChange('started_at');\n      return this.notifyPropertyChange('finished_at');\n    }\n  });\n\n  this.Travis.Branch.reopenClass({\n    byRepositoryId: function(id) {\n      return this.find({\n        repository_id: id\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/branch");minispade.register('models/build', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Build = Travis.Model.extend(Travis.DurationCalculations, {\n    eventType: DS.attr('string'),\n    repositoryId: DS.attr('number'),\n    commitId: DS.attr('number'),\n    state: DS.attr('string'),\n    number: DS.attr('number'),\n    branch: DS.attr('string'),\n    message: DS.attr('string'),\n    result: DS.attr('number'),\n    _duration: DS.attr('number', {\n      key: 'duration'\n    }),\n    startedAt: DS.attr('string', {\n      key: 'started_at'\n    }),\n    finishedAt: DS.attr('string', {\n      key: 'finished_at'\n    }),\n    repository: DS.belongsTo('Travis.Repository'),\n    commit: DS.belongsTo('Travis.Commit'),\n    jobs: DS.hasMany('Travis.Job', {\n      key: 'job_ids'\n    }),\n    config: (function() {\n      return Travis.Helpers.compact(this.get('data.config'));\n    }).property('data.config'),\n    isMatrix: (function() {\n      return this.get('data.job_ids.length') > 1;\n    }).property('data.job_ids.length'),\n    requiredJobs: (function() {\n      return this.get('jobs').filter(function(data) {\n        return !data.get('allowFailure');\n      });\n    }).property('jobs.@each.allowFailure'),\n    allowedFailureJobs: (function() {\n      return this.get('jobs').filter(function(data) {\n        return data.get('allowFailure');\n      });\n    }).property('jobs.@each.allowFailure'),\n    configKeys: (function() {\n      var config, headers, key, keys;\n      if (!(config = this.get('config'))) {\n        return [];\n      }\n      keys = $.intersect($.keys(config), Travis.CONFIG_KEYS);\n      headers = (function() {\n        var _i, _len, _ref, _results;\n        _ref = ['build.job', 'build.duration', 'build.finished_at'];\n        _results = [];\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          key = _ref[_i];\n          _results.push(I18n.t(key));\n        }\n        return _results;\n      })();\n      return $.map(headers.concat(keys), function(key) {\n        return $.camelize(key);\n      });\n    }).property('config')\n  });\n\n  this.Travis.Build.reopenClass({\n    byRepositoryId: function(id, parameters) {\n      return this.find($.extend(parameters || {}, {\n        repository_id: id,\n        orderBy: 'number DESC'\n      }));\n    },\n    olderThanNumber: function(id, build_number) {\n      return this.find({\n        url: \"/builds\",\n        repository_id: id,\n        after_number: build_number\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/build");minispade.register('models/commit', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Commit = Travis.Model.extend({\n    buildId: DS.attr('number'),\n    sha: DS.attr('string'),\n    branch: DS.attr('string'),\n    message: DS.attr('string'),\n    compareUrl: DS.attr('string'),\n    authorName: DS.attr('string'),\n    authorEmail: DS.attr('string'),\n    committerName: DS.attr('string'),\n    committerEmail: DS.attr('string'),\n    build: DS.belongsTo('Travis.Build', {\n      key: 'buildId'\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/commit");minispade.register('models/extensions', "(function() {(function() {\n\n  Travis.DurationCalculations = Ember.Mixin.create({\n    duration: (function() {\n      var duration;\n      if (duration = this.get('_duration')) {\n        return duration;\n      } else {\n        return Travis.Helpers.durationFrom(this.get('startedAt'), this.get('finishedAt'));\n      }\n    }).property('_duration', 'finishedAt', 'startedAt'),\n    updateTimes: function() {\n      this.notifyPropertyChange('_duration');\n      return this.notifyPropertyChange('finished_at');\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/extensions");minispade.register('models/hook', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Hook = Travis.Model.extend({\n    name: DS.attr('string'),\n    ownerName: DS.attr('string'),\n    description: DS.attr('string'),\n    active: DS.attr('boolean'),\n    account: (function() {\n      return this.get('slug').split('/')[0];\n    }).property('slug'),\n    slug: (function() {\n      return \"\" + (this.get('ownerName')) + \"/\" + (this.get('name'));\n    }).property('ownerName', 'name'),\n    urlGithub: (function() {\n      return \"http://github.com/\" + (this.get('slug'));\n    }).property(),\n    urlGithubAdmin: (function() {\n      return \"http://github.com/\" + (this.get('slug')) + \"/admin/hooks#travis_minibucket\";\n    }).property(),\n    toggle: function() {\n      var transaction;\n      transaction = this.get('store').transaction();\n      transaction.add(this);\n      this.set('active', !this.get('active'));\n      return transaction.commit();\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/hook");minispade.register('models/job', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Job = Travis.Model.extend(Travis.DurationCalculations, {\n    repositoryId: DS.attr('number'),\n    buildId: DS.attr('number'),\n    commitId: DS.attr('number'),\n    logId: DS.attr('number'),\n    queue: DS.attr('string'),\n    state: DS.attr('string'),\n    number: DS.attr('string'),\n    result: DS.attr('number'),\n    _duration: DS.attr('number', {\n      key: 'duration'\n    }),\n    startedAt: DS.attr('string'),\n    finishedAt: DS.attr('string'),\n    allowFailure: DS.attr('boolean', {\n      key: 'allow_failure'\n    }),\n    repository: DS.belongsTo('Travis.Repository', {\n      key: 'repository_id'\n    }),\n    build: DS.belongsTo('Travis.Build', {\n      key: 'build_id'\n    }),\n    commit: DS.belongsTo('Travis.Commit', {\n      key: 'commit_id'\n    }),\n    log: DS.belongsTo('Travis.Artifact', {\n      key: 'log_id'\n    }),\n    isQueued: (function() {}).property('state'),\n    config: (function() {\n      return Travis.Helpers.compact(this.get('data.config'));\n    }).property('data.config'),\n    sponsor: (function() {\n      return this.get('data.sponsor');\n    }).property('data.sponsor'),\n    configValues: (function() {\n      var config;\n      if (config = this.get('config')) {\n        return $.values($.only.apply(config, Travis.CONFIG_KEYS));\n      } else {\n        return [];\n      }\n    }).property('config'),\n    appendLog: function(text) {\n      var log;\n      if (log = this.get('log')) {\n        return log.append(text);\n      }\n    },\n    subscribe: function() {\n      var id;\n      if (id = this.get('id')) {\n        return Travis.app.pusher.subscribe(\"job-\" + id);\n      }\n    },\n    onStateChange: (function() {\n      if (this.get('state') === 'finished') {\n        return Travis.app.pusher.unsubscribe(\"job-\" + (this.get('id')));\n      }\n    }).observes('state')\n  });\n\n  this.Travis.Job.reopenClass({\n    queued: function(queue) {\n      this.find();\n      return Travis.app.store.filter(this, function(job) {\n        var queued;\n        queued = ['created', 'queued'].indexOf(job.get('state')) !== -1;\n        return queued && job.get('queue') === (\"builds.\" + queue);\n      });\n    },\n    findMany: function(ids) {\n      return Travis.app.store.findMany(this, ids);\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/job");minispade.register('models/repository', "(function() {(function() {\nminispade.require('travis/expandable_record_array');\nminispade.require('travis/model');\n\n  this.Travis.Repository = Travis.Model.extend({\n    slug: DS.attr('string'),\n    description: DS.attr('string'),\n    lastBuildId: DS.attr('number'),\n    lastBuildNumber: DS.attr('string'),\n    lastBuildResult: DS.attr('number'),\n    lastBuildStartedAt: DS.attr('string'),\n    lastBuildFinishedAt: DS.attr('string'),\n    lastBuild: DS.belongsTo('Travis.Build'),\n    builds: (function() {\n      var array, builds, id;\n      id = this.get('id');\n      builds = Travis.Build.byRepositoryId(id, {\n        event_type: 'push'\n      });\n      array = Travis.ExpandableRecordArray.create({\n        type: Travis.Build,\n        content: Ember.A([]),\n        store: this.get('store')\n      });\n      array.load(builds);\n      return array;\n    }).property(),\n    pullRequests: (function() {\n      var array, builds, id;\n      id = this.get('id');\n      builds = Travis.Build.byRepositoryId(id, {\n        event_type: 'pull_request'\n      });\n      array = Travis.ExpandableRecordArray.create({\n        type: Travis.Build,\n        content: Ember.A([]),\n        store: this.get('store')\n      });\n      array.load(builds);\n      return array;\n    }).property(),\n    branches: (function() {\n      return Travis.Branch.byRepositoryId(this.get('id'));\n    }).property(),\n    owner: (function() {\n      return (this.get('slug') || '').split('/')[0];\n    }).property('slug'),\n    name: (function() {\n      return (this.get('slug') || '').split('/')[1];\n    }).property('slug'),\n    lastBuildDuration: (function() {\n      var duration;\n      duration = this.get('data.last_build_duration');\n      if (!duration) {\n        duration = Travis.Helpers.durationFrom(this.get('lastBuildStartedAt'), this.get('lastBuildFinishedAt'));\n      }\n      return duration;\n    }).property('data.last_build_duration', 'lastBuildStartedAt', 'lastBuildFinishedAt'),\n    sortOrder: (function() {\n      var lastBuildFinishedAt;\n      if (lastBuildFinishedAt = this.get('lastBuildFinishedAt')) {\n        return -new Date(lastBuildFinishedAt).getTime();\n      } else {\n        return -new Date('9999').getTime() - parseInt(this.get('lastBuildId'));\n      }\n    }).property('lastBuildFinishedAt', 'lastBuildId'),\n    stats: (function() {\n      var _this = this;\n      return this.get('_stats') || $.get(\"https://api.github.com/repos/\" + (this.get('slug')), function(data) {\n        _this.set('_stats', data);\n        return _this.notifyPropertyChange('stats');\n      }) && {};\n    }).property(),\n    select: function() {\n      return Travis.Repository.select(this.get('id'));\n    },\n    updateTimes: function() {\n      return this.notifyPropertyChange('lastBuildDuration');\n    }\n  });\n\n  this.Travis.Repository.reopenClass({\n    recent: function() {\n      return this.find();\n    },\n    ownedBy: function(login) {\n      return this.find({\n        owner_name: login,\n        orderBy: 'name'\n      });\n    },\n    search: function(query) {\n      return this.find({\n        search: query,\n        orderBy: 'name'\n      });\n    },\n    bySlug: function(slug) {\n      var repo;\n      repo = $.select(this.find().toArray(), function(repo) {\n        return repo.get('slug') === slug;\n      });\n      if (repo.length > 0) {\n        return repo;\n      } else {\n        return this.find({\n          slug: slug\n        });\n      }\n    },\n    select: function(id) {\n      return this.find().forEach(function(repository) {\n        return repository.set('selected', repository.get('id') === id);\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/repository");minispade.register('models/sponsor', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Sponsor = Travis.Model.extend({\n    type: DS.attr('string'),\n    url: DS.attr('string'),\n    link: DS.attr('string'),\n    image: (function() {\n      return \"/images/sponsors/\" + (this.get('data.image'));\n    }).property('data.image')\n  });\n\n  Travis.Sponsor.reopenClass({\n    decks: function() {\n      return this.platinum().concat(this.gold());\n    },\n    platinum: function() {\n      var platinum, sponsor, _i, _len, _results;\n      platinum = this.byType('platinum').toArray();\n      _results = [];\n      for (_i = 0, _len = platinum.length; _i < _len; _i++) {\n        sponsor = platinum[_i];\n        _results.push([sponsor]);\n      }\n      return _results;\n    },\n    gold: function() {\n      var gold, _results;\n      gold = this.byType('gold').toArray();\n      _results = [];\n      while (gold.length > 0) {\n        _results.push(gold.splice(0, 2));\n      }\n      return _results;\n    },\n    links: function() {\n      return this.byType('silver');\n    },\n    byType: function() {\n      var types;\n      types = Array.prototype.slice.apply(arguments);\n      return Travis.Sponsor.filter(function(sponsor) {\n        return types.indexOf(sponsor.get('type')) !== -1;\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/sponsor");minispade.register('models/user', "(function() {(function() {\nminispade.require('travis/ajax');\nminispade.require('travis/model');\n\n  this.Travis.User = Travis.Model.extend(Travis.Ajax, {\n    name: DS.attr('string'),\n    email: DS.attr('string'),\n    login: DS.attr('string'),\n    token: DS.attr('string'),\n    locale: DS.attr('string'),\n    gravatarId: DS.attr('string'),\n    isSyncing: DS.attr('boolean'),\n    syncedAt: DS.attr('string'),\n    repoCount: DS.attr('number'),\n    init: function() {\n      if (this.get('isSyncing')) {\n        this.poll();\n      }\n      this._super();\n      return Ember.run.next(this, function() {\n        var transaction;\n        transaction = this.get('store').transaction();\n        return transaction.add(this);\n      });\n    },\n    urlGithub: (function() {\n      return \"https://github.com/\" + (this.get('login'));\n    }).property(),\n    updateLocale: function(locale) {\n      var observer, self, transaction;\n      this.setWithSession('locale', locale);\n      transaction = this.get('transaction');\n      transaction.commit();\n      self = this;\n      observer = function() {\n        if (!self.get('isSaving')) {\n          self.removeObserver('isSaving', observer);\n          transaction = self.get('store').transaction();\n          return transaction.add(self);\n        }\n      };\n      return this.addObserver('isSaving', observer);\n    },\n    type: (function() {\n      return 'user';\n    }).property(),\n    sync: function() {\n      this.post('/users/sync');\n      this.setWithSession('isSyncing', true);\n      return this.poll();\n    },\n    poll: function() {\n      var _this = this;\n      return this.ajax('/users', 'get', {\n        success: function(data) {\n          if (data.user.is_syncing) {\n            return Ember.run.later(_this, _this.poll.bind(_this), 3000);\n          } else {\n            _this.set('isSyncing', false);\n            return _this.setWithSession('syncedAt', data.user.synced_at);\n          }\n        }\n      });\n    },\n    setWithSession: function(name, value) {\n      var user;\n      this.set(name, value);\n      user = JSON.parse(typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.getItem('travis.user') : void 0);\n      user[$.underscore(name)] = this.get(name);\n      return typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.setItem('travis.user', JSON.stringify(user)) : void 0;\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/user");minispade.register('models/worker', "(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Worker = Travis.Model.extend({\n    state: DS.attr('string'),\n    name: DS.attr('string'),\n    host: DS.attr('string'),\n    lastSeenAt: DS.attr('string'),\n    payload: (function() {\n      return this.get('data.payload');\n    }).property('data.payload'),\n    number: (function() {\n      return this.get('name').match(/\\d+$/)[0];\n    }).property('name'),\n    isWorking: (function() {\n      return this.get('state') === 'working';\n    }).property('state'),\n    repository: (function() {\n      return Travis.Repository.find(this.get('payload.repository.id'));\n    }).property('payload.repository.id'),\n    job_id: (function() {\n      return this.get('payload.job.id');\n    }).property('payload.job.id'),\n    job: (function() {\n      return Travis.Job.find(this.get('job_id'));\n    }).property('job_id')\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/worker");minispade.register('pusher', "(function() {(function() {\n\n  Travis.Pusher = function(config) {\n    if (config) {\n      this.init(config);\n    }\n    return this;\n  };\n\n  $.extend(Travis.Pusher, {\n    CHANNELS: ['common'],\n    CHANNEL_PREFIX: ''\n  });\n\n  $.extend(Travis.Pusher.prototype, {\n    active_channels: [],\n    init: function(config) {\n      var channel, _i, _len, _ref, _results;\n      Pusher.warn = this.warn.bind(this);\n      this.pusher = new Pusher(config.key);\n      _ref = Travis.Pusher.CHANNELS;\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        channel = _ref[_i];\n        _results.push(this.subscribe(channel));\n      }\n      return _results;\n    },\n    subscribe: function(channel) {\n      var _this = this;\n      if (this.pusher && this.active_channels.indexOf(channel) === -1) {\n        this.active_channels.push(channel);\n        return this.pusher.subscribe(this.prefix(channel)).bind_all(function(event, data) {\n          return _this.receive(event, data);\n        });\n      }\n    },\n    unsubscribe: function(channel) {\n      var ix;\n      ix = this.active_channels.indexOf(channel);\n      if (this.pusher && ix === -1) {\n        this.active_channels.splice(ix, 1);\n        return this.pusher.unsubscribe(this.prefix(channel));\n      }\n    },\n    prefix: function(channel) {\n      return \"\" + Travis.Pusher.CHANNEL_PREFIX + channel;\n    },\n    receive: function(event, data) {\n      if (event.substr(0, 6) === 'pusher') {\n        return;\n      }\n      if (data.id) {\n        data = this.normalize(event, data);\n      }\n      return Ember.run.next(function() {\n        return Travis.app.store.receive(event, data);\n      });\n    },\n    normalize: function(event, data) {\n      switch (event) {\n        case 'build:started':\n        case 'build:finished':\n          return data;\n        case 'job:created':\n        case 'job:started':\n        case 'job:finished':\n        case 'job:log':\n          if (data.queue) {\n            data.queue = data.queue.replace('builds.', '');\n          }\n          return {\n            job: data\n          };\n        case 'worker:added':\n        case 'worker:updated':\n        case 'worker:removed':\n          return {\n            worker: data\n          };\n      }\n    },\n    warn: function(type, warning) {\n      if (!this.ignoreWarning(warning)) {\n        return console.warn(warning);\n      }\n    },\n    ignoreWarning: function(warning) {\n      var message, _ref;\n      if (message = (_ref = warning.data) != null ? _ref.message : void 0) {\n        return message.indexOf('Existing subscription') === 0 || message.indexOf('No current subscription') === 0;\n      }\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=pusher");minispade.register('routes', "(function() {(function() {\n\n  Travis.Router = Ember.Router.extend({\n    location: 'history',\n    enableLogging: true,\n    initialState: 'loading',\n    goToRoot: Ember.Route.transitionTo('root.home.show'),\n    goToStats: Ember.Route.transitionTo('root.stats'),\n    showRepository: Ember.Route.transitionTo('root.home.repository.show'),\n    showBuilds: Ember.Route.transitionTo('root.home.repository.builds.index'),\n    showBuild: Ember.Route.transitionTo('root.home.repository.builds.show'),\n    showPullRequests: Ember.Route.transitionTo('root.home.repository.pullRequests'),\n    showBranches: Ember.Route.transitionTo('root.home.repository.branches'),\n    showJob: Ember.Route.transitionTo('root.home.repository.job'),\n    showProfile: Ember.Route.transitionTo('root.profile'),\n    showAccount: Ember.Route.transitionTo('root.profile.account'),\n    showUserProfile: Ember.Route.transitionTo('root.profile.account.profile'),\n    signedIn: function() {\n      return !!Travis.app.get('auth.user');\n    },\n    requiresAuth: function(path) {\n      return path === '/profile' && !this.signedIn();\n    },\n    loading: Ember.Route.extend({\n      routePath: function(router, path) {\n        router.set('lastAttemptedPath', path);\n        if (router.requiresAuth(path)) {\n          return router.send('showUnauthenticated');\n        } else {\n          return router.send('showAuthenticated');\n        }\n      }\n    }),\n    showUnauthenticated: Ember.State.transitionTo('root.home.show'),\n    showAuthenticated: Ember.State.transitionTo('authenticated.index'),\n    authenticated: Ember.Route.extend({\n      index: Ember.Route.extend({\n        connectOutlets: function(router) {\n          var path;\n          router.transitionTo('root');\n          path = router.get('lastAttemptedPath');\n          if (path && path !== '/') {\n            return router.route(path);\n          }\n        }\n      })\n    }),\n    root: Ember.Route.extend({\n      initialState: 'home',\n      loading: Ember.State.extend(),\n      stats: Ember.Route.extend({\n        route: '/stats',\n        connectOutlets: function(router) {\n          router.get('applicationController').connectOutlet('statsLayout');\n          $('body').attr('id', 'stats');\n          router.get('statsLayoutController').connectOutlet('top', 'top');\n          return router.get('statsLayoutController').connectOutlet('main', 'stats');\n        }\n      }),\n      profile: Ember.Route.extend({\n        initialState: 'index',\n        route: '/profile',\n        connectOutlets: function(router) {\n          router.get('applicationController').connectOutlet('profileLayout');\n          $('body').attr('id', 'profile');\n          router.get('accountsController').set('content', Travis.Account.find());\n          router.get('profileLayoutController').connectOutlet('top', 'top');\n          return router.get('profileLayoutController').connectOutlet('left', 'accounts');\n        },\n        index: Ember.Route.extend({\n          route: '/',\n          connectOutlets: function(router) {\n            router.get('profileLayoutController').connectOutlet('main', 'profile');\n            return router.get('profileController').activate('hooks');\n          }\n        }),\n        account: Ember.Route.extend({\n          initialState: 'index',\n          route: '/:login',\n          connectOutlets: function(router, account) {\n            var params;\n            if (account) {\n              params = {\n                login: account.get('login')\n              };\n              return router.get('profileController').setParams(params);\n            } else {\n              return router.send('showProfile');\n            }\n          },\n          deserialize: function(router, params) {\n            return router.get('accountsController').findByLogin(params.login);\n          },\n          serialize: function(router, account) {\n            if (account) {\n              return {\n                login: account.get('login')\n              };\n            } else {\n              return {};\n            }\n          },\n          index: Ember.Route.extend({\n            route: '/',\n            connectOutlets: function(router) {\n              return router.get('profileController').activate('hooks');\n            }\n          }),\n          profile: Ember.Route.extend({\n            route: '/profile',\n            connectOutlets: function(router) {\n              return router.get('profileController').activate('user');\n            }\n          })\n        })\n      }),\n      home: Ember.Route.extend({\n        initialState: 'show',\n        route: '/',\n        connectOutlets: function(router) {\n          router.get('applicationController').connectOutlet('home');\n          $('body').attr('id', 'home');\n          router.get('homeController').connectOutlet('left', 'repositories');\n          router.get('homeController').connectOutlet('right', 'sidebar');\n          router.get('homeController').connectOutlet('top', 'top');\n          return router.get('homeController').connectOutlet('main', 'repository');\n        },\n        show: Ember.Route.extend({\n          route: '/',\n          connectOutlets: function(router) {\n            return router.get('repositoryController').activate('index');\n          }\n        }),\n        repository: Ember.Route.extend({\n          initialState: 'show',\n          route: '/:owner/:name',\n          connectOutlets: function(router, repository) {\n            return router.get('repositoryController').set('repository', repository);\n          },\n          deserialize: function(router, params) {\n            var deferred, observer, repos, slug;\n            slug = \"\" + params.owner + \"/\" + params.name;\n            repos = Travis.Repository.bySlug(slug);\n            deferred = $.Deferred();\n            observer = function() {\n              if (repos.get('isLoaded')) {\n                repos.removeObserver('isLoaded', observer);\n                return deferred.resolve(repos.objectAt(0));\n              }\n            };\n            repos.addObserver('isLoaded', observer);\n            return deferred.promise();\n          },\n          serialize: function(router, repository) {\n            if (repository) {\n              return {\n                owner: repository.get('owner'),\n                name: repository.get('name')\n              };\n            } else {\n              return {};\n            }\n          },\n          show: Ember.Route.extend({\n            route: '/',\n            connectOutlets: function(router) {\n              return router.get('repositoryController').activate('current');\n            }\n          }),\n          builds: Ember.Route.extend({\n            route: '/builds',\n            initialState: 'index',\n            index: Ember.Route.extend({\n              route: '/',\n              connectOutlets: function(router, repository) {\n                return router.get('repositoryController').activate('builds');\n              }\n            }),\n            show: Ember.Route.extend({\n              route: '/:build_id',\n              connectOutlets: function(router, build) {\n                if (!build.get) {\n                  build = Travis.Build.find(build);\n                }\n                router.get('repositoryController').set('build', build);\n                return router.get('repositoryController').activate('build');\n              },\n              serialize: function(router, build) {\n                if (build.get) {\n                  return {\n                    build_id: build.get('id')\n                  };\n                } else {\n                  return {\n                    build_id: build\n                  };\n                }\n              },\n              deserialize: function(router, params) {\n                var build, deferred, observer;\n                build = Travis.Build.find(params.build_id);\n                deferred = $.Deferred();\n                observer = function() {\n                  if (build.get('id')) {\n                    build.removeObserver('id', observer);\n                    return deferred.resolve(build);\n                  }\n                };\n                build.addObserver('id', observer);\n                return deferred.promise();\n              }\n            })\n          }),\n          pullRequests: Ember.Route.extend({\n            route: '/pull_requests',\n            connectOutlets: function(router, repository) {\n              return router.get('repositoryController').activate('pull_requests');\n            }\n          }),\n          branches: Ember.Route.extend({\n            route: '/branches',\n            connectOutlets: function(router, repository) {\n              return router.get('repositoryController').activate('branches');\n            }\n          }),\n          job: Ember.Route.extend({\n            route: '/jobs/:job_id',\n            connectOutlets: function(router, job) {\n              if (!job.get) {\n                job = Travis.Job.find(job);\n              }\n              router.get('repositoryController').set('job', job);\n              return router.get('repositoryController').activate('job');\n            },\n            serialize: function(router, job) {\n              if (job.get) {\n                return {\n                  job_id: job.get('id')\n                };\n              } else {\n                return {\n                  job_id: job\n                };\n              }\n            },\n            deserialize: function(router, params) {\n              var deferred, job, observer;\n              job = Travis.Job.find(params.job_id);\n              deferred = $.Deferred();\n              observer = function() {\n                if (job.get('id')) {\n                  job.removeObserver('id', observer);\n                  return deferred.resolve(job);\n                }\n              };\n              job.addObserver('id', observer);\n              return deferred.promise();\n            }\n          })\n        })\n      })\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=routes");minispade.register('slider', "(function() {(function() {\n\n  this.Travis.Slider = function() {\n    if ((typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.getItem('travis.maximized') : void 0) === 'true') {\n      this.minimize();\n    }\n    return this;\n  };\n\n  $.extend(Travis.Slider.prototype, {\n    persist: function() {\n      return typeof localStorage !== \"undefined\" && localStorage !== null ? localStorage.setItem('travis.maximized', this.isMinimized()) : void 0;\n    },\n    isMinimized: function() {\n      return $('body').hasClass('maximized');\n    },\n    minimize: function() {\n      return $('body').addClass('maximized');\n    },\n    toggle: function() {\n      var element;\n      $('body').toggleClass('maximized');\n      this.persist();\n      element = $('<span></span>');\n      $('#top .profile').append(element);\n      return Em.run.later((function() {\n        return element.remove();\n      }), 10);\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=slider");minispade.register('store', "(function() {(function() {\n  var DATA_PROXY,\n    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\nminispade.require('store/rest_adapter');\n\n  DATA_PROXY = {\n    get: function(name) {\n      return this.savedData[name];\n    }\n  };\n\n  Travis.Store = DS.Store.extend({\n    revision: 4,\n    adapter: Travis.RestAdapter.create(),\n    merge: function(type, id, hash) {\n      var clientId, data, dataCache, primaryKey, record, recordCache, typeMap;\n      if (hash === void 0) {\n        hash = id;\n        primaryKey = type.proto().primaryKey;\n        Ember.assert(\"A data hash was loaded for a record of type \" + type.toString() + \" but no primary key '\" + primaryKey + \"' was provided.\", hash[primaryKey]);\n        id = hash[primaryKey];\n      }\n      typeMap = this.typeMapFor(type);\n      dataCache = typeMap.cidToHash;\n      clientId = typeMap.idToCid[id];\n      recordCache = this.get('recordCache');\n      if (clientId !== void 0) {\n        if (data = dataCache[clientId]) {\n          $.extend(data, hash);\n        } else {\n          dataCache[clientId] = hash;\n        }\n        if (record = recordCache[clientId]) {\n          record.send('didChangeData');\n        }\n      } else {\n        clientId = this.find(type, id).get('clientId');\n      }\n      if (clientId) {\n        DATA_PROXY.savedData = hash;\n        this.updateRecordArrays(type, clientId, DATA_PROXY);\n        return {\n          id: id,\n          clientId: clientId\n        };\n      }\n    },\n    receive: function(event, data) {\n      var job, mappings, name, type, _ref;\n      _ref = event.split(':'), name = _ref[0], type = _ref[1];\n      mappings = this.adapter.get('mappings');\n      type = mappings[name];\n      if (event === 'job:log') {\n        if (job = this.find(Travis.Job, data['job']['id'])) {\n          return job.appendLog(data['job']['_log']);\n        }\n      } else if (data[type.singularName()]) {\n        return this._loadOne(this, type, data);\n      } else if (data[type.pluralName()]) {\n        return this._loadMany(this, type, data);\n      } else {\n        if (!type) {\n          throw \"can't load data for \" + name;\n        }\n      }\n    },\n    _loadOne: function(store, type, json) {\n      var root;\n      root = type.singularName();\n      this.adapter.sideload(store, type, json, root);\n      this.merge(type, json[root]);\n      return this._updateAssociations(type, root, json[root]);\n    },\n    _loadMany: function(store, type, json) {\n      var root;\n      root = type.pluralName();\n      this.adapter.sideload(store, type, json, root);\n      return this.loadMany(type, json[root]);\n    },\n    _updateAssociations: function(type, name, data) {\n      var _this = this;\n      return Em.get(type, 'associationsByName').forEach(function(key, meta) {\n        var clientId, dataProxy, id, ids, parent, _ref;\n        if (meta.kind === 'belongsTo') {\n          id = data[\"\" + key + \"_id\"];\n          if (clientId = _this.typeMapFor(meta.type).idToCid[id]) {\n            if (parent = _this.findByClientId(meta.type, clientId, id)) {\n              dataProxy = parent.get('data');\n              if (ids = dataProxy.get(\"\" + name + \"_ids\")) {\n                if (_ref = data.id, __indexOf.call(ids, _ref) < 0) {\n                  ids.pushObject(data.id);\n                }\n                return parent.send('didChangeData');\n              }\n            }\n          }\n        }\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=store");minispade.register('store/fixture_adapter', "(function() {(function() {\n\n  this.Travis.FixtureAdapter = DS.Adapter.extend({\n    find: function(store, type, id) {\n      var fixtures;\n      fixtures = type.FIXTURES;\n      Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n      if (fixtures.hasLoaded) {\n        return;\n      }\n      return setTimeout((function() {\n        store.loadMany(type, fixtures);\n        return fixtures.hasLoaded = true;\n      }), 300);\n    },\n    findMany: function() {\n      return this.find.apply(this, arguments);\n    },\n    findAll: function(store, type) {\n      var fixtures, ids;\n      fixtures = type.FIXTURES;\n      Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n      ids = fixtures.map(function(item, index, self) {\n        return item.id;\n      });\n      return store.loadMany(type, ids, fixtures);\n    },\n    findQuery: function(store, type, params, array) {\n      var fixture, fixtures, hashes, key, matches, value;\n      fixtures = type.FIXTURES;\n      Ember.assert(\"Unable to find fixtures for model type \" + type.toString(), !!fixtures);\n      hashes = (function() {\n        var _i, _len, _results;\n        _results = [];\n        for (_i = 0, _len = fixtures.length; _i < _len; _i++) {\n          fixture = fixtures[_i];\n          matches = (function() {\n            var _results1;\n            _results1 = [];\n            for (key in params) {\n              value = params[key];\n              _results1.push(key === 'orderBy' || fixture[key] === value);\n            }\n            return _results1;\n          })();\n          if (matches.reduce(function(a, b) {\n            return a && b;\n          })) {\n            _results.push(fixture);\n          } else {\n            _results.push(null);\n          }\n        }\n        return _results;\n      })();\n      return array.load(hashes.compact());\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=store/fixture_adapter");minispade.register('store/rest_adapter', "(function() {(function() {\nminispade.require('travis/ajax');\nminispade.require('models');\n\n  this.Travis.RestAdapter = DS.RESTAdapter.extend(Travis.Ajax, {\n    mappings: {\n      repositories: Travis.Repository,\n      repository: Travis.Repository,\n      builds: Travis.Build,\n      build: Travis.Build,\n      commits: Travis.Commit,\n      commit: Travis.Commit,\n      jobs: Travis.Job,\n      job: Travis.Job,\n      account: Travis.Account,\n      accounts: Travis.Account,\n      worker: Travis.Worker,\n      workers: Travis.Worker\n    },\n    plurals: {\n      repository: 'repositories',\n      build: 'builds',\n      branch: 'branches',\n      job: 'jobs',\n      worker: 'workers',\n      profile: 'profile'\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=store/rest_adapter");minispade.register('tailing', "(function() {(function() {\n\n  this.Travis.Tailing = function() {\n    this.position = $(window).scrollTop();\n    $(window).scroll(this.onScroll.bind(this));\n    return this;\n  };\n\n  $.extend(Travis.Tailing.prototype, {\n    options: {\n      timeout: 200\n    },\n    run: function() {\n      this.autoScroll();\n      this.positionButton();\n      if (this.active()) {\n        return Ember.run.later(this.run.bind(this), this.options.timeout);\n      }\n    },\n    toggle: function(event) {\n      if (this.active()) {\n        return this.stop();\n      } else {\n        return this.start();\n      }\n    },\n    active: function() {\n      return $('#tail').hasClass('active');\n    },\n    start: function() {\n      $('#tail').addClass('active');\n      return this.run();\n    },\n    stop: function() {\n      return $('#tail').removeClass('active');\n    },\n    autoScroll: function() {\n      var log, logBottom, win, winBottom;\n      if (!this.active()) {\n        return;\n      }\n      win = $(window);\n      log = $('#log');\n      logBottom = log.offset().top + log.outerHeight() + 40;\n      winBottom = win.scrollTop() + win.height();\n      if (logBottom - winBottom > 0) {\n        return win.scrollTop(logBottom - win.height());\n      }\n    },\n    onScroll: function() {\n      var position;\n      this.positionButton();\n      position = $(window).scrollTop();\n      if (position < this.position) {\n        this.stop();\n      }\n      return this.position = position;\n    },\n    positionButton: function() {\n      var max, offset, tail;\n      tail = $('#tail');\n      if (tail.length === 0) {\n        return;\n      }\n      offset = $(window).scrollTop() - $('#log').offset().top;\n      max = $('#log').height() - $('#tail').height() + 5;\n      if (offset > max) {\n        offset = max;\n      }\n      if (offset > 0) {\n        return tail.css({\n          top: offset - 2\n        });\n      } else {\n        return tail.css({\n          top: 0\n        });\n      }\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=tailing");minispade.register('views', "(function() {(function() {\nminispade.require('ext/ember/namespace');\n\n  this.Travis.reopen({\n    View: Em.View.extend({\n      popup: function(event) {\n        return $(\"#\" + event.target.name).toggleClass('display');\n      }\n    })\n  });\n\n  this.Travis.reopen({\n    HomeView: Travis.View.extend({\n      templateName: 'layouts/home'\n    }),\n    ProfileLayoutView: Travis.View.extend({\n      templateName: 'layouts/profile'\n    }),\n    StatsLayoutView: Travis.View.extend({\n      templateName: 'layouts/simple'\n    }),\n    ApplicationView: Travis.View.extend({\n      templateName: 'application'\n    })\n  });\nminispade.require('views/accounts');\nminispade.require('views/build');\nminispade.require('views/job');\nminispade.require('views/repo');\nminispade.require('views/profile');\nminispade.require('views/sidebar');\nminispade.require('views/stats');\nminispade.require('views/top');\n\n}).call(this);\n\n})();\n//@ sourceURL=views");minispade.register('views/accounts', "(function() {(function() {\n\n  this.Travis.reopen({\n    AccountsView: Travis.View.extend({\n      tabBinding: 'controller.tab',\n      templateName: 'profile/accounts',\n      classAccounts: (function() {\n        if (this.get('tab') === 'accounts') {\n          return 'active';\n        }\n      }).property('tab')\n    }),\n    AccountsListView: Em.CollectionView.extend({\n      elementId: 'accounts',\n      accountBinding: 'content',\n      tagName: 'ul',\n      emptyView: Ember.View.extend({\n        template: Ember.Handlebars.compile('<div class=\"loading\"><span>Loading</span></div>')\n      }),\n      itemViewClass: Travis.View.extend({\n        accountBinding: 'content',\n        typeBinding: 'content.type',\n        selectedBinding: 'account.selected',\n        classNames: ['account'],\n        classNameBindings: ['type', 'selected'],\n        name: (function() {\n          return this.get('content.name') || this.get('content.login');\n        }).property('content.login', 'content.name'),\n        urlAccount: (function() {\n          return Travis.Urls.account(this.get('account.login'));\n        }).property('account.login')\n      })\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/accounts");minispade.register('views/build', "(function() {(function() {\n\n  this.Travis.reopen({\n    BuildsView: Travis.View.extend({\n      templateName: 'builds/list',\n      buildsBinding: 'controller.builds',\n      showMore: function() {\n        var id, number;\n        id = this.get('controller.repository.id');\n        number = this.get('builds.lastObject.number');\n        return this.get('builds').load(Travis.Build.olderThanNumber(id, number));\n      },\n      ShowMoreButton: Em.View.extend({\n        tagName: 'button',\n        classNameBindings: ['isLoading'],\n        attributeBindings: ['disabled'],\n        isLoadingBinding: 'controller.builds.isLoading',\n        template: Em.Handlebars.compile('{{view.label}}'),\n        disabledBinding: 'isLoading',\n        label: (function() {\n          if (this.get('isLoading')) {\n            return 'Loading';\n          } else {\n            return 'Show more';\n          }\n        }).property('isLoading'),\n        click: function() {\n          return this.get('parentView').showMore();\n        }\n      })\n    }),\n    BuildsItemView: Travis.View.extend({\n      tagName: 'tr',\n      classNameBindings: ['color'],\n      repositoryBinding: 'controller.repository',\n      buildBinding: 'context',\n      commitBinding: 'build.commit',\n      color: (function() {\n        return Travis.Helpers.colorForResult(this.get('build.result'));\n      }).property('build.result'),\n      urlBuild: (function() {\n        return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));\n      }).property('repository.slug', 'build.id'),\n      urlGithubCommit: (function() {\n        return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n      }).property('repository.slug', 'commit.sha')\n    }),\n    BuildView: Travis.View.extend({\n      templateName: 'builds/show',\n      elementId: 'build',\n      classNameBindings: ['color', 'loading'],\n      repositoryBinding: 'controller.repository',\n      buildBinding: 'controller.build',\n      commitBinding: 'build.commit',\n      loading: (function() {\n        return !this.get('build.isLoaded');\n      }).property('build.isLoaded'),\n      color: (function() {\n        return Travis.Helpers.colorForResult(this.get('build.result'));\n      }).property('build.result'),\n      urlBuild: (function() {\n        return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));\n      }).property('repository.slug', 'build.id'),\n      urlGithubCommit: (function() {\n        return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n      }).property('repository.slug', 'commit.sha'),\n      urlAuthor: (function() {\n        return Travis.Urls.email(this.get('commit.authorEmail'));\n      }).property('commit.authorEmail'),\n      urlCommitter: (function() {\n        return Travis.Urls.email(this.get('commit.committerEmail'));\n      }).property('commit.committerEmail')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/build");minispade.register('views/job', "(function() {(function() {\n\n  this.Travis.reopen({\n    JobsView: Travis.View.extend({\n      templateName: 'jobs/list',\n      buildBinding: 'controller.build'\n    }),\n    JobsItemView: Travis.View.extend({\n      tagName: 'tr',\n      classNameBindings: ['color'],\n      repositoryBinding: 'context.repository',\n      jobBinding: 'context',\n      color: (function() {\n        return Travis.Helpers.colorForResult(this.get('job.result'));\n      }).property('job.result'),\n      urlJob: (function() {\n        return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));\n      }).property('repository.slug', 'job.id')\n    }),\n    JobView: Travis.View.extend({\n      templateName: 'jobs/show',\n      repositoryBinding: 'controller.repository',\n      jobBinding: 'controller.job',\n      commitBinding: 'job.commit',\n      color: (function() {\n        return Travis.Helpers.colorForResult(this.get('job.result'));\n      }).property('job.result'),\n      urlJob: (function() {\n        return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));\n      }).property('repository.slug', 'job.id'),\n      urlGithubCommit: (function() {\n        return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n      }).property('repository.slug', 'commit.sha'),\n      urlAuthor: (function() {\n        return Travis.Urls.email(this.get('commit.authorEmail'));\n      }).property('commit.authorEmail'),\n      urlCommitter: (function() {\n        return Travis.Urls.email(this.get('commit.committerEmail'));\n      }).property('commit.committerEmail')\n    }),\n    LogView: Travis.View.extend({\n      templateName: 'jobs/log',\n      logBinding: 'job.log',\n      click: function(event) {\n        return $(event.target).closest('.fold').toggleClass('open');\n      },\n      toTop: function() {\n        return $(window).scrollTop(0);\n      },\n      jobBinding: 'context',\n      toggleTailing: function(event) {\n        Travis.app.tailing.toggle();\n        return event.preventDefault();\n      },\n      logSubscriber: (function() {\n        var job, state;\n        job = this.get('job');\n        state = this.get('job.state');\n        if (job && state !== 'finished') {\n          job.subscribe();\n        }\n        return null;\n      }).property('job', 'job.state')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/job");minispade.register('views/left', "(function() {(function() {\n\n  this.Travis.reopen({\n    ReposView: Travis.View.extend({\n      templateName: 'repos/list',\n      tabBinding: 'controller.tab',\n      classRecent: (function() {\n        if (this.get('tab') === 'recent') {\n          return 'active';\n        }\n      }).property('tab'),\n      classOwned: (function() {\n        var classes;\n        classes = [];\n        if (this.get('tab') === 'owned') {\n          classes.push('active');\n        }\n        if (Travis.app.get('currentUser')) {\n          classes.push('display');\n        }\n        return classes.join(' ');\n      }).property('tab', 'Travis.currentUser'),\n      classSearch: (function() {\n        if (this.get('tab') === 'search') {\n          return 'active';\n        }\n      }).property('tab')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/left");minispade.register('views/profile', "(function() {(function() {\n\n  this.Travis.reopen({\n    ProfileView: Travis.View.extend({\n      templateName: 'profile/show',\n      accountBinding: 'controller.account',\n      name: (function() {\n        return this.get('account.name') || this.get('account.login');\n      }).property('account.name', 'account.login')\n    }),\n    ProfileTabsView: Travis.View.extend({\n      templateName: 'profile/tabs',\n      tabBinding: 'controller.tab',\n      activate: function(event) {\n        return this.get('controller').activate(event.target.name);\n      },\n      classHooks: (function() {\n        if (this.get('tab') === 'hooks') {\n          return 'active';\n        }\n      }).property('tab'),\n      classUser: (function() {\n        if (this.get('tab') === 'user') {\n          return 'active';\n        }\n      }).property('tab'),\n      accountBinding: 'controller.account',\n      displayUser: (function() {\n        return this.get('controller.account.login') === this.get('controller.user.login');\n      }).property('controller.account.login', 'controller.user.login')\n    }),\n    HooksView: Travis.View.extend({\n      templateName: 'profile/tabs/hooks',\n      userBinding: 'controller.user',\n      urlGithubAdmin: (function() {\n        return Travis.Urls.githubAdmin(this.get('hook.slug'));\n      }).property('hook.slug')\n    }),\n    UserView: Travis.View.extend({\n      templateName: 'profile/tabs/user',\n      userBinding: 'controller.user',\n      gravatarUrl: (function() {\n        return \"\" + location.protocol + \"//www.gravatar.com/avatar/\" + (this.get('user.gravatarId')) + \"?s=48&d=mm\";\n      }).property('user.gravatarId'),\n      locales: (function() {\n        return [\n          {\n            key: null,\n            name: ''\n          }, {\n            key: 'en',\n            name: 'English'\n          }, {\n            key: 'ca',\n            name: 'Catalan'\n          }, {\n            key: 'cs',\n            name: 'Čeština'\n          }, {\n            key: 'es',\n            name: 'Español'\n          }, {\n            key: 'fr',\n            name: 'Français'\n          }, {\n            key: 'ja',\n            name: '日本語'\n          }, {\n            key: 'nl',\n            name: 'Nederlands'\n          }, {\n            key: 'nb',\n            name: 'Norsk Bokmål'\n          }, {\n            key: 'pl',\n            name: 'Polski'\n          }, {\n            key: {\n              'pt-BR': {\n                name: 'Português brasileiro'\n              }\n            }\n          }, {\n            key: 'ru',\n            name: 'Русский'\n          }\n        ];\n      }).property(),\n      saveLocale: function(event) {\n        return this.get('user').updateLocale($('#locale').val());\n      }\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/profile");minispade.register('views/repo', "(function() {(function() {\nminispade.require('views/repo/list');\nminispade.require('views/repo/show');\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo");minispade.register('views/repo/list', "(function() {(function() {\n\n  this.Travis.reopen({\n    RepositoriesView: Travis.View.extend({\n      templateName: 'repos/list',\n      toggleInfo: function(event) {\n        return $('#repositories').toggleClass('open');\n      }\n    }),\n    RepositoriesListView: Em.CollectionView.extend({\n      elementId: 'repositories',\n      tagName: 'ul',\n      emptyView: Ember.View.extend({\n        template: Ember.Handlebars.compile('<div class=\"loading\"><span>Loading</span></div>')\n      }),\n      itemViewClass: Travis.View.extend({\n        repositoryBinding: 'content',\n        classNames: ['repository'],\n        classNameBindings: ['color', 'selected'],\n        selectedBinding: 'repository.selected',\n        color: (function() {\n          return Travis.Helpers.colorForResult(this.get('repository.lastBuildResult'));\n        }).property('repository.lastBuildResult'),\n        urlRepository: (function() {\n          return Travis.Urls.repository(this.get('repository.slug'));\n        }).property('repository.slug'),\n        urlLastBuild: (function() {\n          return Travis.Urls.build(this.get('repository.slug'), this.get('repository.lastBuildId'));\n        }).property('repository.slug', 'repository.lastBuildId')\n      })\n    }),\n    ReposListTabsView: Travis.View.extend({\n      templateName: 'repos/list/tabs',\n      tabBinding: 'controller.tab',\n      activate: function(event) {\n        return this.get('controller').activate(event.target.name);\n      },\n      classRecent: (function() {\n        if (this.get('tab') === 'recent') {\n          return 'active';\n        }\n      }).property('tab'),\n      classOwned: (function() {\n        var classes;\n        classes = [];\n        if (this.get('tab') === 'owned') {\n          classes.push('active');\n        }\n        if (Travis.app.get('currentUser')) {\n          classes.push('display-inline');\n        }\n        return classes.join(' ');\n      }).property('tab', 'Travis.app.currentUser'),\n      classSearch: (function() {\n        if (this.get('tab') === 'search') {\n          return 'active';\n        }\n      }).property('tab')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo/list");minispade.register('views/repo/show', "(function() {(function() {\n\n  this.Travis.reopen({\n    RepositoryView: Travis.View.extend({\n      templateName: 'repos/show',\n      repositoryBinding: 'controller.repository',\n      \"class\": (function() {\n        if (!this.get('repository.isLoaded')) {\n          return 'loading';\n        }\n      }).property('repository.isLoaded'),\n      urlGithub: (function() {\n        return Travis.Urls.githubRepository(this.get('repository.slug'));\n      }).property('repository.slug'),\n      urlGithubWatchers: (function() {\n        return Travis.Urls.githubWatchers(this.get('repository.slug'));\n      }).property('repository.slug'),\n      urlGithubNetwork: (function() {\n        return Travis.Urls.githubNetwork(this.get('repository.slug'));\n      }).property('repository.slug')\n    }),\n    RepoShowTabsView: Travis.View.extend({\n      templateName: 'repos/show/tabs',\n      repositoryBinding: 'controller.repository',\n      buildBinding: 'controller.build',\n      jobBinding: 'controller.job',\n      tabBinding: 'controller.tab',\n      classCurrent: (function() {\n        if (this.get('tab') === 'current') {\n          return 'active';\n        }\n      }).property('tab'),\n      classBuilds: (function() {\n        if (this.get('tab') === 'builds') {\n          return 'active';\n        }\n      }).property('tab'),\n      classPullRequests: (function() {\n        if (this.get('tab') === 'pull_requests') {\n          return 'active';\n        }\n      }).property('tab'),\n      classBranches: (function() {\n        if (this.get('tab') === 'branches') {\n          return 'active';\n        }\n      }).property('tab'),\n      classBuild: (function() {\n        var classes, tab;\n        tab = this.get('tab');\n        classes = [];\n        if (tab === 'build') {\n          classes.push('active');\n        }\n        if (tab === 'build' || tab === 'job') {\n          classes.push('display-inline');\n        }\n        return classes.join(' ');\n      }).property('tab'),\n      classJob: (function() {\n        if (this.get('tab') === 'job') {\n          return 'active display-inline';\n        }\n      }).property('tab')\n    }),\n    RepoShowToolsView: Travis.View.extend({\n      templateName: 'repos/show/tools',\n      repositoryBinding: 'controller.repository',\n      buildBinding: 'controller.build',\n      jobBinding: 'controller.job',\n      tabBinding: 'controller.tab',\n      toggle: function() {\n        var element;\n        element = $('#tools .pane').toggleClass('display-inline');\n        return this.set('active', element.hasClass('display-inline'));\n      },\n      branches: (function() {\n        if (this.get('active')) {\n          return this.get('repository.branches');\n        }\n      }).property('active', 'repository.branches'),\n      urlRepository: (function() {\n        return 'https://' + location.host + Travis.Urls.repository(this.get('repository.slug'));\n      }).property('repository.slug'),\n      urlStatusImage: (function() {\n        return Travis.Urls.statusImage(this.get('repository.slug'), this.get('branch.commit.branch'));\n      }).property('repository.slug', 'branch'),\n      markdownStatusImage: (function() {\n        return \"[![Build Status](\" + (this.get('urlStatusImage')) + \")](\" + (this.get('urlRepository')) + \")\";\n      }).property('urlStatusImage'),\n      textileStatusImage: (function() {\n        return \"!\" + (this.get('urlStatusImage')) + \"!:\" + (this.get('urlRepository'));\n      }).property('urlStatusImage'),\n      rdocStatusImage: (function() {\n        return \"{<img src=\\\"\" + (this.get('urlStatusImage')) + \"\\\" alt=\\\"Build Status\\\" />}[\" + (this.get('urlRepository')) + \"]\";\n      }).property('urlStatusImage')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/repo/show");minispade.register('views/sidebar', "(function() {(function() {\n\n  this.Travis.reopen({\n    SidebarView: Travis.View.extend({\n      templateName: 'layouts/sidebar',\n      DecksView: Em.View.extend({\n        templateName: \"sponsors/decks\",\n        controller: Travis.SponsorsController.create({\n          perPage: 1\n        }),\n        didInsertElement: function() {\n          var controller;\n          controller = this.get('controller');\n          if (!controller.get('content')) {\n            Travis.app.get('router.sidebarController').tickables.push(controller);\n            controller.set('content', Travis.Sponsor.decks());\n          }\n          return this._super.apply(this, arguments);\n        }\n      }),\n      LinksView: Em.View.extend({\n        templateName: \"sponsors/links\",\n        controller: Travis.SponsorsController.create({\n          perPage: 6\n        }),\n        didInsertElement: function() {\n          var controller;\n          controller = this.get('controller');\n          if (!controller.get('content')) {\n            controller.set('content', Travis.Sponsor.links());\n            Travis.app.get('router.sidebarController').tickables.push(controller);\n          }\n          return this._super.apply(this, arguments);\n        }\n      }),\n      WorkersView: Em.View.extend({\n        templateName: 'workers/list',\n        controller: Travis.WorkersController.create(),\n        didInsertElement: function() {\n          this.set('controller.content', Travis.Worker.find());\n          return this._super.apply(this, arguments);\n        }\n      }),\n      QueuesView: Em.View.extend({\n        templateName: 'queues/list',\n        controller: Travis.QueuesController.create(),\n        didInsertElement: function() {\n          var queue, queues;\n          queues = (function() {\n            var _i, _len, _ref, _results;\n            _ref = Travis.QUEUES;\n            _results = [];\n            for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n              queue = _ref[_i];\n              _results.push(Em.ArrayController.create({\n                content: Travis.Job.queued(queue.name),\n                id: \"queue_\" + queue.name,\n                name: queue.display\n              }));\n            }\n            return _results;\n          })();\n          this.set('controller.content', queues);\n          return this._super.apply(this, arguments);\n        }\n      })\n    }),\n    WorkersView: Travis.View.extend({\n      toggleWorkers: function(event) {\n        var handle;\n        handle = $(event.target).toggleClass('open');\n        if (handle.hasClass('open')) {\n          return $('#workers li').addClass('open');\n        } else {\n          return $('#workers li').removeClass('open');\n        }\n      }\n    }),\n    WorkersListView: Travis.View.extend({\n      toggle: function(event) {\n        return $(event.target).closest('li').toggleClass('open');\n      }\n    }),\n    WorkersItemView: Travis.View.extend({\n      display: (function() {\n        var name, number, payload, repo, state;\n        name = (this.get('worker.name') || '').replace('travis-', '');\n        state = this.get('worker.state');\n        payload = this.get('worker.payload');\n        if (state === 'working' && payload !== void 0) {\n          repo = payload.repository.slug;\n          number = ' #' + payload.build.number;\n          return (\"<span class='name'>\" + name + \": \" + repo + \"</span> \" + number).htmlSafe();\n        } else {\n          return \"\" + name + \": \" + state;\n        }\n      }).property('worker.state')\n    }),\n    QueueItemView: Travis.View.extend({\n      tagName: 'li',\n      urlJob: (function() {\n        return Travis.Urls.job(this.get('job.repository.slug'), this.get('job.id'));\n      }).property('job.repository.slug', 'job.id')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/sidebar");minispade.register('views/stats', "(function() {(function() {\n\n  this.Travis.reopen({\n    StatsView: Travis.View.extend({\n      templateName: 'stats/show',\n      didInsertElement: function() {},\n      renderChart: function(config) {\n        var chart;\n        chart = new Highcharts.Chart(config);\n        return this.fetch(config.source, function(data) {\n          var stats;\n          stats = (function() {\n            var _i, _len, _ref, _results;\n            _ref = data.stats;\n            _results = [];\n            for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n              stats = _ref[_i];\n              _results.push(config.map(stats));\n            }\n            return _results;\n          })();\n          return chart.series[0].setData(stats);\n        });\n      },\n      fetch: function(url, callback) {\n        return $.ajax({\n          type: 'GET',\n          url: url,\n          accepts: {\n            json: 'application/vnd.travis-ci.2+json'\n          },\n          success: callback\n        });\n      },\n      CHARTS: {\n        repos: {\n          source: '/api/stats/repos',\n          total: 0,\n          map: function(data) {\n            return [Date.parse(data.date), this.total += parseInt(data.count)];\n          },\n          chart: {\n            renderTo: \"repos_stats\"\n          },\n          title: {\n            text: \"Total Projects/Repositories\"\n          },\n          xAxis: {\n            type: \"datetime\",\n            dateTimeLabelFormats: {\n              month: \"%e. %b\",\n              year: \"%b\"\n            }\n          },\n          yAxis: {\n            title: {\n              text: \"Count\"\n            },\n            min: 0\n          },\n          tooltip: {\n            formatter: function() {\n              return Highcharts.dateFormat(\"%e. %b\", this.x) + \": \" + this.y + \" repos\";\n            }\n          },\n          series: [\n            {\n              name: \"Repository Growth\",\n              data: []\n            }\n          ]\n        },\n        builds: {\n          source: '/api/stats/tests',\n          map: function(data) {\n            return [Date.parse(data.date), parseInt(data.count)];\n          },\n          chart: {\n            renderTo: \"tests_stats\",\n            type: \"column\"\n          },\n          title: {\n            text: \"Build Count\"\n          },\n          subtitle: {\n            text: \"last month\"\n          },\n          xAxis: {\n            type: \"datetime\",\n            dateTimeLabelFormats: {\n              month: \"%e. %b\",\n              year: \"%b\"\n            }\n          },\n          yAxis: {\n            title: {\n              text: \"Count\"\n            },\n            min: 0\n          },\n          tooltip: {\n            formatter: function() {\n              return Highcharts.dateFormat(\"%e. %b\", this.x) + \": \" + this.y + \" builds\";\n            }\n          },\n          series: [\n            {\n              name: \"Total Builds\",\n              data: []\n            }\n          ]\n        }\n      }\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/stats");minispade.register('views/top', "(function() {(function() {\n\n  this.Travis.reopen({\n    TopView: Travis.View.extend({\n      templateName: 'layouts/top',\n      tabBinding: 'controller.tab',\n      userBinding: 'controller.user',\n      gravatarUrl: (function() {\n        return \"\" + location.protocol + \"//www.gravatar.com/avatar/\" + (this.get('user.gravatarId')) + \"?s=24&d=mm\";\n      }).property('user.gravatarId'),\n      classHome: (function() {\n        if (this.get('tab') === 'home') {\n          return 'active';\n        }\n      }).property('tab'),\n      classStats: (function() {\n        if (this.get('tab') === 'stats') {\n          return 'active';\n        }\n      }).property('tab'),\n      classProfile: (function() {\n        var classes;\n        classes = ['profile'];\n        if (this.get('tab') === 'profile') {\n          classes.push('active');\n        }\n        classes.push(Travis.app.get('authState'));\n        return classes.join(' ');\n      }).property('tab', 'Travis.app.authState'),\n      showProfile: function() {\n        return $('#top .profile ul').show();\n      },\n      hideProfile: function() {\n        return $('#top .profile ul').hide();\n      }\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/top");minispade.register('data/sponsors', "(function() {(function() {\n\n  this.Travis.SPONSORS = [\n    {\n      type: 'platinum',\n      url: \"http://www.wooga.com\",\n      image: \"wooga-205x130.png\"\n    }, {\n      type: 'platinum',\n      url: \"http://bendyworks.com\",\n      image: \"bendyworks-205x130.png\"\n    }, {\n      type: 'platinum',\n      url: \"http://cloudcontrol.com\",\n      image: \"cloudcontrol-205x130.png\"\n    }, {\n      type: 'platinum',\n      url: \"http://xing.de\",\n      image: \"xing-205x130.png\"\n    }, {\n      type: 'gold',\n      url: \"http://heroku.com\",\n      image: \"heroku-205x60.png\"\n    }, {\n      type: 'gold',\n      url: \"http://soundcloud.com\",\n      image: \"soundcloud-205x60.png\"\n    }, {\n      type: 'gold',\n      url: \"http://nedap.com\",\n      image: \"nedap-205x60.png\"\n    }, {\n      type: 'gold',\n      url: \"http://mongohq.com\",\n      image: \"mongohq-205x60.png\"\n    }, {\n      type: 'gold',\n      url: \"http://zweitag.de\",\n      image: \"zweitag-205x60.png\"\n    }, {\n      type: 'gold',\n      url: \"http://kanbanery.com\",\n      image: \"kanbanery-205x60.png\"\n    }, {\n      type: 'gold',\n      url: \"http://ticketevolution.com\",\n      image: \"ticketevolution-205x60.jpg\"\n    }, {\n      type: 'gold',\n      url: \"http://plan.io/travis\",\n      image: \"planio-205x60.png\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://cobot.me\\\">Cobot</a><span>: The one tool to run your coworking space</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://jumpstartlab.com\\\">JumpstartLab</a><span>: We build developers</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://evilmartians.com\\\">Evil Martians</a><span>: Agile Ruby on Rails development</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://zendesk.com\\\">Zendesk</a><span>: Love your helpdesk</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://stripe.com\\\">Stripe</a><span>: Payments for developers</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://basho.com\\\">Basho</a><span>: We make Riak!</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://thinkrelevance.com\\\">Relevance</a><span>: We deliver software solutions</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://mindmatters.de\\\">Mindmatters</a><span>: Software für Menschen</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://amenhq.com\\\">Amen</a><span>: The best and worst of everything</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://site5.com\\\">Site5</a><span>: Premium Web Hosting Solutions</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://www.crowdint.com\\\">Crowd Interactive</a><span>: Leading Rails consultancy in Mexico</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://www.atomicobject.com/detroit\\\">Atomic Object</a><span>: Work with really smart people</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://codeminer.com.br\\\">Codeminer</a><span>: smart services for your startup</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://cloudant.com\\\">Cloudant</a><span>: grow into your data layer, not out of it</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://gidsy.com\\\">Gidsy</a><span>: Explore, organize &amp; book unique things to do!</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://5apps.com\\\">5apps</a><span>: Package &amp; deploy HTML5 apps automatically</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://meltmedia.com\\\">Meltmedia</a><span>: We are Interactive Superheroes</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://www.fngtps.com\\\">Fingertips</a><span> offers design and development services</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://www.engineyard.com\\\">Engine Yard</a><span>: Build epic apps, let us handle the rest</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://malwarebytes.org\\\">Malwarebytes</a><span>: Defeat Malware once and for all.</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://readmill.com\\\">Readmill</a><span>: The best reading app on the iPad.</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://www.mdsol.com\\\">Medidata</a><span>: clinical tech improving quality of life</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://coderwall.com/teams/4f27194e973bf000040005f0\\\">ESM</a><span>: Japan's best agile Ruby/Rails consultancy</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://twitter.com\\\">Twitter</a><span>: instantly connects people everywhere</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://agileanimal.com\\\">AGiLE ANiMAL</a><span>: we <3 Travis CI.</span>\"\n    }, {\n      type: 'silver',\n      link: \"<a href=\\\"http://tupalo.com\\\">Tupalo</a><span>: Discover, review &amp; share local businesses.</span>\"\n    }\n  ];\n\n}).call(this);\n\n})();\n//@ sourceURL=data/sponsors");minispade.register('emoij', "(function() {(function() {\n\n  this.EmojiDictionary = ['-1', '0', '1', '109', '2', '3', '4', '5', '6', '7', '8', '8ball', '9', 'a', 'ab', 'airplane', 'alien', 'ambulance', 'angel', 'anger', 'angry', 'apple', 'aquarius', 'aries', 'arrow_backward', 'arrow_down', 'arrow_forward', 'arrow_left', 'arrow_lower_left', 'arrow_lower_right', 'arrow_right', 'arrow_up', 'arrow_upper_left', 'arrow_upper_right', 'art', 'astonished', 'atm', 'b', 'baby', 'baby_chick', 'baby_symbol', 'balloon', 'bamboo', 'bank', 'barber', 'baseball', 'basketball', 'bath', 'bear', 'beer', 'beers', 'beginner', 'bell', 'bento', 'bike', 'bikini', 'bird', 'birthday', 'black_square', 'blue_car', 'blue_heart', 'blush', 'boar', 'boat', 'bomb', 'book', 'boot', 'bouquet', 'bow', 'bowtie', 'boy', 'bread', 'briefcase', 'broken_heart', 'bug', 'bulb', 'bullettrain_front', 'bullettrain_side', 'bus', 'busstop', 'cactus', 'cake', 'calling', 'camel', 'camera', 'cancer', 'capricorn', 'car', 'cat', 'cd', 'chart', 'checkered_flag', 'cherry_blossom', 'chicken', 'christmas_tree', 'church', 'cinema', 'city_sunrise', 'city_sunset', 'clap', 'clapper', 'clock1', 'clock10', 'clock11', 'clock12', 'clock2', 'clock3', 'clock4', 'clock5', 'clock6', 'clock7', 'clock8', 'clock9', 'closed_umbrella', 'cloud', 'clubs', 'cn', 'cocktail', 'coffee', 'cold_sweat', 'computer', 'confounded', 'congratulations', 'construction', 'construction_worker', 'convenience_store', 'cool', 'cop', 'copyright', 'couple', 'couple_with_heart', 'couplekiss', 'cow', 'crossed_flags', 'crown', 'cry', 'cupid', 'currency_exchange', 'curry', 'cyclone', 'dancer', 'dancers', 'dango', 'dart', 'dash', 'de', 'department_store', 'diamonds', 'disappointed', 'dog', 'dolls', 'dolphin', 'dress', 'dvd', 'ear', 'ear_of_rice', 'egg', 'eggplant', 'egplant', 'eight_pointed_black_star', 'eight_spoked_asterisk', 'elephant', 'email', 'es', 'european_castle', 'exclamation', 'eyes', 'factory', 'fallen_leaf', 'fast_forward', 'fax', 'fearful', 'feelsgood', 'feet', 'ferris_wheel', 'finnadie', 'fire', 'fire_engine', 'fireworks', 'fish', 'fist', 'flags', 'flushed', 'football', 'fork_and_knife', 'fountain', 'four_leaf_clover', 'fr', 'fries', 'frog', 'fuelpump', 'gb', 'gem', 'gemini', 'ghost', 'gift', 'gift_heart', 'girl', 'goberserk', 'godmode', 'golf', 'green_heart', 'grey_exclamation', 'grey_question', 'grin', 'guardsman', 'guitar', 'gun', 'haircut', 'hamburger', 'hammer', 'hamster', 'hand', 'handbag', 'hankey', 'hash', 'headphones', 'heart', 'heart_decoration', 'heart_eyes', 'heartbeat', 'heartpulse', 'hearts', 'hibiscus', 'high_heel', 'horse', 'hospital', 'hotel', 'hotsprings', 'house', 'hurtrealbad', 'icecream', 'id', 'ideograph_advantage', 'imp', 'information_desk_person', 'iphone', 'it', 'jack_o_lantern', 'japanese_castle', 'joy', 'jp', 'key', 'kimono', 'kiss', 'kissing_face', 'kissing_heart', 'koala', 'koko', 'kr', 'leaves', 'leo', 'libra', 'lips', 'lipstick', 'lock', 'loop', 'loudspeaker', 'love_hotel', 'mag', 'mahjong', 'mailbox', 'man', 'man_with_gua_pi_mao', 'man_with_turban', 'maple_leaf', 'mask', 'massage', 'mega', 'memo', 'mens', 'metal', 'metro', 'microphone', 'minidisc', 'mobile_phone_off', 'moneybag', 'monkey', 'monkey_face', 'moon', 'mortar_board', 'mount_fuji', 'mouse', 'movie_camera', 'muscle', 'musical_note', 'nail_care', 'necktie', 'new', 'no_good', 'no_smoking', 'nose', 'notes', 'o', 'o2', 'ocean', 'octocat', 'octopus', 'oden', 'office', 'ok', 'ok_hand', 'ok_woman', 'older_man', 'older_woman', 'open_hands', 'ophiuchus', 'palm_tree', 'parking', 'part_alternation_mark', 'pencil', 'penguin', 'pensive', 'persevere', 'person_with_blond_hair', 'phone', 'pig', 'pill', 'pisces', 'plus1', 'point_down', 'point_left', 'point_right', 'point_up', 'point_up_2', 'police_car', 'poop', 'post_office', 'postbox', 'pray', 'princess', 'punch', 'purple_heart', 'question', 'rabbit', 'racehorse', 'radio', 'rage', 'rage1', 'rage2', 'rage3', 'rage4', 'rainbow', 'raised_hands', 'ramen', 'red_car', 'red_circle', 'registered', 'relaxed', 'relieved', 'restroom', 'rewind', 'ribbon', 'rice', 'rice_ball', 'rice_cracker', 'rice_scene', 'ring', 'rocket', 'roller_coaster', 'rose', 'ru', 'runner', 'sa', 'sagittarius', 'sailboat', 'sake', 'sandal', 'santa', 'satellite', 'satisfied', 'saxophone', 'school', 'school_satchel', 'scissors', 'scorpius', 'scream', 'seat', 'secret', 'shaved_ice', 'sheep', 'shell', 'ship', 'shipit', 'shirt', 'shit', 'shoe', 'signal_strength', 'six_pointed_star', 'ski', 'skull', 'sleepy', 'slot_machine', 'smile', 'smiley', 'smirk', 'smoking', 'snake', 'snowman', 'sob', 'soccer', 'space_invader', 'spades', 'spaghetti', 'sparkler', 'sparkles', 'speaker', 'speedboat', 'squirrel', 'star', 'star2', 'stars', 'station', 'statue_of_liberty', 'stew', 'strawberry', 'sunflower', 'sunny', 'sunrise', 'sunrise_over_mountains', 'surfer', 'sushi', 'suspect', 'sweat', 'sweat_drops', 'swimmer', 'syringe', 'tada', 'tangerine', 'taurus', 'taxi', 'tea', 'telephone', 'tennis', 'tent', 'thumbsdown', 'thumbsup', 'ticket', 'tiger', 'tm', 'toilet', 'tokyo_tower', 'tomato', 'tongue', 'top', 'tophat', 'traffic_light', 'train', 'trident', 'trophy', 'tropical_fish', 'truck', 'trumpet', 'tshirt', 'tulip', 'tv', 'u5272', 'u55b6', 'u6307', 'u6708', 'u6709', 'u6e80', 'u7121', 'u7533', 'u7a7a', 'umbrella', 'unamused', 'underage', 'unlock', 'up', 'us', 'v', 'vhs', 'vibration_mode', 'virgo', 'vs', 'walking', 'warning', 'watermelon', 'wave', 'wc', 'wedding', 'whale', 'wheelchair', 'white_square', 'wind_chime', 'wink', 'wink2', 'wolf', 'woman', 'womans_hat', 'womens', 'x', 'yellow_heart', 'zap', 'zzz'];\n\n}).call(this);\n\n})();\n//@ sourceURL=emoij");minispade.register('ext/jquery', "(function() {(function() {\n\n  $.fn.extend({\n    outerHtml: function() {\n      return $(this).wrap('<div></div>').parent().html();\n    },\n    outerElement: function() {\n      return $($(this).outerHtml()).empty();\n    },\n    flash: function() {\n      return Utils.flash(this);\n    },\n    unflash: function() {\n      return Utils.unflash(this);\n    },\n    filterLog: function() {\n      this.deansi();\n      return this.foldLog();\n    },\n    deansi: function() {\n      return this.html(Utils.deansi(this.html()));\n    },\n    foldLog: function() {\n      return this.html(Utils.foldLog(this.html()));\n    },\n    unfoldLog: function() {\n      return this.html(Utils.unfoldLog(this.html()));\n    },\n    updateTimes: function() {\n      return Utils.updateTimes(this);\n    },\n    activateTab: function(tab) {\n      return Utils.activateTab(this, tab);\n    },\n    timeInWords: function() {\n      return $(this).each(function() {\n        return $(this).text(Utils.timeInWords(parseInt($(this).attr('title'))));\n      });\n    },\n    updateGithubStats: function(repository) {\n      return Utils.updateGithubStats(repository, $(this));\n    }\n  });\n\n  $.extend({\n    isEmpty: function(obj) {\n      if ($.isArray(obj)) {\n        return !obj.length;\n      } else if ($.isObject(obj)) {\n        return !$.keys(obj).length;\n      } else {\n        return !obj;\n      }\n    },\n    isObject: function(obj) {\n      return Object.prototype.toString.call(obj) === '[object Object]';\n    },\n    keys: function(obj) {\n      var keys;\n      keys = [];\n      $.each(obj, function(key) {\n        return keys.push(key);\n      });\n      return keys;\n    },\n    values: function(obj) {\n      var values;\n      values = [];\n      $.each(obj, function(key, value) {\n        return values.push(value);\n      });\n      return values;\n    },\n    underscore: function(string) {\n      return string[0].toLowerCase() + string.substring(1).replace(/([A-Z])?/g, function(match, chr) {\n        if (chr) {\n          return \"_\" + (chr.toUpperCase());\n        } else {\n          return '';\n        }\n      });\n    },\n    camelize: function(string, uppercase) {\n      string = uppercase === false ? $.underscore(string) : $.capitalize(string);\n      return string.replace(/_(.)?/g, function(match, chr) {\n        if (chr) {\n          return chr.toUpperCase();\n        } else {\n          return '';\n        }\n      });\n    },\n    capitalize: function(string) {\n      return string[0].toUpperCase() + string.substring(1);\n    },\n    compact: function(object) {\n      return $.grep(object, function(value) {\n        return !!value;\n      });\n    },\n    all: function(array, callback) {\n      var args, i;\n      args = Array.prototype.slice.apply(arguments);\n      callback = args.pop();\n      array = args.pop() || this;\n      i = 0;\n      while (i < array.length) {\n        if (callback(array[i])) {\n          return false;\n        }\n        i++;\n      }\n      return true;\n    },\n    detect: function(array, callback) {\n      var args, i;\n      args = Array.prototype.slice.apply(arguments);\n      callback = args.pop();\n      array = args.pop() || this;\n      i = 0;\n      while (i < array.length) {\n        if (callback(array[i])) {\n          return array[i];\n        }\n        i++;\n      }\n    },\n    select: function(array, callback) {\n      var args, i, result;\n      args = Array.prototype.slice.apply(arguments);\n      callback = args.pop();\n      array = args.pop() || this;\n      result = [];\n      i = 0;\n      while (i < array.length) {\n        if (callback(array[i])) {\n          result.push(array[i]);\n        }\n        i++;\n      }\n      return result;\n    },\n    slice: function(object, key) {\n      var keys, result;\n      keys = Array.prototype.slice.apply(arguments);\n      object = (typeof keys[0] === 'object' ? keys.shift() : this);\n      result = {};\n      for (key in object) {\n        if (keys.indexOf(key) > -1) {\n          result[key] = object[key];\n        }\n      }\n      return result;\n    },\n    only: function(object) {\n      var key, keys, result;\n      keys = Array.prototype.slice.apply(arguments);\n      object = (typeof keys[0] === 'object' ? keys.shift() : this);\n      result = {};\n      for (key in object) {\n        if (keys.indexOf(key) !== -1) {\n          result[key] = object[key];\n        }\n      }\n      return result;\n    },\n    except: function(object) {\n      var key, keys, result;\n      keys = Array.prototype.slice.apply(arguments);\n      object = (typeof keys[0] === 'object' ? keys.shift() : this);\n      result = {};\n      for (key in object) {\n        if (keys.indexOf(key) === -1) {\n          result[key] = object[key];\n        }\n      }\n      return result;\n    },\n    intersect: function(array, other) {\n      return array.filter(function(element) {\n        return other.indexOf(element) !== -1;\n      });\n    },\n    map: function(elems, callback, arg) {\n      var i, isArray, key, length, ret, value;\n      value = void 0;\n      key = void 0;\n      ret = [];\n      i = 0;\n      length = elems.length;\n      isArray = elems instanceof jQuery || length !== void 0 && typeof length === 'number' && (length > 0 && elems[0] && elems[length - 1]) || length === 0 || jQuery.isArray(elems);\n      if (isArray) {\n        while (i < length) {\n          value = callback(elems[i], i, arg);\n          if (value != null) {\n            ret[ret.length] = value;\n          }\n          i++;\n        }\n      } else {\n        for (key in elems) {\n          value = callback(elems[key], key, arg);\n          if (value != null) {\n            ret[ret.length] = value;\n          }\n        }\n      }\n      return ret.concat.apply([], ret);\n    },\n    shuffle: function(array) {\n      var current, tmp, top;\n      array = array.slice();\n      top = array.length;\n      while (top && --top) {\n        current = Math.floor(Math.random() * (top + 1));\n        tmp = array[current];\n        array[current] = array[top];\n        array[top] = tmp;\n      }\n      return array;\n    },\n    truncate: function(string, length) {\n      if (string.length > length) {\n        return string.trim().substring(0, length) + '...';\n      } else {\n        return string;\n      }\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=ext/jquery");minispade.register('travis/ajax', "(function() {(function() {\n\n  jQuery.support.cors = true;\n\n  this.Travis.Ajax = Ember.Mixin.create({\n    DEFAULT_OPTIONS: {\n      accepts: {\n        json: 'application/vnd.travis-ci.2+json'\n      }\n    },\n    post: function(url, data, callback) {\n      return this.ajax(url, 'post', {\n        data: data,\n        success: callback\n      });\n    },\n    ajax: function(url, method, options) {\n      var accessToken, endpoint, _base, _ref;\n      endpoint = Travis.config.api_endpoint || '';\n      options = options || {};\n      if (accessToken = (_ref = Travis.app) != null ? _ref.get('auth.accessToken') : void 0) {\n        options.headers || (options.headers = {});\n        (_base = options.headers)['Authorization'] || (_base['Authorization'] = \"token \" + accessToken);\n      }\n      options.url = \"\" + endpoint + url;\n      options.type = method;\n      options.dataType = 'json';\n      options.contentType = 'application/json; charset=utf-8';\n      options.context = this;\n      if (options.data && method !== 'GET' && method !== 'get') {\n        options.data = JSON.stringify(options.data);\n      }\n      return $.ajax($.extend(options, this.DEFAULT_OPTIONS));\n    }\n  });\n\n  this.Travis.Ajax.instance = Em.Object.create(this.Travis.Ajax);\n\n  $.extend(this.Travis, {\n    get: function(url, callback) {\n      return this.ajax(url, 'get', {\n        success: callback\n      });\n    },\n    post: function(url, data, callback) {\n      return this.Ajax.instance.post(url, data, callback);\n    },\n    ajax: function(url, method, options) {\n      return this.Ajax.instance.ajax(url, method, options);\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ajax");minispade.register('travis/expandable_record_array', "(function() {(function() {\n\n  Travis.ExpandableRecordArray = DS.RecordArray.extend({\n    isLoaded: false,\n    isLoading: false,\n    load: function(array) {\n      var observer, self;\n      this.set('isLoading', true);\n      self = this;\n      observer = function() {\n        var content;\n        if (this.get('isLoaded')) {\n          content = self.get('content');\n          array.removeObserver('isLoaded', observer);\n          array.forEach(function(record) {\n            return self.pushObject(record);\n          });\n          self.set('isLoading', false);\n          return self.set('isLoaded', true);\n        }\n      };\n      return array.addObserver('isLoaded', observer);\n    },\n    pushObject: function(record) {\n      var clientId, id, ids;\n      ids = this.get('content');\n      id = record.get('id');\n      clientId = record.get('clientId');\n      if (ids.contains(clientId)) {\n        return;\n      }\n      return ids.pushObject(clientId);\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/expandable_record_array");minispade.register('travis/log', "(function() {(function() {\n\n  this.Travis.Log = {\n    FOLDS: {\n      schema: /(<p.*?\\/a>\\$ (?:bundle exec )?rake( db:create)? db:schema:load[\\s\\S]*?<p.*?\\/a>-- assume_migrated_upto_version[\\s\\S]*?<\\/p>\\n<p.*?\\/a>.*<\\/p>)/g,\n      migrate: /(<p.*?\\/a>\\$ (?:bundle exec )?rake( db:create)? db:migrate[\\s\\S]*== +\\w+: migrated \\(.*\\) =+)/g,\n      bundle: /(<p.*?\\/a>\\$ bundle install.*<\\/p>\\n(<p.*?\\/a>(Updating|Using|Installing|Fetching|remote:|Receiving|Resolving).*?<\\/p>\\n|<p.*?\\/a><\\/p>\\n)*)/g,\n      exec: /(<p.*?\\/a>[\\/\\w]*.rvm\\/rubies\\/[\\S]*?\\/(ruby|rbx|jruby) .*?<\\/p>)/g\n    },\n    filter: function(log) {\n      log = this.escape(log);\n      log = this.deansi(log);\n      log = log.replace(/\\r/g, '');\n      log = this.number(log);\n      log = this.fold(log);\n      log = log.replace(/\\n/g, '');\n      return log;\n    },\n    stripPaths: function(log) {\n      return log.replace(/\\/home\\/vagrant\\/builds(\\/[^\\/\\n]+){2}\\//g, '');\n    },\n    escape: function(log) {\n      return Handlebars.Utils.escapeExpression(log);\n    },\n    escapeRuby: function(log) {\n      return log.replace(/#<(\\w+.*?)>/, '#&lt;$1&gt;');\n    },\n    number: function(log) {\n      var result;\n      result = '';\n      $.each(log.trim().split('\\n'), function(ix, line) {\n        var number, path;\n        number = ix + 1;\n        path = Travis.Log.location().substr(1).replace(/\\/L\\d+/, '') + '/L' + number;\n        return result += '<p><a href=\\'#%@\\' id=\\'%@\\' name=\\'L%@\\'>%@</a>%@</p>\\n'.fmt(path, path, number, number, line);\n      });\n      return result.trim();\n    },\n    deansi: function(log) {\n      var ansi, text;\n      log = log.replace(/\\r\\r/g, '\\r').replace(/\\033\\[K\\r/g, '\\r').replace(/^.*\\r(?!$)/gm, '').replace(/\u001b\\[2K/g, '').replace(/\\033\\(B/g, \"\");\n      ansi = ansiparse(log);\n      text = '';\n      ansi.forEach(function(part) {\n        var classes;\n        classes = [];\n        part.foreground && classes.push(part.foreground);\n        part.background && classes.push('bg-' + part.background);\n        part.bold && classes.push('bold');\n        part.italic && classes.push('italic');\n        return text += (classes.length ? '<span class=\\'' + classes.join(' ') + '\\'>' + part.text + '</span>' : part.text);\n      });\n      return text.replace(/\\033/g, '');\n    },\n    fold: function(log) {\n      log = this.unfold(log);\n      $.each(Travis.Log.FOLDS, function(name, pattern) {\n        return log = log.replace(pattern, function() {\n          return '<div class=\\'fold ' + name + '\\'>' + arguments[1].trim() + '</div>';\n        });\n      });\n      return log;\n    },\n    unfold: function(log) {\n      return log.replace(/<div class='fold[^']*'>([\\s\\S]*?)<\\/div>/g, '$1\\n');\n    },\n    location: function() {\n      return window.location.hash;\n    }\n  };\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/log");minispade.register('travis/model', "(function() {(function() {\n\n  this.Travis.Model = DS.Model.extend({\n    primaryKey: 'id',\n    id: DS.attr('number'),\n    refresh: function() {\n      var id;\n      id = this.get('id');\n      if (id) {\n        return Travis.app.store.adapter.find(Travis.app.store, this.constructor, id);\n      }\n    },\n    update: function(attrs) {\n      var _this = this;\n      $.each(attrs, function(key, value) {\n        if (key !== 'id') {\n          return _this.set(key, value);\n        }\n      });\n      return this;\n    }\n  });\n\n  this.Travis.Model.reopenClass({\n    find: function() {\n      if (arguments.length === 0) {\n        return Travis.app.store.findAll(this);\n      } else {\n        return this._super.apply(this, arguments);\n      }\n    },\n    filter: function(callback) {\n      return Travis.app.store.filter(this, callback);\n    },\n    load: function(attrs) {\n      return Travis.app.store.load(this, attrs);\n    },\n    buildURL: function(suffix) {\n      var base, url;\n      base = this.url || this.pluralName();\n      Ember.assert('Base URL (' + base + ') must not start with slash', !base || base.toString().charAt(0) !== '/');\n      Ember.assert('URL suffix (' + suffix + ') must not start with slash', !suffix || suffix.toString().charAt(0) !== '/');\n      url = [base];\n      if (suffix !== void 0) {\n        url.push(suffix);\n      }\n      return url.join('/');\n    },\n    singularName: function() {\n      var name, parts;\n      parts = this.toString().split('.');\n      name = parts[parts.length - 1];\n      return name.replace(/([A-Z])/g, '_$1').toLowerCase().slice(1);\n    },\n    pluralName: function() {\n      return Travis.app.store.adapter.pluralize(this.singularName());\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/model");minispade.register('travis/ticker', "(function() {(function() {\n\n  this.Travis.Ticker = Ember.Object.extend({\n    init: function() {\n      if (this.get('interval') !== -1) {\n        return this.schedule();\n      }\n    },\n    tick: function() {\n      var context, target, targets, _i, _len;\n      context = this.get('context');\n      targets = this.get('targets') || [this.get('target')];\n      for (_i = 0, _len = targets.length; _i < _len; _i++) {\n        target = targets[_i];\n        if (context) {\n          target = context.get(target);\n        }\n        if (target) {\n          target.tick();\n        }\n      }\n      return this.schedule();\n    },\n    schedule: function() {\n      var _this = this;\n      return Ember.run.later((function() {\n        return _this.tick();\n      }), this.get('interval') || Travis.app.TICK_INTERVAL);\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ticker");minispade.register('travis', "(function() {(function() {\nminispade.require('ext/jquery');\nminispade.require('ext/ember/namespace');\n\n  this.Travis = Em.Namespace.create({\n    config: {\n      api_endpoint: $('meta[rel=\"travis.api_endpoint\"]').attr('href')\n    },\n    CONFIG_KEYS: ['rvm', 'gemfile', 'env', 'jdk', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala'],\n    ROUTES: {\n      'profile/:login/me': ['profile', 'user'],\n      'profile/:login': ['profile', 'hooks'],\n      'profile': ['profile', 'hooks'],\n      'stats': ['stats', 'show'],\n      ':owner/:name/jobs/:id/:line': ['home', 'job'],\n      ':owner/:name/jobs/:id': ['home', 'job'],\n      ':owner/:name/builds/:id': ['home', 'build'],\n      ':owner/:name/builds': ['home', 'builds'],\n      ':owner/:name/pull_requests': ['home', 'pullRequests'],\n      ':owner/:name/branches': ['home', 'branches'],\n      ':owner/:name': ['home', 'current'],\n      '': ['home', 'index'],\n      '#': ['home', 'index']\n    },\n    QUEUES: [\n      {\n        name: 'common',\n        display: 'Common'\n      }, {\n        name: 'php',\n        display: 'PHP, Perl and Python'\n      }, {\n        name: 'node_js',\n        display: 'Node.js'\n      }, {\n        name: 'jvmotp',\n        display: 'JVM and Erlang'\n      }, {\n        name: 'rails',\n        display: 'Rails'\n      }, {\n        name: 'spree',\n        display: 'Spree'\n      }\n    ],\n    INTERVALS: {\n      sponsors: -1,\n      times: -1,\n      updateTimes: 1000\n    },\n    run: function(attrs) {\n      var _this = this;\n      return $(function() {\n        _this.redirectOnHashbang();\n        return _this.loadConfig(function(config) {\n          var app;\n          app = Travis.App.create(attrs || {});\n          $.each(Travis, function(key, value) {\n            if (value && value.isClass && key !== 'constructor') {\n              return app[key] = value;\n            }\n          });\n          _this.app = app;\n          _this.store = app.store;\n          return app.initialize();\n        });\n      });\n    },\n    redirectOnHashbang: function() {\n      if (location.hash.slice(0, 2) === '#!') {\n        return location.href = location.href.replace('#!/', '');\n      }\n    },\n    loadConfig: function(callback) {\n      var _this = this;\n      return this.get('/config', function(data) {\n        $.extend(_this.config, data.config);\n        console.log(\"Connecting to \" + data.config.api_endpoint);\n        return callback(data.config);\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis");minispade.register('templates', "(function() {\nEmber.TEMPLATES['application'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression;\n\n\n  stack1 = helpers._triageMustache.call(depth0, \"outlet\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['builds/list'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n  <table id=\\\"builds\\\" class=\\\"list\\\">\\n    <thead>\\n      <tr>\\n        <th>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.name\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.name\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</th>\\n        <th>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.commit\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</th>\\n        <th>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.message\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</th>\\n        <th>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</th>\\n        <th>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.finished_at\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</th>\\n      </tr>\\n    </thead>\\n\\n    <tbody>\\n      \");\n  stack1 = helpers.each.call(depth0, \"build\", \"in\", \"builds\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </tbody>\\n  </table>\\n  <p>\\n    \");\n  stack1 = helpers.view.call(depth0, \"view.ShowMoreButton\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </p>\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        \");\n  stack1 = {};\n  stack1['contextBinding'] = \"build\";\n  stack1 = helpers.view.call(depth0, \"Travis.BuildsItemView\", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n      \");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n          <td class=\\\"number\\\">\\n            <span class=\\\"status\\\"></span>\\n            \");\n  stack1 = helpers['if'].call(depth0, \"id\", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          </td>\\n          <td class=\\\"commit\\\">\\n            <a \");\n  stack1 = {};\n  stack1['href'] = \"view.urlGithubCommit\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n              \");\n  foundHelper = helpers.formatCommit;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatCommit\", \"commit\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n            </a>\\n          </td>\\n          <td class=\\\"message\\\">\\n            \");\n  stack1 = {};\n  stack1['short'] = \"true\";\n  foundHelper = helpers.formatMessage;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"commit.message\", {hash:stack1,contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatMessage\", \"commit.message\", {hash:stack1,contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          </td>\\n          <td class=\\\"duration\\\" \");\n  stack1 = {};\n  stack1['title'] = \"duration\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            \");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </td>\\n          <td class=\\\"finished_at timeago\\\" \");\n  stack1 = {};\n  stack1['title'] = \"finishedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            \");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"finishedAt\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </td>\\n        \");\n  return buffer;}\nfunction program4(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n              <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showBuild\", \"\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n                \");\n  stack1 = helpers._triageMustache.call(depth0, \"number\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n              </a>\\n            \");\n  return buffer;}\n\nfunction program6(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n  <div class=\\\"loading\\\"><span>Loading</span></div>\\n\");}\n\n  stack1 = helpers['if'].call(depth0, \"builds.isLoaded\", {hash:{},inverse:self.program(6, program6, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['builds/show'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n  \");\n  stack1 = helpers['if'].call(depth0, \"loading\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n    <span>Loading</span>\\n  \");}\n\nfunction program4(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n    <dl id=\\\"summary\\\">\\n      <div class=\\\"left\\\">\\n        <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.name\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.name\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n        <dd class=\\\"number\\\">\\n          <span class=\\\"status\\\"></span>\\n          \");\n  stack1 = helpers['if'].call(depth0, \"build.id\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n        </dd>\\n        <dt class=\\\"finished_at_label\\\">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.finished_at\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n        <dd class=\\\"finished_at timeago\\\" \");\n  stack1 = {};\n  stack1['title'] = \"finishedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"build.finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"build.finishedAt\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dd>\\n        <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n        <dd class=\\\"duration\\\" \");\n  stack1 = {};\n  stack1['title'] = \"startedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"build.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"build.duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dd>\\n      </div>\\n\\n      <div class=\\\"right\\\">\\n        <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.commit\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n        <dd class=\\\"commit\\\"><a href=\\\"\");\n  stack1 = helpers.unbound.call(depth0, \"urlGithubCommit\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\\">\");\n  foundHelper = helpers.formatCommit;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"build.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatCommit\", \"build.commit\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n        \");\n  stack1 = helpers['if'].call(depth0, \"commit.compareUrl\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n        \");\n  stack1 = helpers['if'].call(depth0, \"commit.authorName\", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n        \");\n  stack1 = helpers['if'].call(depth0, \"commit.committerName\", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n      </div>\\n\\n      <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.message\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n      <dd class=\\\"message\\\">\");\n  foundHelper = helpers.formatMessage;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"build.commit.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatMessage\", \"build.commit.message\", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"</dd>\\n\\n      \");\n  stack1 = helpers.unless.call(depth0, \"isMatrix\", {hash:{},inverse:self.noop,fn:self.program(13, program13, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </dl>\\n\\n    \");\n  stack1 = helpers['if'].call(depth0, \"build.isMatrix\", {hash:{},inverse:self.program(17, program17, data),fn:self.program(15, program15, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n  \");\n  return buffer;}\nfunction program5(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n            <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showBuild\", \"build\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"build.number\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n          \");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n          <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.compare\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.compare\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n          <dd class=\\\"compare\\\"><a href=\\\"\");\n  stack1 = helpers.unbound.call(depth0, \"commit.compareUrl\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\\">\");\n  foundHelper = helpers.pathFrom;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"build.commit.compareUrl\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"pathFrom\", \"build.commit.compareUrl\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n        \");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n          <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.author\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.author\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n          <dd class=\\\"author\\\"><a href=\\\"\");\n  stack1 = helpers.unbound.call(depth0, \"urlAuthor\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"build.commit.authorName\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n        \");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n          <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.committer\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.committer\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n          <dd class=\\\"committer\\\"><a href=\\\"\");\n  stack1 = helpers.unbound.call(depth0, \"urlCommitter\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"build.commit.committerName\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n        \");\n  return buffer;}\n\nfunction program13(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n        <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.config\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n        <dd class=\\\"config\\\">\");\n  foundHelper = helpers.formatConfig;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"build.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatConfig\", \"build.config\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dd>\\n      \");\n  return buffer;}\n\nfunction program15(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n      \");\n  stack1 = {};\n  stack1['jobsBinding'] = \"build.requiredJobs\";\n  stack1['required'] = \"true\";\n  stack1 = helpers.view.call(depth0, \"Travis.JobsView\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      \");\n  stack1 = {};\n  stack1['jobsBinding'] = \"build.allowedFailureJobs\";\n  stack1 = helpers.view.call(depth0, \"Travis.JobsView\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n    \");\n  return buffer;}\n\nfunction program17(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n      \");\n  stack1 = {};\n  stack1['contextBinding'] = \"build.jobs.firstObject\";\n  stack1 = helpers.view.call(depth0, \"Travis.LogView\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n    \");\n  return buffer;}\n\n  stack1 = helpers['with'].call(depth0, \"view\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['jobs/list'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n  \");\n  stack1 = helpers['if'].call(depth0, \"view.required\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    <thead>\\n      <tr>\\n        \");\n  stack1 = helpers.each.call(depth0, \"key\", \"in\", \"view.build.configKeys\", {hash:{},inverse:self.noop,fn:self.program(6, program6, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n      </tr>\\n    </thead>\\n    <tbody>\\n      \");\n  stack1 = helpers.each.call(depth0, \"job\", \"in\", \"view.jobs\", {hash:{},inverse:self.noop,fn:self.program(8, program8, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </tbody>\\n  </table>\\n\\n  \");\n  stack1 = helpers.unless.call(depth0, \"view.required\", {hash:{},inverse:self.noop,fn:self.program(14, program14, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n    <table id=\\\"jobs\\\" class=\\\"list\\\">\\n      <caption>\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.build_matrix\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.build_matrix\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      </caption>\\n  \");\n  return buffer;}\n\nfunction program4(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n    <table id=\\\"allowed_failure_jobs\\\" class=\\\"list\\\">\\n      <caption>\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.allowed_failures\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.allowed_failures\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n        <a title=\\\"What's this?\\\" class=\\\"help\\\" name=\\\"help-allowed_failures\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"popup\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"></a>\\n      </caption>\\n  \");\n  return buffer;}\n\nfunction program6(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n          <th>\");\n  stack1 = helpers._triageMustache.call(depth0, \"key\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</th>\\n        \");\n  return buffer;}\n\nfunction program8(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        \");\n  stack1 = {};\n  stack1['contextBinding'] = \"job\";\n  stack1 = helpers.view.call(depth0, \"Travis.JobsItemView\", {hash:stack1,inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n      \");\n  return buffer;}\nfunction program9(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n          <td class=\\\"number\\\">\\n            <span class=\\\"status\\\"></span>\\n            \");\n  stack1 = helpers['if'].call(depth0, \"job.id\", {hash:{},inverse:self.noop,fn:self.program(10, program10, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          </td>\\n          <td class=\\\"duration\\\" \");\n  stack1 = {};\n  stack1['title'] = \"startedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            \");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </td>\\n          <td class=\\\"finished_at timeago\\\" \");\n  stack1 = {};\n  stack1['title'] = \"finishedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            \");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"finishedAt\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </td>\\n          \");\n  stack1 = helpers.each.call(depth0, \"value\", \"in\", \"configValues\", {hash:{},inverse:self.noop,fn:self.program(12, program12, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n        \");\n  return buffer;}\nfunction program10(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n              <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showJob\", \"repository\", \"job\", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"number\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n            \");\n  return buffer;}\n\nfunction program12(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n            <td>\");\n  stack1 = helpers._triageMustache.call(depth0, \"value\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</td>\\n          \");\n  return buffer;}\n\nfunction program14(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n    <div id=\\\"help-allowed_failures\\\" class=\\\"popup\\\">\\n      <h4>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.allowed_failures\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.allowed_failures\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</h4>\\n      <p>\\n        Allowed Failures are items in your build matrix that are allowed to\\n        fail without causing the entire build to be shown as failed.\\n      </p>\\n      <p>\\n        You can define allowed failures in the build matrix as follows:\\n      </p>\\n      <pre>matrix:\\n  allow_failures:\\n    - rvm: ruby-head</pre>\\n      <p>\\n        This lets you add in experimental and preparatory builds to test against versions or\\n        configurations that you are not ready to officially support.\\n      </p>\\n    </div>\\n  \");\n  return buffer;}\n\n  stack1 = helpers['if'].call(depth0, \"view.jobs.length\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['jobs/log'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n  <pre id=\\\"log\\\" class=\\\"ansi\\\"><a href=\\\"#\\\" id=\\\"tail\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"toggleTailing\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <span class=\\\"status\\\"></span>\\n    <label>Follow logs</label>\\n  </a>\");\n  foundHelper = helpers.formatLog;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"log.body\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatLog\", \"log.body\", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"</pre>\\n\\n  \");\n  stack1 = helpers['if'].call(depth0, \"sponsor.name\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n  <a href='#' class=\\\"to-top\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"toTop\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">To top</a>\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n    <p class=\\\"sponsor\\\">\\n    \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"builds.messages.sponsored_by\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"builds.messages.sponsored_by\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      <a \");\n  stack1 = {};\n  stack1['href'] = \"sponsor.url\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"sponsor.name\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n    </p>\\n  \");\n  return buffer;}\n\nfunction program4(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n  <div id=\\\"log\\\" class=\\\"loading\\\">\\n    <span>Loading</span>\\n  </div>\\n\");}\n\n  stack1 = helpers._triageMustache.call(depth0, \"view.logSubscriber\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\\n\");\n  stack1 = helpers['if'].call(depth0, \"log.isLoaded\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['jobs/show'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n  \");\n  stack1 = helpers['if'].call(depth0, \"job.isLoaded\", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n    <div \");\n  stack1 = {};\n  stack1['class'] = \"view.color\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n      <dl id=\\\"summary\\\">\\n        <div class=\\\"left\\\">\\n          <dt>Job</dt>\\n          <dd class=\\\"number\\\">\\n            <span class=\\\"status\\\"></span>\\n            \");\n  stack1 = helpers['if'].call(depth0, \"job.id\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          </dd>\\n          <dt class=\\\"finished_at_label\\\">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.finished_at\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n          <dd class=\\\"finished_at timeago\\\" \");\n  stack1 = {};\n  stack1['title'] = \"finishedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"job.finishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"job.finishedAt\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dd>\\n          <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n          <dd class=\\\"duration\\\" \");\n  stack1 = {};\n  stack1['title'] = \"startedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"job.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"job.duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dd>\\n        </div>\\n\\n        <div class=\\\"right\\\">\\n          <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.commit\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n          <dd class=\\\"commit\\\"><a \");\n  stack1 = {};\n  stack1['href'] = \"urlGithubCommit\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.formatCommit;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"commit\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatCommit\", \"commit\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n          \");\n  stack1 = helpers['if'].call(depth0, \"commit.compareUrl\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          \");\n  stack1 = helpers['if'].call(depth0, \"commit.authorName\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          \");\n  stack1 = helpers['if'].call(depth0, \"commit.committerName\", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n        </div>\\n\\n        <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.message\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n        <dd class=\\\"message\\\">\");\n  foundHelper = helpers.formatMessage;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"commit.message\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatMessage\", \"commit.message\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dd>\\n        <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.config\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n        <dd class=\\\"config\\\">\");\n  foundHelper = helpers.formatConfig;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"job.config\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatConfig\", \"job.config\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dd>\\n      </dl>\\n\\n      \");\n  stack1 = {};\n  stack1['contextBinding'] = \"job\";\n  stack1 = helpers.view.call(depth0, \"Travis.LogView\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n    </div>\\n  \");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n              <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showJob\", \"repository\", \"job\", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"job.number\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n            \");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n            <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.compare\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.compare\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n            <dd class=\\\"compare\\\"><a \");\n  stack1 = {};\n  stack1['href'] = \"commit.compareUrl\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.pathFrom;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"commit.compareUrl\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"pathFrom\", \"commit.compareUrl\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n          \");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n            <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.author\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.author\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n            <dd class=\\\"author\\\"><a \");\n  stack1 = {};\n  stack1['href'] = \"urlAuthor\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"commit.authorName\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n          \");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n            <dt>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"jobs.committer\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"jobs.committer\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</dt>\\n            <dd class=\\\"committer\\\"><a \");\n  stack1 = {};\n  stack1['href'] = \"urlCommitter\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"commit.committerName\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></dd>\\n          \");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n    <div id=\\\"job\\\" class=\\\"loading\\\">\\n      <span>Loading</span>\\n    </div>\\n  \");}\n\n  stack1 = helpers['with'].call(depth0, \"view\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['layouts/home'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push(\"<div id=\\\"top\\\">\\n  \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"top\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"top\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n</div>\\n\\n<div id=\\\"page\\\">\\n  <div id=\\\"left\\\">\\n    \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"left\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"left\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </div>\\n\\n  <div id=\\\"main\\\">\\n    \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"main\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"main\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </div>\\n\\n  <div id=\\\"right\\\">\\n    \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"right\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"right\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </div>\\n</div>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['layouts/profile'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push(\"<div id=\\\"top\\\">\\n  \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"top\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"top\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n</div>\\n\\n<div id=\\\"page\\\">\\n  <div id=\\\"left\\\">\\n    \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"left\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"left\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </div>\\n\\n  <div id=\\\"main\\\">\\n    \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"main\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"main\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </div>\\n\\n  <div id=\\\"right\\\">\\n    <div id=\\\"slider\\\" \");\n  stack1 = {};\n  stack1['target'] = \"Travis.app.slider\";\n  stack1 = helpers.action.call(depth0, \"toggle\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n      <div class='icon'></div>&nbsp;\\n    </div>\\n\\n    <div class=\\\"box\\\">\\n      <h4>Getting started?</h4>\\n      <p>\\n        Please read our <a href=\\\"http://about.travis-ci.org/docs/user/getting-started\\\">guide</a>.\\n        It will only take a few minutes :)\\n      </p>\\n      <p>\\n        You can find detailled docs on our <a href=\\\"http://about.travis-ci.org/\\\">about</a> site.\\n      </p>\\n      <p>\\n        If you need help please don't hesitate to join\\n        <a href=\\\"irc://irc.freenode.net#travis\\\">#travis</a> on irc.freenode.net\\n        or our <a href=\\\"http://groups.google.com/group/travis-ci\\\">mailinglist</a>.\\n      </p>\\n    </div>\\n  </div>\\n</div>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['layouts/sidebar'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push(\"<a id=\\\"github\\\" href=\\\"https://github.com/travis-ci\\\" title=\\\"Fork me on GitHub\\\">\\n  \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.fork_me\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.fork_me\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n</a>\\n\\n<div id=\\\"slider\\\" \");\n  stack1 = {};\n  stack1['target'] = \"Travis.app.slider\";\n  stack1 = helpers.action.call(depth0, \"toggle\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n  <div class='icon'></div>&nbsp;\\n</div>\\n\\n\");\n  stack1 = helpers.view.call(depth0, \"view.DecksView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\");\n  stack1 = helpers.view.call(depth0, \"view.WorkersView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\");\n  stack1 = helpers.view.call(depth0, \"view.QueuesView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\");\n  stack1 = helpers.view.call(depth0, \"view.LinksView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\\n<div id=\\\"about\\\" class=\\\"box\\\">\\n  <h4>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.join\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.join\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</h4>\\n  <ul>\\n    <li>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.repository\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.repository\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \": <a href=\\\"http://github.com/travis-ci\\\">Github</a></li>\\n    <li>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.twitter\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.twitter\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \": <a href=\\\"http://twitter.com/travisci\\\">@travisci</a></li>\\n    <li>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.about.mailing_list\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.about.mailing_list\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \": <a href=\\\"http://groups.google.com/group/travis-ci\\\">travis-ci</a></li>\\n    <li><a href=\\\"irc://irc.freenode.net#travis\\\">irc.freenode.net#travis</a></li>\\n  </ul>\\n</div>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['layouts/simple'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push(\"<div id=\\\"top\\\">\\n  \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"top\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"top\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n</div>\\n\\n<div id=\\\"page\\\">\\n  <div id=\\\"main\\\">\\n    \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"main\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"main\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </div>\\n</div>\\n\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['layouts/top'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push(\"<a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"goToRoot\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n  <h1>Travis</h1>\\n</a>\\n\\n<ul id=\\\"navigation\\\">\\n  <li \");\n  stack1 = {};\n  stack1['class'] = \"view.classHome\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"goToRoot\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">Home</a>\\n  </li>\\n  <li \");\n  stack1 = {};\n  stack1['class'] = \"view.classStats\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"goToStats\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">Stats</a>\\n  </li>\\n  <li>\\n    <a href=\\\"http://about.travis-ci.org/blog\\\">Blog</a>\\n  </li>\\n  <li>\\n    <a href=\\\"http://about.travis-ci.org/docs\\\">Docs</a>\\n  </li>\\n  <li \");\n  stack1 = {};\n  stack1['class'] = \"view.classProfile\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <p class=\\\"handle\\\">\\n      <a class=\\\"signed-out\\\" href=\\\"#\\\" \");\n  stack1 = {};\n  stack1['target'] = \"Travis.app\";\n  stack1 = helpers.action.call(depth0, \"signIn\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.top.github_login\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.top.github_login\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n      <a class=\\\"signed-in\\\" \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showProfile\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"><img \");\n  stack1 = {};\n  stack1['src'] = \"view.gravatarUrl\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"user.name\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n      <span class=\\\"signing-in\\\">Signing in</span>\\n    </p>\\n    <ul>\\n      <li>\\n        <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showProfile\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.top.profile\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.top.profile\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n      </li>\\n      <li>\\n        <a href=\\\"/\\\" \");\n  stack1 = {};\n  stack1['target'] = \"Travis.app\";\n  stack1 = helpers.action.call(depth0, \"signOut\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.top.sign_out\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.top.sign_out\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n      </li>\\n    </ul>\\n  </li>\\n</ul>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['profile/accounts'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n    <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showAccount\", \"view.account\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" class=\\\"name\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"view.name\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n    <p class=\\\"summary\\\">\\n      <span class=\\\"repos_label\\\">Repositories:</span>\\n      <abbr class=\\\"repos\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"view.content.reposCount\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</abbr>\\n    </p>\\n  \");\n  return buffer;}\n\n  data.buffer.push(\"<div id=\\\"search_box\\\">\\n</div>\\n\\n<ul class=\\\"tabs\\\">\\n  <li id=\\\"tab_accounts\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classAccounts\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5><a name=\\\"accounts\\\" href=\\\"\\\">Accounts</a></h5>\\n  </li>\\n</ul>\\n\\n<div class=\\\"tab\\\">\\n  \");\n  stack1 = {};\n  stack1['contentBinding'] = \"controller\";\n  foundHelper = helpers.collection;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"Travis.AccountsListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, \"collection\", \"Travis.AccountsListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n</div>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['profile/show'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push(\"<h3>\");\n  stack1 = helpers._triageMustache.call(depth0, \"view.name\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</h3>\\n\\n\");\n  stack1 = helpers.view.call(depth0, \"Travis.ProfileTabsView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\\n<div class=\\\"tab\\\">\\n  \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"pane\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"pane\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n</div>\\n\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['profile/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n    <li id=\\\"tab_user\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classUser\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n      <h5>\\n        <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showUserProfile\", \"view.account\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">Profile</a>\\n      </h5>\\n    </li>\\n  \");\n  return buffer;}\n\n  data.buffer.push(\"<ul class=\\\"tabs\\\">\\n  <li id=\\\"tab_hooks\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classHooks\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5>\\n      <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showAccount\", \"view.account\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">Repositories</a>\\n    </h5>\\n  </li>\\n  \");\n  stack1 = helpers['if'].call(depth0, \"view.displayUser\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n</ul>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['profile/tabs/hooks'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n  \");\n  stack1 = helpers['if'].call(depth0, \"user.isSyncing\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n    <p class=\\\"message loading\\\">\\n      <span>Please wait while we sync from GitHub</span>\\n    </p>\\n  \");}\n\nfunction program4(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n    <p class=\\\"message\\\">\\n      Last synchronized from GitHub: \");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"user.syncedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"user.syncedAt\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      <button class=\\\"sync_now\\\" \");\n  stack1 = {};\n  stack1['target'] = \"user\";\n  stack1 = helpers.action.call(depth0, \"sync\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        Sync now\\n      </button>\\n    </p>\\n\\n    <ul id=\\\"hooks\\\">\\n      \");\n  stack1 = helpers.each.call(depth0, \"hook\", \"in\", \"hooks\", {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </ul>\\n  \");\n  return buffer;}\nfunction program5(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        <li \");\n  stack1 = {};\n  stack1['class'] = \"hook.active:active\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n          <a \");\n  stack1 = {};\n  stack1['href'] = \"hook.urlGithub\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" rel=\\\"nofollow\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"hook.slug\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n          <p class=\\\"description\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"hook.description\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</p>\\n\\n          <div class=\\\"controls\\\">\\n            <a \");\n  stack1 = {};\n  stack1['href'] = \"hook.urlGithubAdmin\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" class=\\\"github-admin tool-tip\\\" title=\\\"Github service hooks admin page\\\"></a>\\n            <a \");\n  stack1 = {};\n  stack1['target'] = \"hook\";\n  stack1 = helpers.action.call(depth0, \"toggle\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" class=\\\"switch\\\"></a>\\n          </div>\\n        </li>\\n      \");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n        <li>\\n          You do not seem to have any repositories that we could sync.\\n        </li>\\n      \");}\n\nfunction program9(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n  <p class=\\\"message loading\\\">\\n    <span>Loading</span>\\n  </p>\\n\");}\n\n  data.buffer.push(\"<p class=\\\"tip\\\">\\n  \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.message.your_repos\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.message.your_repos\", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n</p>\\n\\n\");\n  stack1 = helpers['if'].call(depth0, \"hooks.isLoaded\", {hash:{},inverse:self.program(9, program9, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['profile/tabs/user'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push(\"<img \");\n  stack1 = {};\n  stack1['src'] = \"view.gravatarUrl\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n\\n<dl class=\\\"profile\\\">\\n  <dt>\\n    \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.github\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.github\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":\\n  </dt>\\n  <dd>\\n    <a \");\n  stack1 = {};\n  stack1['href'] = \"urlGithub\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"user.login\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n  </dd>\\n  <dt>\\n    \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.email\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.email\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":\\n  </dt>\\n  <dd>\\n    \");\n  stack1 = helpers._triageMustache.call(depth0, \"user.email\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </dd>\\n  <dt>\\n    \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.token\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.token\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":\\n  </dt>\\n  <dd>\\n    \");\n  stack1 = helpers._triageMustache.call(depth0, \"user.token\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </dd>\\n</dl>\\n\\n<form>\\n  \");\n  stack1 = {};\n  stack1['id'] = \"locale\";\n  stack1['contentBinding'] = \"view.locales\";\n  stack1['valueBinding'] = \"Travis.app.currentUser.locale\";\n  stack1['optionLabelPath'] = \"content.name\";\n  stack1['optionValuePath'] = \"content.key\";\n  stack1 = helpers.view.call(depth0, \"Ember.Select\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\\n  <button name=\\\"commit\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"saveLocale\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"profiles.show.update_locale\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"profiles.show.update_locale\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </button>\\n</form>\\n\\n\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['queues/list'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n  <li class=\\\"queue\\\">\\n    <h4>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"queue\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"queue\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \": \");\n  stack1 = helpers._triageMustache.call(depth0, \"queue.name\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</h4>\\n    <ul \");\n  stack1 = {};\n  stack1['id'] = \"queue.id\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n      \");\n  stack1 = helpers.each.call(depth0, \"job\", \"in\", \"queue\", {hash:{},inverse:self.program(5, program5, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </ul>\\n  </li>\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        \");\n  stack1 = {};\n  stack1['jobBinding'] = \"job\";\n  stack1 = helpers.view.call(depth0, \"Travis.QueueItemView\", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n      \");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n          <a \");\n  stack1 = {};\n  stack1['target'] = \"Travis.app.router\";\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showJob\", \"job.repository\", \"job\", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            <span class=\\\"slug\\\">\\n              \");\n  stack1 = helpers._triageMustache.call(depth0, \"job.repository.slug\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n            </span>\\n            #\");\n  stack1 = helpers._triageMustache.call(depth0, \"job.number\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </a>\\n        \");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"no_job\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"no_job\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      \");\n  return buffer;}\n\n  data.buffer.push(\"<ul id=\\\"queues\\\">\\n\");\n  stack1 = helpers.each.call(depth0, \"queue\", \"in\", \"controller\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n</ul>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['repos/list'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n    \");\n  stack1 = helpers['with'].call(depth0, \"view.repository\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n  \");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n      <div class=\\\"slug-and-status\\\">\\n        <span class=\\\"status\\\"></span>\\n        \");\n  stack1 = helpers['if'].call(depth0, \"slug\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n      </div>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"lastBuildId\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n      <p class=\\\"summary\\\">\\n        <span class=\\\"duration_label\\\">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.duration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.duration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":</span>\\n        <abbr class=\\\"duration\\\" \");\n  stack1 = {};\n  stack1['title'] = \"lastBuildStartedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"lastBuildDuration\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatDuration\", \"lastBuildDuration\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</abbr>,\\n        <span class=\\\"finished_at_label\\\">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.finished_at\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.finished_at\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":</span>\\n        <abbr class=\\\"finished_at timeago\\\" \");\n  stack1 = {};\n  stack1['title'] = \"lastBuildFinishedAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"lastBuildFinishedAt\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"formatTime\", \"lastBuildFinishedAt\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</abbr>\\n      </p>\\n\\n      <div class=\\\"indicator\\\"><span></span></div>\\n\\n      \");\n  stack1 = helpers['if'].call(depth0, \"description\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    \");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n          <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showRepository\", \"\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" class=\\\"slug\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"slug\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n        \");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showBuild\", \"\", \"lastBuildId\", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" class=\\\"last_build\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"lastBuildNumber\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n      \");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        <div class=\\\"info\\\">\\n          <p class=\\\"description\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"description\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</p>\\n        </div>\\n      \");\n  return buffer;}\n\n  data.buffer.push(\"<div id=\\\"search_box\\\">\\n  \");\n  stack1 = {};\n  stack1['valueBinding'] = \"controller.search\";\n  stack1 = helpers.view.call(depth0, \"Ember.TextField\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n</div>\\n\\n\");\n  stack1 = helpers.view.call(depth0, \"Travis.ReposListTabsView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n\\n<a \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"toggleInfo\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" class=\\\"toggle-info\\\"></a>\\n\\n<div class=\\\"tab\\\">\\n  \");\n  stack1 = {};\n  stack1['contentBinding'] = \"controller\";\n  foundHelper = helpers.collection;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"Travis.RepositoriesListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, \"collection\", \"Travis.RepositoriesListView\", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n</div>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['repos/list/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push(\"<ul class=\\\"tabs\\\">\\n  <li id=\\\"tab_recent\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classRecent\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5><a name=\\\"recent\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"activate\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.recent\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.recent\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></h5>\\n  </li>\\n  <li id=\\\"tab_owned\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classOwned\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5><a name=\\\"owned\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"activate\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.my_repositories\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.my_repositories\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></h5>\\n  </li>\\n  <li id=\\\"tab_search\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classSearch\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5><a name=\\\"search\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"activate\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.search\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.search\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a></h5>\\n  </li>\\n</ul>\\n\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['repos/show'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n    \");\n  stack1 = helpers['with'].call(depth0, \"view.repository\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n  \");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n      <h3>\\n        <a \");\n  stack1 = {};\n  stack1['href'] = \"view.urlGithub\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\");\n  stack1 = helpers._triageMustache.call(depth0, \"slug\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</a>\\n      </h3>\\n\\n      <p class=\\\"description\\\">\");\n  stack1 = helpers._triageMustache.call(depth0, \"description\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</p>\\n\\n      <ul class=\\\"github-stats\\\">\\n        <li class=\\\"language\\\">\\n          \");\n  stack1 = helpers._triageMustache.call(depth0, \"lastBuildLanguage\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n        </li>\\n        <li>\\n          <a class=\\\"watchers\\\" title=\\\"Watchers\\\" \");\n  stack1 = {};\n  stack1['href'] = \"view.urlGithubWatchers\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            \");\n  stack1 = helpers._triageMustache.call(depth0, \"stats.watchers\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </a>\\n        </li>\\n        <li>\\n          <a class=\\\"forks\\\" title=\\\"Forks\\\" \");\n  stack1 = {};\n  stack1['href'] = \"view.urlGithubNetwork\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            \");\n  stack1 = helpers._triageMustache.call(depth0, \"stats.forks\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </a>\\n        </li>\\n      </ul>\\n\\n      \");\n  stack1 = helpers.view.call(depth0, \"Travis.RepoShowTabsView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      \");\n  stack1 = helpers.view.call(depth0, \"Travis.RepoShowToolsView\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n    \");\n  return buffer;}\n\nfunction program4(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n    <span>Loading</span>\\n  \");}\n\n  data.buffer.push(\"<div id=\\\"repository\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.class\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n  \");\n  stack1 = helpers['if'].call(depth0, \"view.repository.isLoaded\", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n  <div class=\\\"tab\\\">\\n    \");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, \"pane\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"outlet\", \"pane\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n  </div>\\n</div>\\n\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['repos/show/tabs'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n      <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showRepository\", \"view.repository\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.current\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.current\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      </a>\\n      \");\n  return buffer;}\n\nfunction program3(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n      <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showBuilds\", \"view.repository\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.build_history\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.build_history\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      </a>\\n      \");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n      <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showPullRequests\", \"view.repository\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.pull_requests\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.pull_requests\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      </a>\\n      \");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n      <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showBranches\", \"view.repository\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.branches\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.branches\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      </a>\\n      \");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n      <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showBuild\", \"view.build\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.build\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.build\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" #\");\n  stack1 = helpers._triageMustache.call(depth0, \"view.build.number\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      </a>\\n      \");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n      <a \");\n  stack1 = {};\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showBuild\", \"view.job\", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.tabs.job\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.tabs.job\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" #\");\n  stack1 = helpers._triageMustache.call(depth0, \"view.job.number\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      </a>\\n      \");\n  return buffer;}\n\n  data.buffer.push(\"<ul class=\\\"tabs\\\">\\n  <li id=\\\"tab_current\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classCurrent\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </h5>\\n  </li>\\n  <li id=\\\"tab_builds\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classBuilds\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </h5>\\n  </li>\\n  <li id=\\\"tab_pull_requests\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classPullRequests\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </h5>\\n  </li>\\n  <li id=\\\"tab_branches\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classBranches\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"view.repository.slug\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </h5>\\n  </li>\\n  <li id=\\\"tab_build\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classBuild\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"view.build.id\", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </h5>\\n  </li>\\n  <li id=\\\"tab_job\\\" \");\n  stack1 = {};\n  stack1['class'] = \"view.classJob\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n    <h5>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"view.job.id\", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </h5>\\n  </li>\\n</ul>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['repos/show/tools'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        \");\n  stack1 = {};\n  stack1['contentBinding'] = \"view.branches\";\n  stack1['selectionBinding'] = \"view.branch\";\n  stack1['optionLabelPath'] = \"content.commit.branch\";\n  stack1['optionValuePath'] = \"content.commit.branch\";\n  stack1 = helpers.view.call(depth0, \"Ember.Select\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n      \");\n  return buffer;}\n\nfunction program3(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n        <span class=\\\"loading\\\"></span>\\n      \");}\n\n  data.buffer.push(\"<div id=\\\"tools\\\">\\n  <a href=\\\"#\\\" \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"toggle\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"></a>\\n  <div class=\\\"pane\\\">\\n    <p>\\n      <label>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.branch\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.branch\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":</label>\\n      \");\n  stack1 = helpers['if'].call(depth0, \"view.branches.isLoaded\", {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </p>\\n    <p>\\n      <label>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.image_url\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.image_url\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":</label>\\n      <input type=\\\"text\\\" class=\\\"url\\\" \");\n  stack1 = {};\n  stack1['value'] = \"view.urlStatusImage\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"></input>\\n    </p>\\n    <p>\\n      <label>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.markdown\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.markdown\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":</label>\\n      <input type=\\\"text\\\" class=\\\"markdown\\\" \");\n  stack1 = {};\n  stack1['value'] = \"view.markdownStatusImage\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"></input>\\n    </p>\\n    <p>\\n      <label>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.textile\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.textile\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":</label>\\n      <input type=\\\"text\\\" class=\\\"textile\\\" \");\n  stack1 = {};\n  stack1['value'] = \"view.textileStatusImage\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"></input>\\n    </p>\\n    <p>\\n      <label>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"repositories.rdoc\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"repositories.rdoc\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \":</label>\\n      <input type=\\\"text\\\" class=\\\"rdoc\\\" \");\n  stack1 = {};\n  stack1['value'] = \"view.rdocStatusImage\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"></input>\\n    </p>\\n  </div>\\n</div>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['sponsors/decks'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n    \");\n  stack1 = helpers.each.call(depth0, \"deck\", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n  \");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n      <li \");\n  stack1 = {};\n  stack1['class'] = \"type\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        <a \");\n  stack1 = {};\n  stack1['href'] = \"url\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n          <img \");\n  stack1 = {};\n  stack1['src'] = \"image\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n        </a>\\n      </li>\\n    \");\n  return buffer;}\n\n  data.buffer.push(\"<h4>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</h4>\\n\\n<ul class=\\\"sponsors top\\\">\\n  \");\n  stack1 = helpers.each.call(depth0, \"deck\", \"in\", \"controller\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n</ul>\\n\\n<p class=\\\"hint\\\">\\n  <a href=\\\"https://love.travis-ci.org/sponsors\\\">\\n    \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n  </a>\\n</p>\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['sponsors/links'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n      <li>\\n        \");\n  stack1 = {};\n  stack1['unescaped'] = \"true\";\n  stack1 = helpers._triageMustache.call(depth0, \"link\", {hash:stack1,contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n      </li>\\n    \");\n  return buffer;}\n\n  data.buffer.push(\"<div class=\\\"box\\\">\\n  <h4>\");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsers\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"</h4>\\n\\n  <ul class=\\\"sponsors bottom\\\">\\n    \");\n  stack1 = helpers.each.call(depth0, \"controller\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n  </ul>\\n\\n  <p class=\\\"hint\\\">\\n    <a href=\\\"https://love.travis-ci.org/sponsors\\\">\\n      \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"layouts.application.sponsors_link\", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    </a>\\n  </p>\\n</div>\\n\\n\\n\");\n  return buffer;\n});\n\nEmber.TEMPLATES['stats/show'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  \n\n\n  data.buffer.push(\"<div id=\\\"repos_stats\\\"></div>\\n<div id=\\\"tests_stats\\\"></div>\\n\\n\");\n});\n\nEmber.TEMPLATES['workers/list'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = '', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = '', stack1, foundHelper;\n  data.buffer.push(\"\\n  <h4>\\n    \");\n  foundHelper = helpers['t'];\n  stack1 = foundHelper ? foundHelper.call(depth0, \"workers\", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, \"t\", \"workers\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n    <a id=\\\"toggle-workers\\\" \");\n  stack1 = {};\n  stack1['target'] = \"parentView.parentView\";\n  stack1 = helpers.action.call(depth0, \"toggleWorkers\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"></a>\\n  </h4>\\n  <ul id=\\\"workers\\\">\\n    \");\n  stack1 = helpers.each.call(depth0, \"group\", \"in\", \"controller.groups\", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n  </ul>\\n\");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n      \");\n  stack1 = helpers.view.call(depth0, \"Travis.WorkersListView\", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n    \");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n        <li class=\\\"group\\\">\\n          <h5 \");\n  stack1 = {};\n  stack1['target'] = \"view\";\n  stack1 = helpers.action.call(depth0, \"toggle\", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n            \");\n  stack1 = helpers._triageMustache.call(depth0, \"group.firstObject.host\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n          </h5>\\n          <ul>\\n          \");\n  stack1 = helpers.each.call(depth0, \"worker\", \"in\", \"group\", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          </ul>\\n        </li>\\n      \");\n  return buffer;}\nfunction program4(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n            \");\n  stack1 = {};\n  stack1['workerBinding'] = \"worker\";\n  stack1 = helpers.view.call(depth0, \"Travis.WorkersItemView\", {hash:stack1,inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n          \");\n  return buffer;}\nfunction program5(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n              <li class=\\\"worker\\\">\\n                <div class=\\\"status\\\"></div>\\n                \");\n  stack1 = helpers['if'].call(depth0, \"worker.isWorking\", {hash:{},inverse:self.program(9, program9, data),fn:self.program(6, program6, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n              </li>\\n            \");\n  return buffer;}\nfunction program6(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n                  \");\n  stack1 = helpers['if'].call(depth0, \"worker.job_id\", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n                \");\n  return buffer;}\nfunction program7(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n                    <a \");\n  stack1 = {};\n  stack1['target'] = \"Travis.app.router\";\n  stack1['href'] = true;\n  stack1 = helpers.action.call(depth0, \"showJob\", \"worker.repository\", \"worker.job_id\", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \" \");\n  stack1 = {};\n  stack1['title'] = \"worker.lastSeenAt\";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + \">\\n                      \");\n  stack1 = helpers._triageMustache.call(depth0, \"view.display\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n                    </a>\\n                  \");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = '', stack1;\n  data.buffer.push(\"\\n                  \");\n  stack1 = helpers._triageMustache.call(depth0, \"view.display\", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + \"\\n                \");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  \n  data.buffer.push(\"\\n      No workers\\n    \");}\n\n  stack1 = helpers.view.call(depth0, \"Travis.WorkersView\", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push(\"\\n\\n\");\n  return buffer;\n});\n\n})();\n//@ sourceURL=templates");minispade.register('config/locales', "(function() {window.I18n = window.I18n || {}\nwindow.I18n.translations = {\"ca\":{\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"pt-BR\":\"português brasileiro\",\"ru\":\"Русский\"}},\"en\":{\"errors\":{\"messages\":{\"not_found\":\"not found\",\"already_confirmed\":\"was already confirmed\",\"not_locked\":\"was not locked\"}},\"devise\":{\"failure\":{\"unauthenticated\":\"You need to sign in or sign up before continuing.\",\"unconfirmed\":\"You have to confirm your account before continuing.\",\"locked\":\"Your account is locked.\",\"invalid\":\"Invalid email or password.\",\"invalid_token\":\"Invalid authentication token.\",\"timeout\":\"Your session expired, please sign in again to continue.\",\"inactive\":\"Your account was not activated yet.\"},\"sessions\":{\"signed_in\":\"Signed in successfully.\",\"signed_out\":\"Signed out successfully.\"},\"passwords\":{\"send_instructions\":\"You will receive an email with instructions about how to reset your password in a few minutes.\",\"updated\":\"Your password was changed successfully. You are now signed in.\"},\"confirmations\":{\"send_instructions\":\"You will receive an email with instructions about how to confirm your account in a few minutes.\",\"confirmed\":\"Your account was successfully confirmed. You are now signed in.\"},\"registrations\":{\"signed_up\":\"You have signed up successfully. If enabled, a confirmation was sent to your e-mail.\",\"updated\":\"You updated your account successfully.\",\"destroyed\":\"Bye! Your account was successfully cancelled. We hope to see you again soon.\"},\"unlocks\":{\"send_instructions\":\"You will receive an email with instructions about how to unlock your account in a few minutes.\",\"unlocked\":\"Your account was successfully unlocked. You are now signed in.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Confirmation instructions\"},\"reset_password_instructions\":{\"subject\":\"Reset password instructions\"},\"unlock_instructions\":{\"subject\":\"Unlock Instructions\"}}},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hour\",\"other\":\"%{count} hours\"},\"minutes_exact\":{\"one\":\"%{count} minute\",\"other\":\"%{count} minutes\"},\"seconds_exact\":{\"one\":\"%{count} second\",\"other\":\"%{count} seconds\"}}},\"workers\":\"Workers\",\"queue\":\"Queue\",\"no_job\":\"There are no jobs\",\"repositories\":{\"branch\":\"Branch\",\"image_url\":\"Image URL\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\",\"tabs\":{\"current\":\"Current\",\"build_history\":\"Build History\",\"branches\":\"Branch Summary\",\"pull_requests\":\"Pull Requests\",\"build\":\"Build\",\"job\":\"Job\"}},\"build\":{\"job\":\"Job\",\"duration\":\"Duration\",\"finished_at\":\"Finished\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"This test suite was run on a worker box sponsored by\"},\"build_matrix\":\"Build Matrix\",\"allowed_failures\":\"Allowed Failures\",\"author\":\"Author\",\"config\":\"Config\",\"compare\":\"Compare\",\"committer\":\"Committer\",\"branch\":\"Branch\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"This test suite was run on a worker box sponsored by\"},\"build_matrix\":\"Build Matrix\",\"allowed_failures\":\"Allowed Failures\",\"author\":\"Author\",\"config\":\"Config\",\"compare\":\"Compare\",\"committer\":\"Committer\",\"branch\":\"Branch\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Started\",\"duration\":\"Duration\",\"finished_at\":\"Finished\",\"show_more\":\"Show more\"},\"layouts\":{\"top\":{\"home\":\"Home\",\"blog\":\"Blog\",\"docs\":\"Docs\",\"stats\":\"Stats\",\"github_login\":\"Sign in with Github\",\"profile\":\"Profile\",\"sign_out\":\"Sign Out\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"recent\":\"Recent\",\"search\":\"Search\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"See all of our amazing sponsors &rarr;\",\"my_repositories\":\"My Repositories\"},\"about\":{\"alpha\":\"This stuff is alpha.\",\"messages\":{\"alpha\":\"Please do <strong>not</strong> consider this a stable service. We're still far from that! More info <a href='https://github.com/travis-ci'>here.</a>\"},\"join\":\"Join us and help!\",\"mailing_list\":\"Mailing List\",\"repository\":\"Repository\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Author\",\"build\":\"Build\",\"build_matrix\":\"Build Matrix\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Compare\",\"config\":\"Config\",\"duration\":\"Duration\",\"finished_at\":\"Finished at\",\"job\":\"Job\",\"log\":\"Log\"}},\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"your_repos\":\"  Flick the switches below to turn on the Travis service hook for your projects, then push to GitHub.\",\"config\":\"how to configure custom build options\"},\"messages\":{\"notice\":\"To get started, please read our <a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">Getting Started guide</a>.\\n  <small>It will only take a couple of minutes.</small>\"},\"token\":\"Token\",\"your_repos\":\"Your Repositories\",\"update\":\"Update\",\"update_locale\":\"Update\",\"your_locale\":\"Your Locale\"}},\"statistics\":{\"index\":{\"count\":\"Count\",\"repo_growth\":\"Repository Growth\",\"total_projects\":\"Total Projects/Repositories\",\"build_count\":\"Build Count\",\"last_month\":\"last month\",\"total_builds\":\"Total Builds\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"es\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hora\",\"other\":\"%{count} horas\"},\"minutes_exact\":{\"one\":\"%{count} minuto\",\"other\":\"%{count} minutos\"},\"seconds_exact\":{\"one\":\"%{count} segundo\",\"other\":\"%{count} segundos\"}}},\"workers\":\"Procesos\",\"queue\":\"Cola\",\"no_job\":\"No hay trabajos\",\"repositories\":{\"branch\":\"Rama\",\"image_url\":\"Imagen URL\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\",\"tabs\":{\"current\":\"Actual\",\"build_history\":\"Histórico\",\"branches\":\"Ramas\",\"build\":\"Builds\",\"job\":\"Trabajo\"}},\"build\":{\"job\":\"Trabajo\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por\"},\"build_matrix\":\"Matriz de Builds\",\"allowed_failures\":\"Fallos Permitidos\",\"author\":\"Autor\",\"config\":\"Configuración\",\"compare\":\"Comparar\",\"committer\":\"Committer\",\"branch\":\"Rama\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\",\"sponsored_by\":\"Patrocinado por\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por\"},\"build_matrix\":\"Matriz de Builds\",\"allowed_failures\":\"Fallos Permitidos\",\"author\":\"Autor\",\"config\":\"Configuración\",\"compare\":\"Comparar\",\"committer\":\"Committer\",\"branch\":\"Rama\",\"commit\":\"Commit\",\"message\":\"Mensaje\",\"started_at\":\"Iniciado\",\"duration\":\"Duración\",\"finished_at\":\"Finalizado\"},\"layouts\":{\"top\":{\"home\":\"Inicio\",\"blog\":\"Blog\",\"docs\":\"Documentación\",\"stats\":\"Estadísticas\",\"github_login\":\"Iniciar sesión con Github\",\"profile\":\"Perfil\",\"sign_out\":\"Desconectar\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Hazme un Fork en Github\",\"recent\":\"Reciente\",\"search\":\"Buscar\",\"sponsers\":\"Patrocinadores\",\"sponsors_link\":\"Ver todos nuestros patrocinadores &rarr;\",\"my_repositories\":\"Mis Repositorios\"},\"about\":{\"alpha\":\"Esto es alpha.\",\"messages\":{\"alpha\":\"Por favor <strong>no</strong> considereis esto un servicio estable. Estamos estamos aún lejos de ello! Más información <a href='https://github.com/travis-ci'>aquí.</a>\"},\"join\":\"Únetenos y ayudanos!\",\"mailing_list\":\"Lista de Correos\",\"repository\":\"Repositorio\",\"twitter\":\"Twitter\"}},\"profiles\":{\"show\":{\"email\":\"Correo electrónico\",\"github\":\"Github\",\"message\":{\"your_repos\":\"  Activa los interruptores para inicial el  Travis service hook para tus proyectos, y haz un Push en GitHub.<br />\\n  Para probar varias versiones de ruby, mira\",\"config\":\"como configurar tus propias opciones para el Build\"},\"messages\":{\"notice\":\"Para comenzar, por favor lee nuestra <a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">Guía de Inicio </a>.\\n  <small>Solo tomará unos pocos minutos.</small>\"},\"token\":\"Token\",\"your_repos\":\"Tus repositorios\",\"update\":\"Actualizar\",\"update_locale\":\"Actualizar\",\"your_locale\":\"Tu Idioma\"}},\"statistics\":{\"index\":{\"count\":\"Número\",\"repo_growth\":\"Crecimiento de Repositorios\",\"total_projects\":\"Total de Proyectos/Repositorios\",\"build_count\":\"Número de Builds\",\"last_month\":\"mes anterior\",\"total_builds\":\"Total de Builds\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"fr\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} heure\",\"other\":\"%{count} heures\"},\"minutes_exact\":{\"one\":\"%{count} minute\",\"other\":\"%{count} minutes\"},\"seconds_exact\":{\"one\":\"%{count} seconde\",\"other\":\"%{count} secondes\"}}},\"workers\":\"Processus\",\"queue\":\"File\",\"no_job\":\"Pas de tâches\",\"repositories\":{\"branch\":\"Branche\",\"image_url\":\"Image\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\",\"tabs\":{\"current\":\"Actuel\",\"build_history\":\"Historique des tâches\",\"branches\":\"Résumé des branches\",\"build\":\"Construction\",\"job\":\"Tâche\"}},\"build\":{\"job\":\"Tâche\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"build_matrix\":\"Matrice des versions\",\"allowed_failures\":\"Échecs autorisés\",\"author\":\"Auteur\",\"config\":\"Config\",\"compare\":\"Comparer\",\"committer\":\"Committeur\",\"branch\":\"Branche\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\",\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"builds\":{\"name\":\"Version\",\"messages\":{\"sponsored_by\":\"Cette série de tests a été exécutée sur une machine sponsorisée par\"},\"build_matrix\":\"Matrice des versions\",\"allowed_failures\":\"Échecs autorisés\",\"author\":\"Auteur\",\"config\":\"Config\",\"compare\":\"Comparer\",\"committer\":\"Committeur\",\"branch\":\"Branche\",\"commit\":\"Commit\",\"message\":\"Message\",\"started_at\":\"Commencé\",\"duration\":\"Durée\",\"finished_at\":\"Terminé\"},\"layouts\":{\"top\":{\"home\":\"Accueil\",\"blog\":\"Blog\",\"docs\":\"Documentation\",\"stats\":\"Statistiques\",\"github_login\":\"Connection Github\",\"profile\":\"Profil\",\"sign_out\":\"Déconnection\",\"admin\":\"Admin\"},\"application\":{\"fork_me\":\"Faites un Fork sur Github\",\"recent\":\"Récent\",\"search\":\"Chercher\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"Voir tous nos extraordinaire sponsors &rarr;\",\"my_repositories\":\"Mes dépôts\"},\"about\":{\"alpha\":\"Ceci est en alpha.\",\"messages\":{\"alpha\":\"S'il vous plaît ne considérez <strong>pas</strong> ce service comme étant stable. Nous sommes loin de ça! Plus d'infos <a href='https://github.com/travis-ci'>ici.</a>\"},\"join\":\"Joignez-vous à nous et aidez-nous!\",\"mailing_list\":\"Liste de distribution\",\"repository\":\"Dépôt\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Auteur\",\"build\":\"Version\",\"build_matrix\":\"Matrice des versions\",\"commit\":\"Commit\",\"committer\":\"Committeur\",\"compare\":\"Comparer\",\"config\":\"Config\",\"duration\":\"Durée\",\"finished_at\":\"Terminé à\",\"job\":\"Tâche\",\"log\":\"Journal\"}},\"profiles\":{\"show\":{\"github\":\"Github\",\"message\":{\"your_repos\":\"Utilisez les boutons ci-dessous pour activer Travis sur vos projets puis déployez sur GitHub.<br />\\nPour tester sur plus de versions de ruby, voir\",\"config\":\"comment configurer des options de version personnalisées\"},\"messages\":{\"notice\":\"Pour commencer, veuillez lire notre <a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">guide de démarrage</a>.\\n <small>Cela ne vous prendra que quelques minutes.</small>\"},\"token\":\"Jeton\",\"your_repos\":\"Vos dépôts\",\"email\":\"Courriel\",\"update\":\"Modifier\",\"update_locale\":\"Modifier\",\"your_locale\":\"Votre langue\"}},\"statistics\":{\"index\":{\"count\":\"Décompte\",\"repo_growth\":\"Croissance de dépôt\",\"total_projects\":\"Total des projets/dépôts\",\"build_count\":\"Décompte des versions\",\"last_month\":\"mois dernier\",\"total_builds\":\"Total des versions\"}},\"admin\":{\"actions\":{\"create\":\"créer\",\"created\":\"créé\",\"delete\":\"supprimer\",\"deleted\":\"supprimé\",\"update\":\"mise à jour\",\"updated\":\"mis à jour\"},\"credentials\":{\"log_out\":\"Déconnection\"},\"delete\":{\"confirmation\":\"Oui, je suis sure\",\"flash_confirmation\":\"%{name} a été détruit avec succès\"},\"flash\":{\"error\":\"%{name} n'a pas pu être %{action}\",\"noaction\":\"Aucune action n'a été entreprise\",\"successful\":\"%{name} a réussi à %{action}\"},\"history\":{\"name\":\"Historique\",\"no_activity\":\"Aucune activité\",\"page_name\":\"Historique pour %{name}\"},\"list\":{\"add_new\":\"Ajouter un nouveau\",\"delete_action\":\"Supprimer\",\"delete_selected\":\"Supprimer la sélection\",\"edit_action\":\"Modifier\",\"search\":\"Rechercher\",\"select\":\"Sélectionner le %{name} à modifier\",\"select_action\":\"Sélectionner\",\"show_all\":\"Montrer tout\"},\"new\":{\"basic_info\":\"Information de base\",\"cancel\":\"Annuler\",\"chosen\":\"%{name} choisi\",\"chose_all\":\"Choisir tout\",\"clear_all\":\"Déselectionner tout\",\"many_chars\":\"caractères ou moins\",\"one_char\":\"caractère.\",\"optional\":\"Optionnel\",\"required\":\"Requis\",\"save\":\"Sauvegarder\",\"save_and_add_another\":\"Sauvegarder et en ajouter un autre\",\"save_and_edit\":\"Sauvegarder et modifier\",\"select_choice\":\"Faites vos choix et cliquez\"},\"dashboard\":{\"add_new\":\"Ajouter un nouveau\",\"last_used\":\"Dernière utilisation\",\"model_name\":\"Nom du modèle\",\"modify\":\"Modification\",\"name\":\"Tableau de bord\",\"pagename\":\"Administration du site\",\"records\":\"Enregistrements\",\"show\":\"Voir\",\"ago\":\"plus tôt\"}},\"home\":{\"name\":\"accueil\"},\"repository\":{\"duration\":\"Durée\"},\"devise\":{\"confirmations\":{\"confirmed\":\"Votre compte a été crée avec succès. Vous être maintenant connecté.\",\"send_instructions\":\"Vous allez recevoir un courriel avec les instructions de confirmation de votre compte dans quelques minutes.\"},\"failure\":{\"inactive\":\"Votre compte n'a pas encore été activé.\",\"invalid\":\"Adresse courriel ou mot de passe invalide.\",\"invalid_token\":\"Jeton d'authentification invalide.\",\"locked\":\"Votre compte est bloqué.\",\"timeout\":\"Votre session est expirée, veuillez vous reconnecter pour continuer.\",\"unauthenticated\":\"Vous devez vous connecter ou vous enregistrer afin de continuer\",\"unconfirmed\":\"Vous devez confirmer votre compte avant de continuer.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Instructions de confirmations\"},\"reset_password_instructions\":{\"subject\":\"Instruction de remise à zéro du mot de passe\"},\"unlock_instructions\":{\"subject\":\"Instruction de débloquage\"}},\"passwords\":{\"send_instructions\":\"Vous recevrez un courriel avec les instructions de remise à zéro du mot de passe dans quelques minutes.\",\"updated\":\"Votre mot de passe a été changé avec succès. Vous êtes maintenant connecté.\"},\"registrations\":{\"destroyed\":\"Au revoir! Votre compte a été annulé avec succès. Nous espérons vous revoir bientôt.\",\"signed_up\":\"Vous êtes enregistré avec succès. Si activé, une confirmation vous a été envoyé par courriel.\",\"updated\":\"Votre compte a été mis a jour avec succès\"},\"sessions\":{\"signed_in\":\"Connecté avec succès\",\"signed_out\":\"Déconnecté avec succès\"},\"unlocks\":{\"send_instructions\":\"Vous recevrez un courriel contenant les instructions pour débloquer votre compte dans quelques minutes.\",\"unlocked\":\"Votre compte a été débloqué avec succès.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"étais déja confirmé\",\"not_found\":\"n'a pas été trouvé\",\"not_locked\":\"n'étais pas bloqué\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"ja\":{\"workers\":\"ワーカー\",\"queue\":\"キュー\",\"no_job\":\"ジョブはありません\",\"repositories\":{\"branch\":\"ブランチ\",\"image_url\":\"画像URL\",\"markdown\":\".md\",\"textile\":\".textile\",\"rdoc\":\".rdoc\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\",\"tabs\":{\"current\":\"最新\",\"build_history\":\"ビルド履歴\",\"branches\":\"ブランチまとめ\",\"build\":\"ビルド\",\"job\":\"ジョブ\"}},\"build\":{\"job\":\"ジョブ\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"このテストは以下のスポンサーの協力で行いました。\"},\"build_matrix\":\"ビルドマトリクス\",\"allowed_failures\":\"失敗許容範囲内\",\"author\":\"制作者\",\"config\":\"設定\",\"compare\":\"比較\",\"committer\":\"コミット者\",\"branch\":\"ブランチ\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"builds\":{\"name\":\"ビルド\",\"messages\":{\"sponsored_by\":\"このテストは以下のスポンサーの協力で行いました。\"},\"build_matrix\":\"失敗許容範囲外\",\"allowed_failures\":\"失敗許容範囲内\",\"author\":\"制作者\",\"config\":\"設定\",\"compare\":\"比較\",\"committer\":\"コミット者\",\"branch\":\"ブランチ\",\"commit\":\"コミット\",\"message\":\"メッセージ\",\"started_at\":\"開始時刻\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\"},\"layouts\":{\"about\":{\"alpha\":\"まだアルファですよ!\",\"join\":\"参加してみよう!\",\"mailing_list\":\"メールリスト\",\"messages\":{\"alpha\":\"Travis-ciは安定したサービスまで後一歩!詳しくは<a href='https://github.com/travis-ci'>こちら</a>\"},\"repository\":\"リポジトリ\",\"twitter\":\"ツイッター\"},\"application\":{\"fork_me\":\"Githubでフォークしよう\",\"my_repositories\":\"マイリポジトリ\",\"recent\":\"最近\",\"search\":\"検索\",\"sponsers\":\"スポンサー\",\"sponsors_link\":\"スポンサーをもっと見る &rarr;\"},\"top\":{\"blog\":\"ブログ\",\"docs\":\"Travisとは?\",\"github_login\":\"Githubでログイン\",\"home\":\"ホーム\",\"profile\":\"プロフィール\",\"sign_out\":\"ログアウト\",\"stats\":\"統計\",\"admin\":\"管理\"},\"mobile\":{\"author\":\"制作者\",\"build\":\"ビルド\",\"build_matrix\":\"ビルドマトリクス\",\"commit\":\"コミット\",\"committer\":\"コミット者\",\"compare\":\"比較\",\"config\":\"設定\",\"duration\":\"処理時間\",\"finished_at\":\"終了時刻\",\"job\":\"ジョブ\",\"log\":\"ログ\"}},\"profiles\":{\"show\":{\"github\":\"Github\",\"email\":\"メール\",\"message\":{\"config\":\"詳細設定\",\"your_repos\":\"以下のスイッチを設定し、Travis-ciを有効にします。Githubへプッシュしたらビルドは自動的に開始します。複数バーションや細かい設定はこちらへ:\"},\"messages\":{\"notice\":\"まずは<a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">Travisのはじめ方</a>を参照してください。\"},\"token\":\"トークン\",\"your_repos\":\"リポジトリ\",\"update\":\"更新\",\"update_locale\":\"更新\",\"your_locale\":\"言語設定\"}},\"statistics\":{\"index\":{\"build_count\":\"ビルド数\",\"count\":\"数\",\"last_month\":\"先月\",\"repo_growth\":\"リポジトリ\",\"total_builds\":\"合計ビルド数\",\"total_projects\":\"合計リポジトリ\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"nb\":{\"admin\":{\"actions\":{\"create\":\"opprett\",\"created\":\"opprettet\",\"delete\":\"slett\",\"deleted\":\"slettet\",\"update\":\"oppdater\",\"updated\":\"oppdatert\"},\"credentials\":{\"log_out\":\"Logg ut\"},\"dashboard\":{\"add_new\":\"Legg til ny\",\"ago\":\"siden\",\"last_used\":\"Sist brukt\",\"model_name\":\"Modell\",\"modify\":\"Rediger\",\"name\":\"Dashbord\",\"pagename\":\"Nettstedsadministrasjon\",\"records\":\"Oppføringer\",\"show\":\"Vis\"},\"delete\":{\"confirmation\":\"Ja, jeg er sikker\",\"flash_confirmation\":\"%{name} ble slettet\"},\"flash\":{\"error\":\"%{name} kunne ikke bli %{action}\",\"noaction\":\"Ingen handlinger ble utført\",\"successful\":\"%{name} ble %{action}\"},\"history\":{\"name\":\"Logg\",\"no_activity\":\"Ingen aktivitet\",\"page_name\":\"Logg for %{name}\"},\"list\":{\"add_new\":\"Legg til ny\",\"delete_action\":\"Slett\",\"delete_selected\":\"Slett valgte\",\"edit_action\":\"Rediger\",\"search\":\"Søk\",\"select\":\"Velg %{name} for å redigere\",\"select_action\":\"Velg\",\"show_all\":\"Vis alle \"},\"new\":{\"basic_info\":\"Basisinformasjon\",\"cancel\":\"Avbryt\",\"chosen\":\"Valgt %{name}\",\"chose_all\":\"Velg alle\",\"clear_all\":\"Fjern alle\",\"many_chars\":\"eller færre tegn.\",\"one_char\":\"tegn.\",\"optional\":\"Valgfri\",\"required\":\"Påkrevd\",\"save\":\"Lagre\",\"save_and_add_another\":\"Lagre og legg til ny\",\"save_and_edit\":\"Lagre og rediger\",\"select_choice\":\"Kryss av for dine valg og klikk\"}},\"build\":{\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"job\":\"Jobb\"},\"builds\":{\"allowed_failures\":\"Tillatte feil\",\"author\":\"Forfatter\",\"branch\":\"Gren\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"message\":\"Beskrivelse\",\"messages\":{\"sponsored_by\":\"Denne testen ble kjørt på en maskin sponset av\"},\"name\":\"Jobb\",\"started_at\":\"Startet\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} time\",\"other\":\"%{count} timer\"},\"minutes_exact\":{\"one\":\"%{count} minutt\",\"other\":\"%{count} minutter\"},\"seconds_exact\":{\"one\":\"%{count} sekund\",\"other\":\"%{count} sekunder\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Din konto er aktivert og du er nå innlogget.\",\"send_instructions\":\"Om noen få minutter så vil du få en e-post med informasjon om hvordan du bekrefter kontoen din.\"},\"failure\":{\"inactive\":\"Kontoen din har ikke blitt aktivert enda.\",\"invalid\":\"Ugyldig e-post eller passord.\",\"invalid_token\":\"Ugyldig autentiseringskode.\",\"locked\":\"Kontoen din er låst.\",\"timeout\":\"Du ble logget ut siden på grunn av mangel på aktivitet, vennligst logg inn på nytt.\",\"unauthenticated\":\"Du må logge inn eller registrere deg for å fortsette.\",\"unconfirmed\":\"Du må bekrefte kontoen din før du kan fortsette.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Bekreftelsesinformasjon\"},\"reset_password_instructions\":{\"subject\":\"Instruksjoner for å få nytt passord\"},\"unlock_instructions\":{\"subject\":\"Opplåsningsinstruksjoner\"}},\"passwords\":{\"send_instructions\":\"Om noen få minutter så vil du få en epost med informasjon om hvordan du kan få et nytt passord.\",\"updated\":\"Passordet ditt ble endret, og du er logget inn.\"},\"registrations\":{\"destroyed\":\"Adjø! Kontoen din ble kansellert. Vi håper vi ser deg igjen snart.\",\"signed_up\":\"Du er nå registrert.\",\"updated\":\"Kontoen din ble oppdatert.\"},\"sessions\":{\"signed_in\":\"Du er nå logget inn.\",\"signed_out\":\"Du er nå logget ut.\"},\"unlocks\":{\"send_instructions\":\"Om noen få minutter så kommer du til å få en e-post med informasjon om hvordan du kan låse opp kontoen din.\",\"unlocked\":\"Kontoen din ble låst opp, og du er nå logget inn igjen.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"har allerede blitt bekreftet\",\"not_found\":\"ikke funnnet\",\"not_locked\":\"var ikke låst\"}},\"home\":{\"name\":\"hjem\"},\"jobs\":{\"allowed_failures\":\"Tillatte feil\",\"author\":\"Forfatter\",\"branch\":\"Gren\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"message\":\"Beskrivelse\",\"messages\":{\"sponsored_by\":\"Denne testserien ble kjørt på en maskin sponset av\"},\"started_at\":\"Startet\"},\"layouts\":{\"about\":{\"alpha\":\"Dette er alfa-greier.\",\"join\":\"Bli med og hjelp oss!\",\"mailing_list\":\"E-postliste\",\"messages\":{\"alpha\":\"Dette er <strong>ikke</strong> en stabil tjeneste. Vi har fremdeles et stykke igjen! Mer informasjon finner du <a href=\\\"https://github.com/travis-ci\\\">her</a>.\"},\"repository\":\"Kodelager\",\"twitter\":\"Twitter.\"},\"application\":{\"fork_me\":\"Se koden på Github\",\"my_repositories\":\"Mine kodelagre\",\"recent\":\"Nylig\",\"search\":\"Søk\",\"sponsers\":\"Sponsorer\",\"sponsors_link\":\"Se alle de flotte sponsorene våre &rarr;\"},\"mobile\":{\"author\":\"Forfatter\",\"build\":\"Jobb\",\"build_matrix\":\"Jobbmatrise\",\"commit\":\"Innsending\",\"committer\":\"Innsender\",\"compare\":\"Sammenlign\",\"config\":\"Oppsett\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"job\":\"Jobb\",\"log\":\"Logg\"},\"top\":{\"admin\":\"Administrator\",\"blog\":\"Blogg\",\"docs\":\"Dokumentasjon\",\"github_login\":\"Logg inn med Github\",\"home\":\"Hjem\",\"profile\":\"Profil\",\"sign_out\":\"Logg ut\",\"stats\":\"Statistikk\"}},\"no_job\":\"Ingen jobber finnnes\",\"profiles\":{\"show\":{\"email\":\"E-post\",\"github\":\"Github\",\"message\":{\"config\":\"hvordan sette opp egne jobbinnstillinger\",\"your_repos\":\"Slå\\u0010 på Travis for prosjektene dine ved å dra i bryterne under, og send koden til Github.<br />\\nFor å teste mot flere ruby-versjoner, se dokumentasjonen for\"},\"messages\":{\"notice\":\"For å komme i gang, vennligst les <a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">kom-i-gang-veivisereren</a> vår. <small>Det tar bare et par minutter.</small>\"},\"token\":\"Kode\",\"update\":\"Oppdater\",\"update_locale\":\"Oppdater\",\"your_locale\":\"Ditt språk\",\"your_repos\":\"Dine kodelagre\"}},\"queue\":\"Kø\",\"repositories\":{\"branch\":\"Gren\",\"commit\":\"Innsender\",\"duration\":\"Varighet\",\"finished_at\":\"Fullført\",\"image_url\":\"Bilde-URL\",\"markdown\":\"Markdown\",\"message\":\"Beskrivelse\",\"rdoc\":\"RDOC\",\"started_at\":\"Startet\",\"tabs\":{\"branches\":\"Grensammendrag\",\"build\":\"Jobb\",\"build_history\":\"Jobblogg\",\"current\":\"Siste\",\"job\":\"Jobb\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Varighet\"},\"statistics\":{\"index\":{\"build_count\":\"Antall jobber\",\"count\":\"Antall\",\"last_month\":\"siste måned\",\"repo_growth\":\"Vekst i kodelager\",\"total_builds\":\"Totale jobber\",\"total_projects\":\"Antall prosjekter/kodelagre\"}},\"workers\":\"Arbeidere\",\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"nl\":{\"admin\":{\"actions\":{\"create\":\"aanmaken\",\"created\":\"aangemaakt\",\"delete\":\"verwijderen\",\"deleted\":\"verwijderd\",\"update\":\"bijwerken\",\"updated\":\"bijgewerkt\"},\"credentials\":{\"log_out\":\"Afmelden\"},\"dashboard\":{\"add_new\":\"Nieuwe toevoegen\",\"ago\":\"geleden\",\"last_used\":\"Laatst gebruikt\",\"model_name\":\"Model naam\",\"modify\":\"Wijzigen\",\"pagename\":\"Site administratie\",\"show\":\"Laten zien\",\"records\":\"Gegevens\"},\"delete\":{\"confirmation\":\"Ja, ik ben zeker\",\"flash_confirmation\":\"%{name} is vernietigd\"},\"flash\":{\"error\":\"%{name} kon niet worden %{action}\",\"noaction\":\"Er zijn geen acties genomen\",\"successful\":\"%{name} is %{action}\"},\"history\":{\"name\":\"Geschiedenis\",\"no_activity\":\"Geen activiteit\",\"page_name\":\"Geschiedenis van %{name}\"},\"list\":{\"add_new\":\"Nieuwe toevoegen\",\"delete_action\":\"Verwijderen\",\"delete_selected\":\"Verwijder geselecteerden\",\"edit_action\":\"Bewerken\",\"search\":\"Zoeken\",\"select\":\"Selecteer %{name} om te bewerken\",\"select_action\":\"Selecteer\",\"show_all\":\"Laat allen zien\"},\"new\":{\"basic_info\":\"Basisinfo\",\"cancel\":\"Annuleren\",\"chosen\":\"%{name} gekozen\",\"chose_all\":\"Kies allen\",\"clear_all\":\"Deselecteer allen\",\"many_chars\":\"tekens of minder.\",\"one_char\":\"teken.\",\"optional\":\"Optioneel\",\"required\":\"Vereist\",\"save\":\"Opslaan\",\"save_and_add_another\":\"Opslaan en een nieuwe toevoegen\",\"save_and_edit\":\"Opslaan en bewerken\",\"select_choice\":\"Selecteer uw keuzes en klik\"}},\"build\":{\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"job\":\"Taak\"},\"builds\":{\"allowed_failures\":\"Toegestane mislukkingen\",\"author\":\"Auteur\",\"branch\":\"Tak\",\"build_matrix\":\"Bouw Matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"message\":\"Bericht\",\"messages\":{\"sponsored_by\":\"Deze tests zijn gedraaid op een machine gesponsord door\"},\"name\":\"Bouw\",\"started_at\":\"Gestart\",\"commit\":\"Commit\",\"committer\":\"Committer\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} uur\",\"other\":\"%{count} uren\"},\"minutes_exact\":{\"one\":\"%{count} minuut\",\"other\":\"%{count} minuten\"},\"seconds_exact\":{\"one\":\"%{count} seconde\",\"other\":\"%{count} seconden\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Uw account is bevestigd. U wordt nu ingelogd.\",\"send_instructions\":\"Binnen enkele minuten zal u een email ontvangen met instructies om uw account te bevestigen.\"},\"failure\":{\"inactive\":\"Uw account is nog niet geactiveerd.\",\"invalid\":\"Ongeldig email adres of wachtwoord.\",\"invalid_token\":\"Ongeldig authenticatie token.\",\"locked\":\"Uw account is vergrendeld.\",\"timeout\":\"Uw sessie is verlopen, gelieve opnieuw in te loggen om verder te gaan.\",\"unauthenticated\":\"U moet inloggen of u registeren voordat u verder gaat.\",\"unconfirmed\":\"U moet uw account bevestigen voordat u verder gaat.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Bevestigings-instructies\"},\"reset_password_instructions\":{\"subject\":\"Wachtwoord herstel instructies\"},\"unlock_instructions\":{\"subject\":\"Ontgrendel-instructies\"}},\"passwords\":{\"send_instructions\":\"Binnen enkele minuten zal u een email krijgen met instructies om uw wachtwoord opnieuw in te stellen.\",\"updated\":\"Uw wachtwoord is veranderd. U wordt nu ingelogd.\"},\"registrations\":{\"destroyed\":\"Dag! Uw account is geannuleerd. We hopen u vlug terug te zien.\",\"signed_up\":\"Uw registratie is voltooid. Als het ingeschakeld is wordt een bevestiging naar uw email adres verzonden.\",\"updated\":\"Het bijwerken van uw account is gelukt.\"},\"sessions\":{\"signed_in\":\"Inloggen gelukt.\",\"signed_out\":\"Uitloggen gelukt.\"},\"unlocks\":{\"send_instructions\":\"Binnen enkele minuten zal u een email krijgen met instructies om uw account te ontgrendelen.\",\"unlocked\":\"Uw account is ontgrendeld. U wordt nu ingelogd.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"was al bevestigd\",\"not_found\":\"niet gevonden\",\"not_locked\":\"was niet vergrendeld\"}},\"jobs\":{\"allowed_failures\":\"Toegestane mislukkingen\",\"author\":\"Auteur\",\"branch\":\"Tak\",\"build_matrix\":\"Bouw matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"message\":\"Bericht\",\"messages\":{\"sponsored_by\":\"Deze testen zijn uitgevoerd op een machine gesponsord door\"},\"started_at\":\"Gestart\",\"commit\":\"Commit\",\"committer\":\"Committer\"},\"layouts\":{\"about\":{\"alpha\":\"Dit is in alfa-stadium.\",\"join\":\"Doe met ons mee en help!\",\"mailing_list\":\"Mailing lijst\",\"messages\":{\"alpha\":\"Gelieve deze service <strong>niet</strong> te beschouwen als stabiel. Daar zijn we nog lang niet! Meer info <a href='https://github.com/travis-ci'>hier.</a>\"},\"repository\":\"Repository\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Maak een fork op Github\",\"my_repositories\":\"Mijn repositories\",\"recent\":\"Recent\",\"search\":\"Zoeken\",\"sponsers\":\"Sponsors\",\"sponsors_link\":\"Bekijk al onze geweldige sponsors &rarr;\"},\"mobile\":{\"author\":\"Auteur\",\"build\":\"Bouw\",\"build_matrix\":\"Bouw matrix\",\"compare\":\"Vergelijk\",\"config\":\"Configuratie\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid op\",\"job\":\"Taak\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"log\":\"Logboek\"},\"top\":{\"admin\":\"Administratie\",\"blog\":\"Blog\",\"docs\":\"Documentatie\",\"github_login\":\"Inloggen met Github\",\"home\":\"Home\",\"profile\":\"Profiel\",\"sign_out\":\"Uitloggen\",\"stats\":\"Statistieken\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"pt-BR\":\"português brasileiro\"},\"no_job\":\"Er zijn geen taken\",\"profiles\":{\"show\":{\"email\":\"Email adres\",\"github\":\"Github\",\"message\":{\"config\":\"hoe eigen bouw-opties in te stellen\",\"your_repos\":\"Zet de schakelaars hieronder aan om de Travis hook voor uw projecten te activeren en push daarna naar Github<br />\\nOm te testen tegen meerdere rubies, zie\"},\"messages\":{\"notice\":\"Om te beginnen kunt u onze <a href=\\\\\\\"http://about.travis-ci.org/docs/user/getting-started/\\\\\\\">startersgids</a> lezen.\\\\n  <small>Het zal maar enkele minuten van uw tijd vergen.</small>\"},\"update\":\"Bijwerken\",\"update_locale\":\"Bijwerken\",\"your_locale\":\"Uw taal\",\"your_repos\":\"Uw repositories\",\"token\":\"Token\"}},\"queue\":\"Wachtrij\",\"repositories\":{\"branch\":\"Tak\",\"duration\":\"Duur\",\"finished_at\":\"Voltooid\",\"image_url\":\"Afbeeldings URL\",\"message\":\"Bericht\",\"started_at\":\"Gestart\",\"tabs\":{\"branches\":\"Tak samenvatting\",\"build\":\"Bouw\",\"build_history\":\"Bouw geschiedenis\",\"current\":\"Huidig\",\"job\":\"Taak\"},\"commit\":\"Commit\",\"markdown\":\"Markdown\",\"rdoc\":\"RDOC\",\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Duur\"},\"statistics\":{\"index\":{\"build_count\":\"Bouw aantal\",\"count\":\"Aantal\",\"last_month\":\"voorbije maand\",\"repo_growth\":\"Repository groei\",\"total_builds\":\"Bouw totaal\",\"total_projects\":\"Projecten/Repository totaal\"}},\"workers\":\"Machines\",\"home\":{\"name\":\"Hoofdpagina\"}},\"pl\":{\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} godzina\",\"other\":\"%{count} godziny\"},\"minutes_exact\":{\"one\":\"%{count} minuta\",\"other\":\"%{count} minuty\"},\"seconds_exact\":{\"one\":\"%{count} sekunda\",\"other\":\"%{count} sekundy\"}}},\"workers\":\"Workers\",\"queue\":\"Kolejka\",\"no_job\":\"Brak zadań\",\"repositories\":{\"branch\":\"Gałąź\",\"image_url\":\"URL obrazka\",\"markdown\":\"Markdown\",\"textile\":\"Textile\",\"rdoc\":\"RDOC\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"tabs\":{\"current\":\"Aktualny\",\"build_history\":\"Historia Buildów\",\"branches\":\"Wszystkie Gałęzie\",\"build\":\"Build\",\"job\":\"Zadanie\"}},\"build\":{\"job\":\"Zadanie\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\"},\"jobs\":{\"messages\":{\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"build_matrix\":\"Macierz Buildów\",\"allowed_failures\":\"Dopuszczalne Niepowodzenia\",\"author\":\"Autor\",\"config\":\"Konfiguracja\",\"compare\":\"Porównanie\",\"committer\":\"Committer\",\"branch\":\"Gałąź\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"builds\":{\"name\":\"Build\",\"messages\":{\"sponsored_by\":\"Te testy zostały uruchomione na maszynie sponsorowanej przez\"},\"build_matrix\":\"Macierz Buildów\",\"allowed_failures\":\"Dopuszczalne Niepowodzenia\",\"author\":\"Autor\",\"config\":\"Konfiguracja\",\"compare\":\"Porównanie\",\"committer\":\"Komitujący\",\"branch\":\"Gałąź\",\"commit\":\"Commit\",\"message\":\"Opis\",\"started_at\":\"Rozpoczęto\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\"},\"layouts\":{\"top\":{\"home\":\"Start\",\"blog\":\"Blog\",\"docs\":\"Dokumentacja\",\"stats\":\"Statystki\",\"github_login\":\"Zaloguj się przy pomocy Githuba\",\"profile\":\"Profil\",\"sign_out\":\"Wyloguj się\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"recent\":\"Ostatnie\",\"search\":\"Wyniki\",\"sponsers\":\"Sponsorzy\",\"sponsors_link\":\"Zobacz naszych wszystkich wspaniałych sponsorów &rarr;\",\"my_repositories\":\"Moje repozytoria\"},\"about\":{\"alpha\":\"To wciąż jest wersja alpha.\",\"messages\":{\"alpha\":\"Proszę <strong>nie</strong> traktuj tego jako stabilnej usługi. Wciąż nam wiele do tego brakuje! Więcej informacji znajdziesz <a href='https://github.com/travis-ci'>tutaj.</a>\"},\"join\":\"Pomóż i dołącz do nas!\",\"mailing_list\":\"Lista mailingowa\",\"repository\":\"Repozytorium\",\"twitter\":\"Twitter\"},\"mobile\":{\"author\":\"Autor\",\"build\":\"Build\",\"build_matrix\":\"Macierz Buildów\",\"commit\":\"Commit\",\"committer\":\"Komitujący\",\"compare\":\"Porównianie\",\"config\":\"Konfiguracja\",\"duration\":\"Czas trwania\",\"finished_at\":\"Zakończono\",\"job\":\"Zadanie\",\"log\":\"Log\"}},\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"your_repos\":\"  Przesuń suwak poniżej, aby włączyć Travisa, dla twoich projektów, a następnie umieść swój kod na GitHubie.<br />\\n Aby testować swój kod przy użyciu wielu wersji Rubiego, zobacz\",\"config\":\"jak skonfigurować niestandardowe opcje builda\"},\"messages\":{\"notice\":\"Aby zacząć, przeczytaj nasz <a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">Przewodnik </a>.\\n  <small>Zajmie ci to tylko kilka minut.</small>\"},\"token\":\"Token\",\"your_repos\":\"Twoje repozytoria\"}},\"statistics\":{\"index\":{\"count\":\"Ilość\",\"repo_growth\":\"Przyrost repozytoriów\",\"total_projects\":\"Łącznie projektów/repozytoriów\",\"build_count\":\"Liczba buildów\",\"last_month\":\"ostatni miesiąc\",\"total_builds\":\"Łącznie Buildów\"}},\"date\":{\"abbr_day_names\":[\"nie\",\"pon\",\"wto\",\"śro\",\"czw\",\"pią\",\"sob\"],\"abbr_month_names\":[\"sty\",\"lut\",\"mar\",\"kwi\",\"maj\",\"cze\",\"lip\",\"sie\",\"wrz\",\"paź\",\"lis\",\"gru\"],\"day_names\":[\"niedziela\",\"poniedziałek\",\"wtorek\",\"środa\",\"czwartek\",\"piątek\",\"sobota\"],\"formats\":{\"default\":\"%d-%m-%Y\",\"long\":\"%B %d, %Y\",\"short\":\"%d %b\"},\"month_names\":[\"styczeń\",\"luty\",\"marzec\",\"kwiecień\",\"maj\",\"czerwiec\",\"lipiec\",\"sierpień\",\"wrzesień\",\"październik\",\"listopad\",\"grudzień\"],\"order\":[\"day\",\"month\",\"year\"]},\"errors\":{\"format\":\"%{attribute} %{message}\",\"messages\":{\"accepted\":\"musi zostać zaakceptowane\",\"blank\":\"nie może być puste\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}},\"pt-BR\":{\"admin\":{\"actions\":{\"create\":\"criar\",\"created\":\"criado\",\"delete\":\"deletar\",\"deleted\":\"deletado\",\"update\":\"atualizar\",\"updated\":\"atualizado\"},\"credentials\":{\"log_out\":\"Deslogar\"},\"dashboard\":{\"add_new\":\"Adicionar novo\",\"ago\":\"atrás\",\"last_used\":\"Última utilização\",\"model_name\":\"Nome do modelo\",\"modify\":\"Modificar\",\"name\":\"Dashboard\",\"pagename\":\"Administração do site\",\"records\":\"Registros\",\"show\":\"Mostrar\"},\"delete\":{\"confirmation\":\"Sim, tenho certeza\",\"flash_confirmation\":\"%{name} foi destruído com sucesso\"},\"flash\":{\"error\":\"%{name} falhou ao %{action}\",\"noaction\":\"Nenhuma ação foi tomada\",\"successful\":\"%{name} foi %{action} com sucesso\"},\"history\":{\"name\":\"Histórico\",\"no_activity\":\"Nenhuma Atividade\",\"page_name\":\"Histórico para %{name}\"},\"list\":{\"add_new\":\"Adicionar novo\",\"delete_action\":\"Deletar\",\"delete_selected\":\"Deletar selecionados\",\"edit_action\":\"Editar\",\"search\":\"Buscar\",\"select\":\"Selecionar %{name} para editar\",\"select_action\":\"Selecionar\",\"show_all\":\"Mostrar todos\"},\"new\":{\"basic_info\":\"Informações básicas\",\"cancel\":\"Cancelar\",\"chosen\":\"Escolhido %{name}\",\"chose_all\":\"Escolher todos\",\"clear_all\":\"Limpar todos\",\"many_chars\":\"caracteres ou menos.\",\"one_char\":\"caractere.\",\"optional\":\"Opcional\",\"required\":\"Requerido\",\"save\":\"Salvar\",\"save_and_add_another\":\"Salvar e adicionar outro\",\"save_and_edit\":\"Salvar e alterar\",\"select_choice\":\"Selecione e clique\"}},\"build\":{\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"job\":\"Trabalho\"},\"builds\":{\"allowed_failures\":\"Falhas Permitidas\",\"author\":\"Autor\",\"branch\":\"Branch\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"message\":\"Mensagem\",\"messages\":{\"sponsored_by\":\"Esta série de testes foi executada em uma caixa de processos patrocinada por\"},\"name\":\"Build\",\"started_at\":\"Iniciou em\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} hora\",\"other\":\"%{count} horas\"},\"minutes_exact\":{\"one\":\"%{count} minuto\",\"other\":\"%{count} minutos\"},\"seconds_exact\":{\"one\":\"%{count} segundo\",\"other\":\"%{count} segundos\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Sua conta foi confirmada com sucesso. Você agora está logado.\",\"send_instructions\":\"Você receberá um email com instruções de como confirmar sua conta em alguns minutos.\"},\"failure\":{\"inactive\":\"Sua conta ainda não foi ativada.\",\"invalid\":\"Email ou senha inválidos.\",\"invalid_token\":\"Token de autenticação inválido.\",\"locked\":\"Sua conta está trancada.\",\"timeout\":\"Sua sessão expirou, por favor faça seu login novamente.\",\"unauthenticated\":\"Você precisa fazer o login ou cadastrar-se antes de continuar.\",\"unconfirmed\":\"Você precisa confirmar sua conta antes de continuar.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Instruções de confirmação\"},\"reset_password_instructions\":{\"subject\":\"Instruções de atualização de senha\"},\"unlock_instructions\":{\"subject\":\"Instruções de destrancamento\"}},\"passwords\":{\"send_instructions\":\"Você receberá um email com instruções de como atualizar sua senha em alguns minutos.\",\"updated\":\"Sua senha foi alterada com sucesso. Você agora está logado.\"},\"registrations\":{\"destroyed\":\"Tchau! Sua conta foi cancelada com sucesso. Esperamos vê-lo novamente em breve!\",\"signed_up\":\"Você se cadastrou com sucesso. Se ativada, uma confirmação foi enviada para seu email.\",\"updated\":\"Você atualizou sua conta com sucesso.\"},\"sessions\":{\"signed_in\":\"Logado com sucesso.\",\"signed_out\":\"Deslogado com sucesso.\"},\"unlocks\":{\"send_instructions\":\"Você receberá um email com instruções de como destrancar sua conta em alguns minutos.\",\"unlocked\":\"Sua conta foi destrancada com sucesso. Você agora está logado.\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"já foi confirmado\",\"not_found\":\"não encontrado\",\"not_locked\":\"não estava trancado\"}},\"home\":{\"name\":\"home\"},\"jobs\":{\"allowed_failures\":\"Falhas Permitidas\",\"author\":\"Autor\",\"branch\":\"Branch\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"message\":\"Mensagem\",\"messages\":{\"sponsored_by\":\"Esta série de testes foi executada em uma caixa de processos patrocinada por\"},\"started_at\":\"Iniciou em\"},\"layouts\":{\"about\":{\"alpha\":\"Isto é um alpha.\",\"join\":\"Junte-se à nós e ajude!\",\"mailing_list\":\"Lista de email\",\"messages\":{\"alpha\":\"Por favor, <strong>não</strong> considere isto um serviço estável. Estamos muito longe disso! Mais informações <a href='https://github.com/travis-ci'>aqui.</a>\"},\"repository\":\"Repositório\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Faça fork no Github\",\"my_repositories\":\"Meus Repositórios\",\"recent\":\"Recentes\",\"search\":\"Buscar\",\"sponsers\":\"Patrocinadores\",\"sponsors_link\":\"Conheça todos os nossos patrocinadores &rarr;\"},\"mobile\":{\"author\":\"Autor\",\"build\":\"Build\",\"build_matrix\":\"Matriz de Build\",\"commit\":\"Commit\",\"committer\":\"Committer\",\"compare\":\"Comparar\",\"config\":\"Config\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"job\":\"Trabalho\",\"log\":\"Log\"},\"top\":{\"admin\":\"Admin\",\"blog\":\"Blog\",\"docs\":\"Documentação\",\"github_login\":\"Logue com o Github\",\"home\":\"Home\",\"profile\":\"Perfil\",\"sign_out\":\"Sair\",\"stats\":\"Estatísticas\"}},\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"fr\":\"Français\",\"ja\":\"日本語\",\"nb\":\"Norsk Bokmål\",\"nl\":\"Nederlands\",\"pl\":\"Polski\",\"ru\":\"Русский\",\"pt-BR\":\"português brasileiro\"},\"no_job\":\"Não há trabalhos\",\"profiles\":{\"show\":{\"email\":\"Email\",\"github\":\"Github\",\"message\":{\"config\":\"como configurar opções de build\",\"your_repos\":\"Use os botões abaixo para ligar ou desligar o hook de serviço do Travis para seus projetos, e então, faça um push para o Github.<br />Para testar com múltiplas versões do Ruby, leia\"},\"messages\":{\"notice\":\"Para começar, leia nosso <a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">Guia de início</a>. <small>Só leva alguns minutinhos.</small>\"},\"token\":\"Token\",\"update\":\"Atualizar\",\"update_locale\":\"Atualizar\",\"your_locale\":\"Sua língua\",\"your_repos\":\"Seus Repositórios\"}},\"queue\":\"Fila\",\"repositories\":{\"branch\":\"Branch\",\"commit\":\"Commit\",\"duration\":\"Duração\",\"finished_at\":\"Concluído em\",\"image_url\":\"URL da imagem\",\"markdown\":\"Markdown\",\"message\":\"Mensagem\",\"rdoc\":\"RDOC\",\"started_at\":\"Iniciou em\",\"tabs\":{\"branches\":\"Sumário do Branch\",\"build\":\"Build\",\"build_history\":\"Histórico de Build\",\"current\":\"Atual\",\"job\":\"Trabalho\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Duração\"},\"statistics\":{\"index\":{\"build_count\":\"Número de Builds\",\"count\":\"Número\",\"last_month\":\"último mês\",\"repo_growth\":\"Crescimento de Repositório\",\"total_builds\":\"Total de Builds\",\"total_projects\":\"Total de Projetos/Repositórios\"}},\"workers\":\"Processos\"},\"ru\":{\"admin\":{\"actions\":{\"create\":\"создать\",\"created\":\"создано\",\"delete\":\"удалить\",\"deleted\":\"удалено\",\"update\":\"обновить\",\"updated\":\"обновлено\"},\"credentials\":{\"log_out\":\"Выход\"},\"dashboard\":{\"add_new\":\"Добавить\",\"ago\":\"назад\",\"last_used\":\"Использовалось в последний раз\",\"model_name\":\"Имя модели\",\"modify\":\"Изменить\",\"name\":\"Панель управления\",\"pagename\":\"Управление сайтом\",\"records\":\"Записи\",\"show\":\"Показать\"},\"delete\":{\"confirmation\":\"Да, я уверен\",\"flash_confirmation\":\"%{name} успешно удалено\"},\"history\":{\"name\":\"История\",\"no_activity\":\"Нет активности\",\"page_name\":\"История %{name}\"},\"list\":{\"add_new\":\"Добавить\",\"delete_action\":\"Удалить\",\"delete_selected\":\"Удалить выбранные\",\"edit_action\":\"Редактировать\",\"search\":\"Поиск\",\"select\":\"Для редактирования выберите %{name}\",\"select_action\":\"Выбрать\",\"show_all\":\"Показать все\"},\"new\":{\"basic_info\":\"Основная информация\",\"cancel\":\"Отмена\",\"chosen\":\"Выбрано %{name}\",\"chose_all\":\"Выбрать все\",\"clear_all\":\"Очистить все\",\"one_char\":\"символ.\",\"optional\":\"Необязательно\",\"required\":\"Обязательно\",\"save\":\"Сохранить\",\"save_and_add_another\":\"Сохранить и добавить другое\",\"save_and_edit\":\"Сохранить и продолжить редактирование\",\"select_choice\":\"Выберите и кликните\",\"many_chars\":\"символов или меньше.\"},\"flash\":{\"error\":\"%{name} не удалось %{action}\",\"noaction\":\"Никаких действий не произведено\",\"successful\":\"%{name} было успешно %{action}\"}},\"build\":{\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"job\":\"Задача\"},\"builds\":{\"allowed_failures\":\"Допустимые неудачи\",\"author\":\"Автор\",\"branch\":\"Ветка\",\"build_matrix\":\"Матрица\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Дифф\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"message\":\"Комментарий\",\"messages\":{\"sponsored_by\":\"Эта серия тестов была запущена на машине, спонсируемой\"},\"name\":\"Билд\",\"started_at\":\"Начало\"},\"datetime\":{\"distance_in_words\":{\"hours_exact\":{\"one\":\"%{count} час\",\"few\":\"%{count} часа\",\"many\":\"%{count} часов\",\"other\":\"%{count} часа\"},\"minutes_exact\":{\"one\":\"%{count} минута\",\"few\":\"%{count} минуты\",\"many\":\"%{count} минут\",\"other\":\"%{count} минуты\"},\"seconds_exact\":{\"one\":\"%{count} секунда\",\"few\":\"%{count} секунды\",\"many\":\"%{count} секунд\",\"other\":\"%{count} секунды\"}}},\"devise\":{\"confirmations\":{\"confirmed\":\"Ваш аккаунт успешно подтвержден. Приветствуем!\",\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциями для прохождения процедуры подтверждения аккаунта.\"},\"failure\":{\"inactive\":\"Ваш аккаунт еще не активирован.\",\"invalid\":\"Ошибка в адресе почты или пароле.\",\"invalid_token\":\"Неправильный токен аутентификации.\",\"locked\":\"Ваш аккаунт заблокирован.\",\"timeout\":\"Сессия окончена. Для продолжения работы войдите снова.\",\"unauthenticated\":\"Вам нужно войти или зарегистрироваться.\",\"unconfirmed\":\"Вы должны сначала подтвердить свой аккаунт.\"},\"mailer\":{\"confirmation_instructions\":{\"subject\":\"Инструкции для подтверждению аккаунта\"},\"reset_password_instructions\":{\"subject\":\"Инструкции для сброса пароля\"},\"unlock_instructions\":{\"subject\":\"Инструкции для разблокирования аккаунта\"}},\"passwords\":{\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциями для сброса пароля.\",\"updated\":\"Ваш пароль успешно изменен. Приветствуем!\"},\"registrations\":{\"destroyed\":\"Ваш аккаунт был успешно удален. Живите долго и процветайте!\",\"signed_up\":\"Вы успешно прошли регистрацию. Инструкции для подтверждения аккаунта отправлены на ваш электронный адрес.\",\"updated\":\"Аккаунт успешно обновлен.\"},\"sessions\":{\"signed_in\":\"Приветствуем!\",\"signed_out\":\"Удачи!\"},\"unlocks\":{\"send_instructions\":\"В течении нескольких минут вы получите электронное письмо с инструкциям для разблокировния аккаунта.\",\"unlocked\":\"Ваш аккаунт успешно разблокирован. Приветствуем!\"}},\"errors\":{\"messages\":{\"already_confirmed\":\"уже подтвержден\",\"not_found\":\"не найден\",\"not_locked\":\"не заблокирован\"}},\"home\":{\"name\":\"Главная\"},\"jobs\":{\"allowed_failures\":\"Допустимые неудачи\",\"author\":\"Автор\",\"branch\":\"Ветка\",\"build_matrix\":\"Матрица\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Сравнение\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"message\":\"Комментарий\",\"messages\":{\"sponsored_by\":\"Эта серия тестов была запущена на машине спонсируемой\"},\"started_at\":\"Начало\"},\"layouts\":{\"about\":{\"alpha\":\"Это альфа-версия\",\"join\":\"Присоединяйтесь к нам и помогайте!\",\"mailing_list\":\"Лист рассылки\",\"messages\":{\"alpha\":\"Пожалуйста, <strong>не</strong> считайте данный сервис стабильным. Мы еще очень далеки от стабильности! <a href='https://github.com/travis-ci'>Подробности</a>\"},\"repository\":\"Репозиторий\",\"twitter\":\"Twitter\"},\"application\":{\"fork_me\":\"Fork me on Github\",\"my_repositories\":\"Мои репозитории\",\"recent\":\"Недавние\",\"search\":\"Поиск\",\"sponsers\":\"Спонсоры\",\"sponsors_link\":\"Список всех наших замечательных спонсоров &rarr;\"},\"mobile\":{\"author\":\"Автор\",\"build\":\"Сборка\",\"build_matrix\":\"Матрица сборок\",\"commit\":\"Коммит\",\"committer\":\"Коммитер\",\"compare\":\"Сравнение\",\"config\":\"Конфигурация\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"job\":\"Задача\",\"log\":\"Журнал\"},\"top\":{\"admin\":\"Управление\",\"blog\":\"Блог\",\"docs\":\"Документация\",\"github_login\":\"Войти через Github\",\"home\":\"Главная\",\"profile\":\"Профиль\",\"sign_out\":\"Выход\",\"stats\":\"Статистика\"}},\"no_job\":\"Очередь пуста\",\"profiles\":{\"show\":{\"email\":\"Электронная почта\",\"github\":\"Github\",\"message\":{\"config\":\"как настроить специальные опции билда\",\"your_repos\":\"Используйте переключатели, чтобы включить Travis service hook для вашего проекта, а потом отправьте код на GitHub.<br />\\nДля тестирования на нескольких версиях Ruby смотрите\"},\"messages\":{\"notice\":\"Перед началом, пожалуйста, прочтите <a href=\\\"http://about.travis-ci.org/docs/user/getting-started/\\\">Руководство для быстрого старта</a>. <small>Это займет всего несколько минут.</small>\"},\"token\":\"Токен\",\"update\":\"Обновить\",\"update_locale\":\"Обновить\",\"your_locale\":\"Ваш язык\",\"your_repos\":\"Ваши репозитории\"}},\"queue\":\"Очередь\",\"repositories\":{\"branch\":\"Ветка\",\"commit\":\"Коммит\",\"duration\":\"Длительность\",\"finished_at\":\"Завершен\",\"image_url\":\"URL изображения\",\"markdown\":\"Markdown\",\"message\":\"Комментарий\",\"rdoc\":\"RDOC\",\"started_at\":\"Начало\",\"tabs\":{\"branches\":\"Статус веток\",\"build\":\"Билд\",\"build_history\":\"История\",\"current\":\"Текущий\",\"job\":\"Задача\"},\"textile\":\"Textile\"},\"repository\":{\"duration\":\"Длительность\"},\"statistics\":{\"index\":{\"build_count\":\"Количество билдов\",\"count\":\"Количество\",\"last_month\":\"прошлый месяц\",\"repo_growth\":\"Рост числа репозиториев\",\"total_builds\":\"Всего билдов\",\"total_projects\":\"Всего проектов/репозиториев\"}},\"workers\":\"Машины\",\"locales\":{\"en\":\"English\",\"es\":\"Español\",\"ja\":\"日本語\",\"ru\":\"Русский\",\"fr\":\"Français\",\"nb\":\"Norsk Bokmål\",\"pl\":\"Polski\",\"nl\":\"Nederlands\",\"pt-BR\":\"português brasileiro\"}}};\n\n\n})();\n//@ sourceURL=config/locales");minispade.register('ext/ember/bound_helper', "(function() {// https://gist.github.com/2018185\n// For reference: https://github.com/wagenet/ember.js/blob/ac66dcb8a1cbe91d736074441f853e0da474ee6e/packages/ember-handlebars/lib/views/bound_property_view.js\nvar BoundHelperView = Ember.View.extend(Ember._Metamorph, {\n\n  context: null,\n  options: null,\n  property: null,\n  // paths of the property that are also observed\n  propertyPaths: [],\n\n  value: Ember.K,\n\n  valueForRender: function() {\n    var value = this.value(Ember.get(this.context, this.property), this.options);\n    if (this.options.escaped) { value = Handlebars.Utils.escapeExpression(value); }\n    return value;\n  },\n\n  render: function(buffer) {\n    buffer.push(this.valueForRender());\n  },\n\n  valueDidChange: function() {\n    if (this.morph.isRemoved()) { return; }\n    this.morph.html(this.valueForRender());\n  },\n\n  didInsertElement: function() {\n    this.valueDidChange();\n  },\n\n  init: function() {\n    this._super();\n    Ember.addObserver(this.context, this.property, this, 'valueDidChange');\n    this.get('propertyPaths').forEach(function(propName) {\n        Ember.addObserver(this.context, this.property + '.' + propName, this, 'valueDidChange');\n    }, this);\n  },\n\n  destroy: function() {\n    Ember.removeObserver(this.context, this.property, this, 'valueDidChange');\n    this.get('propertyPaths').forEach(function(propName) {\n        this.context.removeObserver(this.property + '.' + propName, this, 'valueDidChange');\n    }, this);\n    this._super();\n  }\n\n});\n\nEmber.registerBoundHelper = function(name, func) {\n  var propertyPaths = Array.prototype.slice.call(arguments, 2);\n  Ember.Handlebars.registerHelper(name, function(property, options) {\n    var data = options.data,\n        view = data.view,\n        ctx  = this;\n\n    var bindView = view.createChildView(BoundHelperView, {\n      property: property,\n      propertyPaths: propertyPaths,\n      context: ctx,\n      options: options.hash,\n      value: func\n    });\n\n    view.appendChild(bindView);\n  });\n};\n\n\n})();\n//@ sourceURL=ext/ember/bound_helper");minispade.register('ext/ember/namespace', "(function() {Em.Namespace.reopen = Em.Namespace.reopenClass\n\n\n\n})();\n//@ sourceURL=ext/ember/namespace");
\ No newline at end of file
diff --git a/public/javascripts/application.min.js b/public/javascripts/application.min.js
index 2c44d031..c5bb172e 100644
--- a/public/javascripts/application.min.js
+++ b/public/javascripts/application.min.js
@@ -8421,7 +8421,7 @@ e.setAttribute("async",!0),a(e,function(){c()}),d.appendChild
 ),minispade.register("models/extensions","(function() {(function() {\n\n  Travis.DurationCalculations = Ember.Mixin.create({\n    duration: (function() {\n      var duration;\n      if (duration = this.get('_duration')) {\n        return duration;\n      } else {\n        return Travis.Helpers.durationFrom(this.get('startedAt'), this.get('finishedAt'));\n      }\n    }).property('_duration', 'finishedAt', 'startedAt'),\n    updateTimes: function() {\n      this.notifyPropertyChange('_duration');\n      return this.notifyPropertyChange('finished_at');\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/extensions"
 ),minispade.register("models/hook","(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Hook = Travis.Model.extend({\n    name: DS.attr('string'),\n    ownerName: DS.attr('string'),\n    description: DS.attr('string'),\n    active: DS.attr('boolean'),\n    account: (function() {\n      return this.get('slug').split('/')[0];\n    }).property('slug'),\n    slug: (function() {\n      return \"\" + (this.get('ownerName')) + \"/\" + (this.get('name'));\n    }).property('ownerName', 'name'),\n    urlGithub: (function() {\n      return \"http://github.com/\" + (this.get('slug'));\n    }).property(),\n    urlGithubAdmin: (function() {\n      return \"http://github.com/\" + (this.get('slug')) + \"/admin/hooks#travis_minibucket\";\n    }).property(),\n    toggle: function() {\n      var transaction;\n      transaction = this.get('store').transaction();\n      transaction.add(this);\n      this.set('active', !this.get('active'));\n      return transaction.commit();\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/hook"
 ),minispade.register("models/job","(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Job = Travis.Model.extend(Travis.DurationCalculations, {\n    repositoryId: DS.attr('number'),\n    buildId: DS.attr('number'),\n    commitId: DS.attr('number'),\n    logId: DS.attr('number'),\n    queue: DS.attr('string'),\n    state: DS.attr('string'),\n    number: DS.attr('string'),\n    result: DS.attr('number'),\n    _duration: DS.attr('number', {\n      key: 'duration'\n    }),\n    startedAt: DS.attr('string'),\n    finishedAt: DS.attr('string'),\n    allowFailure: DS.attr('boolean', {\n      key: 'allow_failure'\n    }),\n    repository: DS.belongsTo('Travis.Repository', {\n      key: 'repository_id'\n    }),\n    build: DS.belongsTo('Travis.Build', {\n      key: 'build_id'\n    }),\n    commit: DS.belongsTo('Travis.Commit', {\n      key: 'commit_id'\n    }),\n    log: DS.belongsTo('Travis.Artifact', {\n      key: 'log_id'\n    }),\n    isQueued: (function() {}).property('state'),\n    config: (function() {\n      return Travis.Helpers.compact(this.get('data.config'));\n    }).property('data.config'),\n    sponsor: (function() {\n      return this.get('data.sponsor');\n    }).property('data.sponsor'),\n    configValues: (function() {\n      var config;\n      if (config = this.get('config')) {\n        return $.values($.only.apply(config, Travis.CONFIG_KEYS));\n      } else {\n        return [];\n      }\n    }).property('config'),\n    appendLog: function(text) {\n      var log;\n      if (log = this.get('log')) {\n        return log.append(text);\n      }\n    },\n    subscribe: function() {\n      var id;\n      if (id = this.get('id')) {\n        return Travis.app.pusher.subscribe(\"job-\" + id);\n      }\n    },\n    onStateChange: (function() {\n      if (this.get('state') === 'finished') {\n        return Travis.app.pusher.unsubscribe(\"job-\" + (this.get('id')));\n      }\n    }).observes('state')\n  });\n\n  this.Travis.Job.reopenClass({\n    queued: function(queue) {\n      this.find();\n      return Travis.app.store.filter(this, function(job) {\n        var queued;\n        queued = ['created', 'queued'].indexOf(job.get('state')) !== -1;\n        return queued && job.get('queue') === (\"builds.\" + queue);\n      });\n    },\n    findMany: function(ids) {\n      return Travis.app.store.findMany(this, ids);\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/job"
-),minispade.register("models/repository","(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Repository = Travis.Model.extend({\n    slug: DS.attr('string'),\n    description: DS.attr('string'),\n    lastBuildId: DS.attr('number'),\n    lastBuildNumber: DS.attr('string'),\n    lastBuildResult: DS.attr('number'),\n    lastBuildStartedAt: DS.attr('string'),\n    lastBuildFinishedAt: DS.attr('string'),\n    lastBuild: DS.belongsTo('Travis.Build'),\n    builds: (function() {\n      var id;\n      id = this.get('id');\n      Travis.Build.byRepositoryId(id, {\n        event_type: 'push'\n      });\n      return Travis.Build.filter(function(data) {\n        return parseInt(data.get('repository_id')) === id && !data.get('pull_request');\n      });\n    }).property(),\n    pullRequests: (function() {\n      var id;\n      id = this.get('id');\n      Travis.Build.byRepositoryId(id, {\n        event_type: 'pull_request'\n      });\n      return Travis.Build.filter(function(data) {\n        return parseInt(data.get('repository_id')) === id && data.get('pull_request');\n      });\n    }).property(),\n    branches: (function() {\n      return Travis.Branch.byRepositoryId(this.get('id'));\n    }).property(),\n    owner: (function() {\n      return (this.get('slug') || '').split('/')[0];\n    }).property('slug'),\n    name: (function() {\n      return (this.get('slug') || '').split('/')[1];\n    }).property('slug'),\n    lastBuildDuration: (function() {\n      var duration;\n      duration = this.get('data.last_build_duration');\n      if (!duration) {\n        duration = Travis.Helpers.durationFrom(this.get('lastBuildStartedAt'), this.get('lastBuildFinishedAt'));\n      }\n      return duration;\n    }).property('data.last_build_duration', 'lastBuildStartedAt', 'lastBuildFinishedAt'),\n    sortOrder: (function() {\n      var lastBuildFinishedAt;\n      if (lastBuildFinishedAt = this.get('lastBuildFinishedAt')) {\n        return -new Date(lastBuildFinishedAt).getTime();\n      } else {\n        return -new Date('9999').getTime() - parseInt(this.get('lastBuildId'));\n      }\n    }).property('lastBuildFinishedAt', 'lastBuildId'),\n    stats: (function() {\n      var _this = this;\n      return this.get('_stats') || $.get(\"https://api.github.com/repos/\" + (this.get('slug')), function(data) {\n        _this.set('_stats', data);\n        return _this.notifyPropertyChange('stats');\n      }) && {};\n    }).property(),\n    select: function() {\n      return Travis.Repository.select(this.get('id'));\n    },\n    updateTimes: function() {\n      return this.notifyPropertyChange('lastBuildDuration');\n    }\n  });\n\n  this.Travis.Repository.reopenClass({\n    recent: function() {\n      return this.find();\n    },\n    ownedBy: function(login) {\n      return this.find({\n        owner_name: login,\n        orderBy: 'name'\n      });\n    },\n    search: function(query) {\n      return this.find({\n        search: query,\n        orderBy: 'name'\n      });\n    },\n    bySlug: function(slug) {\n      var repo;\n      repo = $.select(this.find().toArray(), function(repo) {\n        return repo.get('slug') === slug;\n      });\n      if (repo.length > 0) {\n        return repo;\n      } else {\n        return this.find({\n          slug: slug\n        });\n      }\n    },\n    select: function(id) {\n      return this.find().forEach(function(repository) {\n        return repository.set('selected', repository.get('id') === id);\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/repository"
+),minispade.register("models/repository","(function() {(function() {\nminispade.require('travis/expandable_record_array');\nminispade.require('travis/model');\n\n  this.Travis.Repository = Travis.Model.extend({\n    slug: DS.attr('string'),\n    description: DS.attr('string'),\n    lastBuildId: DS.attr('number'),\n    lastBuildNumber: DS.attr('string'),\n    lastBuildResult: DS.attr('number'),\n    lastBuildStartedAt: DS.attr('string'),\n    lastBuildFinishedAt: DS.attr('string'),\n    lastBuild: DS.belongsTo('Travis.Build'),\n    builds: (function() {\n      var array, builds, id;\n      id = this.get('id');\n      builds = Travis.Build.byRepositoryId(id, {\n        event_type: 'push'\n      });\n      array = Travis.ExpandableRecordArray.create({\n        type: Travis.Build,\n        content: Ember.A([]),\n        store: this.get('store')\n      });\n      array.load(builds);\n      return array;\n    }).property(),\n    pullRequests: (function() {\n      var array, builds, id;\n      id = this.get('id');\n      builds = Travis.Build.byRepositoryId(id, {\n        event_type: 'pull_request'\n      });\n      array = Travis.ExpandableRecordArray.create({\n        type: Travis.Build,\n        content: Ember.A([]),\n        store: this.get('store')\n      });\n      array.load(builds);\n      return array;\n    }).property(),\n    branches: (function() {\n      return Travis.Branch.byRepositoryId(this.get('id'));\n    }).property(),\n    owner: (function() {\n      return (this.get('slug') || '').split('/')[0];\n    }).property('slug'),\n    name: (function() {\n      return (this.get('slug') || '').split('/')[1];\n    }).property('slug'),\n    lastBuildDuration: (function() {\n      var duration;\n      duration = this.get('data.last_build_duration');\n      if (!duration) {\n        duration = Travis.Helpers.durationFrom(this.get('lastBuildStartedAt'), this.get('lastBuildFinishedAt'));\n      }\n      return duration;\n    }).property('data.last_build_duration', 'lastBuildStartedAt', 'lastBuildFinishedAt'),\n    sortOrder: (function() {\n      var lastBuildFinishedAt;\n      if (lastBuildFinishedAt = this.get('lastBuildFinishedAt')) {\n        return -new Date(lastBuildFinishedAt).getTime();\n      } else {\n        return -new Date('9999').getTime() - parseInt(this.get('lastBuildId'));\n      }\n    }).property('lastBuildFinishedAt', 'lastBuildId'),\n    stats: (function() {\n      var _this = this;\n      return this.get('_stats') || $.get(\"https://api.github.com/repos/\" + (this.get('slug')), function(data) {\n        _this.set('_stats', data);\n        return _this.notifyPropertyChange('stats');\n      }) && {};\n    }).property(),\n    select: function() {\n      return Travis.Repository.select(this.get('id'));\n    },\n    updateTimes: function() {\n      return this.notifyPropertyChange('lastBuildDuration');\n    }\n  });\n\n  this.Travis.Repository.reopenClass({\n    recent: function() {\n      return this.find();\n    },\n    ownedBy: function(login) {\n      return this.find({\n        owner_name: login,\n        orderBy: 'name'\n      });\n    },\n    search: function(query) {\n      return this.find({\n        search: query,\n        orderBy: 'name'\n      });\n    },\n    bySlug: function(slug) {\n      var repo;\n      repo = $.select(this.find().toArray(), function(repo) {\n        return repo.get('slug') === slug;\n      });\n      if (repo.length > 0) {\n        return repo;\n      } else {\n        return this.find({\n          slug: slug\n        });\n      }\n    },\n    select: function(id) {\n      return this.find().forEach(function(repository) {\n        return repository.set('selected', repository.get('id') === id);\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/repository"
 ),minispade.register("models/sponsor","(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Sponsor = Travis.Model.extend({\n    type: DS.attr('string'),\n    url: DS.attr('string'),\n    link: DS.attr('string'),\n    image: (function() {\n      return \"/images/sponsors/\" + (this.get('data.image'));\n    }).property('data.image')\n  });\n\n  Travis.Sponsor.reopenClass({\n    decks: function() {\n      return this.platinum().concat(this.gold());\n    },\n    platinum: function() {\n      var platinum, sponsor, _i, _len, _results;\n      platinum = this.byType('platinum').toArray();\n      _results = [];\n      for (_i = 0, _len = platinum.length; _i < _len; _i++) {\n        sponsor = platinum[_i];\n        _results.push([sponsor]);\n      }\n      return _results;\n    },\n    gold: function() {\n      var gold, _results;\n      gold = this.byType('gold').toArray();\n      _results = [];\n      while (gold.length > 0) {\n        _results.push(gold.splice(0, 2));\n      }\n      return _results;\n    },\n    links: function() {\n      return this.byType('silver');\n    },\n    byType: function() {\n      var types;\n      types = Array.prototype.slice.apply(arguments);\n      return Travis.Sponsor.filter(function(sponsor) {\n        return types.indexOf(sponsor.get('type')) !== -1;\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/sponsor"
 ),minispade.register("models/user","(function() {(function() {\nminispade.require('travis/ajax');\nminispade.require('travis/model');\n\n  this.Travis.User = Travis.Model.extend(Travis.Ajax, {\n    name: DS.attr('string'),\n    email: DS.attr('string'),\n    login: DS.attr('string'),\n    token: DS.attr('string'),\n    locale: DS.attr('string'),\n    gravatarId: DS.attr('string'),\n    isSyncing: DS.attr('boolean'),\n    syncedAt: DS.attr('string'),\n    repoCount: DS.attr('number'),\n    init: function() {\n      if (this.get('isSyncing')) {\n        this.poll();\n      }\n      this._super();\n      return Ember.run.next(this, function() {\n        var transaction;\n        transaction = this.get('store').transaction();\n        return transaction.add(this);\n      });\n    },\n    urlGithub: (function() {\n      return \"https://github.com/\" + (this.get('login'));\n    }).property(),\n    updateLocale: function(locale) {\n      var observer, self, transaction;\n      this.setWithSession('locale', locale);\n      transaction = this.get('transaction');\n      transaction.commit();\n      self = this;\n      observer = function() {\n        if (!self.get('isSaving')) {\n          self.removeObserver('isSaving', observer);\n          transaction = self.get('store').transaction();\n          return transaction.add(self);\n        }\n      };\n      return this.addObserver('isSaving', observer);\n    },\n    type: (function() {\n      return 'user';\n    }).property(),\n    sync: function() {\n      this.post('/users/sync');\n      this.setWithSession('isSyncing', true);\n      return this.poll();\n    },\n    poll: function() {\n      var _this = this;\n      return this.ajax('/users', 'get', {\n        success: function(data) {\n          if (data.user.is_syncing) {\n            return Ember.run.later(_this, _this.poll.bind(_this), 3000);\n          } else {\n            _this.set('isSyncing', false);\n            return _this.setWithSession('syncedAt', data.user.synced_at);\n          }\n        }\n      });\n    },\n    setWithSession: function(name, value) {\n      var user;\n      this.set(name, value);\n      user = JSON.parse(typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.getItem('travis.user') : void 0);\n      user[$.underscore(name)] = this.get(name);\n      return typeof sessionStorage !== \"undefined\" && sessionStorage !== null ? sessionStorage.setItem('travis.user', JSON.stringify(user)) : void 0;\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/user"
 ),minispade.register("models/worker","(function() {(function() {\nminispade.require('travis/model');\n\n  this.Travis.Worker = Travis.Model.extend({\n    state: DS.attr('string'),\n    name: DS.attr('string'),\n    host: DS.attr('string'),\n    lastSeenAt: DS.attr('string'),\n    payload: (function() {\n      return this.get('data.payload');\n    }).property('data.payload'),\n    number: (function() {\n      return this.get('name').match(/\\d+$/)[0];\n    }).property('name'),\n    isWorking: (function() {\n      return this.get('state') === 'working';\n    }).property('state'),\n    repository: (function() {\n      return Travis.Repository.find(this.get('payload.repository.id'));\n    }).property('payload.repository.id'),\n    job_id: (function() {\n      return this.get('payload.job.id');\n    }).property('payload.job.id'),\n    job: (function() {\n      return Travis.Job.find(this.get('job_id'));\n    }).property('job_id')\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=models/worker"
@@ -8434,7 +8434,7 @@ e.setAttribute("async",!0),a(e,function(){c()}),d.appendChild
 ),minispade.register("tailing","(function() {(function() {\n\n  this.Travis.Tailing = function() {\n    this.position = $(window).scrollTop();\n    $(window).scroll(this.onScroll.bind(this));\n    return this;\n  };\n\n  $.extend(Travis.Tailing.prototype, {\n    options: {\n      timeout: 200\n    },\n    run: function() {\n      this.autoScroll();\n      this.positionButton();\n      if (this.active()) {\n        return Ember.run.later(this.run.bind(this), this.options.timeout);\n      }\n    },\n    toggle: function(event) {\n      if (this.active()) {\n        return this.stop();\n      } else {\n        return this.start();\n      }\n    },\n    active: function() {\n      return $('#tail').hasClass('active');\n    },\n    start: function() {\n      $('#tail').addClass('active');\n      return this.run();\n    },\n    stop: function() {\n      return $('#tail').removeClass('active');\n    },\n    autoScroll: function() {\n      var log, logBottom, win, winBottom;\n      if (!this.active()) {\n        return;\n      }\n      win = $(window);\n      log = $('#log');\n      logBottom = log.offset().top + log.outerHeight() + 40;\n      winBottom = win.scrollTop() + win.height();\n      if (logBottom - winBottom > 0) {\n        return win.scrollTop(logBottom - win.height());\n      }\n    },\n    onScroll: function() {\n      var position;\n      this.positionButton();\n      position = $(window).scrollTop();\n      if (position < this.position) {\n        this.stop();\n      }\n      return this.position = position;\n    },\n    positionButton: function() {\n      var max, offset, tail;\n      tail = $('#tail');\n      if (tail.length === 0) {\n        return;\n      }\n      offset = $(window).scrollTop() - $('#log').offset().top;\n      max = $('#log').height() - $('#tail').height() + 5;\n      if (offset > max) {\n        offset = max;\n      }\n      if (offset > 0) {\n        return tail.css({\n          top: offset - 2\n        });\n      } else {\n        return tail.css({\n          top: 0\n        });\n      }\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=tailing"
 ),minispade.register("views","(function() {(function() {\nminispade.require('ext/ember/namespace');\n\n  this.Travis.reopen({\n    View: Em.View.extend({\n      popup: function(event) {\n        return $(\"#\" + event.target.name).toggleClass('display');\n      }\n    })\n  });\n\n  this.Travis.reopen({\n    HomeView: Travis.View.extend({\n      templateName: 'layouts/home'\n    }),\n    ProfileLayoutView: Travis.View.extend({\n      templateName: 'layouts/profile'\n    }),\n    StatsLayoutView: Travis.View.extend({\n      templateName: 'layouts/simple'\n    }),\n    ApplicationView: Travis.View.extend({\n      templateName: 'application'\n    })\n  });\nminispade.require('views/accounts');\nminispade.require('views/build');\nminispade.require('views/job');\nminispade.require('views/repo');\nminispade.require('views/profile');\nminispade.require('views/sidebar');\nminispade.require('views/stats');\nminispade.require('views/top');\n\n}).call(this);\n\n})();\n//@ sourceURL=views"
 ),minispade.register("views/accounts","(function() {(function() {\n\n  this.Travis.reopen({\n    AccountsView: Travis.View.extend({\n      tabBinding: 'controller.tab',\n      templateName: 'profile/accounts',\n      classAccounts: (function() {\n        if (this.get('tab') === 'accounts') {\n          return 'active';\n        }\n      }).property('tab')\n    }),\n    AccountsListView: Em.CollectionView.extend({\n      elementId: 'accounts',\n      accountBinding: 'content',\n      tagName: 'ul',\n      emptyView: Ember.View.extend({\n        template: Ember.Handlebars.compile('<div class=\"loading\"><span>Loading</span></div>')\n      }),\n      itemViewClass: Travis.View.extend({\n        accountBinding: 'content',\n        typeBinding: 'content.type',\n        selectedBinding: 'account.selected',\n        classNames: ['account'],\n        classNameBindings: ['type', 'selected'],\n        name: (function() {\n          return this.get('content.name') || this.get('content.login');\n        }).property('content.login', 'content.name'),\n        urlAccount: (function() {\n          return Travis.Urls.account(this.get('account.login'));\n        }).property('account.login')\n      })\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/accounts"
-),minispade.register("views/build","(function() {(function() {\n\n  this.Travis.reopen({\n    BuildsView: Travis.View.extend({\n      templateName: 'builds/list',\n      buildsBinding: 'controller',\n      showMore: function() {\n        var id, number;\n        id = this.get('controller.repository.id');\n        number = this.get('controller.builds.lastObject.number');\n        return Travis.Build.olderThanNumber(id, number);\n      }\n    }),\n    BuildsItemView: Travis.View.extend({\n      tagName: 'tr',\n      classNameBindings: ['color'],\n      repositoryBinding: 'controller.repository',\n      buildBinding: 'context',\n      commitBinding: 'build.commit',\n      color: (function() {\n        return Travis.Helpers.colorForResult(this.get('build.result'));\n      }).property('build.result'),\n      urlBuild: (function() {\n        return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));\n      }).property('repository.slug', 'build.id'),\n      urlGithubCommit: (function() {\n        return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n      }).property('repository.slug', 'commit.sha')\n    }),\n    BuildView: Travis.View.extend({\n      templateName: 'builds/show',\n      elementId: 'build',\n      classNameBindings: ['color', 'loading'],\n      repositoryBinding: 'controller.repository',\n      buildBinding: 'controller.build',\n      commitBinding: 'build.commit',\n      loading: (function() {\n        return !this.get('build.isLoaded');\n      }).property('build.isLoaded'),\n      color: (function() {\n        return Travis.Helpers.colorForResult(this.get('build.result'));\n      }).property('build.result'),\n      urlBuild: (function() {\n        return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));\n      }).property('repository.slug', 'build.id'),\n      urlGithubCommit: (function() {\n        return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n      }).property('repository.slug', 'commit.sha'),\n      urlAuthor: (function() {\n        return Travis.Urls.email(this.get('commit.authorEmail'));\n      }).property('commit.authorEmail'),\n      urlCommitter: (function() {\n        return Travis.Urls.email(this.get('commit.committerEmail'));\n      }).property('commit.committerEmail')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/build"
+),minispade.register("views/build","(function() {(function() {\n\n  this.Travis.reopen({\n    BuildsView: Travis.View.extend({\n      templateName: 'builds/list',\n      buildsBinding: 'controller.builds',\n      showMore: function() {\n        var id, number;\n        id = this.get('controller.repository.id');\n        number = this.get('builds.lastObject.number');\n        return this.get('builds').load(Travis.Build.olderThanNumber(id, number));\n      },\n      ShowMoreButton: Em.View.extend({\n        tagName: 'button',\n        classNameBindings: ['isLoading'],\n        attributeBindings: ['disabled'],\n        isLoadingBinding: 'controller.builds.isLoading',\n        template: Em.Handlebars.compile('{{view.label}}'),\n        disabledBinding: 'isLoading',\n        label: (function() {\n          if (this.get('isLoading')) {\n            return 'Loading';\n          } else {\n            return 'Show more';\n          }\n        }).property('isLoading'),\n        click: function() {\n          return this.get('parentView').showMore();\n        }\n      })\n    }),\n    BuildsItemView: Travis.View.extend({\n      tagName: 'tr',\n      classNameBindings: ['color'],\n      repositoryBinding: 'controller.repository',\n      buildBinding: 'context',\n      commitBinding: 'build.commit',\n      color: (function() {\n        return Travis.Helpers.colorForResult(this.get('build.result'));\n      }).property('build.result'),\n      urlBuild: (function() {\n        return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));\n      }).property('repository.slug', 'build.id'),\n      urlGithubCommit: (function() {\n        return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n      }).property('repository.slug', 'commit.sha')\n    }),\n    BuildView: Travis.View.extend({\n      templateName: 'builds/show',\n      elementId: 'build',\n      classNameBindings: ['color', 'loading'],\n      repositoryBinding: 'controller.repository',\n      buildBinding: 'controller.build',\n      commitBinding: 'build.commit',\n      loading: (function() {\n        return !this.get('build.isLoaded');\n      }).property('build.isLoaded'),\n      color: (function() {\n        return Travis.Helpers.colorForResult(this.get('build.result'));\n      }).property('build.result'),\n      urlBuild: (function() {\n        return Travis.Urls.build(this.get('repository.slug'), this.get('build.id'));\n      }).property('repository.slug', 'build.id'),\n      urlGithubCommit: (function() {\n        return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n      }).property('repository.slug', 'commit.sha'),\n      urlAuthor: (function() {\n        return Travis.Urls.email(this.get('commit.authorEmail'));\n      }).property('commit.authorEmail'),\n      urlCommitter: (function() {\n        return Travis.Urls.email(this.get('commit.committerEmail'));\n      }).property('commit.committerEmail')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/build"
 ),minispade.register("views/job","(function() {(function() {\n\n  this.Travis.reopen({\n    JobsView: Travis.View.extend({\n      templateName: 'jobs/list',\n      buildBinding: 'controller.build'\n    }),\n    JobsItemView: Travis.View.extend({\n      tagName: 'tr',\n      classNameBindings: ['color'],\n      repositoryBinding: 'context.repository',\n      jobBinding: 'context',\n      color: (function() {\n        return Travis.Helpers.colorForResult(this.get('job.result'));\n      }).property('job.result'),\n      urlJob: (function() {\n        return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));\n      }).property('repository.slug', 'job.id')\n    }),\n    JobView: Travis.View.extend({\n      templateName: 'jobs/show',\n      repositoryBinding: 'controller.repository',\n      jobBinding: 'controller.job',\n      commitBinding: 'job.commit',\n      color: (function() {\n        return Travis.Helpers.colorForResult(this.get('job.result'));\n      }).property('job.result'),\n      urlJob: (function() {\n        return Travis.Urls.job(this.get('repository.slug'), this.get('job.id'));\n      }).property('repository.slug', 'job.id'),\n      urlGithubCommit: (function() {\n        return Travis.Urls.githubCommit(this.get('repository.slug'), this.get('commit.sha'));\n      }).property('repository.slug', 'commit.sha'),\n      urlAuthor: (function() {\n        return Travis.Urls.email(this.get('commit.authorEmail'));\n      }).property('commit.authorEmail'),\n      urlCommitter: (function() {\n        return Travis.Urls.email(this.get('commit.committerEmail'));\n      }).property('commit.committerEmail')\n    }),\n    LogView: Travis.View.extend({\n      templateName: 'jobs/log',\n      logBinding: 'job.log',\n      click: function(event) {\n        return $(event.target).closest('.fold').toggleClass('open');\n      },\n      toTop: function() {\n        return $(window).scrollTop(0);\n      },\n      jobBinding: 'context',\n      toggleTailing: function(event) {\n        Travis.app.tailing.toggle();\n        return event.preventDefault();\n      },\n      logSubscriber: (function() {\n        var job, state;\n        job = this.get('job');\n        state = this.get('job.state');\n        if (job && state !== 'finished') {\n          job.subscribe();\n        }\n        return null;\n      }).property('job', 'job.state')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/job"
 ),minispade.register("views/left","(function() {(function() {\n\n  this.Travis.reopen({\n    ReposView: Travis.View.extend({\n      templateName: 'repos/list',\n      tabBinding: 'controller.tab',\n      classRecent: (function() {\n        if (this.get('tab') === 'recent') {\n          return 'active';\n        }\n      }).property('tab'),\n      classOwned: (function() {\n        var classes;\n        classes = [];\n        if (this.get('tab') === 'owned') {\n          classes.push('active');\n        }\n        if (Travis.app.get('currentUser')) {\n          classes.push('display');\n        }\n        return classes.join(' ');\n      }).property('tab', 'Travis.currentUser'),\n      classSearch: (function() {\n        if (this.get('tab') === 'search') {\n          return 'active';\n        }\n      }).property('tab')\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/left"
 ),minispade.register("views/profile","(function() {(function() {\n\n  this.Travis.reopen({\n    ProfileView: Travis.View.extend({\n      templateName: 'profile/show',\n      accountBinding: 'controller.account',\n      name: (function() {\n        return this.get('account.name') || this.get('account.login');\n      }).property('account.name', 'account.login')\n    }),\n    ProfileTabsView: Travis.View.extend({\n      templateName: 'profile/tabs',\n      tabBinding: 'controller.tab',\n      activate: function(event) {\n        return this.get('controller').activate(event.target.name);\n      },\n      classHooks: (function() {\n        if (this.get('tab') === 'hooks') {\n          return 'active';\n        }\n      }).property('tab'),\n      classUser: (function() {\n        if (this.get('tab') === 'user') {\n          return 'active';\n        }\n      }).property('tab'),\n      accountBinding: 'controller.account',\n      displayUser: (function() {\n        return this.get('controller.account.login') === this.get('controller.user.login');\n      }).property('controller.account.login', 'controller.user.login')\n    }),\n    HooksView: Travis.View.extend({\n      templateName: 'profile/tabs/hooks',\n      userBinding: 'controller.user',\n      urlGithubAdmin: (function() {\n        return Travis.Urls.githubAdmin(this.get('hook.slug'));\n      }).property('hook.slug')\n    }),\n    UserView: Travis.View.extend({\n      templateName: 'profile/tabs/user',\n      userBinding: 'controller.user',\n      gravatarUrl: (function() {\n        return \"\" + location.protocol + \"//www.gravatar.com/avatar/\" + (this.get('user.gravatarId')) + \"?s=48&d=mm\";\n      }).property('user.gravatarId'),\n      locales: (function() {\n        return [\n          {\n            key: null,\n            name: ''\n          }, {\n            key: 'en',\n            name: 'English'\n          }, {\n            key: 'ca',\n            name: 'Catalan'\n          }, {\n            key: 'cs',\n            name: 'Čeština'\n          }, {\n            key: 'es',\n            name: 'Español'\n          }, {\n            key: 'fr',\n            name: 'Français'\n          }, {\n            key: 'ja',\n            name: '日本語'\n          }, {\n            key: 'nl',\n            name: 'Nederlands'\n          }, {\n            key: 'nb',\n            name: 'Norsk Bokmål'\n          }, {\n            key: 'pl',\n            name: 'Polski'\n          }, {\n            key: {\n              'pt-BR': {\n                name: 'Português brasileiro'\n              }\n            }\n          }, {\n            key: 'ru',\n            name: 'Русский'\n          }\n        ];\n      }).property(),\n      saveLocale: function(event) {\n        return this.get('user').updateLocale($('#locale').val());\n      }\n    })\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=views/profile"
@@ -8448,11 +8448,13 @@ e.setAttribute("async",!0),a(e,function(){c()}),d.appendChild
 ),minispade.register("emoij","(function() {(function() {\n\n  this.EmojiDictionary = ['-1', '0', '1', '109', '2', '3', '4', '5', '6', '7', '8', '8ball', '9', 'a', 'ab', 'airplane', 'alien', 'ambulance', 'angel', 'anger', 'angry', 'apple', 'aquarius', 'aries', 'arrow_backward', 'arrow_down', 'arrow_forward', 'arrow_left', 'arrow_lower_left', 'arrow_lower_right', 'arrow_right', 'arrow_up', 'arrow_upper_left', 'arrow_upper_right', 'art', 'astonished', 'atm', 'b', 'baby', 'baby_chick', 'baby_symbol', 'balloon', 'bamboo', 'bank', 'barber', 'baseball', 'basketball', 'bath', 'bear', 'beer', 'beers', 'beginner', 'bell', 'bento', 'bike', 'bikini', 'bird', 'birthday', 'black_square', 'blue_car', 'blue_heart', 'blush', 'boar', 'boat', 'bomb', 'book', 'boot', 'bouquet', 'bow', 'bowtie', 'boy', 'bread', 'briefcase', 'broken_heart', 'bug', 'bulb', 'bullettrain_front', 'bullettrain_side', 'bus', 'busstop', 'cactus', 'cake', 'calling', 'camel', 'camera', 'cancer', 'capricorn', 'car', 'cat', 'cd', 'chart', 'checkered_flag', 'cherry_blossom', 'chicken', 'christmas_tree', 'church', 'cinema', 'city_sunrise', 'city_sunset', 'clap', 'clapper', 'clock1', 'clock10', 'clock11', 'clock12', 'clock2', 'clock3', 'clock4', 'clock5', 'clock6', 'clock7', 'clock8', 'clock9', 'closed_umbrella', 'cloud', 'clubs', 'cn', 'cocktail', 'coffee', 'cold_sweat', 'computer', 'confounded', 'congratulations', 'construction', 'construction_worker', 'convenience_store', 'cool', 'cop', 'copyright', 'couple', 'couple_with_heart', 'couplekiss', 'cow', 'crossed_flags', 'crown', 'cry', 'cupid', 'currency_exchange', 'curry', 'cyclone', 'dancer', 'dancers', 'dango', 'dart', 'dash', 'de', 'department_store', 'diamonds', 'disappointed', 'dog', 'dolls', 'dolphin', 'dress', 'dvd', 'ear', 'ear_of_rice', 'egg', 'eggplant', 'egplant', 'eight_pointed_black_star', 'eight_spoked_asterisk', 'elephant', 'email', 'es', 'european_castle', 'exclamation', 'eyes', 'factory', 'fallen_leaf', 'fast_forward', 'fax', 'fearful', 'feelsgood', 'feet', 'ferris_wheel', 'finnadie', 'fire', 'fire_engine', 'fireworks', 'fish', 'fist', 'flags', 'flushed', 'football', 'fork_and_knife', 'fountain', 'four_leaf_clover', 'fr', 'fries', 'frog', 'fuelpump', 'gb', 'gem', 'gemini', 'ghost', 'gift', 'gift_heart', 'girl', 'goberserk', 'godmode', 'golf', 'green_heart', 'grey_exclamation', 'grey_question', 'grin', 'guardsman', 'guitar', 'gun', 'haircut', 'hamburger', 'hammer', 'hamster', 'hand', 'handbag', 'hankey', 'hash', 'headphones', 'heart', 'heart_decoration', 'heart_eyes', 'heartbeat', 'heartpulse', 'hearts', 'hibiscus', 'high_heel', 'horse', 'hospital', 'hotel', 'hotsprings', 'house', 'hurtrealbad', 'icecream', 'id', 'ideograph_advantage', 'imp', 'information_desk_person', 'iphone', 'it', 'jack_o_lantern', 'japanese_castle', 'joy', 'jp', 'key', 'kimono', 'kiss', 'kissing_face', 'kissing_heart', 'koala', 'koko', 'kr', 'leaves', 'leo', 'libra', 'lips', 'lipstick', 'lock', 'loop', 'loudspeaker', 'love_hotel', 'mag', 'mahjong', 'mailbox', 'man', 'man_with_gua_pi_mao', 'man_with_turban', 'maple_leaf', 'mask', 'massage', 'mega', 'memo', 'mens', 'metal', 'metro', 'microphone', 'minidisc', 'mobile_phone_off', 'moneybag', 'monkey', 'monkey_face', 'moon', 'mortar_board', 'mount_fuji', 'mouse', 'movie_camera', 'muscle', 'musical_note', 'nail_care', 'necktie', 'new', 'no_good', 'no_smoking', 'nose', 'notes', 'o', 'o2', 'ocean', 'octocat', 'octopus', 'oden', 'office', 'ok', 'ok_hand', 'ok_woman', 'older_man', 'older_woman', 'open_hands', 'ophiuchus', 'palm_tree', 'parking', 'part_alternation_mark', 'pencil', 'penguin', 'pensive', 'persevere', 'person_with_blond_hair', 'phone', 'pig', 'pill', 'pisces', 'plus1', 'point_down', 'point_left', 'point_right', 'point_up', 'point_up_2', 'police_car', 'poop', 'post_office', 'postbox', 'pray', 'princess', 'punch', 'purple_heart', 'question', 'rabbit', 'racehorse', 'radio', 'rage', 'rage1', 'rage2', 'rage3', 'rage4', 'rainbow', 'raised_hands', 'ramen', 'red_car', 'red_circle', 'registered', 'relaxed', 'relieved', 'restroom', 'rewind', 'ribbon', 'rice', 'rice_ball', 'rice_cracker', 'rice_scene', 'ring', 'rocket', 'roller_coaster', 'rose', 'ru', 'runner', 'sa', 'sagittarius', 'sailboat', 'sake', 'sandal', 'santa', 'satellite', 'satisfied', 'saxophone', 'school', 'school_satchel', 'scissors', 'scorpius', 'scream', 'seat', 'secret', 'shaved_ice', 'sheep', 'shell', 'ship', 'shipit', 'shirt', 'shit', 'shoe', 'signal_strength', 'six_pointed_star', 'ski', 'skull', 'sleepy', 'slot_machine', 'smile', 'smiley', 'smirk', 'smoking', 'snake', 'snowman', 'sob', 'soccer', 'space_invader', 'spades', 'spaghetti', 'sparkler', 'sparkles', 'speaker', 'speedboat', 'squirrel', 'star', 'star2', 'stars', 'station', 'statue_of_liberty', 'stew', 'strawberry', 'sunflower', 'sunny', 'sunrise', 'sunrise_over_mountains', 'surfer', 'sushi', 'suspect', 'sweat', 'sweat_drops', 'swimmer', 'syringe', 'tada', 'tangerine', 'taurus', 'taxi', 'tea', 'telephone', 'tennis', 'tent', 'thumbsdown', 'thumbsup', 'ticket', 'tiger', 'tm', 'toilet', 'tokyo_tower', 'tomato', 'tongue', 'top', 'tophat', 'traffic_light', 'train', 'trident', 'trophy', 'tropical_fish', 'truck', 'trumpet', 'tshirt', 'tulip', 'tv', 'u5272', 'u55b6', 'u6307', 'u6708', 'u6709', 'u6e80', 'u7121', 'u7533', 'u7a7a', 'umbrella', 'unamused', 'underage', 'unlock', 'up', 'us', 'v', 'vhs', 'vibration_mode', 'virgo', 'vs', 'walking', 'warning', 'watermelon', 'wave', 'wc', 'wedding', 'whale', 'wheelchair', 'white_square', 'wind_chime', 'wink', 'wink2', 'wolf', 'woman', 'womans_hat', 'womens', 'x', 'yellow_heart', 'zap', 'zzz'];\n\n}).call(this);\n\n})();\n//@ sourceURL=emoij"
 ),minispade.register("ext/jquery","(function() {(function() {\n\n  $.fn.extend({\n    outerHtml: function() {\n      return $(this).wrap('<div></div>').parent().html();\n    },\n    outerElement: function() {\n      return $($(this).outerHtml()).empty();\n    },\n    flash: function() {\n      return Utils.flash(this);\n    },\n    unflash: function() {\n      return Utils.unflash(this);\n    },\n    filterLog: function() {\n      this.deansi();\n      return this.foldLog();\n    },\n    deansi: function() {\n      return this.html(Utils.deansi(this.html()));\n    },\n    foldLog: function() {\n      return this.html(Utils.foldLog(this.html()));\n    },\n    unfoldLog: function() {\n      return this.html(Utils.unfoldLog(this.html()));\n    },\n    updateTimes: function() {\n      return Utils.updateTimes(this);\n    },\n    activateTab: function(tab) {\n      return Utils.activateTab(this, tab);\n    },\n    timeInWords: function() {\n      return $(this).each(function() {\n        return $(this).text(Utils.timeInWords(parseInt($(this).attr('title'))));\n      });\n    },\n    updateGithubStats: function(repository) {\n      return Utils.updateGithubStats(repository, $(this));\n    }\n  });\n\n  $.extend({\n    isEmpty: function(obj) {\n      if ($.isArray(obj)) {\n        return !obj.length;\n      } else if ($.isObject(obj)) {\n        return !$.keys(obj).length;\n      } else {\n        return !obj;\n      }\n    },\n    isObject: function(obj) {\n      return Object.prototype.toString.call(obj) === '[object Object]';\n    },\n    keys: function(obj) {\n      var keys;\n      keys = [];\n      $.each(obj, function(key) {\n        return keys.push(key);\n      });\n      return keys;\n    },\n    values: function(obj) {\n      var values;\n      values = [];\n      $.each(obj, function(key, value) {\n        return values.push(value);\n      });\n      return values;\n    },\n    underscore: function(string) {\n      return string[0].toLowerCase() + string.substring(1).replace(/([A-Z])?/g, function(match, chr) {\n        if (chr) {\n          return \"_\" + (chr.toUpperCase());\n        } else {\n          return '';\n        }\n      });\n    },\n    camelize: function(string, uppercase) {\n      string = uppercase === false ? $.underscore(string) : $.capitalize(string);\n      return string.replace(/_(.)?/g, function(match, chr) {\n        if (chr) {\n          return chr.toUpperCase();\n        } else {\n          return '';\n        }\n      });\n    },\n    capitalize: function(string) {\n      return string[0].toUpperCase() + string.substring(1);\n    },\n    compact: function(object) {\n      return $.grep(object, function(value) {\n        return !!value;\n      });\n    },\n    all: function(array, callback) {\n      var args, i;\n      args = Array.prototype.slice.apply(arguments);\n      callback = args.pop();\n      array = args.pop() || this;\n      i = 0;\n      while (i < array.length) {\n        if (callback(array[i])) {\n          return false;\n        }\n        i++;\n      }\n      return true;\n    },\n    detect: function(array, callback) {\n      var args, i;\n      args = Array.prototype.slice.apply(arguments);\n      callback = args.pop();\n      array = args.pop() || this;\n      i = 0;\n      while (i < array.length) {\n        if (callback(array[i])) {\n          return array[i];\n        }\n        i++;\n      }\n    },\n    select: function(array, callback) {\n      var args, i, result;\n      args = Array.prototype.slice.apply(arguments);\n      callback = args.pop();\n      array = args.pop() || this;\n      result = [];\n      i = 0;\n      while (i < array.length) {\n        if (callback(array[i])) {\n          result.push(array[i]);\n        }\n        i++;\n      }\n      return result;\n    },\n    slice: function(object, key) {\n      var keys, result;\n      keys = Array.prototype.slice.apply(arguments);\n      object = (typeof keys[0] === 'object' ? keys.shift() : this);\n      result = {};\n      for (key in object) {\n        if (keys.indexOf(key) > -1) {\n          result[key] = object[key];\n        }\n      }\n      return result;\n    },\n    only: function(object) {\n      var key, keys, result;\n      keys = Array.prototype.slice.apply(arguments);\n      object = (typeof keys[0] === 'object' ? keys.shift() : this);\n      result = {};\n      for (key in object) {\n        if (keys.indexOf(key) !== -1) {\n          result[key] = object[key];\n        }\n      }\n      return result;\n    },\n    except: function(object) {\n      var key, keys, result;\n      keys = Array.prototype.slice.apply(arguments);\n      object = (typeof keys[0] === 'object' ? keys.shift() : this);\n      result = {};\n      for (key in object) {\n        if (keys.indexOf(key) === -1) {\n          result[key] = object[key];\n        }\n      }\n      return result;\n    },\n    intersect: function(array, other) {\n      return array.filter(function(element) {\n        return other.indexOf(element) !== -1;\n      });\n    },\n    map: function(elems, callback, arg) {\n      var i, isArray, key, length, ret, value;\n      value = void 0;\n      key = void 0;\n      ret = [];\n      i = 0;\n      length = elems.length;\n      isArray = elems instanceof jQuery || length !== void 0 && typeof length === 'number' && (length > 0 && elems[0] && elems[length - 1]) || length === 0 || jQuery.isArray(elems);\n      if (isArray) {\n        while (i < length) {\n          value = callback(elems[i], i, arg);\n          if (value != null) {\n            ret[ret.length] = value;\n          }\n          i++;\n        }\n      } else {\n        for (key in elems) {\n          value = callback(elems[key], key, arg);\n          if (value != null) {\n            ret[ret.length] = value;\n          }\n        }\n      }\n      return ret.concat.apply([], ret);\n    },\n    shuffle: function(array) {\n      var current, tmp, top;\n      array = array.slice();\n      top = array.length;\n      while (top && --top) {\n        current = Math.floor(Math.random() * (top + 1));\n        tmp = array[current];\n        array[current] = array[top];\n        array[top] = tmp;\n      }\n      return array;\n    },\n    truncate: function(string, length) {\n      if (string.length > length) {\n        return string.trim().substring(0, length) + '...';\n      } else {\n        return string;\n      }\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=ext/jquery"
 ),minispade.register("travis/ajax","(function() {(function() {\n\n  jQuery.support.cors = true;\n\n  this.Travis.Ajax = Ember.Mixin.create({\n    DEFAULT_OPTIONS: {\n      accepts: {\n        json: 'application/vnd.travis-ci.2+json'\n      }\n    },\n    post: function(url, data, callback) {\n      return this.ajax(url, 'post', {\n        data: data,\n        success: callback\n      });\n    },\n    ajax: function(url, method, options) {\n      var accessToken, endpoint, _base, _ref;\n      endpoint = Travis.config.api_endpoint || '';\n      options = options || {};\n      if (accessToken = (_ref = Travis.app) != null ? _ref.get('auth.accessToken') : void 0) {\n        options.headers || (options.headers = {});\n        (_base = options.headers)['Authorization'] || (_base['Authorization'] = \"token \" + accessToken);\n      }\n      options.url = \"\" + endpoint + url;\n      options.type = method;\n      options.dataType = 'json';\n      options.contentType = 'application/json; charset=utf-8';\n      options.context = this;\n      if (options.data && method !== 'GET' && method !== 'get') {\n        options.data = JSON.stringify(options.data);\n      }\n      return $.ajax($.extend(options, this.DEFAULT_OPTIONS));\n    }\n  });\n\n  this.Travis.Ajax.instance = Em.Object.create(this.Travis.Ajax);\n\n  $.extend(this.Travis, {\n    get: function(url, callback) {\n      return this.ajax(url, 'get', {\n        success: callback\n      });\n    },\n    post: function(url, data, callback) {\n      return this.Ajax.instance.post(url, data, callback);\n    },\n    ajax: function(url, method, options) {\n      return this.Ajax.instance.ajax(url, method, options);\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ajax"
+),minispade.register("travis/expandable_record_array"
+,"(function() {(function() {\n\n  Travis.ExpandableRecordArray = DS.RecordArray.extend({\n    isLoaded: false,\n    isLoading: false,\n    load: function(array) {\n      var observer, self;\n      this.set('isLoading', true);\n      self = this;\n      observer = function() {\n        var content;\n        if (this.get('isLoaded')) {\n          content = self.get('content');\n          array.removeObserver('isLoaded', observer);\n          array.forEach(function(record) {\n            return self.pushObject(record);\n          });\n          self.set('isLoading', false);\n          return self.set('isLoaded', true);\n        }\n      };\n      return array.addObserver('isLoaded', observer);\n    },\n    pushObject: function(record) {\n      var clientId, id, ids;\n      ids = this.get('content');\n      id = record.get('id');\n      clientId = record.get('clientId');\n      if (ids.contains(clientId)) {\n        return;\n      }\n      return ids.pushObject(clientId);\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/expandable_record_array"
 ),minispade.register("travis/log","(function() {(function() {\n\n  this.Travis.Log = {\n    FOLDS: {\n      schema: /(<p.*?\\/a>\\$ (?:bundle exec )?rake( db:create)? db:schema:load[\\s\\S]*?<p.*?\\/a>-- assume_migrated_upto_version[\\s\\S]*?<\\/p>\\n<p.*?\\/a>.*<\\/p>)/g,\n      migrate: /(<p.*?\\/a>\\$ (?:bundle exec )?rake( db:create)? db:migrate[\\s\\S]*== +\\w+: migrated \\(.*\\) =+)/g,\n      bundle: /(<p.*?\\/a>\\$ bundle install.*<\\/p>\\n(<p.*?\\/a>(Updating|Using|Installing|Fetching|remote:|Receiving|Resolving).*?<\\/p>\\n|<p.*?\\/a><\\/p>\\n)*)/g,\n      exec: /(<p.*?\\/a>[\\/\\w]*.rvm\\/rubies\\/[\\S]*?\\/(ruby|rbx|jruby) .*?<\\/p>)/g\n    },\n    filter: function(log) {\n      log = this.escape(log);\n      log = this.deansi(log);\n      log = log.replace(/\\r/g, '');\n      log = this.number(log);\n      log = this.fold(log);\n      log = log.replace(/\\n/g, '');\n      return log;\n    },\n    stripPaths: function(log) {\n      return log.replace(/\\/home\\/vagrant\\/builds(\\/[^\\/\\n]+){2}\\//g, '');\n    },\n    escape: function(log) {\n      return Handlebars.Utils.escapeExpression(log);\n    },\n    escapeRuby: function(log) {\n      return log.replace(/#<(\\w+.*?)>/, '#&lt;$1&gt;');\n    },\n    number: function(log) {\n      var result;\n      result = '';\n      $.each(log.trim().split('\\n'), function(ix, line) {\n        var number, path;\n        number = ix + 1;\n        path = Travis.Log.location().substr(1).replace(/\\/L\\d+/, '') + '/L' + number;\n        return result += '<p><a href=\\'#%@\\' id=\\'%@\\' name=\\'L%@\\'>%@</a>%@</p>\\n'.fmt(path, path, number, number, line);\n      });\n      return result.trim();\n    },\n    deansi: function(log) {\n      var ansi, text;\n      log = log.replace(/\\r\\r/g, '\\r').replace(/\\033\\[K\\r/g, '\\r').replace(/^.*\\r(?!$)/gm, '').replace(/\\[2K/g, '').replace(/\\033\\(B/g, \"\");\n      ansi = ansiparse(log);\n      text = '';\n      ansi.forEach(function(part) {\n        var classes;\n        classes = [];\n        part.foreground && classes.push(part.foreground);\n        part.background && classes.push('bg-' + part.background);\n        part.bold && classes.push('bold');\n        part.italic && classes.push('italic');\n        return text += (classes.length ? '<span class=\\'' + classes.join(' ') + '\\'>' + part.text + '</span>' : part.text);\n      });\n      return text.replace(/\\033/g, '');\n    },\n    fold: function(log) {\n      log = this.unfold(log);\n      $.each(Travis.Log.FOLDS, function(name, pattern) {\n        return log = log.replace(pattern, function() {\n          return '<div class=\\'fold ' + name + '\\'>' + arguments[1].trim() + '</div>';\n        });\n      });\n      return log;\n    },\n    unfold: function(log) {\n      return log.replace(/<div class='fold[^']*'>([\\s\\S]*?)<\\/div>/g, '$1\\n');\n    },\n    location: function() {\n      return window.location.hash;\n    }\n  };\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/log"
 ),minispade.register("travis/model","(function() {(function() {\n\n  this.Travis.Model = DS.Model.extend({\n    primaryKey: 'id',\n    id: DS.attr('number'),\n    refresh: function() {\n      var id;\n      id = this.get('id');\n      if (id) {\n        return Travis.app.store.adapter.find(Travis.app.store, this.constructor, id);\n      }\n    },\n    update: function(attrs) {\n      var _this = this;\n      $.each(attrs, function(key, value) {\n        if (key !== 'id') {\n          return _this.set(key, value);\n        }\n      });\n      return this;\n    }\n  });\n\n  this.Travis.Model.reopenClass({\n    find: function() {\n      if (arguments.length === 0) {\n        return Travis.app.store.findAll(this);\n      } else {\n        return this._super.apply(this, arguments);\n      }\n    },\n    filter: function(callback) {\n      return Travis.app.store.filter(this, callback);\n    },\n    load: function(attrs) {\n      return Travis.app.store.load(this, attrs);\n    },\n    buildURL: function(suffix) {\n      var base, url;\n      base = this.url || this.pluralName();\n      Ember.assert('Base URL (' + base + ') must not start with slash', !base || base.toString().charAt(0) !== '/');\n      Ember.assert('URL suffix (' + suffix + ') must not start with slash', !suffix || suffix.toString().charAt(0) !== '/');\n      url = [base];\n      if (suffix !== void 0) {\n        url.push(suffix);\n      }\n      return url.join('/');\n    },\n    singularName: function() {\n      var name, parts;\n      parts = this.toString().split('.');\n      name = parts[parts.length - 1];\n      return name.replace(/([A-Z])/g, '_$1').toLowerCase().slice(1);\n    },\n    pluralName: function() {\n      return Travis.app.store.adapter.pluralize(this.singularName());\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/model"
 ),minispade.register("travis/ticker","(function() {(function() {\n\n  this.Travis.Ticker = Ember.Object.extend({\n    init: function() {\n      if (this.get('interval') !== -1) {\n        return this.schedule();\n      }\n    },\n    tick: function() {\n      var context, target, targets, _i, _len;\n      context = this.get('context');\n      targets = this.get('targets') || [this.get('target')];\n      for (_i = 0, _len = targets.length; _i < _len; _i++) {\n        target = targets[_i];\n        if (context) {\n          target = context.get(target);\n        }\n        if (target) {\n          target.tick();\n        }\n      }\n      return this.schedule();\n    },\n    schedule: function() {\n      var _this = this;\n      return Ember.run.later((function() {\n        return _this.tick();\n      }), this.get('interval') || Travis.app.TICK_INTERVAL);\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ticker"
 ),minispade.register("travis","(function() {(function() {\nminispade.require('ext/jquery');\nminispade.require('ext/ember/namespace');\n\n  this.Travis = Em.Namespace.create({\n    config: {\n      api_endpoint: $('meta[rel=\"travis.api_endpoint\"]').attr('href')\n    },\n    CONFIG_KEYS: ['rvm', 'gemfile', 'env', 'jdk', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala'],\n    ROUTES: {\n      'profile/:login/me': ['profile', 'user'],\n      'profile/:login': ['profile', 'hooks'],\n      'profile': ['profile', 'hooks'],\n      'stats': ['stats', 'show'],\n      ':owner/:name/jobs/:id/:line': ['home', 'job'],\n      ':owner/:name/jobs/:id': ['home', 'job'],\n      ':owner/:name/builds/:id': ['home', 'build'],\n      ':owner/:name/builds': ['home', 'builds'],\n      ':owner/:name/pull_requests': ['home', 'pullRequests'],\n      ':owner/:name/branches': ['home', 'branches'],\n      ':owner/:name': ['home', 'current'],\n      '': ['home', 'index'],\n      '#': ['home', 'index']\n    },\n    QUEUES: [\n      {\n        name: 'common',\n        display: 'Common'\n      }, {\n        name: 'php',\n        display: 'PHP, Perl and Python'\n      }, {\n        name: 'node_js',\n        display: 'Node.js'\n      }, {\n        name: 'jvmotp',\n        display: 'JVM and Erlang'\n      }, {\n        name: 'rails',\n        display: 'Rails'\n      }, {\n        name: 'spree',\n        display: 'Spree'\n      }\n    ],\n    INTERVALS: {\n      sponsors: -1,\n      times: -1,\n      updateTimes: 1000\n    },\n    run: function(attrs) {\n      var _this = this;\n      return $(function() {\n        _this.redirectOnHashbang();\n        return _this.loadConfig(function(config) {\n          var app;\n          app = Travis.App.create(attrs || {});\n          $.each(Travis, function(key, value) {\n            if (value && value.isClass && key !== 'constructor') {\n              return app[key] = value;\n            }\n          });\n          _this.app = app;\n          _this.store = app.store;\n          return app.initialize();\n        });\n      });\n    },\n    redirectOnHashbang: function() {\n      if (location.hash.slice(0, 2) === '#!') {\n        return location.href = location.href.replace('#!/', '');\n      }\n    },\n    loadConfig: function(callback) {\n      var _this = this;\n      return this.get('/config', function(data) {\n        $.extend(_this.config, data.config);\n        console.log(\"Connecting to \" + data.config.api_endpoint);\n        return callback(data.config);\n      });\n    }\n  });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis"
-),minispade.register("templates",'(function() {\nEmber.TEMPLATES[\'application\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression;\n\n\n  stack1 = helpers._triageMustache.call(depth0, "outlet", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'builds/list\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n  <table id=\\"builds\\" class=\\"list\\">\\n    <thead>\\n      <tr>\\n        <th>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.name", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.name", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</th>\\n        <th>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.commit", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</th>\\n        <th>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.message", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</th>\\n        <th>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</th>\\n        <th>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.finished_at", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</th>\\n      </tr>\\n    </thead>\\n\\n    <tbody>\\n      ");\n  stack1 = helpers.each.call(depth0, "build", "in", "builds", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </tbody>\\n  </table>\\n  <p>\\n    <button ");\n  stack1 = {};\n  stack1[\'on\'] = "click";\n  stack1[\'target\'] = "this";\n  stack1[\'isVisibleBinding\'] = "hasMore";\n  stack1 = helpers.action.call(depth0, "showMore", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n      ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.show_more", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.show_more", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n    </button>\\n  </p>\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        ");\n  stack1 = {};\n  stack1[\'contextBinding\'] = "build";\n  stack1 = helpers.view.call(depth0, "Travis.BuildsItemView", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n      ");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n          <td class=\\"number\\">\\n            <span class=\\"status\\"></span>\\n            ");\n  stack1 = helpers[\'if\'].call(depth0, "id", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          </td>\\n          <td class=\\"commit\\">\\n            <a ");\n  stack1 = {};\n  stack1[\'href\'] = "view.urlGithubCommit";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n              ");\n  foundHelper = helpers.formatCommit;\n  stack1 = foundHelper ? foundHelper.call(depth0, "commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "commit", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n            </a>\\n          </td>\\n          <td class=\\"message\\">\\n            ");\n  stack1 = {};\n  stack1[\'short\'] = "true";\n  foundHelper = helpers.formatMessage;\n  stack1 = foundHelper ? foundHelper.call(depth0, "commit.message", {hash:stack1,contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "commit.message", {hash:stack1,contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          </td>\\n          <td class=\\"duration\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "duration";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            ");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, "duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </td>\\n          <td class=\\"finished_at timeago\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "finishedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            ");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, "finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "finishedAt", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </td>\\n        ");\n  return buffer;}\nfunction program4(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n              <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showBuild", "", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n                ");\n  stack1 = helpers._triageMustache.call(depth0, "number", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n              </a>\\n            ");\n  return buffer;}\n\nfunction program6(depth0,data) {\n  \n  \n  data.buffer.push("\\n  <div class=\\"loading\\"><span>Loading</span></div>\\n");}\n\n  stack1 = helpers[\'if\'].call(depth0, "builds.isLoaded", {hash:{},inverse:self.program(6, program6, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'builds/show\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n  ");\n  stack1 = helpers[\'if\'].call(depth0, "loading", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  \n  data.buffer.push("\\n    <span>Loading</span>\\n  ");}\n\nfunction program4(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n    <dl id=\\"summary\\">\\n      <div class=\\"left\\">\\n        <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.name", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.name", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n        <dd class=\\"number\\">\\n          <span class=\\"status\\"></span>\\n          ");\n  stack1 = helpers[\'if\'].call(depth0, "build.id", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n        </dd>\\n        <dt class=\\"finished_at_label\\">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.finished_at", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n        <dd class=\\"finished_at timeago\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "finishedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, "build.finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "build.finishedAt", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dd>\\n        <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n        <dd class=\\"duration\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "startedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, "build.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "build.duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dd>\\n      </div>\\n\\n      <div class=\\"right\\">\\n        <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.commit", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n        <dd class=\\"commit\\"><a href=\\"");\n  stack1 = helpers.unbound.call(depth0, "urlGithubCommit", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\">");\n  foundHelper = helpers.formatCommit;\n  stack1 = foundHelper ? foundHelper.call(depth0, "build.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "build.commit", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n        ");\n  stack1 = helpers[\'if\'].call(depth0, "commit.compareUrl", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n        ");\n  stack1 = helpers[\'if\'].call(depth0, "commit.authorName", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n        ");\n  stack1 = helpers[\'if\'].call(depth0, "commit.committerName", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n      </div>\\n\\n      <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.message", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n      <dd class=\\"message\\">");\n  foundHelper = helpers.formatMessage;\n  stack1 = foundHelper ? foundHelper.call(depth0, "build.commit.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "build.commit.message", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("</dd>\\n\\n      ");\n  stack1 = helpers.unless.call(depth0, "isMatrix", {hash:{},inverse:self.noop,fn:self.program(13, program13, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </dl>\\n\\n    ");\n  stack1 = helpers[\'if\'].call(depth0, "build.isMatrix", {hash:{},inverse:self.program(17, program17, data),fn:self.program(15, program15, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n  ");\n  return buffer;}\nfunction program5(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n            <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showBuild", "build", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "build.number", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n          ");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n          <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.compare", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.compare", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n          <dd class=\\"compare\\"><a href=\\"");\n  stack1 = helpers.unbound.call(depth0, "commit.compareUrl", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\">");\n  foundHelper = helpers.pathFrom;\n  stack1 = foundHelper ? foundHelper.call(depth0, "build.commit.compareUrl", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "pathFrom", "build.commit.compareUrl", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n        ");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n          <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.author", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.author", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n          <dd class=\\"author\\"><a href=\\"");\n  stack1 = helpers.unbound.call(depth0, "urlAuthor", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\">");\n  stack1 = helpers._triageMustache.call(depth0, "build.commit.authorName", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n        ");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n          <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.committer", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.committer", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n          <dd class=\\"committer\\"><a href=\\"");\n  stack1 = helpers.unbound.call(depth0, "urlCommitter", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\">");\n  stack1 = helpers._triageMustache.call(depth0, "build.commit.committerName", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n        ");\n  return buffer;}\n\nfunction program13(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n        <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.config", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n        <dd class=\\"config\\">");\n  foundHelper = helpers.formatConfig;\n  stack1 = foundHelper ? foundHelper.call(depth0, "build.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatConfig", "build.config", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dd>\\n      ");\n  return buffer;}\n\nfunction program15(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n      ");\n  stack1 = {};\n  stack1[\'jobsBinding\'] = "build.requiredJobs";\n  stack1[\'required\'] = "true";\n  stack1 = helpers.view.call(depth0, "Travis.JobsView", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      ");\n  stack1 = {};\n  stack1[\'jobsBinding\'] = "build.allowedFailureJobs";\n  stack1 = helpers.view.call(depth0, "Travis.JobsView", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n    ");\n  return buffer;}\n\nfunction program17(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n      ");\n  stack1 = {};\n  stack1[\'contextBinding\'] = "build.jobs.firstObject";\n  stack1 = helpers.view.call(depth0, "Travis.LogView", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n    ");\n  return buffer;}\n\n  stack1 = helpers[\'with\'].call(depth0, "view", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'jobs/list\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n  ");\n  stack1 = helpers[\'if\'].call(depth0, "view.required", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    <thead>\\n      <tr>\\n        ");\n  stack1 = helpers.each.call(depth0, "key", "in", "view.build.configKeys", {hash:{},inverse:self.noop,fn:self.program(6, program6, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n      </tr>\\n    </thead>\\n    <tbody>\\n      ");\n  stack1 = helpers.each.call(depth0, "job", "in", "view.jobs", {hash:{},inverse:self.noop,fn:self.program(8, program8, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </tbody>\\n  </table>\\n\\n  ");\n  stack1 = helpers.unless.call(depth0, "view.required", {hash:{},inverse:self.noop,fn:self.program(14, program14, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n    <table id=\\"jobs\\" class=\\"list\\">\\n      <caption>\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.build_matrix", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.build_matrix", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      </caption>\\n  ");\n  return buffer;}\n\nfunction program4(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n    <table id=\\"allowed_failure_jobs\\" class=\\"list\\">\\n      <caption>\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n        <a title=\\"What\'s this?\\" class=\\"help\\" name=\\"help-allowed_failures\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "popup", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "></a>\\n      </caption>\\n  ");\n  return buffer;}\n\nfunction program6(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n          <th>");\n  stack1 = helpers._triageMustache.call(depth0, "key", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</th>\\n        ");\n  return buffer;}\n\nfunction program8(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        ");\n  stack1 = {};\n  stack1[\'contextBinding\'] = "job";\n  stack1 = helpers.view.call(depth0, "Travis.JobsItemView", {hash:stack1,inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n      ");\n  return buffer;}\nfunction program9(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n          <td class=\\"number\\">\\n            <span class=\\"status\\"></span>\\n            ");\n  stack1 = helpers[\'if\'].call(depth0, "job.id", {hash:{},inverse:self.noop,fn:self.program(10, program10, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          </td>\\n          <td class=\\"duration\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "startedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            ");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, "duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </td>\\n          <td class=\\"finished_at timeago\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "finishedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            ");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, "finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "finishedAt", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </td>\\n          ");\n  stack1 = helpers.each.call(depth0, "value", "in", "configValues", {hash:{},inverse:self.noop,fn:self.program(12, program12, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n        ");\n  return buffer;}\nfunction program10(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n              <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showJob", "repository", "job", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "number", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n            ");\n  return buffer;}\n\nfunction program12(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n            <td>");\n  stack1 = helpers._triageMustache.call(depth0, "value", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</td>\\n          ");\n  return buffer;}\n\nfunction program14(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n    <div id=\\"help-allowed_failures\\" class=\\"popup\\">\\n      <h4>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</h4>\\n      <p>\\n        Allowed Failures are items in your build matrix that are allowed to\\n        fail without causing the entire build to be shown as failed.\\n      </p>\\n      <p>\\n        You can define allowed failures in the build matrix as follows:\\n      </p>\\n      <pre>matrix:\\n  allow_failures:\\n    - rvm: ruby-head</pre>\\n      <p>\\n        This lets you add in experimental and preparatory builds to test against versions or\\n        configurations that you are not ready to officially support.\\n      </p>\\n    </div>\\n  ");\n  return buffer;}\n\n  stack1 = helpers[\'if\'].call(depth0, "view.jobs.length", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'jobs/log\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n  <pre id=\\"log\\" class=\\"ansi\\"><a href=\\"#\\" id=\\"tail\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "toggleTailing", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <span class=\\"status\\"></span>\\n    <label>Follow logs</label>\\n  </a>");\n  foundHelper = helpers.formatLog;\n  stack1 = foundHelper ? foundHelper.call(depth0, "log.body", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatLog", "log.body", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("</pre>\\n\\n  ");\n  stack1 = helpers[\'if\'].call(depth0, "sponsor.name", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n  <a href=\'#\' class=\\"to-top\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "toTop", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">To top</a>\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n    <p class=\\"sponsor\\">\\n    ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.messages.sponsored_by", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.messages.sponsored_by", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = "sponsor.url";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "sponsor.name", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n    </p>\\n  ");\n  return buffer;}\n\nfunction program4(depth0,data) {\n  \n  \n  data.buffer.push("\\n  <div id=\\"log\\" class=\\"loading\\">\\n    <span>Loading</span>\\n  </div>\\n");}\n\n  stack1 = helpers._triageMustache.call(depth0, "view.logSubscriber", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n\\n");\n  stack1 = helpers[\'if\'].call(depth0, "log.isLoaded", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'jobs/show\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n  ");\n  stack1 = helpers[\'if\'].call(depth0, "job.isLoaded", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n    <div ");\n  stack1 = {};\n  stack1[\'class\'] = "view.color";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n      <dl id=\\"summary\\">\\n        <div class=\\"left\\">\\n          <dt>Job</dt>\\n          <dd class=\\"number\\">\\n            <span class=\\"status\\"></span>\\n            ");\n  stack1 = helpers[\'if\'].call(depth0, "job.id", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          </dd>\\n          <dt class=\\"finished_at_label\\">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.finished_at", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n          <dd class=\\"finished_at timeago\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "finishedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, "job.finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "job.finishedAt", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dd>\\n          <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n          <dd class=\\"duration\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "startedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, "job.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "job.duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dd>\\n        </div>\\n\\n        <div class=\\"right\\">\\n          <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.commit", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n          <dd class=\\"commit\\"><a ");\n  stack1 = {};\n  stack1[\'href\'] = "urlGithubCommit";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.formatCommit;\n  stack1 = foundHelper ? foundHelper.call(depth0, "commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "commit", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n          ");\n  stack1 = helpers[\'if\'].call(depth0, "commit.compareUrl", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          ");\n  stack1 = helpers[\'if\'].call(depth0, "commit.authorName", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          ");\n  stack1 = helpers[\'if\'].call(depth0, "commit.committerName", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n        </div>\\n\\n        <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.message", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n        <dd class=\\"message\\">");\n  foundHelper = helpers.formatMessage;\n  stack1 = foundHelper ? foundHelper.call(depth0, "commit.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "commit.message", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dd>\\n        <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.config", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n        <dd class=\\"config\\">");\n  foundHelper = helpers.formatConfig;\n  stack1 = foundHelper ? foundHelper.call(depth0, "job.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatConfig", "job.config", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dd>\\n      </dl>\\n\\n      ");\n  stack1 = {};\n  stack1[\'contextBinding\'] = "job";\n  stack1 = helpers.view.call(depth0, "Travis.LogView", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n    </div>\\n  ");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n              <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showJob", "repository", "job", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "job.number", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n            ");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n            <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.compare", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.compare", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n            <dd class=\\"compare\\"><a ");\n  stack1 = {};\n  stack1[\'href\'] = "commit.compareUrl";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.pathFrom;\n  stack1 = foundHelper ? foundHelper.call(depth0, "commit.compareUrl", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "pathFrom", "commit.compareUrl", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n          ");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n            <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.author", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.author", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n            <dd class=\\"author\\"><a ");\n  stack1 = {};\n  stack1[\'href\'] = "urlAuthor";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "commit.authorName", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n          ");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n            <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.committer", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.committer", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n            <dd class=\\"committer\\"><a ");\n  stack1 = {};\n  stack1[\'href\'] = "urlCommitter";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "commit.committerName", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n          ");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  \n  data.buffer.push("\\n    <div id=\\"job\\" class=\\"loading\\">\\n      <span>Loading</span>\\n    </div>\\n  ");}\n\n  stack1 = helpers[\'with\'].call(depth0, "view", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/home\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push("<div id=\\"top\\">\\n  ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n</div>\\n\\n<div id=\\"page\\">\\n  <div id=\\"left\\">\\n    ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "left", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "left", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </div>\\n\\n  <div id=\\"main\\">\\n    ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </div>\\n\\n  <div id=\\"right\\">\\n    ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "right", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "right", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </div>\\n</div>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/profile\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push("<div id=\\"top\\">\\n  ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n</div>\\n\\n<div id=\\"page\\">\\n  <div id=\\"left\\">\\n    ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "left", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "left", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </div>\\n\\n  <div id=\\"main\\">\\n    ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </div>\\n\\n  <div id=\\"right\\">\\n    <div id=\\"slider\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "Travis.app.slider";\n  stack1 = helpers.action.call(depth0, "toggle", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n      <div class=\'icon\'></div>&nbsp;\\n    </div>\\n\\n    <div class=\\"box\\">\\n      <h4>Getting started?</h4>\\n      <p>\\n        Please read our <a href=\\"http://about.travis-ci.org/docs/user/getting-started\\">guide</a>.\\n        It will only take a few minutes :)\\n      </p>\\n      <p>\\n        You can find detailled docs on our <a href=\\"http://about.travis-ci.org/\\">about</a> site.\\n      </p>\\n      <p>\\n        If you need help please don\'t hesitate to join\\n        <a href=\\"irc://irc.freenode.net#travis\\">#travis</a> on irc.freenode.net\\n        or our <a href=\\"http://groups.google.com/group/travis-ci\\">mailinglist</a>.\\n      </p>\\n    </div>\\n  </div>\\n</div>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/sidebar\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push("<a id=\\"github\\" href=\\"https://github.com/travis-ci\\" title=\\"Fork me on GitHub\\">\\n  ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.fork_me", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.fork_me", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n</a>\\n\\n<div id=\\"slider\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "Travis.app.slider";\n  stack1 = helpers.action.call(depth0, "toggle", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n  <div class=\'icon\'></div>&nbsp;\\n</div>\\n\\n");\n  stack1 = helpers.view.call(depth0, "view.DecksView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n");\n  stack1 = helpers.view.call(depth0, "view.WorkersView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n");\n  stack1 = helpers.view.call(depth0, "view.QueuesView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n");\n  stack1 = helpers.view.call(depth0, "view.LinksView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n\\n<div id=\\"about\\" class=\\"box\\">\\n  <h4>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.join", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.join", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</h4>\\n  <ul>\\n    <li>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.repository", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.repository", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ": <a href=\\"http://github.com/travis-ci\\">Github</a></li>\\n    <li>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.twitter", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.twitter", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ": <a href=\\"http://twitter.com/travisci\\">@travisci</a></li>\\n    <li>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.mailing_list", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.mailing_list", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ": <a href=\\"http://groups.google.com/group/travis-ci\\">travis-ci</a></li>\\n    <li><a href=\\"irc://irc.freenode.net#travis\\">irc.freenode.net#travis</a></li>\\n  </ul>\\n</div>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/simple\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push("<div id=\\"top\\">\\n  ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n</div>\\n\\n<div id=\\"page\\">\\n  <div id=\\"main\\">\\n    ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </div>\\n</div>\\n\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/top\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push("<a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "goToRoot", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n  <h1>Travis</h1>\\n</a>\\n\\n<ul id=\\"navigation\\">\\n  <li ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classHome";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "goToRoot", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">Home</a>\\n  </li>\\n  <li ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classStats";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "goToStats", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">Stats</a>\\n  </li>\\n  <li>\\n    <a href=\\"http://about.travis-ci.org/blog\\">Blog</a>\\n  </li>\\n  <li>\\n    <a href=\\"http://about.travis-ci.org/docs\\">Docs</a>\\n  </li>\\n  <li ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classProfile";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <p class=\\"handle\\">\\n      <a class=\\"signed-out\\" href=\\"#\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "Travis.app";\n  stack1 = helpers.action.call(depth0, "signIn", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.github_login", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.github_login", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n      <a class=\\"signed-in\\" ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showProfile", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "><img ");\n  stack1 = {};\n  stack1[\'src\'] = "view.gravatarUrl";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "user.name", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n      <span class=\\"signing-in\\">Signing in</span>\\n    </p>\\n    <ul>\\n      <li>\\n        <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showProfile", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.profile", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.profile", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n      </li>\\n      <li>\\n        <a href=\\"/\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "Travis.app";\n  stack1 = helpers.action.call(depth0, "signOut", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.sign_out", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.sign_out", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n      </li>\\n    </ul>\\n  </li>\\n</ul>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'profile/accounts\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n    <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showAccount", "view.account", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " class=\\"name\\">");\n  stack1 = helpers._triageMustache.call(depth0, "view.name", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n    <p class=\\"summary\\">\\n      <span class=\\"repos_label\\">Repositories:</span>\\n      <abbr class=\\"repos\\">");\n  stack1 = helpers._triageMustache.call(depth0, "view.content.reposCount", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</abbr>\\n    </p>\\n  ");\n  return buffer;}\n\n  data.buffer.push("<div id=\\"search_box\\">\\n</div>\\n\\n<ul class=\\"tabs\\">\\n  <li id=\\"tab_accounts\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classAccounts";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5><a name=\\"accounts\\" href=\\"\\">Accounts</a></h5>\\n  </li>\\n</ul>\\n\\n<div class=\\"tab\\">\\n  ");\n  stack1 = {};\n  stack1[\'contentBinding\'] = "controller";\n  foundHelper = helpers.collection;\n  stack1 = foundHelper ? foundHelper.call(depth0, "Travis.AccountsListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, "collection", "Travis.AccountsListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n</div>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'profile/show\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push("<h3>");\n  stack1 = helpers._triageMustache.call(depth0, "view.name", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</h3>\\n\\n");\n  stack1 = helpers.view.call(depth0, "Travis.ProfileTabsView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n\\n<div class=\\"tab\\">\\n  ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "pane", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "pane", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n</div>\\n\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'profile/tabs\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n    <li id=\\"tab_user\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classUser";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n      <h5>\\n        <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showUserProfile", "view.account", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">Profile</a>\\n      </h5>\\n    </li>\\n  ");\n  return buffer;}\n\n  data.buffer.push("<ul class=\\"tabs\\">\\n  <li id=\\"tab_hooks\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classHooks";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5>\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showAccount", "view.account", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">Repositories</a>\\n    </h5>\\n  </li>\\n  ");\n  stack1 = helpers[\'if\'].call(depth0, "view.displayUser", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n</ul>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'profile/tabs/hooks\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n  ");\n  stack1 = helpers[\'if\'].call(depth0, "user.isSyncing", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  \n  data.buffer.push("\\n    <p class=\\"message loading\\">\\n      <span>Please wait while we sync from GitHub</span>\\n    </p>\\n  ");}\n\nfunction program4(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n    <p class=\\"message\\">\\n      Last synchronized from GitHub: ");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, "user.syncedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "user.syncedAt", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      <button class=\\"sync_now\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "user";\n  stack1 = helpers.action.call(depth0, "sync", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        Sync now\\n      </button>\\n    </p>\\n\\n    <ul id=\\"hooks\\">\\n      ");\n  stack1 = helpers.each.call(depth0, "hook", "in", "hooks", {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </ul>\\n  ");\n  return buffer;}\nfunction program5(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        <li ");\n  stack1 = {};\n  stack1[\'class\'] = "hook.active:active";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n          <a ");\n  stack1 = {};\n  stack1[\'href\'] = "hook.urlGithub";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + " rel=\\"nofollow\\">");\n  stack1 = helpers._triageMustache.call(depth0, "hook.slug", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n          <p class=\\"description\\">");\n  stack1 = helpers._triageMustache.call(depth0, "hook.description", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</p>\\n\\n          <div class=\\"controls\\">\\n            <a ");\n  stack1 = {};\n  stack1[\'href\'] = "hook.urlGithubAdmin";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + " class=\\"github-admin tool-tip\\" title=\\"Github service hooks admin page\\"></a>\\n            <a ");\n  stack1 = {};\n  stack1[\'target\'] = "hook";\n  stack1 = helpers.action.call(depth0, "toggle", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " class=\\"switch\\"></a>\\n          </div>\\n        </li>\\n      ");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  \n  data.buffer.push("\\n        <li>\\n          You do not seem to have any repositories that we could sync.\\n        </li>\\n      ");}\n\nfunction program9(depth0,data) {\n  \n  \n  data.buffer.push("\\n  <p class=\\"message loading\\">\\n    <span>Loading</span>\\n  </p>\\n");}\n\n  data.buffer.push("<p class=\\"tip\\">\\n  ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.message.your_repos", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.message.your_repos", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n</p>\\n\\n");\n  stack1 = helpers[\'if\'].call(depth0, "hooks.isLoaded", {hash:{},inverse:self.program(9, program9, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'profile/tabs/user\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push("<img ");\n  stack1 = {};\n  stack1[\'src\'] = "view.gravatarUrl";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n\\n<dl class=\\"profile\\">\\n  <dt>\\n    ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.github", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.github", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":\\n  </dt>\\n  <dd>\\n    <a ");\n  stack1 = {};\n  stack1[\'href\'] = "urlGithub";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "user.login", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n  </dd>\\n  <dt>\\n    ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.email", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.email", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":\\n  </dt>\\n  <dd>\\n    ");\n  stack1 = helpers._triageMustache.call(depth0, "user.email", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </dd>\\n  <dt>\\n    ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.token", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.token", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":\\n  </dt>\\n  <dd>\\n    ");\n  stack1 = helpers._triageMustache.call(depth0, "user.token", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </dd>\\n</dl>\\n\\n<form>\\n  ");\n  stack1 = {};\n  stack1[\'id\'] = "locale";\n  stack1[\'contentBinding\'] = "view.locales";\n  stack1[\'valueBinding\'] = "Travis.app.currentUser.locale";\n  stack1[\'optionLabelPath\'] = "content.name";\n  stack1[\'optionValuePath\'] = "content.key";\n  stack1 = helpers.view.call(depth0, "Ember.Select", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n\\n  <button name=\\"commit\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "saveLocale", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.update_locale", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.update_locale", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </button>\\n</form>\\n\\n\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'queues/list\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n  <li class=\\"queue\\">\\n    <h4>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "queue", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "queue", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ": ");\n  stack1 = helpers._triageMustache.call(depth0, "queue.name", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</h4>\\n    <ul ");\n  stack1 = {};\n  stack1[\'id\'] = "queue.id";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n      ");\n  stack1 = helpers.each.call(depth0, "job", "in", "queue", {hash:{},inverse:self.program(5, program5, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </ul>\\n  </li>\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        ");\n  stack1 = {};\n  stack1[\'jobBinding\'] = "job";\n  stack1 = helpers.view.call(depth0, "Travis.QueueItemView", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n      ");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n          <a ");\n  stack1 = {};\n  stack1[\'target\'] = "Travis.app.router";\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showJob", "job.repository", "job", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            <span class=\\"slug\\">\\n              ");\n  stack1 = helpers._triageMustache.call(depth0, "job.repository.slug", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n            </span>\\n            #");\n  stack1 = helpers._triageMustache.call(depth0, "job.number", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </a>\\n        ");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "no_job", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "no_job", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      ");\n  return buffer;}\n\n  data.buffer.push("<ul id=\\"queues\\">\\n");\n  stack1 = helpers.each.call(depth0, "queue", "in", "controller", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n</ul>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'repos/list\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n    ");\n  stack1 = helpers[\'with\'].call(depth0, "view.repository", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n  ");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n      <div class=\\"slug-and-status\\">\\n        <span class=\\"status\\"></span>\\n        ");\n  stack1 = helpers[\'if\'].call(depth0, "slug", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n      </div>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "lastBuildId", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n      <p class=\\"summary\\">\\n        <span class=\\"duration_label\\">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":</span>\\n        <abbr class=\\"duration\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "lastBuildStartedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, "lastBuildDuration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "lastBuildDuration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</abbr>,\\n        <span class=\\"finished_at_label\\">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.finished_at", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":</span>\\n        <abbr class=\\"finished_at timeago\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "lastBuildFinishedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, "lastBuildFinishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "lastBuildFinishedAt", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</abbr>\\n      </p>\\n\\n      <div class=\\"indicator\\"><span></span></div>\\n\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "description", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    ");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n          <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showRepository", "", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " class=\\"slug\\">");\n  stack1 = helpers._triageMustache.call(depth0, "slug", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n        ");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showBuild", "", "lastBuildId", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " class=\\"last_build\\">");\n  stack1 = helpers._triageMustache.call(depth0, "lastBuildNumber", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n      ");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        <div class=\\"info\\">\\n          <p class=\\"description\\">");\n  stack1 = helpers._triageMustache.call(depth0, "description", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</p>\\n        </div>\\n      ");\n  return buffer;}\n\n  data.buffer.push("<div id=\\"search_box\\">\\n  ");\n  stack1 = {};\n  stack1[\'valueBinding\'] = "controller.search";\n  stack1 = helpers.view.call(depth0, "Ember.TextField", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n</div>\\n\\n");\n  stack1 = helpers.view.call(depth0, "Travis.ReposListTabsView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n\\n<a ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "toggleInfo", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " class=\\"toggle-info\\"></a>\\n\\n<div class=\\"tab\\">\\n  ");\n  stack1 = {};\n  stack1[\'contentBinding\'] = "controller";\n  foundHelper = helpers.collection;\n  stack1 = foundHelper ? foundHelper.call(depth0, "Travis.RepositoriesListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, "collection", "Travis.RepositoriesListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n</div>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'repos/list/tabs\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push("<ul class=\\"tabs\\">\\n  <li id=\\"tab_recent\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classRecent";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5><a name=\\"recent\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "activate", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.recent", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.recent", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></h5>\\n  </li>\\n  <li id=\\"tab_owned\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classOwned";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5><a name=\\"owned\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "activate", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.my_repositories", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.my_repositories", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></h5>\\n  </li>\\n  <li id=\\"tab_search\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classSearch";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5><a name=\\"search\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "activate", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.search", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.search", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></h5>\\n  </li>\\n</ul>\\n\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'repos/show\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n    ");\n  stack1 = helpers[\'with\'].call(depth0, "view.repository", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n  ");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n      <h3>\\n        <a ");\n  stack1 = {};\n  stack1[\'href\'] = "view.urlGithub";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "slug", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n      </h3>\\n\\n      <p class=\\"description\\">");\n  stack1 = helpers._triageMustache.call(depth0, "description", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</p>\\n\\n      <ul class=\\"github-stats\\">\\n        <li class=\\"language\\">\\n          ");\n  stack1 = helpers._triageMustache.call(depth0, "lastBuildLanguage", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n        </li>\\n        <li>\\n          <a class=\\"watchers\\" title=\\"Watchers\\" ");\n  stack1 = {};\n  stack1[\'href\'] = "view.urlGithubWatchers";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            ");\n  stack1 = helpers._triageMustache.call(depth0, "stats.watchers", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </a>\\n        </li>\\n        <li>\\n          <a class=\\"forks\\" title=\\"Forks\\" ");\n  stack1 = {};\n  stack1[\'href\'] = "view.urlGithubNetwork";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            ");\n  stack1 = helpers._triageMustache.call(depth0, "stats.forks", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </a>\\n        </li>\\n      </ul>\\n\\n      ");\n  stack1 = helpers.view.call(depth0, "Travis.RepoShowTabsView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      ");\n  stack1 = helpers.view.call(depth0, "Travis.RepoShowToolsView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n    ");\n  return buffer;}\n\nfunction program4(depth0,data) {\n  \n  \n  data.buffer.push("\\n    <span>Loading</span>\\n  ");}\n\n  data.buffer.push("<div id=\\"repository\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.class";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n  ");\n  stack1 = helpers[\'if\'].call(depth0, "view.repository.isLoaded", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n  <div class=\\"tab\\">\\n    ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "pane", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "pane", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </div>\\n</div>\\n\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'repos/show/tabs\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showRepository", "view.repository", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.current", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.current", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      </a>\\n      ");\n  return buffer;}\n\nfunction program3(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showBuilds", "view.repository", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.build_history", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.build_history", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      </a>\\n      ");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showPullRequests", "view.repository", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.pull_requests", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.pull_requests", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      </a>\\n      ");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showBranches", "view.repository", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.branches", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.branches", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      </a>\\n      ");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showBuild", "view.build", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.build", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.build", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " #");\n  stack1 = helpers._triageMustache.call(depth0, "view.build.number", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      </a>\\n      ");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showBuild", "view.job", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.job", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.job", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " #");\n  stack1 = helpers._triageMustache.call(depth0, "view.job.number", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      </a>\\n      ");\n  return buffer;}\n\n  data.buffer.push("<ul class=\\"tabs\\">\\n  <li id=\\"tab_current\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classCurrent";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </h5>\\n  </li>\\n  <li id=\\"tab_builds\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classBuilds";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </h5>\\n  </li>\\n  <li id=\\"tab_pull_requests\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classPullRequests";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </h5>\\n  </li>\\n  <li id=\\"tab_branches\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classBranches";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </h5>\\n  </li>\\n  <li id=\\"tab_build\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classBuild";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "view.build.id", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </h5>\\n  </li>\\n  <li id=\\"tab_job\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classJob";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "view.job.id", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </h5>\\n  </li>\\n</ul>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'repos/show/tools\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        ");\n  stack1 = {};\n  stack1[\'contentBinding\'] = "view.branches";\n  stack1[\'selectionBinding\'] = "view.branch";\n  stack1[\'optionLabelPath\'] = "content.commit.branch";\n  stack1[\'optionValuePath\'] = "content.commit.branch";\n  stack1 = helpers.view.call(depth0, "Ember.Select", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      ");\n  return buffer;}\n\nfunction program3(depth0,data) {\n  \n  \n  data.buffer.push("\\n        <span class=\\"loading\\"></span>\\n      ");}\n\n  data.buffer.push("<div id=\\"tools\\">\\n  <a href=\\"#\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "toggle", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "></a>\\n  <div class=\\"pane\\">\\n    <p>\\n      <label>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.branch", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.branch", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":</label>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "view.branches.isLoaded", {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </p>\\n    <p>\\n      <label>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.image_url", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.image_url", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":</label>\\n      <input type=\\"text\\" class=\\"url\\" ");\n  stack1 = {};\n  stack1[\'value\'] = "view.urlStatusImage";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + "></input>\\n    </p>\\n    <p>\\n      <label>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.markdown", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.markdown", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":</label>\\n      <input type=\\"text\\" class=\\"markdown\\" ");\n  stack1 = {};\n  stack1[\'value\'] = "view.markdownStatusImage";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + "></input>\\n    </p>\\n    <p>\\n      <label>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.textile", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.textile", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":</label>\\n      <input type=\\"text\\" class=\\"textile\\" ");\n  stack1 = {};\n  stack1[\'value\'] = "view.textileStatusImage";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + "></input>\\n    </p>\\n    <p>\\n      <label>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.rdoc", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.rdoc", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":</label>\\n      <input type=\\"text\\" class=\\"rdoc\\" ");\n  stack1 = {};\n  stack1[\'value\'] = "view.rdocStatusImage";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + "></input>\\n    </p>\\n  </div>\\n</div>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'sponsors/decks\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n    ");\n  stack1 = helpers.each.call(depth0, "deck", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n  ");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n      <li ");\n  stack1 = {};\n  stack1[\'class\'] = "type";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        <a ");\n  stack1 = {};\n  stack1[\'href\'] = "url";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n          <img ");\n  stack1 = {};\n  stack1[\'src\'] = "image";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        </a>\\n      </li>\\n    ");\n  return buffer;}\n\n  data.buffer.push("<h4>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</h4>\\n\\n<ul class=\\"sponsors top\\">\\n  ");\n  stack1 = helpers.each.call(depth0, "deck", "in", "controller", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n</ul>\\n\\n<p class=\\"hint\\">\\n  <a href=\\"https://love.travis-ci.org/sponsors\\">\\n    ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n  </a>\\n</p>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'sponsors/links\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n      <li>\\n        ");\n  stack1 = {};\n  stack1[\'unescaped\'] = "true";\n  stack1 = helpers._triageMustache.call(depth0, "link", {hash:stack1,contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n      </li>\\n    ");\n  return buffer;}\n\n  data.buffer.push("<div class=\\"box\\">\\n  <h4>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</h4>\\n\\n  <ul class=\\"sponsors bottom\\">\\n    ");\n  stack1 = helpers.each.call(depth0, "controller", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n  </ul>\\n\\n  <p class=\\"hint\\">\\n    <a href=\\"https://love.travis-ci.org/sponsors\\">\\n      ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </a>\\n  </p>\\n</div>\\n\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'stats/show\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  \n\n\n  data.buffer.push("<div id=\\"repos_stats\\"></div>\\n<div id=\\"tests_stats\\"></div>\\n\\n");\n});\n\nEmber.TEMPLATES[\'workers/list\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n  <h4>\\n    ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "workers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "workers", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n    <a id=\\"toggle-workers\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "parentView.parentView";\n  stack1 = helpers.action.call(depth0, "toggleWorkers", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "></a>\\n  </h4>\\n  <ul id=\\"workers\\">\\n    ");\n  stack1 = helpers.each.call(depth0, "group", "in", "controller.groups", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n  </ul>\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n      ");\n  stack1 = helpers.view.call(depth0, "Travis.WorkersListView", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    ");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        <li class=\\"group\\">\\n          <h5 ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "toggle", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            ");\n  stack1 = helpers._triageMustache.call(depth0, "group.firstObject.host", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </h5>\\n          <ul>\\n          ");\n  stack1 = helpers.each.call(depth0, "worker", "in", "group", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          </ul>\\n        </li>\\n      ");\n  return buffer;}\nfunction program4(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n            ");\n  stack1 = {};\n  stack1[\'workerBinding\'] = "worker";\n  stack1 = helpers.view.call(depth0, "Travis.WorkersItemView", {hash:stack1,inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          ");\n  return buffer;}\nfunction program5(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n              <li class=\\"worker\\">\\n                <div class=\\"status\\"></div>\\n                ");\n  stack1 = helpers[\'if\'].call(depth0, "worker.isWorking", {hash:{},inverse:self.program(9, program9, data),fn:self.program(6, program6, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n              </li>\\n            ");\n  return buffer;}\nfunction program6(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n                  ");\n  stack1 = helpers[\'if\'].call(depth0, "worker.job_id", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n                ");\n  return buffer;}\nfunction program7(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n                    <a ");\n  stack1 = {};\n  stack1[\'target\'] = "Travis.app.router";\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showJob", "worker.repository", "worker.job_id", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " ");\n  stack1 = {};\n  stack1[\'title\'] = "worker.lastSeenAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n                      ");\n  stack1 = helpers._triageMustache.call(depth0, "view.display", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n                    </a>\\n                  ");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n                  ");\n  stack1 = helpers._triageMustache.call(depth0, "view.display", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n                ");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  \n  data.buffer.push("\\n      No workers\\n    ");}\n\n  stack1 = helpers.view.call(depth0, "Travis.WorkersView", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n");\n  return buffer;\n});\n\n})();\n//@ sourceURL=templates'
+),minispade.register("templates",'(function() {\nEmber.TEMPLATES[\'application\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression;\n\n\n  stack1 = helpers._triageMustache.call(depth0, "outlet", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'builds/list\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n  <table id=\\"builds\\" class=\\"list\\">\\n    <thead>\\n      <tr>\\n        <th>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.name", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.name", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</th>\\n        <th>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.commit", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</th>\\n        <th>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.message", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</th>\\n        <th>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</th>\\n        <th>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.finished_at", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</th>\\n      </tr>\\n    </thead>\\n\\n    <tbody>\\n      ");\n  stack1 = helpers.each.call(depth0, "build", "in", "builds", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </tbody>\\n  </table>\\n  <p>\\n    ");\n  stack1 = helpers.view.call(depth0, "view.ShowMoreButton", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </p>\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        ");\n  stack1 = {};\n  stack1[\'contextBinding\'] = "build";\n  stack1 = helpers.view.call(depth0, "Travis.BuildsItemView", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n      ");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n          <td class=\\"number\\">\\n            <span class=\\"status\\"></span>\\n            ");\n  stack1 = helpers[\'if\'].call(depth0, "id", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          </td>\\n          <td class=\\"commit\\">\\n            <a ");\n  stack1 = {};\n  stack1[\'href\'] = "view.urlGithubCommit";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n              ");\n  foundHelper = helpers.formatCommit;\n  stack1 = foundHelper ? foundHelper.call(depth0, "commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "commit", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n            </a>\\n          </td>\\n          <td class=\\"message\\">\\n            ");\n  stack1 = {};\n  stack1[\'short\'] = "true";\n  foundHelper = helpers.formatMessage;\n  stack1 = foundHelper ? foundHelper.call(depth0, "commit.message", {hash:stack1,contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "commit.message", {hash:stack1,contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          </td>\\n          <td class=\\"duration\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "duration";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            ");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, "duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </td>\\n          <td class=\\"finished_at timeago\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "finishedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            ");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, "finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "finishedAt", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </td>\\n        ");\n  return buffer;}\nfunction program4(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n              <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showBuild", "", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n                ");\n  stack1 = helpers._triageMustache.call(depth0, "number", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n              </a>\\n            ");\n  return buffer;}\n\nfunction program6(depth0,data) {\n  \n  \n  data.buffer.push("\\n  <div class=\\"loading\\"><span>Loading</span></div>\\n");}\n\n  stack1 = helpers[\'if\'].call(depth0, "builds.isLoaded", {hash:{},inverse:self.program(6, program6, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'builds/show\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n  ");\n  stack1 = helpers[\'if\'].call(depth0, "loading", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  \n  data.buffer.push("\\n    <span>Loading</span>\\n  ");}\n\nfunction program4(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n    <dl id=\\"summary\\">\\n      <div class=\\"left\\">\\n        <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.name", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.name", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n        <dd class=\\"number\\">\\n          <span class=\\"status\\"></span>\\n          ");\n  stack1 = helpers[\'if\'].call(depth0, "build.id", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n        </dd>\\n        <dt class=\\"finished_at_label\\">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.finished_at", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n        <dd class=\\"finished_at timeago\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "finishedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, "build.finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "build.finishedAt", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dd>\\n        <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n        <dd class=\\"duration\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "startedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, "build.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "build.duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dd>\\n      </div>\\n\\n      <div class=\\"right\\">\\n        <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.commit", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n        <dd class=\\"commit\\"><a href=\\"");\n  stack1 = helpers.unbound.call(depth0, "urlGithubCommit", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\">");\n  foundHelper = helpers.formatCommit;\n  stack1 = foundHelper ? foundHelper.call(depth0, "build.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "build.commit", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n        ");\n  stack1 = helpers[\'if\'].call(depth0, "commit.compareUrl", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n        ");\n  stack1 = helpers[\'if\'].call(depth0, "commit.authorName", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n        ");\n  stack1 = helpers[\'if\'].call(depth0, "commit.committerName", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n      </div>\\n\\n      <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.message", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n      <dd class=\\"message\\">");\n  foundHelper = helpers.formatMessage;\n  stack1 = foundHelper ? foundHelper.call(depth0, "build.commit.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "build.commit.message", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("</dd>\\n\\n      ");\n  stack1 = helpers.unless.call(depth0, "isMatrix", {hash:{},inverse:self.noop,fn:self.program(13, program13, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </dl>\\n\\n    ");\n  stack1 = helpers[\'if\'].call(depth0, "build.isMatrix", {hash:{},inverse:self.program(17, program17, data),fn:self.program(15, program15, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n  ");\n  return buffer;}\nfunction program5(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n            <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showBuild", "build", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "build.number", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n          ");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n          <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.compare", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.compare", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n          <dd class=\\"compare\\"><a href=\\"");\n  stack1 = helpers.unbound.call(depth0, "commit.compareUrl", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\">");\n  foundHelper = helpers.pathFrom;\n  stack1 = foundHelper ? foundHelper.call(depth0, "build.commit.compareUrl", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "pathFrom", "build.commit.compareUrl", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n        ");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n          <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.author", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.author", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n          <dd class=\\"author\\"><a href=\\"");\n  stack1 = helpers.unbound.call(depth0, "urlAuthor", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\">");\n  stack1 = helpers._triageMustache.call(depth0, "build.commit.authorName", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n        ");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n          <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.committer", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.committer", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n          <dd class=\\"committer\\"><a href=\\"");\n  stack1 = helpers.unbound.call(depth0, "urlCommitter", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\">");\n  stack1 = helpers._triageMustache.call(depth0, "build.commit.committerName", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n        ");\n  return buffer;}\n\nfunction program13(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n        <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.config", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n        <dd class=\\"config\\">");\n  foundHelper = helpers.formatConfig;\n  stack1 = foundHelper ? foundHelper.call(depth0, "build.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatConfig", "build.config", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dd>\\n      ");\n  return buffer;}\n\nfunction program15(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n      ");\n  stack1 = {};\n  stack1[\'jobsBinding\'] = "build.requiredJobs";\n  stack1[\'required\'] = "true";\n  stack1 = helpers.view.call(depth0, "Travis.JobsView", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      ");\n  stack1 = {};\n  stack1[\'jobsBinding\'] = "build.allowedFailureJobs";\n  stack1 = helpers.view.call(depth0, "Travis.JobsView", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n    ");\n  return buffer;}\n\nfunction program17(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n      ");\n  stack1 = {};\n  stack1[\'contextBinding\'] = "build.jobs.firstObject";\n  stack1 = helpers.view.call(depth0, "Travis.LogView", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n    ");\n  return buffer;}\n\n  stack1 = helpers[\'with\'].call(depth0, "view", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'jobs/list\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n  ");\n  stack1 = helpers[\'if\'].call(depth0, "view.required", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    <thead>\\n      <tr>\\n        ");\n  stack1 = helpers.each.call(depth0, "key", "in", "view.build.configKeys", {hash:{},inverse:self.noop,fn:self.program(6, program6, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n      </tr>\\n    </thead>\\n    <tbody>\\n      ");\n  stack1 = helpers.each.call(depth0, "job", "in", "view.jobs", {hash:{},inverse:self.noop,fn:self.program(8, program8, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </tbody>\\n  </table>\\n\\n  ");\n  stack1 = helpers.unless.call(depth0, "view.required", {hash:{},inverse:self.noop,fn:self.program(14, program14, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n    <table id=\\"jobs\\" class=\\"list\\">\\n      <caption>\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.build_matrix", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.build_matrix", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      </caption>\\n  ");\n  return buffer;}\n\nfunction program4(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n    <table id=\\"allowed_failure_jobs\\" class=\\"list\\">\\n      <caption>\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n        <a title=\\"What\'s this?\\" class=\\"help\\" name=\\"help-allowed_failures\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "popup", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "></a>\\n      </caption>\\n  ");\n  return buffer;}\n\nfunction program6(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n          <th>");\n  stack1 = helpers._triageMustache.call(depth0, "key", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</th>\\n        ");\n  return buffer;}\n\nfunction program8(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        ");\n  stack1 = {};\n  stack1[\'contextBinding\'] = "job";\n  stack1 = helpers.view.call(depth0, "Travis.JobsItemView", {hash:stack1,inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n      ");\n  return buffer;}\nfunction program9(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n          <td class=\\"number\\">\\n            <span class=\\"status\\"></span>\\n            ");\n  stack1 = helpers[\'if\'].call(depth0, "job.id", {hash:{},inverse:self.noop,fn:self.program(10, program10, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          </td>\\n          <td class=\\"duration\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "startedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            ");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, "duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </td>\\n          <td class=\\"finished_at timeago\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "finishedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            ");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, "finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "finishedAt", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </td>\\n          ");\n  stack1 = helpers.each.call(depth0, "value", "in", "configValues", {hash:{},inverse:self.noop,fn:self.program(12, program12, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n        ");\n  return buffer;}\nfunction program10(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n              <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showJob", "repository", "job", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "number", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n            ");\n  return buffer;}\n\nfunction program12(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n            <td>");\n  stack1 = helpers._triageMustache.call(depth0, "value", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</td>\\n          ");\n  return buffer;}\n\nfunction program14(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n    <div id=\\"help-allowed_failures\\" class=\\"popup\\">\\n      <h4>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.allowed_failures", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</h4>\\n      <p>\\n        Allowed Failures are items in your build matrix that are allowed to\\n        fail without causing the entire build to be shown as failed.\\n      </p>\\n      <p>\\n        You can define allowed failures in the build matrix as follows:\\n      </p>\\n      <pre>matrix:\\n  allow_failures:\\n    - rvm: ruby-head</pre>\\n      <p>\\n        This lets you add in experimental and preparatory builds to test against versions or\\n        configurations that you are not ready to officially support.\\n      </p>\\n    </div>\\n  ");\n  return buffer;}\n\n  stack1 = helpers[\'if\'].call(depth0, "view.jobs.length", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'jobs/log\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n  <pre id=\\"log\\" class=\\"ansi\\"><a href=\\"#\\" id=\\"tail\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "toggleTailing", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <span class=\\"status\\"></span>\\n    <label>Follow logs</label>\\n  </a>");\n  foundHelper = helpers.formatLog;\n  stack1 = foundHelper ? foundHelper.call(depth0, "log.body", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatLog", "log.body", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("</pre>\\n\\n  ");\n  stack1 = helpers[\'if\'].call(depth0, "sponsor.name", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n  <a href=\'#\' class=\\"to-top\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "toTop", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">To top</a>\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n    <p class=\\"sponsor\\">\\n    ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "builds.messages.sponsored_by", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.messages.sponsored_by", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = "sponsor.url";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "sponsor.name", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n    </p>\\n  ");\n  return buffer;}\n\nfunction program4(depth0,data) {\n  \n  \n  data.buffer.push("\\n  <div id=\\"log\\" class=\\"loading\\">\\n    <span>Loading</span>\\n  </div>\\n");}\n\n  stack1 = helpers._triageMustache.call(depth0, "view.logSubscriber", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n\\n");\n  stack1 = helpers[\'if\'].call(depth0, "log.isLoaded", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'jobs/show\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n  ");\n  stack1 = helpers[\'if\'].call(depth0, "job.isLoaded", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n    <div ");\n  stack1 = {};\n  stack1[\'class\'] = "view.color";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n      <dl id=\\"summary\\">\\n        <div class=\\"left\\">\\n          <dt>Job</dt>\\n          <dd class=\\"number\\">\\n            <span class=\\"status\\"></span>\\n            ");\n  stack1 = helpers[\'if\'].call(depth0, "job.id", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          </dd>\\n          <dt class=\\"finished_at_label\\">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.finished_at", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n          <dd class=\\"finished_at timeago\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "finishedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, "job.finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "job.finishedAt", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dd>\\n          <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n          <dd class=\\"duration\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "startedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, "job.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "job.duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dd>\\n        </div>\\n\\n        <div class=\\"right\\">\\n          <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.commit", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n          <dd class=\\"commit\\"><a ");\n  stack1 = {};\n  stack1[\'href\'] = "urlGithubCommit";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.formatCommit;\n  stack1 = foundHelper ? foundHelper.call(depth0, "commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "commit", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n          ");\n  stack1 = helpers[\'if\'].call(depth0, "commit.compareUrl", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          ");\n  stack1 = helpers[\'if\'].call(depth0, "commit.authorName", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          ");\n  stack1 = helpers[\'if\'].call(depth0, "commit.committerName", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n        </div>\\n\\n        <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.message", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n        <dd class=\\"message\\">");\n  foundHelper = helpers.formatMessage;\n  stack1 = foundHelper ? foundHelper.call(depth0, "commit.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "commit.message", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dd>\\n        <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.config", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n        <dd class=\\"config\\">");\n  foundHelper = helpers.formatConfig;\n  stack1 = foundHelper ? foundHelper.call(depth0, "job.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatConfig", "job.config", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dd>\\n      </dl>\\n\\n      ");\n  stack1 = {};\n  stack1[\'contextBinding\'] = "job";\n  stack1 = helpers.view.call(depth0, "Travis.LogView", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n    </div>\\n  ");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n              <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showJob", "repository", "job", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "job.number", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n            ");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n            <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.compare", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.compare", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n            <dd class=\\"compare\\"><a ");\n  stack1 = {};\n  stack1[\'href\'] = "commit.compareUrl";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.pathFrom;\n  stack1 = foundHelper ? foundHelper.call(depth0, "commit.compareUrl", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "pathFrom", "commit.compareUrl", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n          ");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n            <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.author", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.author", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n            <dd class=\\"author\\"><a ");\n  stack1 = {};\n  stack1[\'href\'] = "urlAuthor";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "commit.authorName", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n          ");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n            <dt>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "jobs.committer", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "jobs.committer", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</dt>\\n            <dd class=\\"committer\\"><a ");\n  stack1 = {};\n  stack1[\'href\'] = "urlCommitter";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "commit.committerName", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></dd>\\n          ");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  \n  data.buffer.push("\\n    <div id=\\"job\\" class=\\"loading\\">\\n      <span>Loading</span>\\n    </div>\\n  ");}\n\n  stack1 = helpers[\'with\'].call(depth0, "view", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/home\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push("<div id=\\"top\\">\\n  ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n</div>\\n\\n<div id=\\"page\\">\\n  <div id=\\"left\\">\\n    ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "left", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "left", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </div>\\n\\n  <div id=\\"main\\">\\n    ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </div>\\n\\n  <div id=\\"right\\">\\n    ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "right", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "right", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </div>\\n</div>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/profile\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push("<div id=\\"top\\">\\n  ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n</div>\\n\\n<div id=\\"page\\">\\n  <div id=\\"left\\">\\n    ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "left", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "left", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </div>\\n\\n  <div id=\\"main\\">\\n    ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </div>\\n\\n  <div id=\\"right\\">\\n    <div id=\\"slider\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "Travis.app.slider";\n  stack1 = helpers.action.call(depth0, "toggle", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n      <div class=\'icon\'></div>&nbsp;\\n    </div>\\n\\n    <div class=\\"box\\">\\n      <h4>Getting started?</h4>\\n      <p>\\n        Please read our <a href=\\"http://about.travis-ci.org/docs/user/getting-started\\">guide</a>.\\n        It will only take a few minutes :)\\n      </p>\\n      <p>\\n        You can find detailled docs on our <a href=\\"http://about.travis-ci.org/\\">about</a> site.\\n      </p>\\n      <p>\\n        If you need help please don\'t hesitate to join\\n        <a href=\\"irc://irc.freenode.net#travis\\">#travis</a> on irc.freenode.net\\n        or our <a href=\\"http://groups.google.com/group/travis-ci\\">mailinglist</a>.\\n      </p>\\n    </div>\\n  </div>\\n</div>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/sidebar\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push("<a id=\\"github\\" href=\\"https://github.com/travis-ci\\" title=\\"Fork me on GitHub\\">\\n  ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.fork_me", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.fork_me", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n</a>\\n\\n<div id=\\"slider\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "Travis.app.slider";\n  stack1 = helpers.action.call(depth0, "toggle", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n  <div class=\'icon\'></div>&nbsp;\\n</div>\\n\\n");\n  stack1 = helpers.view.call(depth0, "view.DecksView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n");\n  stack1 = helpers.view.call(depth0, "view.WorkersView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n");\n  stack1 = helpers.view.call(depth0, "view.QueuesView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n");\n  stack1 = helpers.view.call(depth0, "view.LinksView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n\\n<div id=\\"about\\" class=\\"box\\">\\n  <h4>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.join", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.join", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</h4>\\n  <ul>\\n    <li>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.repository", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.repository", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ": <a href=\\"http://github.com/travis-ci\\">Github</a></li>\\n    <li>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.twitter", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.twitter", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ": <a href=\\"http://twitter.com/travisci\\">@travisci</a></li>\\n    <li>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.about.mailing_list", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.about.mailing_list", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ": <a href=\\"http://groups.google.com/group/travis-ci\\">travis-ci</a></li>\\n    <li><a href=\\"irc://irc.freenode.net#travis\\">irc.freenode.net#travis</a></li>\\n  </ul>\\n</div>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/simple\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;\n\n\n  data.buffer.push("<div id=\\"top\\">\\n  ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "top", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "top", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n</div>\\n\\n<div id=\\"page\\">\\n  <div id=\\"main\\">\\n    ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "main", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "main", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </div>\\n</div>\\n\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'layouts/top\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push("<a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "goToRoot", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n  <h1>Travis</h1>\\n</a>\\n\\n<ul id=\\"navigation\\">\\n  <li ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classHome";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "goToRoot", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">Home</a>\\n  </li>\\n  <li ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classStats";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "goToStats", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">Stats</a>\\n  </li>\\n  <li>\\n    <a href=\\"http://about.travis-ci.org/blog\\">Blog</a>\\n  </li>\\n  <li>\\n    <a href=\\"http://about.travis-ci.org/docs\\">Docs</a>\\n  </li>\\n  <li ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classProfile";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <p class=\\"handle\\">\\n      <a class=\\"signed-out\\" href=\\"#\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "Travis.app";\n  stack1 = helpers.action.call(depth0, "signIn", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.github_login", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.github_login", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n      <a class=\\"signed-in\\" ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showProfile", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "><img ");\n  stack1 = {};\n  stack1[\'src\'] = "view.gravatarUrl";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "user.name", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n      <span class=\\"signing-in\\">Signing in</span>\\n    </p>\\n    <ul>\\n      <li>\\n        <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showProfile", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.profile", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.profile", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n      </li>\\n      <li>\\n        <a href=\\"/\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "Travis.app";\n  stack1 = helpers.action.call(depth0, "signOut", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.top.sign_out", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.top.sign_out", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n      </li>\\n    </ul>\\n  </li>\\n</ul>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'profile/accounts\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n    <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showAccount", "view.account", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " class=\\"name\\">");\n  stack1 = helpers._triageMustache.call(depth0, "view.name", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n    <p class=\\"summary\\">\\n      <span class=\\"repos_label\\">Repositories:</span>\\n      <abbr class=\\"repos\\">");\n  stack1 = helpers._triageMustache.call(depth0, "view.content.reposCount", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</abbr>\\n    </p>\\n  ");\n  return buffer;}\n\n  data.buffer.push("<div id=\\"search_box\\">\\n</div>\\n\\n<ul class=\\"tabs\\">\\n  <li id=\\"tab_accounts\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classAccounts";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5><a name=\\"accounts\\" href=\\"\\">Accounts</a></h5>\\n  </li>\\n</ul>\\n\\n<div class=\\"tab\\">\\n  ");\n  stack1 = {};\n  stack1[\'contentBinding\'] = "controller";\n  foundHelper = helpers.collection;\n  stack1 = foundHelper ? foundHelper.call(depth0, "Travis.AccountsListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, "collection", "Travis.AccountsListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n</div>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'profile/show\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push("<h3>");\n  stack1 = helpers._triageMustache.call(depth0, "view.name", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</h3>\\n\\n");\n  stack1 = helpers.view.call(depth0, "Travis.ProfileTabsView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n\\n<div class=\\"tab\\">\\n  ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "pane", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "pane", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n</div>\\n\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'profile/tabs\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n    <li id=\\"tab_user\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classUser";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n      <h5>\\n        <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showUserProfile", "view.account", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">Profile</a>\\n      </h5>\\n    </li>\\n  ");\n  return buffer;}\n\n  data.buffer.push("<ul class=\\"tabs\\">\\n  <li id=\\"tab_hooks\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classHooks";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5>\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showAccount", "view.account", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">Repositories</a>\\n    </h5>\\n  </li>\\n  ");\n  stack1 = helpers[\'if\'].call(depth0, "view.displayUser", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n</ul>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'profile/tabs/hooks\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n  ");\n  stack1 = helpers[\'if\'].call(depth0, "user.isSyncing", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  \n  data.buffer.push("\\n    <p class=\\"message loading\\">\\n      <span>Please wait while we sync from GitHub</span>\\n    </p>\\n  ");}\n\nfunction program4(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n    <p class=\\"message\\">\\n      Last synchronized from GitHub: ");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, "user.syncedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "user.syncedAt", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      <button class=\\"sync_now\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "user";\n  stack1 = helpers.action.call(depth0, "sync", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        Sync now\\n      </button>\\n    </p>\\n\\n    <ul id=\\"hooks\\">\\n      ");\n  stack1 = helpers.each.call(depth0, "hook", "in", "hooks", {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </ul>\\n  ");\n  return buffer;}\nfunction program5(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        <li ");\n  stack1 = {};\n  stack1[\'class\'] = "hook.active:active";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n          <a ");\n  stack1 = {};\n  stack1[\'href\'] = "hook.urlGithub";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + " rel=\\"nofollow\\">");\n  stack1 = helpers._triageMustache.call(depth0, "hook.slug", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n          <p class=\\"description\\">");\n  stack1 = helpers._triageMustache.call(depth0, "hook.description", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</p>\\n\\n          <div class=\\"controls\\">\\n            <a ");\n  stack1 = {};\n  stack1[\'href\'] = "hook.urlGithubAdmin";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + " class=\\"github-admin tool-tip\\" title=\\"Github service hooks admin page\\"></a>\\n            <a ");\n  stack1 = {};\n  stack1[\'target\'] = "hook";\n  stack1 = helpers.action.call(depth0, "toggle", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " class=\\"switch\\"></a>\\n          </div>\\n        </li>\\n      ");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  \n  data.buffer.push("\\n        <li>\\n          You do not seem to have any repositories that we could sync.\\n        </li>\\n      ");}\n\nfunction program9(depth0,data) {\n  \n  \n  data.buffer.push("\\n  <p class=\\"message loading\\">\\n    <span>Loading</span>\\n  </p>\\n");}\n\n  data.buffer.push("<p class=\\"tip\\">\\n  ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.message.your_repos", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.message.your_repos", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n</p>\\n\\n");\n  stack1 = helpers[\'if\'].call(depth0, "hooks.isLoaded", {hash:{},inverse:self.program(9, program9, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'profile/tabs/user\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push("<img ");\n  stack1 = {};\n  stack1[\'src\'] = "view.gravatarUrl";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n\\n<dl class=\\"profile\\">\\n  <dt>\\n    ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.github", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.github", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":\\n  </dt>\\n  <dd>\\n    <a ");\n  stack1 = {};\n  stack1[\'href\'] = "urlGithub";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "user.login", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n  </dd>\\n  <dt>\\n    ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.email", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.email", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":\\n  </dt>\\n  <dd>\\n    ");\n  stack1 = helpers._triageMustache.call(depth0, "user.email", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </dd>\\n  <dt>\\n    ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.token", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.token", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":\\n  </dt>\\n  <dd>\\n    ");\n  stack1 = helpers._triageMustache.call(depth0, "user.token", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </dd>\\n</dl>\\n\\n<form>\\n  ");\n  stack1 = {};\n  stack1[\'id\'] = "locale";\n  stack1[\'contentBinding\'] = "view.locales";\n  stack1[\'valueBinding\'] = "Travis.app.currentUser.locale";\n  stack1[\'optionLabelPath\'] = "content.name";\n  stack1[\'optionValuePath\'] = "content.key";\n  stack1 = helpers.view.call(depth0, "Ember.Select", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n\\n  <button name=\\"commit\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "saveLocale", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "profiles.show.update_locale", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "profiles.show.update_locale", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </button>\\n</form>\\n\\n\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'queues/list\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n  <li class=\\"queue\\">\\n    <h4>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "queue", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "queue", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ": ");\n  stack1 = helpers._triageMustache.call(depth0, "queue.name", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</h4>\\n    <ul ");\n  stack1 = {};\n  stack1[\'id\'] = "queue.id";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n      ");\n  stack1 = helpers.each.call(depth0, "job", "in", "queue", {hash:{},inverse:self.program(5, program5, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </ul>\\n  </li>\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        ");\n  stack1 = {};\n  stack1[\'jobBinding\'] = "job";\n  stack1 = helpers.view.call(depth0, "Travis.QueueItemView", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n      ");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n          <a ");\n  stack1 = {};\n  stack1[\'target\'] = "Travis.app.router";\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showJob", "job.repository", "job", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            <span class=\\"slug\\">\\n              ");\n  stack1 = helpers._triageMustache.call(depth0, "job.repository.slug", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n            </span>\\n            #");\n  stack1 = helpers._triageMustache.call(depth0, "job.number", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </a>\\n        ");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "no_job", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "no_job", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      ");\n  return buffer;}\n\n  data.buffer.push("<ul id=\\"queues\\">\\n");\n  stack1 = helpers.each.call(depth0, "queue", "in", "controller", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n</ul>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'repos/list\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n    ");\n  stack1 = helpers[\'with\'].call(depth0, "view.repository", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n  ");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n      <div class=\\"slug-and-status\\">\\n        <span class=\\"status\\"></span>\\n        ");\n  stack1 = helpers[\'if\'].call(depth0, "slug", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n      </div>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "lastBuildId", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n      <p class=\\"summary\\">\\n        <span class=\\"duration_label\\">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.duration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":</span>\\n        <abbr class=\\"duration\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "lastBuildStartedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.formatDuration;\n  stack1 = foundHelper ? foundHelper.call(depth0, "lastBuildDuration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "lastBuildDuration", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</abbr>,\\n        <span class=\\"finished_at_label\\">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.finished_at", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":</span>\\n        <abbr class=\\"finished_at timeago\\" ");\n  stack1 = {};\n  stack1[\'title\'] = "lastBuildFinishedAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers.formatTime;\n  stack1 = foundHelper ? foundHelper.call(depth0, "lastBuildFinishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "lastBuildFinishedAt", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</abbr>\\n      </p>\\n\\n      <div class=\\"indicator\\"><span></span></div>\\n\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "description", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    ");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n          <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showRepository", "", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " class=\\"slug\\">");\n  stack1 = helpers._triageMustache.call(depth0, "slug", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n        ");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showBuild", "", "lastBuildId", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " class=\\"last_build\\">");\n  stack1 = helpers._triageMustache.call(depth0, "lastBuildNumber", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n      ");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        <div class=\\"info\\">\\n          <p class=\\"description\\">");\n  stack1 = helpers._triageMustache.call(depth0, "description", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</p>\\n        </div>\\n      ");\n  return buffer;}\n\n  data.buffer.push("<div id=\\"search_box\\">\\n  ");\n  stack1 = {};\n  stack1[\'valueBinding\'] = "controller.search";\n  stack1 = helpers.view.call(depth0, "Ember.TextField", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n</div>\\n\\n");\n  stack1 = helpers.view.call(depth0, "Travis.ReposListTabsView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n\\n<a ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "toggleInfo", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " class=\\"toggle-info\\"></a>\\n\\n<div class=\\"tab\\">\\n  ");\n  stack1 = {};\n  stack1[\'contentBinding\'] = "controller";\n  foundHelper = helpers.collection;\n  stack1 = foundHelper ? foundHelper.call(depth0, "Travis.RepositoriesListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data}) : helperMissing.call(depth0, "collection", "Travis.RepositoriesListView", {hash:stack1,inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n</div>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'repos/list/tabs\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;\n\n\n  data.buffer.push("<ul class=\\"tabs\\">\\n  <li id=\\"tab_recent\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classRecent";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5><a name=\\"recent\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "activate", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.recent", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.recent", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></h5>\\n  </li>\\n  <li id=\\"tab_owned\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classOwned";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5><a name=\\"owned\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "activate", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.my_repositories", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.my_repositories", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></h5>\\n  </li>\\n  <li id=\\"tab_search\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classSearch";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5><a name=\\"search\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "activate", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.search", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.search", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a></h5>\\n  </li>\\n</ul>\\n\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'repos/show\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n    ");\n  stack1 = helpers[\'with\'].call(depth0, "view.repository", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n  ");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n      <h3>\\n        <a ");\n  stack1 = {};\n  stack1[\'href\'] = "view.urlGithub";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">");\n  stack1 = helpers._triageMustache.call(depth0, "slug", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</a>\\n      </h3>\\n\\n      <p class=\\"description\\">");\n  stack1 = helpers._triageMustache.call(depth0, "description", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</p>\\n\\n      <ul class=\\"github-stats\\">\\n        <li class=\\"language\\">\\n          ");\n  stack1 = helpers._triageMustache.call(depth0, "lastBuildLanguage", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n        </li>\\n        <li>\\n          <a class=\\"watchers\\" title=\\"Watchers\\" ");\n  stack1 = {};\n  stack1[\'href\'] = "view.urlGithubWatchers";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            ");\n  stack1 = helpers._triageMustache.call(depth0, "stats.watchers", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </a>\\n        </li>\\n        <li>\\n          <a class=\\"forks\\" title=\\"Forks\\" ");\n  stack1 = {};\n  stack1[\'href\'] = "view.urlGithubNetwork";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            ");\n  stack1 = helpers._triageMustache.call(depth0, "stats.forks", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </a>\\n        </li>\\n      </ul>\\n\\n      ");\n  stack1 = helpers.view.call(depth0, "Travis.RepoShowTabsView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      ");\n  stack1 = helpers.view.call(depth0, "Travis.RepoShowToolsView", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n    ");\n  return buffer;}\n\nfunction program4(depth0,data) {\n  \n  \n  data.buffer.push("\\n    <span>Loading</span>\\n  ");}\n\n  data.buffer.push("<div id=\\"repository\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.class";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n  ");\n  stack1 = helpers[\'if\'].call(depth0, "view.repository.isLoaded", {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n  <div class=\\"tab\\">\\n    ");\n  foundHelper = helpers.outlet;\n  stack1 = foundHelper ? foundHelper.call(depth0, "pane", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "outlet", "pane", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n  </div>\\n</div>\\n\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'repos/show/tabs\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showRepository", "view.repository", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.current", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.current", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      </a>\\n      ");\n  return buffer;}\n\nfunction program3(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showBuilds", "view.repository", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.build_history", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.build_history", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      </a>\\n      ");\n  return buffer;}\n\nfunction program5(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showPullRequests", "view.repository", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.pull_requests", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.pull_requests", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      </a>\\n      ");\n  return buffer;}\n\nfunction program7(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showBranches", "view.repository", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.branches", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.branches", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      </a>\\n      ");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showBuild", "view.build", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.build", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.build", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " #");\n  stack1 = helpers._triageMustache.call(depth0, "view.build.number", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      </a>\\n      ");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n      <a ");\n  stack1 = {};\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showBuild", "view.job", {hash:stack1,contexts:[depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.tabs.job", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.tabs.job", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " #");\n  stack1 = helpers._triageMustache.call(depth0, "view.job.number", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      </a>\\n      ");\n  return buffer;}\n\n  data.buffer.push("<ul class=\\"tabs\\">\\n  <li id=\\"tab_current\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classCurrent";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </h5>\\n  </li>\\n  <li id=\\"tab_builds\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classBuilds";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </h5>\\n  </li>\\n  <li id=\\"tab_pull_requests\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classPullRequests";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </h5>\\n  </li>\\n  <li id=\\"tab_branches\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classBranches";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "view.repository.slug", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </h5>\\n  </li>\\n  <li id=\\"tab_build\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classBuild";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "view.build.id", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </h5>\\n  </li>\\n  <li id=\\"tab_job\\" ");\n  stack1 = {};\n  stack1[\'class\'] = "view.classJob";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n    <h5>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "view.job.id", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </h5>\\n  </li>\\n</ul>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'repos/show/tools\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        ");\n  stack1 = {};\n  stack1[\'contentBinding\'] = "view.branches";\n  stack1[\'selectionBinding\'] = "view.branch";\n  stack1[\'optionLabelPath\'] = "content.commit.branch";\n  stack1[\'optionValuePath\'] = "content.commit.branch";\n  stack1 = helpers.view.call(depth0, "Ember.Select", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n      ");\n  return buffer;}\n\nfunction program3(depth0,data) {\n  \n  \n  data.buffer.push("\\n        <span class=\\"loading\\"></span>\\n      ");}\n\n  data.buffer.push("<div id=\\"tools\\">\\n  <a href=\\"#\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "toggle", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "></a>\\n  <div class=\\"pane\\">\\n    <p>\\n      <label>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.branch", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.branch", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":</label>\\n      ");\n  stack1 = helpers[\'if\'].call(depth0, "view.branches.isLoaded", {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </p>\\n    <p>\\n      <label>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.image_url", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.image_url", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":</label>\\n      <input type=\\"text\\" class=\\"url\\" ");\n  stack1 = {};\n  stack1[\'value\'] = "view.urlStatusImage";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + "></input>\\n    </p>\\n    <p>\\n      <label>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.markdown", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.markdown", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":</label>\\n      <input type=\\"text\\" class=\\"markdown\\" ");\n  stack1 = {};\n  stack1[\'value\'] = "view.markdownStatusImage";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + "></input>\\n    </p>\\n    <p>\\n      <label>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.textile", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.textile", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":</label>\\n      <input type=\\"text\\" class=\\"textile\\" ");\n  stack1 = {};\n  stack1[\'value\'] = "view.textileStatusImage";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + "></input>\\n    </p>\\n    <p>\\n      <label>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "repositories.rdoc", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "repositories.rdoc", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ":</label>\\n      <input type=\\"text\\" class=\\"rdoc\\" ");\n  stack1 = {};\n  stack1[\'value\'] = "view.rdocStatusImage";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + "></input>\\n    </p>\\n  </div>\\n</div>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'sponsors/decks\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n    ");\n  stack1 = helpers.each.call(depth0, "deck", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n  ");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n      <li ");\n  stack1 = {};\n  stack1[\'class\'] = "type";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        <a ");\n  stack1 = {};\n  stack1[\'href\'] = "url";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n          <img ");\n  stack1 = {};\n  stack1[\'src\'] = "image";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n        </a>\\n      </li>\\n    ");\n  return buffer;}\n\n  data.buffer.push("<h4>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</h4>\\n\\n<ul class=\\"sponsors top\\">\\n  ");\n  stack1 = helpers.each.call(depth0, "deck", "in", "controller", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n</ul>\\n\\n<p class=\\"hint\\">\\n  <a href=\\"https://love.travis-ci.org/sponsors\\">\\n    ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n  </a>\\n</p>\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'sponsors/links\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, foundHelper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n      <li>\\n        ");\n  stack1 = {};\n  stack1[\'unescaped\'] = "true";\n  stack1 = helpers._triageMustache.call(depth0, "link", {hash:stack1,contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n      </li>\\n    ");\n  return buffer;}\n\n  data.buffer.push("<div class=\\"box\\">\\n  <h4>");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsers", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "</h4>\\n\\n  <ul class=\\"sponsors bottom\\">\\n    ");\n  stack1 = helpers.each.call(depth0, "controller", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n  </ul>\\n\\n  <p class=\\"hint\\">\\n    <a href=\\"https://love.travis-ci.org/sponsors\\">\\n      ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "layouts.application.sponsors_link", {hash:{},contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    </a>\\n  </p>\\n</div>\\n\\n\\n");\n  return buffer;\n});\n\nEmber.TEMPLATES[\'stats/show\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  \n\n\n  data.buffer.push("<div id=\\"repos_stats\\"></div>\\n<div id=\\"tests_stats\\"></div>\\n\\n");\n});\n\nEmber.TEMPLATES[\'workers/list\'] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {\nhelpers = helpers || Ember.Handlebars.helpers;\n  var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n  \n  var buffer = \'\', stack1, foundHelper;\n  data.buffer.push("\\n  <h4>\\n    ");\n  foundHelper = helpers[\'t\'];\n  stack1 = foundHelper ? foundHelper.call(depth0, "workers", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "workers", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n    <a id=\\"toggle-workers\\" ");\n  stack1 = {};\n  stack1[\'target\'] = "parentView.parentView";\n  stack1 = helpers.action.call(depth0, "toggleWorkers", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "></a>\\n  </h4>\\n  <ul id=\\"workers\\">\\n    ");\n  stack1 = helpers.each.call(depth0, "group", "in", "controller.groups", {hash:{},inverse:self.program(11, program11, data),fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n  </ul>\\n");\n  return buffer;}\nfunction program2(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n      ");\n  stack1 = helpers.view.call(depth0, "Travis.WorkersListView", {hash:{},inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n    ");\n  return buffer;}\nfunction program3(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n        <li class=\\"group\\">\\n          <h5 ");\n  stack1 = {};\n  stack1[\'target\'] = "view";\n  stack1 = helpers.action.call(depth0, "toggle", {hash:stack1,contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n            ");\n  stack1 = helpers._triageMustache.call(depth0, "group.firstObject.host", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n          </h5>\\n          <ul>\\n          ");\n  stack1 = helpers.each.call(depth0, "worker", "in", "group", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0,depth0,depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          </ul>\\n        </li>\\n      ");\n  return buffer;}\nfunction program4(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n            ");\n  stack1 = {};\n  stack1[\'workerBinding\'] = "worker";\n  stack1 = helpers.view.call(depth0, "Travis.WorkersItemView", {hash:stack1,inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n          ");\n  return buffer;}\nfunction program5(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n              <li class=\\"worker\\">\\n                <div class=\\"status\\"></div>\\n                ");\n  stack1 = helpers[\'if\'].call(depth0, "worker.isWorking", {hash:{},inverse:self.program(9, program9, data),fn:self.program(6, program6, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n              </li>\\n            ");\n  return buffer;}\nfunction program6(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n                  ");\n  stack1 = helpers[\'if\'].call(depth0, "worker.job_id", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n                ");\n  return buffer;}\nfunction program7(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n                    <a ");\n  stack1 = {};\n  stack1[\'target\'] = "Travis.app.router";\n  stack1[\'href\'] = true;\n  stack1 = helpers.action.call(depth0, "showJob", "worker.repository", "worker.job_id", {hash:stack1,contexts:[depth0,depth0,depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + " ");\n  stack1 = {};\n  stack1[\'title\'] = "worker.lastSeenAt";\n  stack1 = helpers.bindAttr.call(depth0, {hash:stack1,contexts:[],data:data});\n  data.buffer.push(escapeExpression(stack1) + ">\\n                      ");\n  stack1 = helpers._triageMustache.call(depth0, "view.display", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n                    </a>\\n                  ");\n  return buffer;}\n\nfunction program9(depth0,data) {\n  \n  var buffer = \'\', stack1;\n  data.buffer.push("\\n                  ");\n  stack1 = helpers._triageMustache.call(depth0, "view.display", {hash:{},contexts:[depth0],data:data});\n  data.buffer.push(escapeExpression(stack1) + "\\n                ");\n  return buffer;}\n\nfunction program11(depth0,data) {\n  \n  \n  data.buffer.push("\\n      No workers\\n    ");}\n\n  stack1 = helpers.view.call(depth0, "Travis.WorkersView", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n  if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n  data.buffer.push("\\n\\n");\n  return buffer;\n});\n\n})();\n//@ sourceURL=templates'
 ),minispade.register("config/locales",'(function() {window.I18n = window.I18n || {}\nwindow.I18n.translations = {"ca":{"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","pt-BR":"português brasileiro","ru":"Русский"}},"en":{"errors":{"messages":{"not_found":"not found","already_confirmed":"was already confirmed","not_locked":"was not locked"}},"devise":{"failure":{"unauthenticated":"You need to sign in or sign up before continuing.","unconfirmed":"You have to confirm your account before continuing.","locked":"Your account is locked.","invalid":"Invalid email or password.","invalid_token":"Invalid authentication token.","timeout":"Your session expired, please sign in again to continue.","inactive":"Your account was not activated yet."},"sessions":{"signed_in":"Signed in successfully.","signed_out":"Signed out successfully."},"passwords":{"send_instructions":"You will receive an email with instructions about how to reset your password in a few minutes.","updated":"Your password was changed successfully. You are now signed in."},"confirmations":{"send_instructions":"You will receive an email with instructions about how to confirm your account in a few minutes.","confirmed":"Your account was successfully confirmed. You are now signed in."},"registrations":{"signed_up":"You have signed up successfully. If enabled, a confirmation was sent to your e-mail.","updated":"You updated your account successfully.","destroyed":"Bye! Your account was successfully cancelled. We hope to see you again soon."},"unlocks":{"send_instructions":"You will receive an email with instructions about how to unlock your account in a few minutes.","unlocked":"Your account was successfully unlocked. You are now signed in."},"mailer":{"confirmation_instructions":{"subject":"Confirmation instructions"},"reset_password_instructions":{"subject":"Reset password instructions"},"unlock_instructions":{"subject":"Unlock Instructions"}}},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} hour","other":"%{count} hours"},"minutes_exact":{"one":"%{count} minute","other":"%{count} minutes"},"seconds_exact":{"one":"%{count} second","other":"%{count} seconds"}}},"workers":"Workers","queue":"Queue","no_job":"There are no jobs","repositories":{"branch":"Branch","image_url":"Image URL","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Message","started_at":"Started","duration":"Duration","finished_at":"Finished","tabs":{"current":"Current","build_history":"Build History","branches":"Branch Summary","pull_requests":"Pull Requests","build":"Build","job":"Job"}},"build":{"job":"Job","duration":"Duration","finished_at":"Finished"},"jobs":{"messages":{"sponsored_by":"This test suite was run on a worker box sponsored by"},"build_matrix":"Build Matrix","allowed_failures":"Allowed Failures","author":"Author","config":"Config","compare":"Compare","committer":"Committer","branch":"Branch","commit":"Commit","message":"Message","started_at":"Started","duration":"Duration","finished_at":"Finished"},"builds":{"name":"Build","messages":{"sponsored_by":"This test suite was run on a worker box sponsored by"},"build_matrix":"Build Matrix","allowed_failures":"Allowed Failures","author":"Author","config":"Config","compare":"Compare","committer":"Committer","branch":"Branch","commit":"Commit","message":"Message","started_at":"Started","duration":"Duration","finished_at":"Finished","show_more":"Show more"},"layouts":{"top":{"home":"Home","blog":"Blog","docs":"Docs","stats":"Stats","github_login":"Sign in with Github","profile":"Profile","sign_out":"Sign Out","admin":"Admin"},"application":{"fork_me":"Fork me on Github","recent":"Recent","search":"Search","sponsers":"Sponsors","sponsors_link":"See all of our amazing sponsors &rarr;","my_repositories":"My Repositories"},"about":{"alpha":"This stuff is alpha.","messages":{"alpha":"Please do <strong>not</strong> consider this a stable service. We\'re still far from that! More info <a href=\'https://github.com/travis-ci\'>here.</a>"},"join":"Join us and help!","mailing_list":"Mailing List","repository":"Repository","twitter":"Twitter"},"mobile":{"author":"Author","build":"Build","build_matrix":"Build Matrix","commit":"Commit","committer":"Committer","compare":"Compare","config":"Config","duration":"Duration","finished_at":"Finished at","job":"Job","log":"Log"}},"profiles":{"show":{"email":"Email","github":"Github","message":{"your_repos":"  Flick the switches below to turn on the Travis service hook for your projects, then push to GitHub.","config":"how to configure custom build options"},"messages":{"notice":"To get started, please read our <a href=\\"http://about.travis-ci.org/docs/user/getting-started/\\">Getting Started guide</a>.\\n  <small>It will only take a couple of minutes.</small>"},"token":"Token","your_repos":"Your Repositories","update":"Update","update_locale":"Update","your_locale":"Your Locale"}},"statistics":{"index":{"count":"Count","repo_growth":"Repository Growth","total_projects":"Total Projects/Repositories","build_count":"Build Count","last_month":"last month","total_builds":"Total Builds"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","pl":"Polski","ru":"Русский","nl":"Nederlands","pt-BR":"português brasileiro"}},"es":{"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} hora","other":"%{count} horas"},"minutes_exact":{"one":"%{count} minuto","other":"%{count} minutos"},"seconds_exact":{"one":"%{count} segundo","other":"%{count} segundos"}}},"workers":"Procesos","queue":"Cola","no_job":"No hay trabajos","repositories":{"branch":"Rama","image_url":"Imagen URL","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Mensaje","started_at":"Iniciado","duration":"Duración","finished_at":"Finalizado","tabs":{"current":"Actual","build_history":"Histórico","branches":"Ramas","build":"Builds","job":"Trabajo"}},"build":{"job":"Trabajo","duration":"Duración","finished_at":"Finalizado"},"jobs":{"messages":{"sponsored_by":"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por"},"build_matrix":"Matriz de Builds","allowed_failures":"Fallos Permitidos","author":"Autor","config":"Configuración","compare":"Comparar","committer":"Committer","branch":"Rama","commit":"Commit","message":"Mensaje","started_at":"Iniciado","duration":"Duración","finished_at":"Finalizado","sponsored_by":"Patrocinado por"},"builds":{"name":"Build","messages":{"sponsored_by":"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por"},"build_matrix":"Matriz de Builds","allowed_failures":"Fallos Permitidos","author":"Autor","config":"Configuración","compare":"Comparar","committer":"Committer","branch":"Rama","commit":"Commit","message":"Mensaje","started_at":"Iniciado","duration":"Duración","finished_at":"Finalizado"},"layouts":{"top":{"home":"Inicio","blog":"Blog","docs":"Documentación","stats":"Estadísticas","github_login":"Iniciar sesión con Github","profile":"Perfil","sign_out":"Desconectar","admin":"Admin"},"application":{"fork_me":"Hazme un Fork en Github","recent":"Reciente","search":"Buscar","sponsers":"Patrocinadores","sponsors_link":"Ver todos nuestros patrocinadores &rarr;","my_repositories":"Mis Repositorios"},"about":{"alpha":"Esto es alpha.","messages":{"alpha":"Por favor <strong>no</strong> considereis esto un servicio estable. Estamos estamos aún lejos de ello! Más información <a href=\'https://github.com/travis-ci\'>aquí.</a>"},"join":"Únetenos y ayudanos!","mailing_list":"Lista de Correos","repository":"Repositorio","twitter":"Twitter"}},"profiles":{"show":{"email":"Correo electrónico","github":"Github","message":{"your_repos":"  Activa los interruptores para inicial el  Travis service hook para tus proyectos, y haz un Push en GitHub.<br />\\n  Para probar varias versiones de ruby, mira","config":"como configurar tus propias opciones para el Build"},"messages":{"notice":"Para comenzar, por favor lee nuestra <a href=\\"http://about.travis-ci.org/docs/user/getting-started/\\">Guía de Inicio </a>.\\n  <small>Solo tomará unos pocos minutos.</small>"},"token":"Token","your_repos":"Tus repositorios","update":"Actualizar","update_locale":"Actualizar","your_locale":"Tu Idioma"}},"statistics":{"index":{"count":"Número","repo_growth":"Crecimiento de Repositorios","total_projects":"Total de Proyectos/Repositorios","build_count":"Número de Builds","last_month":"mes anterior","total_builds":"Total de Builds"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","pl":"Polski","ru":"Русский","nl":"Nederlands","pt-BR":"português brasileiro"}},"fr":{"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} heure","other":"%{count} heures"},"minutes_exact":{"one":"%{count} minute","other":"%{count} minutes"},"seconds_exact":{"one":"%{count} seconde","other":"%{count} secondes"}}},"workers":"Processus","queue":"File","no_job":"Pas de tâches","repositories":{"branch":"Branche","image_url":"Image","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Message","started_at":"Commencé","duration":"Durée","finished_at":"Terminé","tabs":{"current":"Actuel","build_history":"Historique des tâches","branches":"Résumé des branches","build":"Construction","job":"Tâche"}},"build":{"job":"Tâche","duration":"Durée","finished_at":"Terminé"},"jobs":{"messages":{"sponsored_by":"Cette série de tests a été exécutée sur une machine sponsorisée par"},"build_matrix":"Matrice des versions","allowed_failures":"Échecs autorisés","author":"Auteur","config":"Config","compare":"Comparer","committer":"Committeur","branch":"Branche","commit":"Commit","message":"Message","started_at":"Commencé","duration":"Durée","finished_at":"Terminé","sponsored_by":"Cette série de tests a été exécutée sur une machine sponsorisée par"},"builds":{"name":"Version","messages":{"sponsored_by":"Cette série de tests a été exécutée sur une machine sponsorisée par"},"build_matrix":"Matrice des versions","allowed_failures":"Échecs autorisés","author":"Auteur","config":"Config","compare":"Comparer","committer":"Committeur","branch":"Branche","commit":"Commit","message":"Message","started_at":"Commencé","duration":"Durée","finished_at":"Terminé"},"layouts":{"top":{"home":"Accueil","blog":"Blog","docs":"Documentation","stats":"Statistiques","github_login":"Connection Github","profile":"Profil","sign_out":"Déconnection","admin":"Admin"},"application":{"fork_me":"Faites un Fork sur Github","recent":"Récent","search":"Chercher","sponsers":"Sponsors","sponsors_link":"Voir tous nos extraordinaire sponsors &rarr;","my_repositories":"Mes dépôts"},"about":{"alpha":"Ceci est en alpha.","messages":{"alpha":"S\'il vous plaît ne considérez <strong>pas</strong> ce service comme étant stable. Nous sommes loin de ça! Plus d\'infos <a href=\'https://github.com/travis-ci\'>ici.</a>"},"join":"Joignez-vous à nous et aidez-nous!","mailing_list":"Liste de distribution","repository":"Dépôt","twitter":"Twitter"},"mobile":{"author":"Auteur","build":"Version","build_matrix":"Matrice des versions","commit":"Commit","committer":"Committeur","compare":"Comparer","config":"Config","duration":"Durée","finished_at":"Terminé à","job":"Tâche","log":"Journal"}},"profiles":{"show":{"github":"Github","message":{"your_repos":"Utilisez les boutons ci-dessous pour activer Travis sur vos projets puis déployez sur GitHub.<br />\\nPour tester sur plus de versions de ruby, voir","config":"comment configurer des options de version personnalisées"},"messages":{"notice":"Pour commencer, veuillez lire notre <a href=\\"http://about.travis-ci.org/docs/user/getting-started/\\">guide de démarrage</a>.\\n <small>Cela ne vous prendra que quelques minutes.</small>"},"token":"Jeton","your_repos":"Vos dépôts","email":"Courriel","update":"Modifier","update_locale":"Modifier","your_locale":"Votre langue"}},"statistics":{"index":{"count":"Décompte","repo_growth":"Croissance de dépôt","total_projects":"Total des projets/dépôts","build_count":"Décompte des versions","last_month":"mois dernier","total_builds":"Total des versions"}},"admin":{"actions":{"create":"créer","created":"créé","delete":"supprimer","deleted":"supprimé","update":"mise à jour","updated":"mis à jour"},"credentials":{"log_out":"Déconnection"},"delete":{"confirmation":"Oui, je suis sure","flash_confirmation":"%{name} a été détruit avec succès"},"flash":{"error":"%{name} n\'a pas pu être %{action}","noaction":"Aucune action n\'a été entreprise","successful":"%{name} a réussi à %{action}"},"history":{"name":"Historique","no_activity":"Aucune activité","page_name":"Historique pour %{name}"},"list":{"add_new":"Ajouter un nouveau","delete_action":"Supprimer","delete_selected":"Supprimer la sélection","edit_action":"Modifier","search":"Rechercher","select":"Sélectionner le %{name} à modifier","select_action":"Sélectionner","show_all":"Montrer tout"},"new":{"basic_info":"Information de base","cancel":"Annuler","chosen":"%{name} choisi","chose_all":"Choisir tout","clear_all":"Déselectionner tout","many_chars":"caractères ou moins","one_char":"caractère.","optional":"Optionnel","required":"Requis","save":"Sauvegarder","save_and_add_another":"Sauvegarder et en ajouter un autre","save_and_edit":"Sauvegarder et modifier","select_choice":"Faites vos choix et cliquez"},"dashboard":{"add_new":"Ajouter un nouveau","last_used":"Dernière utilisation","model_name":"Nom du modèle","modify":"Modification","name":"Tableau de bord","pagename":"Administration du site","records":"Enregistrements","show":"Voir","ago":"plus tôt"}},"home":{"name":"accueil"},"repository":{"duration":"Durée"},"devise":{"confirmations":{"confirmed":"Votre compte a été crée avec succès. Vous être maintenant connecté.","send_instructions":"Vous allez recevoir un courriel avec les instructions de confirmation de votre compte dans quelques minutes."},"failure":{"inactive":"Votre compte n\'a pas encore été activé.","invalid":"Adresse courriel ou mot de passe invalide.","invalid_token":"Jeton d\'authentification invalide.","locked":"Votre compte est bloqué.","timeout":"Votre session est expirée, veuillez vous reconnecter pour continuer.","unauthenticated":"Vous devez vous connecter ou vous enregistrer afin de continuer","unconfirmed":"Vous devez confirmer votre compte avant de continuer."},"mailer":{"confirmation_instructions":{"subject":"Instructions de confirmations"},"reset_password_instructions":{"subject":"Instruction de remise à zéro du mot de passe"},"unlock_instructions":{"subject":"Instruction de débloquage"}},"passwords":{"send_instructions":"Vous recevrez un courriel avec les instructions de remise à zéro du mot de passe dans quelques minutes.","updated":"Votre mot de passe a été changé avec succès. Vous êtes maintenant connecté."},"registrations":{"destroyed":"Au revoir! Votre compte a été annulé avec succès. Nous espérons vous revoir bientôt.","signed_up":"Vous êtes enregistré avec succès. Si activé, une confirmation vous a été envoyé par courriel.","updated":"Votre compte a été mis a jour avec succès"},"sessions":{"signed_in":"Connecté avec succès","signed_out":"Déconnecté avec succès"},"unlocks":{"send_instructions":"Vous recevrez un courriel contenant les instructions pour débloquer votre compte dans quelques minutes.","unlocked":"Votre compte a été débloqué avec succès."}},"errors":{"messages":{"already_confirmed":"étais déja confirmé","not_found":"n\'a pas été trouvé","not_locked":"n\'étais pas bloqué"}},"locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}},"ja":{"workers":"ワーカー","queue":"キュー","no_job":"ジョブはありません","repositories":{"branch":"ブランチ","image_url":"画像URL","markdown":".md","textile":".textile","rdoc":".rdoc","commit":"コミット","message":"メッセージ","started_at":"開始時刻","duration":"処理時間","finished_at":"終了時刻","tabs":{"current":"最新","build_history":"ビルド履歴","branches":"ブランチまとめ","build":"ビルド","job":"ジョブ"}},"build":{"job":"ジョブ","duration":"処理時間","finished_at":"終了時刻"},"jobs":{"messages":{"sponsored_by":"このテストは以下のスポンサーの協力で行いました。"},"build_matrix":"ビルドマトリクス","allowed_failures":"失敗許容範囲内","author":"制作者","config":"設定","compare":"比較","committer":"コミット者","branch":"ブランチ","commit":"コミット","message":"メッセージ","started_at":"開始時刻","duration":"処理時間","finished_at":"終了時刻"},"builds":{"name":"ビルド","messages":{"sponsored_by":"このテストは以下のスポンサーの協力で行いました。"},"build_matrix":"失敗許容範囲外","allowed_failures":"失敗許容範囲内","author":"制作者","config":"設定","compare":"比較","committer":"コミット者","branch":"ブランチ","commit":"コミット","message":"メッセージ","started_at":"開始時刻","duration":"処理時間","finished_at":"終了時刻"},"layouts":{"about":{"alpha":"まだアルファですよ!","join":"参加してみよう!","mailing_list":"メールリスト","messages":{"alpha":"Travis-ciは安定したサービスまで後一歩!詳しくは<a href=\'https://github.com/travis-ci\'>こちら</a>"},"repository":"リポジトリ","twitter":"ツイッター"},"application":{"fork_me":"Githubでフォークしよう","my_repositories":"マイリポジトリ","recent":"最近","search":"検索","sponsers":"スポンサー","sponsors_link":"スポンサーをもっと見る &rarr;"},"top":{"blog":"ブログ","docs":"Travisとは?","github_login":"Githubでログイン","home":"ホーム","profile":"プロフィール","sign_out":"ログアウト","stats":"統計","admin":"管理"},"mobile":{"author":"制作者","build":"ビルド","build_matrix":"ビルドマトリクス","commit":"コミット","committer":"コミット者","compare":"比較","config":"設定","duration":"処理時間","finished_at":"終了時刻","job":"ジョブ","log":"ログ"}},"profiles":{"show":{"github":"Github","email":"メール","message":{"config":"詳細設定","your_repos":"以下のスイッチを設定し、Travis-ciを有効にします。Githubへプッシュしたらビルドは自動的に開始します。複数バーションや細かい設定はこちらへ:"},"messages":{"notice":"まずは<a href=\\"http://about.travis-ci.org/docs/user/getting-started/\\">Travisのはじめ方</a>を参照してください。"},"token":"トークン","your_repos":"リポジトリ","update":"更新","update_locale":"更新","your_locale":"言語設定"}},"statistics":{"index":{"build_count":"ビルド数","count":"数","last_month":"先月","repo_growth":"リポジトリ","total_builds":"合計ビルド数","total_projects":"合計リポジトリ"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","pl":"Polski","ru":"Русский","nl":"Nederlands","pt-BR":"português brasileiro"}},"nb":{"admin":{"actions":{"create":"opprett","created":"opprettet","delete":"slett","deleted":"slettet","update":"oppdater","updated":"oppdatert"},"credentials":{"log_out":"Logg ut"},"dashboard":{"add_new":"Legg til ny","ago":"siden","last_used":"Sist brukt","model_name":"Modell","modify":"Rediger","name":"Dashbord","pagename":"Nettstedsadministrasjon","records":"Oppføringer","show":"Vis"},"delete":{"confirmation":"Ja, jeg er sikker","flash_confirmation":"%{name} ble slettet"},"flash":{"error":"%{name} kunne ikke bli %{action}","noaction":"Ingen handlinger ble utført","successful":"%{name} ble %{action}"},"history":{"name":"Logg","no_activity":"Ingen aktivitet","page_name":"Logg for %{name}"},"list":{"add_new":"Legg til ny","delete_action":"Slett","delete_selected":"Slett valgte","edit_action":"Rediger","search":"Søk","select":"Velg %{name} for å redigere","select_action":"Velg","show_all":"Vis alle "},"new":{"basic_info":"Basisinformasjon","cancel":"Avbryt","chosen":"Valgt %{name}","chose_all":"Velg alle","clear_all":"Fjern alle","many_chars":"eller færre tegn.","one_char":"tegn.","optional":"Valgfri","required":"Påkrevd","save":"Lagre","save_and_add_another":"Lagre og legg til ny","save_and_edit":"Lagre og rediger","select_choice":"Kryss av for dine valg og klikk"}},"build":{"duration":"Varighet","finished_at":"Fullført","job":"Jobb"},"builds":{"allowed_failures":"Tillatte feil","author":"Forfatter","branch":"Gren","build_matrix":"Jobbmatrise","commit":"Innsending","committer":"Innsender","compare":"Sammenlign","config":"Oppsett","duration":"Varighet","finished_at":"Fullført","message":"Beskrivelse","messages":{"sponsored_by":"Denne testen ble kjørt på en maskin sponset av"},"name":"Jobb","started_at":"Startet"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} time","other":"%{count} timer"},"minutes_exact":{"one":"%{count} minutt","other":"%{count} minutter"},"seconds_exact":{"one":"%{count} sekund","other":"%{count} sekunder"}}},"devise":{"confirmations":{"confirmed":"Din konto er aktivert og du er nå innlogget.","send_instructions":"Om noen få minutter så vil du få en e-post med informasjon om hvordan du bekrefter kontoen din."},"failure":{"inactive":"Kontoen din har ikke blitt aktivert enda.","invalid":"Ugyldig e-post eller passord.","invalid_token":"Ugyldig autentiseringskode.","locked":"Kontoen din er låst.","timeout":"Du ble logget ut siden på grunn av mangel på aktivitet, vennligst logg inn på nytt.","unauthenticated":"Du må logge inn eller registrere deg for å fortsette.","unconfirmed":"Du må bekrefte kontoen din før du kan fortsette."},"mailer":{"confirmation_instructions":{"subject":"Bekreftelsesinformasjon"},"reset_password_instructions":{"subject":"Instruksjoner for å få nytt passord"},"unlock_instructions":{"subject":"Opplåsningsinstruksjoner"}},"passwords":{"send_instructions":"Om noen få minutter så vil du få en epost med informasjon om hvordan du kan få et nytt passord.","updated":"Passordet ditt ble endret, og du er logget inn."},"registrations":{"destroyed":"Adjø! Kontoen din ble kansellert. Vi håper vi ser deg igjen snart.","signed_up":"Du er nå registrert.","updated":"Kontoen din ble oppdatert."},"sessions":{"signed_in":"Du er nå logget inn.","signed_out":"Du er nå logget ut."},"unlocks":{"send_instructions":"Om noen få minutter så kommer du til å få en e-post med informasjon om hvordan du kan låse opp kontoen din.","unlocked":"Kontoen din ble låst opp, og du er nå logget inn igjen."}},"errors":{"messages":{"already_confirmed":"har allerede blitt bekreftet","not_found":"ikke funnnet","not_locked":"var ikke låst"}},"home":{"name":"hjem"},"jobs":{"allowed_failures":"Tillatte feil","author":"Forfatter","branch":"Gren","build_matrix":"Jobbmatrise","commit":"Innsending","committer":"Innsender","compare":"Sammenlign","config":"Oppsett","duration":"Varighet","finished_at":"Fullført","message":"Beskrivelse","messages":{"sponsored_by":"Denne testserien ble kjørt på en maskin sponset av"},"started_at":"Startet"},"layouts":{"about":{"alpha":"Dette er alfa-greier.","join":"Bli med og hjelp oss!","mailing_list":"E-postliste","messages":{"alpha":"Dette er <strong>ikke</strong> en stabil tjeneste. Vi har fremdeles et stykke igjen! Mer informasjon finner du <a href=\\"https://github.com/travis-ci\\">her</a>."},"repository":"Kodelager","twitter":"Twitter."},"application":{"fork_me":"Se koden på Github","my_repositories":"Mine kodelagre","recent":"Nylig","search":"Søk","sponsers":"Sponsorer","sponsors_link":"Se alle de flotte sponsorene våre &rarr;"},"mobile":{"author":"Forfatter","build":"Jobb","build_matrix":"Jobbmatrise","commit":"Innsending","committer":"Innsender","compare":"Sammenlign","config":"Oppsett","duration":"Varighet","finished_at":"Fullført","job":"Jobb","log":"Logg"},"top":{"admin":"Administrator","blog":"Blogg","docs":"Dokumentasjon","github_login":"Logg inn med Github","home":"Hjem","profile":"Profil","sign_out":"Logg ut","stats":"Statistikk"}},"no_job":"Ingen jobber finnnes","profiles":{"show":{"email":"E-post","github":"Github","message":{"config":"hvordan sette opp egne jobbinnstillinger","your_repos":"Slå\\u0010 på Travis for prosjektene dine ved å dra i bryterne under, og send koden til Github.<br />\\nFor å teste mot flere ruby-versjoner, se dokumentasjonen for"},"messages":{"notice":"For å komme i gang, vennligst les <a href=\\"http://about.travis-ci.org/docs/user/getting-started/\\">kom-i-gang-veivisereren</a> vår. <small>Det tar bare et par minutter.</small>"},"token":"Kode","update":"Oppdater","update_locale":"Oppdater","your_locale":"Ditt språk","your_repos":"Dine kodelagre"}},"queue":"Kø","repositories":{"branch":"Gren","commit":"Innsender","duration":"Varighet","finished_at":"Fullført","image_url":"Bilde-URL","markdown":"Markdown","message":"Beskrivelse","rdoc":"RDOC","started_at":"Startet","tabs":{"branches":"Grensammendrag","build":"Jobb","build_history":"Jobblogg","current":"Siste","job":"Jobb"},"textile":"Textile"},"repository":{"duration":"Varighet"},"statistics":{"index":{"build_count":"Antall jobber","count":"Antall","last_month":"siste måned","repo_growth":"Vekst i kodelager","total_builds":"Totale jobber","total_projects":"Antall prosjekter/kodelagre"}},"workers":"Arbeidere","locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}},"nl":{"admin":{"actions":{"create":"aanmaken","created":"aangemaakt","delete":"verwijderen","deleted":"verwijderd","update":"bijwerken","updated":"bijgewerkt"},"credentials":{"log_out":"Afmelden"},"dashboard":{"add_new":"Nieuwe toevoegen","ago":"geleden","last_used":"Laatst gebruikt","model_name":"Model naam","modify":"Wijzigen","pagename":"Site administratie","show":"Laten zien","records":"Gegevens"},"delete":{"confirmation":"Ja, ik ben zeker","flash_confirmation":"%{name} is vernietigd"},"flash":{"error":"%{name} kon niet worden %{action}","noaction":"Er zijn geen acties genomen","successful":"%{name} is %{action}"},"history":{"name":"Geschiedenis","no_activity":"Geen activiteit","page_name":"Geschiedenis van %{name}"},"list":{"add_new":"Nieuwe toevoegen","delete_action":"Verwijderen","delete_selected":"Verwijder geselecteerden","edit_action":"Bewerken","search":"Zoeken","select":"Selecteer %{name} om te bewerken","select_action":"Selecteer","show_all":"Laat allen zien"},"new":{"basic_info":"Basisinfo","cancel":"Annuleren","chosen":"%{name} gekozen","chose_all":"Kies allen","clear_all":"Deselecteer allen","many_chars":"tekens of minder.","one_char":"teken.","optional":"Optioneel","required":"Vereist","save":"Opslaan","save_and_add_another":"Opslaan en een nieuwe toevoegen","save_and_edit":"Opslaan en bewerken","select_choice":"Selecteer uw keuzes en klik"}},"build":{"duration":"Duur","finished_at":"Voltooid","job":"Taak"},"builds":{"allowed_failures":"Toegestane mislukkingen","author":"Auteur","branch":"Tak","build_matrix":"Bouw Matrix","compare":"Vergelijk","config":"Configuratie","duration":"Duur","finished_at":"Voltooid","message":"Bericht","messages":{"sponsored_by":"Deze tests zijn gedraaid op een machine gesponsord door"},"name":"Bouw","started_at":"Gestart","commit":"Commit","committer":"Committer"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} uur","other":"%{count} uren"},"minutes_exact":{"one":"%{count} minuut","other":"%{count} minuten"},"seconds_exact":{"one":"%{count} seconde","other":"%{count} seconden"}}},"devise":{"confirmations":{"confirmed":"Uw account is bevestigd. U wordt nu ingelogd.","send_instructions":"Binnen enkele minuten zal u een email ontvangen met instructies om uw account te bevestigen."},"failure":{"inactive":"Uw account is nog niet geactiveerd.","invalid":"Ongeldig email adres of wachtwoord.","invalid_token":"Ongeldig authenticatie token.","locked":"Uw account is vergrendeld.","timeout":"Uw sessie is verlopen, gelieve opnieuw in te loggen om verder te gaan.","unauthenticated":"U moet inloggen of u registeren voordat u verder gaat.","unconfirmed":"U moet uw account bevestigen voordat u verder gaat."},"mailer":{"confirmation_instructions":{"subject":"Bevestigings-instructies"},"reset_password_instructions":{"subject":"Wachtwoord herstel instructies"},"unlock_instructions":{"subject":"Ontgrendel-instructies"}},"passwords":{"send_instructions":"Binnen enkele minuten zal u een email krijgen met instructies om uw wachtwoord opnieuw in te stellen.","updated":"Uw wachtwoord is veranderd. U wordt nu ingelogd."},"registrations":{"destroyed":"Dag! Uw account is geannuleerd. We hopen u vlug terug te zien.","signed_up":"Uw registratie is voltooid. Als het ingeschakeld is wordt een bevestiging naar uw email adres verzonden.","updated":"Het bijwerken van uw account is gelukt."},"sessions":{"signed_in":"Inloggen gelukt.","signed_out":"Uitloggen gelukt."},"unlocks":{"send_instructions":"Binnen enkele minuten zal u een email krijgen met instructies om uw account te ontgrendelen.","unlocked":"Uw account is ontgrendeld. U wordt nu ingelogd."}},"errors":{"messages":{"already_confirmed":"was al bevestigd","not_found":"niet gevonden","not_locked":"was niet vergrendeld"}},"jobs":{"allowed_failures":"Toegestane mislukkingen","author":"Auteur","branch":"Tak","build_matrix":"Bouw matrix","compare":"Vergelijk","config":"Configuratie","duration":"Duur","finished_at":"Voltooid","message":"Bericht","messages":{"sponsored_by":"Deze testen zijn uitgevoerd op een machine gesponsord door"},"started_at":"Gestart","commit":"Commit","committer":"Committer"},"layouts":{"about":{"alpha":"Dit is in alfa-stadium.","join":"Doe met ons mee en help!","mailing_list":"Mailing lijst","messages":{"alpha":"Gelieve deze service <strong>niet</strong> te beschouwen als stabiel. Daar zijn we nog lang niet! Meer info <a href=\'https://github.com/travis-ci\'>hier.</a>"},"repository":"Repository","twitter":"Twitter"},"application":{"fork_me":"Maak een fork op Github","my_repositories":"Mijn repositories","recent":"Recent","search":"Zoeken","sponsers":"Sponsors","sponsors_link":"Bekijk al onze geweldige sponsors &rarr;"},"mobile":{"author":"Auteur","build":"Bouw","build_matrix":"Bouw matrix","compare":"Vergelijk","config":"Configuratie","duration":"Duur","finished_at":"Voltooid op","job":"Taak","commit":"Commit","committer":"Committer","log":"Logboek"},"top":{"admin":"Administratie","blog":"Blog","docs":"Documentatie","github_login":"Inloggen met Github","home":"Home","profile":"Profiel","sign_out":"Uitloggen","stats":"Statistieken"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","ru":"Русский","pt-BR":"português brasileiro"},"no_job":"Er zijn geen taken","profiles":{"show":{"email":"Email adres","github":"Github","message":{"config":"hoe eigen bouw-opties in te stellen","your_repos":"Zet de schakelaars hieronder aan om de Travis hook voor uw projecten te activeren en push daarna naar Github<br />\\nOm te testen tegen meerdere rubies, zie"},"messages":{"notice":"Om te beginnen kunt u onze <a href=\\\\\\"http://about.travis-ci.org/docs/user/getting-started/\\\\\\">startersgids</a> lezen.\\\\n  <small>Het zal maar enkele minuten van uw tijd vergen.</small>"},"update":"Bijwerken","update_locale":"Bijwerken","your_locale":"Uw taal","your_repos":"Uw repositories","token":"Token"}},"queue":"Wachtrij","repositories":{"branch":"Tak","duration":"Duur","finished_at":"Voltooid","image_url":"Afbeeldings URL","message":"Bericht","started_at":"Gestart","tabs":{"branches":"Tak samenvatting","build":"Bouw","build_history":"Bouw geschiedenis","current":"Huidig","job":"Taak"},"commit":"Commit","markdown":"Markdown","rdoc":"RDOC","textile":"Textile"},"repository":{"duration":"Duur"},"statistics":{"index":{"build_count":"Bouw aantal","count":"Aantal","last_month":"voorbije maand","repo_growth":"Repository groei","total_builds":"Bouw totaal","total_projects":"Projecten/Repository totaal"}},"workers":"Machines","home":{"name":"Hoofdpagina"}},"pl":{"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} godzina","other":"%{count} godziny"},"minutes_exact":{"one":"%{count} minuta","other":"%{count} minuty"},"seconds_exact":{"one":"%{count} sekunda","other":"%{count} sekundy"}}},"workers":"Workers","queue":"Kolejka","no_job":"Brak zadań","repositories":{"branch":"Gałąź","image_url":"URL obrazka","markdown":"Markdown","textile":"Textile","rdoc":"RDOC","commit":"Commit","message":"Opis","started_at":"Rozpoczęto","duration":"Czas trwania","finished_at":"Zakończono","tabs":{"current":"Aktualny","build_history":"Historia Buildów","branches":"Wszystkie Gałęzie","build":"Build","job":"Zadanie"}},"build":{"job":"Zadanie","duration":"Czas trwania","finished_at":"Zakończono"},"jobs":{"messages":{"sponsored_by":"Te testy zostały uruchomione na maszynie sponsorowanej przez"},"build_matrix":"Macierz Buildów","allowed_failures":"Dopuszczalne Niepowodzenia","author":"Autor","config":"Konfiguracja","compare":"Porównanie","committer":"Committer","branch":"Gałąź","commit":"Commit","message":"Opis","started_at":"Rozpoczęto","duration":"Czas trwania","finished_at":"Zakończono","sponsored_by":"Te testy zostały uruchomione na maszynie sponsorowanej przez"},"builds":{"name":"Build","messages":{"sponsored_by":"Te testy zostały uruchomione na maszynie sponsorowanej przez"},"build_matrix":"Macierz Buildów","allowed_failures":"Dopuszczalne Niepowodzenia","author":"Autor","config":"Konfiguracja","compare":"Porównanie","committer":"Komitujący","branch":"Gałąź","commit":"Commit","message":"Opis","started_at":"Rozpoczęto","duration":"Czas trwania","finished_at":"Zakończono"},"layouts":{"top":{"home":"Start","blog":"Blog","docs":"Dokumentacja","stats":"Statystki","github_login":"Zaloguj się przy pomocy Githuba","profile":"Profil","sign_out":"Wyloguj się"},"application":{"fork_me":"Fork me on Github","recent":"Ostatnie","search":"Wyniki","sponsers":"Sponsorzy","sponsors_link":"Zobacz naszych wszystkich wspaniałych sponsorów &rarr;","my_repositories":"Moje repozytoria"},"about":{"alpha":"To wciąż jest wersja alpha.","messages":{"alpha":"Proszę <strong>nie</strong> traktuj tego jako stabilnej usługi. Wciąż nam wiele do tego brakuje! Więcej informacji znajdziesz <a href=\'https://github.com/travis-ci\'>tutaj.</a>"},"join":"Pomóż i dołącz do nas!","mailing_list":"Lista mailingowa","repository":"Repozytorium","twitter":"Twitter"},"mobile":{"author":"Autor","build":"Build","build_matrix":"Macierz Buildów","commit":"Commit","committer":"Komitujący","compare":"Porównianie","config":"Konfiguracja","duration":"Czas trwania","finished_at":"Zakończono","job":"Zadanie","log":"Log"}},"profiles":{"show":{"email":"Email","github":"Github","message":{"your_repos":"  Przesuń suwak poniżej, aby włączyć Travisa, dla twoich projektów, a następnie umieść swój kod na GitHubie.<br />\\n Aby testować swój kod przy użyciu wielu wersji Rubiego, zobacz","config":"jak skonfigurować niestandardowe opcje builda"},"messages":{"notice":"Aby zacząć, przeczytaj nasz <a href=\\"http://about.travis-ci.org/docs/user/getting-started/\\">Przewodnik </a>.\\n  <small>Zajmie ci to tylko kilka minut.</small>"},"token":"Token","your_repos":"Twoje repozytoria"}},"statistics":{"index":{"count":"Ilość","repo_growth":"Przyrost repozytoriów","total_projects":"Łącznie projektów/repozytoriów","build_count":"Liczba buildów","last_month":"ostatni miesiąc","total_builds":"Łącznie Buildów"}},"date":{"abbr_day_names":["nie","pon","wto","śro","czw","pią","sob"],"abbr_month_names":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"day_names":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"formats":{"default":"%d-%m-%Y","long":"%B %d, %Y","short":"%d %b"},"month_names":["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],"order":["day","month","year"]},"errors":{"format":"%{attribute} %{message}","messages":{"accepted":"musi zostać zaakceptowane","blank":"nie może być puste"}},"locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}},"pt-BR":{"admin":{"actions":{"create":"criar","created":"criado","delete":"deletar","deleted":"deletado","update":"atualizar","updated":"atualizado"},"credentials":{"log_out":"Deslogar"},"dashboard":{"add_new":"Adicionar novo","ago":"atrás","last_used":"Última utilização","model_name":"Nome do modelo","modify":"Modificar","name":"Dashboard","pagename":"Administração do site","records":"Registros","show":"Mostrar"},"delete":{"confirmation":"Sim, tenho certeza","flash_confirmation":"%{name} foi destruído com sucesso"},"flash":{"error":"%{name} falhou ao %{action}","noaction":"Nenhuma ação foi tomada","successful":"%{name} foi %{action} com sucesso"},"history":{"name":"Histórico","no_activity":"Nenhuma Atividade","page_name":"Histórico para %{name}"},"list":{"add_new":"Adicionar novo","delete_action":"Deletar","delete_selected":"Deletar selecionados","edit_action":"Editar","search":"Buscar","select":"Selecionar %{name} para editar","select_action":"Selecionar","show_all":"Mostrar todos"},"new":{"basic_info":"Informações básicas","cancel":"Cancelar","chosen":"Escolhido %{name}","chose_all":"Escolher todos","clear_all":"Limpar todos","many_chars":"caracteres ou menos.","one_char":"caractere.","optional":"Opcional","required":"Requerido","save":"Salvar","save_and_add_another":"Salvar e adicionar outro","save_and_edit":"Salvar e alterar","select_choice":"Selecione e clique"}},"build":{"duration":"Duração","finished_at":"Concluído em","job":"Trabalho"},"builds":{"allowed_failures":"Falhas Permitidas","author":"Autor","branch":"Branch","build_matrix":"Matriz de Build","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duração","finished_at":"Concluído em","message":"Mensagem","messages":{"sponsored_by":"Esta série de testes foi executada em uma caixa de processos patrocinada por"},"name":"Build","started_at":"Iniciou em"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} hora","other":"%{count} horas"},"minutes_exact":{"one":"%{count} minuto","other":"%{count} minutos"},"seconds_exact":{"one":"%{count} segundo","other":"%{count} segundos"}}},"devise":{"confirmations":{"confirmed":"Sua conta foi confirmada com sucesso. Você agora está logado.","send_instructions":"Você receberá um email com instruções de como confirmar sua conta em alguns minutos."},"failure":{"inactive":"Sua conta ainda não foi ativada.","invalid":"Email ou senha inválidos.","invalid_token":"Token de autenticação inválido.","locked":"Sua conta está trancada.","timeout":"Sua sessão expirou, por favor faça seu login novamente.","unauthenticated":"Você precisa fazer o login ou cadastrar-se antes de continuar.","unconfirmed":"Você precisa confirmar sua conta antes de continuar."},"mailer":{"confirmation_instructions":{"subject":"Instruções de confirmação"},"reset_password_instructions":{"subject":"Instruções de atualização de senha"},"unlock_instructions":{"subject":"Instruções de destrancamento"}},"passwords":{"send_instructions":"Você receberá um email com instruções de como atualizar sua senha em alguns minutos.","updated":"Sua senha foi alterada com sucesso. Você agora está logado."},"registrations":{"destroyed":"Tchau! Sua conta foi cancelada com sucesso. Esperamos vê-lo novamente em breve!","signed_up":"Você se cadastrou com sucesso. Se ativada, uma confirmação foi enviada para seu email.","updated":"Você atualizou sua conta com sucesso."},"sessions":{"signed_in":"Logado com sucesso.","signed_out":"Deslogado com sucesso."},"unlocks":{"send_instructions":"Você receberá um email com instruções de como destrancar sua conta em alguns minutos.","unlocked":"Sua conta foi destrancada com sucesso. Você agora está logado."}},"errors":{"messages":{"already_confirmed":"já foi confirmado","not_found":"não encontrado","not_locked":"não estava trancado"}},"home":{"name":"home"},"jobs":{"allowed_failures":"Falhas Permitidas","author":"Autor","branch":"Branch","build_matrix":"Matriz de Build","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duração","finished_at":"Concluído em","message":"Mensagem","messages":{"sponsored_by":"Esta série de testes foi executada em uma caixa de processos patrocinada por"},"started_at":"Iniciou em"},"layouts":{"about":{"alpha":"Isto é um alpha.","join":"Junte-se à nós e ajude!","mailing_list":"Lista de email","messages":{"alpha":"Por favor, <strong>não</strong> considere isto um serviço estável. Estamos muito longe disso! Mais informações <a href=\'https://github.com/travis-ci\'>aqui.</a>"},"repository":"Repositório","twitter":"Twitter"},"application":{"fork_me":"Faça fork no Github","my_repositories":"Meus Repositórios","recent":"Recentes","search":"Buscar","sponsers":"Patrocinadores","sponsors_link":"Conheça todos os nossos patrocinadores &rarr;"},"mobile":{"author":"Autor","build":"Build","build_matrix":"Matriz de Build","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duração","finished_at":"Concluído em","job":"Trabalho","log":"Log"},"top":{"admin":"Admin","blog":"Blog","docs":"Documentação","github_login":"Logue com o Github","home":"Home","profile":"Perfil","sign_out":"Sair","stats":"Estatísticas"}},"locales":{"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","ru":"Русский","pt-BR":"português brasileiro"},"no_job":"Não há trabalhos","profiles":{"show":{"email":"Email","github":"Github","message":{"config":"como configurar opções de build","your_repos":"Use os botões abaixo para ligar ou desligar o hook de serviço do Travis para seus projetos, e então, faça um push para o Github.<br />Para testar com múltiplas versões do Ruby, leia"},"messages":{"notice":"Para começar, leia nosso <a href=\\"http://about.travis-ci.org/docs/user/getting-started/\\">Guia de início</a>. <small>Só leva alguns minutinhos.</small>"},"token":"Token","update":"Atualizar","update_locale":"Atualizar","your_locale":"Sua língua","your_repos":"Seus Repositórios"}},"queue":"Fila","repositories":{"branch":"Branch","commit":"Commit","duration":"Duração","finished_at":"Concluído em","image_url":"URL da imagem","markdown":"Markdown","message":"Mensagem","rdoc":"RDOC","started_at":"Iniciou em","tabs":{"branches":"Sumário do Branch","build":"Build","build_history":"Histórico de Build","current":"Atual","job":"Trabalho"},"textile":"Textile"},"repository":{"duration":"Duração"},"statistics":{"index":{"build_count":"Número de Builds","count":"Número","last_month":"último mês","repo_growth":"Crescimento de Repositório","total_builds":"Total de Builds","total_projects":"Total de Projetos/Repositórios"}},"workers":"Processos"},"ru":{"admin":{"actions":{"create":"создать","created":"создано","delete":"удалить","deleted":"удалено","update":"обновить","updated":"обновлено"},"credentials":{"log_out":"Выход"},"dashboard":{"add_new":"Добавить","ago":"назад","last_used":"Использовалось в последний раз","model_name":"Имя модели","modify":"Изменить","name":"Панель управления","pagename":"Управление сайтом","records":"Записи","show":"Показать"},"delete":{"confirmation":"Да, я уверен","flash_confirmation":"%{name} успешно удалено"},"history":{"name":"История","no_activity":"Нет активности","page_name":"История %{name}"},"list":{"add_new":"Добавить","delete_action":"Удалить","delete_selected":"Удалить выбранные","edit_action":"Редактировать","search":"Поиск","select":"Для редактирования выберите %{name}","select_action":"Выбрать","show_all":"Показать все"},"new":{"basic_info":"Основная информация","cancel":"Отмена","chosen":"Выбрано %{name}","chose_all":"Выбрать все","clear_all":"Очистить все","one_char":"символ.","optional":"Необязательно","required":"Обязательно","save":"Сохранить","save_and_add_another":"Сохранить и добавить другое","save_and_edit":"Сохранить и продолжить редактирование","select_choice":"Выберите и кликните","many_chars":"символов или меньше."},"flash":{"error":"%{name} не удалось %{action}","noaction":"Никаких действий не произведено","successful":"%{name} было успешно %{action}"}},"build":{"duration":"Длительность","finished_at":"Завершен","job":"Задача"},"builds":{"allowed_failures":"Допустимые неудачи","author":"Автор","branch":"Ветка","build_matrix":"Матрица","commit":"Коммит","committer":"Коммитер","compare":"Дифф","config":"Конфигурация","duration":"Длительность","finished_at":"Завершен","message":"Комментарий","messages":{"sponsored_by":"Эта серия тестов была запущена на машине, спонсируемой"},"name":"Билд","started_at":"Начало"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} час","few":"%{count} часа","many":"%{count} часов","other":"%{count} часа"},"minutes_exact":{"one":"%{count} минута","few":"%{count} минуты","many":"%{count} минут","other":"%{count} минуты"},"seconds_exact":{"one":"%{count} секунда","few":"%{count} секунды","many":"%{count} секунд","other":"%{count} секунды"}}},"devise":{"confirmations":{"confirmed":"Ваш аккаунт успешно подтвержден. Приветствуем!","send_instructions":"В течении нескольких минут вы получите электронное письмо с инструкциями для прохождения процедуры подтверждения аккаунта."},"failure":{"inactive":"Ваш аккаунт еще не активирован.","invalid":"Ошибка в адресе почты или пароле.","invalid_token":"Неправильный токен аутентификации.","locked":"Ваш аккаунт заблокирован.","timeout":"Сессия окончена. Для продолжения работы войдите снова.","unauthenticated":"Вам нужно войти или зарегистрироваться.","unconfirmed":"Вы должны сначала подтвердить свой аккаунт."},"mailer":{"confirmation_instructions":{"subject":"Инструкции для подтверждению аккаунта"},"reset_password_instructions":{"subject":"Инструкции для сброса пароля"},"unlock_instructions":{"subject":"Инструкции для разблокирования аккаунта"}},"passwords":{"send_instructions":"В течении нескольких минут вы получите электронное письмо с инструкциями для сброса пароля.","updated":"Ваш пароль успешно изменен. Приветствуем!"},"registrations":{"destroyed":"Ваш аккаунт был успешно удален. Живите долго и процветайте!","signed_up":"Вы успешно прошли регистрацию. Инструкции для подтверждения аккаунта отправлены на ваш электронный адрес.","updated":"Аккаунт успешно обновлен."},"sessions":{"signed_in":"Приветствуем!","signed_out":"Удачи!"},"unlocks":{"send_instructions":"В течении нескольких минут вы получите электронное письмо с инструкциям для разблокировния аккаунта.","unlocked":"Ваш аккаунт успешно разблокирован. Приветствуем!"}},"errors":{"messages":{"already_confirmed":"уже подтвержден","not_found":"не найден","not_locked":"не заблокирован"}},"home":{"name":"Главная"},"jobs":{"allowed_failures":"Допустимые неудачи","author":"Автор","branch":"Ветка","build_matrix":"Матрица","commit":"Коммит","committer":"Коммитер","compare":"Сравнение","config":"Конфигурация","duration":"Длительность","finished_at":"Завершен","message":"Комментарий","messages":{"sponsored_by":"Эта серия тестов была запущена на машине спонсируемой"},"started_at":"Начало"},"layouts":{"about":{"alpha":"Это альфа-версия","join":"Присоединяйтесь к нам и помогайте!","mailing_list":"Лист рассылки","messages":{"alpha":"Пожалуйста, <strong>не</strong> считайте данный сервис стабильным. Мы еще очень далеки от стабильности! <a href=\'https://github.com/travis-ci\'>Подробности</a>"},"repository":"Репозиторий","twitter":"Twitter"},"application":{"fork_me":"Fork me on Github","my_repositories":"Мои репозитории","recent":"Недавние","search":"Поиск","sponsers":"Спонсоры","sponsors_link":"Список всех наших замечательных спонсоров &rarr;"},"mobile":{"author":"Автор","build":"Сборка","build_matrix":"Матрица сборок","commit":"Коммит","committer":"Коммитер","compare":"Сравнение","config":"Конфигурация","duration":"Длительность","finished_at":"Завершен","job":"Задача","log":"Журнал"},"top":{"admin":"Управление","blog":"Блог","docs":"Документация","github_login":"Войти через Github","home":"Главная","profile":"Профиль","sign_out":"Выход","stats":"Статистика"}},"no_job":"Очередь пуста","profiles":{"show":{"email":"Электронная почта","github":"Github","message":{"config":"как настроить специальные опции билда","your_repos":"Используйте переключатели, чтобы включить Travis service hook для вашего проекта, а потом отправьте код на GitHub.<br />\\nДля тестирования на нескольких версиях Ruby смотрите"},"messages":{"notice":"Перед началом, пожалуйста, прочтите <a href=\\"http://about.travis-ci.org/docs/user/getting-started/\\">Руководство для быстрого старта</a>. <small>Это займет всего несколько минут.</small>"},"token":"Токен","update":"Обновить","update_locale":"Обновить","your_locale":"Ваш язык","your_repos":"Ваши репозитории"}},"queue":"Очередь","repositories":{"branch":"Ветка","commit":"Коммит","duration":"Длительность","finished_at":"Завершен","image_url":"URL изображения","markdown":"Markdown","message":"Комментарий","rdoc":"RDOC","started_at":"Начало","tabs":{"branches":"Статус веток","build":"Билд","build_history":"История","current":"Текущий","job":"Задача"},"textile":"Textile"},"repository":{"duration":"Длительность"},"statistics":{"index":{"build_count":"Количество билдов","count":"Количество","last_month":"прошлый месяц","repo_growth":"Рост числа репозиториев","total_builds":"Всего билдов","total_projects":"Всего проектов/репозиториев"}},"workers":"Машины","locales":{"en":"English","es":"Español","ja":"日本語","ru":"Русский","fr":"Français","nb":"Norsk Bokmål","pl":"Polski","nl":"Nederlands","pt-BR":"português brasileiro"}}};\n\n\n})();\n//@ sourceURL=config/locales'
 ),minispade.register("ext/ember/bound_helper","(function() {// https://gist.github.com/2018185\n// For reference: https://github.com/wagenet/ember.js/blob/ac66dcb8a1cbe91d736074441f853e0da474ee6e/packages/ember-handlebars/lib/views/bound_property_view.js\nvar BoundHelperView = Ember.View.extend(Ember._Metamorph, {\n\n  context: null,\n  options: null,\n  property: null,\n  // paths of the property that are also observed\n  propertyPaths: [],\n\n  value: Ember.K,\n\n  valueForRender: function() {\n    var value = this.value(Ember.get(this.context, this.property), this.options);\n    if (this.options.escaped) { value = Handlebars.Utils.escapeExpression(value); }\n    return value;\n  },\n\n  render: function(buffer) {\n    buffer.push(this.valueForRender());\n  },\n\n  valueDidChange: function() {\n    if (this.morph.isRemoved()) { return; }\n    this.morph.html(this.valueForRender());\n  },\n\n  didInsertElement: function() {\n    this.valueDidChange();\n  },\n\n  init: function() {\n    this._super();\n    Ember.addObserver(this.context, this.property, this, 'valueDidChange');\n    this.get('propertyPaths').forEach(function(propName) {\n        Ember.addObserver(this.context, this.property + '.' + propName, this, 'valueDidChange');\n    }, this);\n  },\n\n  destroy: function() {\n    Ember.removeObserver(this.context, this.property, this, 'valueDidChange');\n    this.get('propertyPaths').forEach(function(propName) {\n        this.context.removeObserver(this.property + '.' + propName, this, 'valueDidChange');\n    }, this);\n    this._super();\n  }\n\n});\n\nEmber.registerBoundHelper = function(name, func) {\n  var propertyPaths = Array.prototype.slice.call(arguments, 2);\n  Ember.Handlebars.registerHelper(name, function(property, options) {\n    var data = options.data,\n        view = data.view,\n        ctx  = this;\n\n    var bindView = view.createChildView(BoundHelperView, {\n      property: property,\n      propertyPaths: propertyPaths,\n      context: ctx,\n      options: options.hash,\n      value: func\n    });\n\n    view.appendChild(bindView);\n  });\n};\n\n\n})();\n//@ sourceURL=ext/ember/bound_helper"
 ),minispade.register("ext/ember/namespace","(function() {Em.Namespace.reopen = Em.Namespace.reopenClass\n\n\n\n})();\n//@ sourceURL=ext/ember/namespace"
diff --git a/public/version b/public/version
index a28d010c..c1ce1f29 100644
--- a/public/version
+++ b/public/version
@@ -1 +1 @@
-9937c24d
\ No newline at end of file
+73435ff6
\ No newline at end of file