Full Code of moudy/agenda-ui for AI

master 74ca08d69ba9 cached
131 files
172.7 KB
57.1k tokens
19 symbols
1 requests
Download .txt
Showing preview only (203K chars total). Download the full file or copy to clipboard to get everything.
Repository: moudy/agenda-ui
Branch: master
Commit: 74ca08d69ba9
Files: 131
Total size: 172.7 KB

Directory structure:
gitextract_kuwiszd9/

├── .gitignore
├── .npmignore
├── README.md
├── app/
│   ├── .gitignore
│   ├── .jshintrc
│   ├── Brocfile.js
│   ├── README.md
│   ├── app/
│   │   ├── adapters/
│   │   │   ├── .gitkeep
│   │   │   └── application.js
│   │   ├── app.js
│   │   ├── clock.js
│   │   ├── components/
│   │   │   └── .gitkeep
│   │   ├── controllers/
│   │   │   ├── .gitkeep
│   │   │   ├── application.js
│   │   │   ├── item.js
│   │   │   ├── jobs/
│   │   │   │   ├── feed-item.js
│   │   │   │   └── feed.js
│   │   │   └── jobs.js
│   │   ├── helpers/
│   │   │   ├── .gitkeep
│   │   │   ├── highlight-object.js
│   │   │   └── time-tag.js
│   │   ├── index.html
│   │   ├── initializers/
│   │   │   ├── .gitkeep
│   │   │   └── clock.js
│   │   ├── mixins/
│   │   │   └── .gitkeep
│   │   ├── models/
│   │   │   ├── .gitkeep
│   │   │   ├── definition.js
│   │   │   └── job.js
│   │   ├── router.js
│   │   ├── routes/
│   │   │   ├── .gitkeep
│   │   │   ├── application.js
│   │   │   ├── jobs/
│   │   │   │   └── feed.js
│   │   │   └── jobs.js
│   │   ├── serializers/
│   │   │   └── application.js
│   │   ├── styles/
│   │   │   ├── .gitkeep
│   │   │   ├── app.scss
│   │   │   ├── base.scss
│   │   │   ├── job-card.scss
│   │   │   ├── loader.scss
│   │   │   ├── variables.scss
│   │   │   └── vendor/
│   │   │       └── highlight.scss
│   │   ├── templates/
│   │   │   ├── -header.hbs
│   │   │   ├── -loader.hbs
│   │   │   ├── -sidebar.hbs
│   │   │   ├── .gitkeep
│   │   │   ├── application.hbs
│   │   │   ├── components/
│   │   │   │   └── .gitkeep
│   │   │   ├── job.hbs
│   │   │   ├── jobs/
│   │   │   │   └── loading.hbs
│   │   │   └── jobs.hbs
│   │   ├── utils/
│   │   │   └── .gitkeep
│   │   └── views/
│   │       ├── .gitkeep
│   │       ├── job.js
│   │       └── jobs/
│   │           └── feed.js
│   ├── bower.json
│   ├── config/
│   │   └── environment.js
│   ├── package.json
│   ├── public/
│   │   └── .gitkeep
│   ├── server/
│   │   ├── .jshintrc
│   │   ├── index.js
│   │   └── routes/
│   │       └── .gitkeep
│   ├── testem.json
│   ├── tests/
│   │   ├── .jshintrc
│   │   ├── helpers/
│   │   │   ├── resolver.js
│   │   │   └── start-app.js
│   │   ├── index.html
│   │   ├── test-helper.js
│   │   └── unit/
│   │       ├── .gitkeep
│   │       ├── components/
│   │       │   └── nav-filter-test.js
│   │       └── routes/
│   │           └── application-test.js
│   └── vendor/
│       └── highlight/
│           ├── CHANGES.md
│           ├── LICENSE
│           ├── README.md
│           ├── README.ru.md
│           ├── highlight.pack.js
│           └── styles/
│               ├── arta.css
│               ├── ascetic.css
│               ├── atelier-dune.dark.css
│               ├── atelier-dune.light.css
│               ├── atelier-forest.dark.css
│               ├── atelier-forest.light.css
│               ├── atelier-heath.dark.css
│               ├── atelier-heath.light.css
│               ├── atelier-lakeside.dark.css
│               ├── atelier-lakeside.light.css
│               ├── atelier-seaside.dark.css
│               ├── atelier-seaside.light.css
│               ├── brown_paper.css
│               ├── codepen-embed.css
│               ├── color-brewer.css
│               ├── dark.css
│               ├── default.css
│               ├── docco.css
│               ├── far.css
│               ├── foundation.css
│               ├── github.css
│               ├── googlecode.css
│               ├── hybrid.css
│               ├── idea.css
│               ├── ir_black.css
│               ├── kimbie.dark.css
│               ├── kimbie.light.css
│               ├── magula.css
│               ├── mono-blue.css
│               ├── monokai.css
│               ├── monokai_sublime.css
│               ├── obsidian.css
│               ├── paraiso.dark.css
│               ├── paraiso.light.css
│               ├── pojoaque.css
│               ├── railscasts.css
│               ├── rainbow.css
│               ├── school_book.css
│               ├── solarized_dark.css
│               ├── solarized_light.css
│               ├── sunburst.css
│               ├── tomorrow-night-blue.css
│               ├── tomorrow-night-bright.css
│               ├── tomorrow-night-eighties.css
│               ├── tomorrow-night.css
│               ├── tomorrow.css
│               ├── vs.css
│               ├── xcode.css
│               └── zenburn.css
├── dev.js
├── index.js
├── lib/
│   ├── api.js
│   ├── index.html
│   └── store.js
├── package.json
└── scripts/
    └── build

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
.DS_Store
node_modules/
.sass-cache/
/tmp/
/assets
/app/dist
/app/tmp
npm-debug.log


================================================
FILE: .npmignore
================================================
/tmp
/app
/dev.js
/scripts


================================================
FILE: README.md
================================================

# DEPRECIATED
Try https://github.com/agenda/agendash

# Agenda UI

A UI to view [Agenda](https://github.com/rschmukler/agenda) jobs.

![Agenda UI Screenshot](https://raw.githubusercontent.com/moudy/agenda-ui/screenshot/agenda-ui-screenshot.png)


### Install
```
npm install --save agenda-ui
```

### Usage
The Agenda UI is middleware you can mount at a path in your express app.
```js
var express = require('express');
var Agenda = require('agenda');
var agendaUI = require('agenda-ui');

var app = express();
var agenda = new Agenda(...)

app.use('/agenda-ui', agendaUI(agenda, {poll: 1000}));
```

### Documentation
#### agendaUI(agendaInstance, options)
The first argument is the agenda instance. The second is an options object. Currently the only options is `poll`. This sets the interval the app polls for chnages. It can also be set to `false` to not poll at all.


### Todo and Ideas
- pagination
- more human friendly countdown time format
- a way to view a specific job (i.e. /jobs/:jobId)
- run/cancel job
- tests


### Developing
This is an Ember app that gets built on `prepublish`.

To build the app, you will need Bower installed globally (`npm install bower -g`).  After Bower is available, run `npm install` and then `bower install` in the `app/` directory.

To run the application locally with sample jobs, run `npm run dev` and `ember serve` in the `/app` directory, then visit [http://localhost:3022/](http://localhost:3022/).

# License
(The MIT License)

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the 'Software'), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: app/.gitignore
================================================
# See http://help.github.com/ignore-files/ for more about ignoring files.

# compiled output
/dist
/tmp

# dependencies
/node_modules
/bower_components/*

# misc
/.sass-cache
/connect.lock
/coverage/*
/libpeerconnection.log
npm-debug.log
testem.log


================================================
FILE: app/.jshintrc
================================================
{
  "predef": {
    "document": true,
    "window": true,
    "moment": true,
    "hljs": true,
    "AppENV": true
  },
  "browser" : true,
  "boss" : true,
  "curly": true,
  "debug": false,
  "devel": true,
  "eqeqeq": true,
  "evil": true,
  "forin": false,
  "immed": false,
  "laxbreak": false,
  "laxcomma": true,
  "newcap": true,
  "noarg": true,
  "noempty": false,
  "nonew": false,
  "nomen": false,
  "onevar": false,
  "plusplus": false,
  "regexp": false,
  "undef": true,
  "sub": true,
  "strict": false,
  "white": false,
  "eqnull": true,
  "esnext": true,
  "unused": true
}


================================================
FILE: app/Brocfile.js
================================================
/* global require, module */

var EmberApp = require('ember-cli/lib/broccoli/ember-app');

var app = new EmberApp();

app.import('bower_components/moment/moment.js');
app.import('vendor/highlight/highlight.pack.js');

// Use `app.import` to add additional libraries to the generated
// output files.
//
// If you need to use different assets in different
// environments, specify an object as the first parameter. That
// object's keys should be the environment name and the values
// should be the asset to use in that environment.
//
// If the library that you are including contains AMD or ES6
// modules that you would like to import into your application
// please specify an object with the list of modules as keys
// along with the exports of each module as its value.

module.exports = app.toTree();


================================================
FILE: app/README.md
================================================
# App

This README outlines the details of collaborating on this Ember application.

## Installation

* `git clone` this repository
* `npm install`
* `bower install`

## Running

* `ember server`
* Visit your app at http://localhost:4200.

## Running Tests

* `ember test`
* `ember test --server`

## Building

* `ember build`

For more information on using ember-cli, visit [http://iamstef.net/ember-cli/](http://iamstef.net/ember-cli/).


================================================
FILE: app/app/adapters/.gitkeep
================================================


================================================
FILE: app/app/adapters/application.js
================================================
import Ember from 'ember';
import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  namespace: Ember.ENV.NAMESPACE
});


================================================
FILE: app/app/app.js
================================================
import Ember from 'ember';
import Resolver from 'ember/resolver';
import loadInitializers from 'ember/load-initializers';

Ember.MODEL_FACTORY_INJECTIONS = true;

var App = Ember.Application.extend({
  modulePrefix: 'app', // TODO: loaded via config
  Resolver: Resolver
});

loadInitializers(App, 'app');

export default App;


================================================
FILE: app/app/clock.js
================================================
import Ember from 'ember';

var TICK_INTERVAL = 500;

export default Ember.Object.extend({
  second: null

, minute: null

, hour:   null

, init: function() {
    this.tick();
  }

, tick: function() {
    var now = new Date();

    this.setProperties({
      second: now.getSeconds()
    , minute: now.getMinutes()
    , hour:   now.getHours()
    });

    var self = this;
    setTimeout(function(){ self.tick(); }, TICK_INTERVAL);
  }

});



================================================
FILE: app/app/components/.gitkeep
================================================


================================================
FILE: app/app/controllers/.gitkeep
================================================


================================================
FILE: app/app/controllers/application.js
================================================
import Ember from 'ember';

export default Ember.Controller.extend({

  pollInterval: Ember.ENV.POLL_INTERVAL

});



================================================
FILE: app/app/controllers/item.js
================================================
import Ember from 'ember';

var PRIORITY_MAP = {
  '20': 'highest'
, '10': 'high'
, '0': 'default'
, '-10': 'low'
, '-20': 'lowest'
};

var JobController = Ember.ObjectController.extend({

  nextRunAtFromNow: function () {
    var next = moment.utc(this.get('nextRunAt'));
    var now = moment.utc();
    var diff = next.diff(now);
    var ret = Math.floor(diff / 1000);
    if (ret < 0) {
      ret = 0;
    }
    return ret;
  }.property('clock.second')

, priorityHuman: function () {
    return PRIORITY_MAP[this.get('priority')];
  }.property('priority')

, isRunning: Ember.computed.bool('lockedAt')

, actions: {
    toggleDataExpand: function () {
      this.toggleProperty('dataExpanded');
    }

  , toggleDetailsExpand: function () {
      this.toggleProperty('detailsExpanded');
    }
  }


});

export default JobController;


================================================
FILE: app/app/controllers/jobs/feed-item.js
================================================
import Ember from 'ember';

var PRIORITY_MAP = {
  '20': 'highest'
, '10': 'high'
, '0': 'default'
, '-10': 'low'
, '-20': 'lowest'
};

var JobController = Ember.ObjectController.extend({

  nextRunAtFromNow: function () {
    var next = moment.utc(this.get('nextRunAt'));
    var now = moment.utc();
    var diff = next.diff(now);
    var ret = Math.floor(diff / 1000);
    if (ret < 0) {
      ret = 0;
    }
    return ret;
  }.property('clock.second')

, priorityHuman: function () {
    return PRIORITY_MAP[this.get('priority')];
  }.property('priority')

, isRunning: Ember.computed.bool('lockedAt')

, actions: {
    toggleDataExpand: function () {
      this.toggleProperty('dataExpanded');
    }

  , toggleDetailsExpand: function () {
      this.toggleProperty('detailsExpanded');
    }
  }


});

export default JobController;


================================================
FILE: app/app/controllers/jobs/feed.js
================================================
import Ember from 'ember';

export default Ember.ArrayController.extend({

  needs: ['jobs']

, queryParams: ['filter', 'job']

, filter: Ember.computed.alias('controllers.jobs.filter')

, job: Ember.computed.alias('controllers.jobs.job')

, meta: function () {
    return this.get('content.meta');
  }.property('content')

, itemController: 'jobs/feed-item'

, sortProperties: [
    'type'
  , 'nextRunAt'
  , 'isFinished'
  ]

, orderBy: function (a, b) {
    var ret = 0;

    if (a.get('isFinished') && b.get('isFinished')) {
      ret = (a.get('lastRunAt') > b.get('lastRunAt')) ? -1 : 1;
    } else if (a.get('isFinished') || b.get('isFinished')) {
      ret = (a.get('isFinished')) ? -1 : 1;
    } else {
      ret = (a.get('nextRunAt') < b.get('nextRunAt')) ? -1 : 1;
    }

    return ret;
  }

});



================================================
FILE: app/app/controllers/jobs.js
================================================
import Ember from 'ember';

export default Ember.Controller.extend({

  needs: ['jobs/feed']

, filter: 'future'

, job: 'all'

, meta: function () {
    return this.store.metadataFor('job');
  }.property('controllers.jobs/feed.content', 'filter', 'job')

, sortedDefinitions: function () {
    return this.get('definitions').sortBy('sortValue', 'id');
  }.property('definitions')

});


================================================
FILE: app/app/helpers/.gitkeep
================================================


================================================
FILE: app/app/helpers/highlight-object.js
================================================
import Ember from 'ember';

 export default Ember.Handlebars.makeBoundHelper(function(object, replacer, spacer){
  object = object || {};
  var string = JSON.stringify(object, replacer, spacer);
  string = string.replace(/^\s+|\s+$/g,'');
  string = hljs.highlightAuto(string).value;
  return new Ember.Handlebars.SafeString(string);
 });


================================================
FILE: app/app/helpers/time-tag.js
================================================
import Ember from 'ember';

export default Ember.Handlebars.makeBoundHelper(function(date, object) {
  if (date) {
    var options = object.hash;
    options.format = options.format || 'H:mm:ss, dd MMM Do';
    var formatted = moment.utc(date).format(options.format);
    var ret = '<time title="'+date+'" datetime="'+date+'" class="time">'+formatted+'</time>';
    if (options.prefix) {
      ret = options.prefix + ' ' + ret;
    }
    return new Ember.Handlebars.SafeString('<span class="time-container">'+ret+'</span>');
  }
});



================================================
FILE: app/app/index.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>App</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    {{BASE_TAG}}

    <link rel="stylesheet" href="assets/vendor.css">
    <link rel="stylesheet" href="assets/app.css">
  </head>
  <body>
    <script>
      window.AppENV = {{ENV}};
      window.EmberENV = window.AppENV.EmberENV;
    </script>
    <script src="assets/vendor.js"></script>
    <script src="assets/app.js"></script>
    <script>
      window.App = require('app/app')['default'].create(AppENV.APP);
    </script>
  </body>
</html>


================================================
FILE: app/app/initializers/.gitkeep
================================================


================================================
FILE: app/app/initializers/clock.js
================================================
import Clock from "../clock";

export default {

  name: 'clock'

, initialize: function(container) {
    container.register('clock:main', Clock, { singleton: true });
    container.typeInjection('controller', 'clock', 'clock:main');
  }

};



================================================
FILE: app/app/mixins/.gitkeep
================================================


================================================
FILE: app/app/models/.gitkeep
================================================


================================================
FILE: app/app/models/definition.js
================================================
import DS from 'ember-data';

var attr = DS.attr;

export default DS.Model.extend({

  name: attr('string')

, count: attr('number')

, sortValue: attr('number')

});



================================================
FILE: app/app/models/job.js
================================================
import DS from 'ember-data';

var attr = DS.attr;

export default DS.Model.extend({
  name: attr('string')
, jobData: attr()
, nextRunAt: attr('date')
, lastRunAt: attr('date')
, lastFinishedAt: attr('date')
, lastModifiedBy: attr('date')
, lockedAt: attr('date')
, failedAt: attr('date')
, failReason: attr('string')
, type: attr('string')
, repeatInterval: attr('string')
, priority: attr('number')

, isFinished: function () {
    return this.get('lastRunAt') && !this.get('isRepeating');
  }.property('lastRunAt')

, isRepeating: function () {
    return this.get('type') === 'single';
  }.property('type')

});



================================================
FILE: app/app/router.js
================================================
import Ember from 'ember';

var Router = Ember.Router.extend({

// TODO - figure out why this doesn't work when mounted on another app
// location: 'auto'

  rootUrl: '/' + Ember.ENV.NAMESPACE + '/'

});

Router.map(function() {
  this.route('application');
  this.resource('jobs', {path: '/'}, function () {
    this.route('feed', {path: '/'});
  });
});

export default Router;


================================================
FILE: app/app/routes/.gitkeep
================================================


================================================
FILE: app/app/routes/application.js
================================================
import Ember from 'ember';

export default Ember.Route.extend({
});


================================================
FILE: app/app/routes/jobs/feed.js
================================================
import Ember from 'ember';

var POLL_INTERVAL = Ember.ENV.POLL_INTERVAL;

export default Ember.Route.extend({

  activate: function () {
    Ember.run.cancel(this.timer);
    if (POLL_INTERVAL) {
      this.poll();
    }
  }

, queryParams: {
    filter: {
      refreshModel: true
    }
  , job: {
      refreshModel: true
    }
  }

, model: function (params) {
    var definition = this.store.getById('definition', params.job);

    var query = {
      filter: params.filter
    , name: definition.get('name')
    };

    return this.store.find('job', query);
  }

, poll: function () {
    this.timer = Ember.run.later(this, function () {
      console.log('polling');
      this.refresh().then(this.poll.bind(this));
    }, POLL_INTERVAL);
  }

});


================================================
FILE: app/app/routes/jobs.js
================================================
import Ember from 'ember';

export default Ember.Route.extend({

  model: function () {
    return this.store.find('definition');
  }

, setupController: function (controller, model) {
    controller.set('definitions', model);
  }

});


================================================
FILE: app/app/serializers/application.js
================================================
import DS from 'ember-data';

export default DS.RESTSerializer.extend({
  primaryKey: '_id'
});


================================================
FILE: app/app/styles/.gitkeep
================================================


================================================
FILE: app/app/styles/app.scss
================================================
@import 'base';

@import '../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap';
@import './vendor/highlight';

body {
  padding-top: $navbar-height + 20px;
}

ul, ol {
  margin: 0;
  padding: 0;
  list-style: none;
}

.navbar-brand {
  $logo-size: 41px;
  position: relative;
  padding-left: $logo-size + 10px;

  .logo {
    width: $logo-size;
    line-height: $logo-size;
    position: absolute;
    top: 2px;
    left: 10px;
    display: block;
    text-align: center;
    font-size: 30px;
  }
}

.text-overflow {
  @include text-overflow;
}

.nav-stacked > li {
  a {
    padding-right: 40px;

    .badge {
      position: absolute;
      right: 10px;
      top: 50%;
      @include transform(translateY(-50%));
    }
  }
}

ul.nav-filters {
  li {
    a { color: inherit; }
    .badge {
      color: $text-color;
      background-color: darken($gray-lighter, 5%);
    }
    &.text-success {
      .badge { color: inherit; }
      &, &:hover { color: $brand-success; }
    }
    &.text-info {
      .badge { color: inherit; }
      &, &:hover { color: $brand-info; }
    }
    &.text-danger {
      .badge { color: inherit; }
      &, &:hover { color: $brand-danger; }
    }
  }

  a {
    &:hover { background-color: lighten($gray-lighter, 5%); }
    &.active {
      &, &:hover { background-color: $gray-lighter; }
    }
  }
}

.sidebar {
  width: $sidebar-width;
  position: fixed;
  top: $navbar-height + 20px;
  bottom: 0;
  overflow-y: auto;
}

.feed {
  margin-left: $sidebar-width + 20px;
}

.loading-container {
  padding: 100px;
}

.centered {
  text-align: center;
}

@import 'loader';
@import 'job-card';


================================================
FILE: app/app/styles/base.scss
================================================
@import 'variables';
@import '../../node_modules/node-bourbon/assets/stylesheets/bourbon';



================================================
FILE: app/app/styles/job-card.scss
================================================
@import 'variables';


.fail-message {
  line-height: 28px;
  position: relative;
  padding: 10px;
}

.fail-icon {
  font-size: 18px;
  position: relative;
  top: 1px;
  font-weight: 700px;
  color: $brand-warning;
}

.panel-heading {
  position: relative;
}

.next-run-counter {
  position: absolute;
  top: 10px;
  right: 10px;
}

.job-data-preview {
  font-family: Consolas, "Liberation Mono", Courier, monospace;
  word-wrap: normal;
  background-color: #f8f8f8;
  line-height: 19px;
  overflow: auto;
  padding: 6px 10px;
  border-radius: 3px;
  white-space: nowrap;
  cursor: pointer;
  font-size: 13px;

  &.is-expanded {
    white-space: pre;
  }
}

.details-link {
  text-decoration: none;
  color: $light-text-color;
  font-size: 11px;
}

.job-details {
  .details {
    display: none;
    line-height: 1.4;
    margin-bottom: 10px;
    font-size: 13px;
  }

  label {
    width: 110px;
    text-align: right;
    display: inline-block;
    color: #999;
    margin-right: 4px;
  }

  &.is-expanded .details {
    display: block;
  }
}

$priority-color-low: $light-text-color;
$priority-color-high: rgb(194, 124, 0);
$priority-color-highest: rgb(255, 0, 0);

.meta-item {
  text-transform: capitalize;
}

.times {
  .time-container {
    display: block;
  }
}

.priority.highest {
  color: $priority-color-highest;
}
.priority.high {
  color: $priority-color-high;
}
.priority.low, .priority.lowest {
  color: $priority-color-low;
}


================================================
FILE: app/app/styles/loader.scss
================================================
@import 'base';

$loader-size: 20px;

.loader {
  display: inline-block;
}

.loader-circle {
  width: $loader-size;
  height: $loader-size;
  border-radius: 50%;
  background-color: $brand-color;
  display: inline-block;
  opacity: 0;
  @include animation-name(fadeIn);
  @include animation-duration(800ms);
  @include animation-direction(alternate);
  @include animation-fill-mode(backwards);
  @include animation-iteration-count(infinite);
  @include animation-timing-function(ease);

  &:nth-child(1) { @include animation-delay(100ms); }
  &:nth-child(2) { @include animation-delay(200ms); }
  &:nth-child(3) { @include animation-delay(300ms); }
}

@include keyframes(fadeIn) {
  from {
    opacity: 0;
    @include transform(scale(0.5));
  }
  to {
    opacity: 1;
    @include transform(scale(1));
  }
}


================================================
FILE: app/app/styles/variables.scss
================================================
$background-color: white;
$border-color: #ddd;
$brand-color: #12A1FF;
$active-color: $brand-color;
$fail-color: #ccbb00;
$light-text-color: #777;
$sidebar-width: 250px;

// Customize bootstrap
$grid-float-breakpoint: 100px;
$navbar-default-brand-color: $brand-color;
$brand-primary: $brand-color;
$font-family-base: "Proxima Nova", "Helvetica Neue", Helvetica, Arial, sans-serif;
$text-color: #7F8B91;
$body-bg: $background-color;
$navbar-default-bg: white;

$font-size-h1: 36px;
$font-size-h2: 22px;
$font-size-h3: 16px;



================================================
FILE: app/app/styles/vendor/highlight.scss
================================================
/*

github.com style (c) Vasily Polovnyov <vast@whiteants.net>

*/

.hljs {
  display: block; padding: 0.5em;
  color: #333;
  background: #f8f8f8
}

.hljs-comment,
.hljs-template_comment,
.diff .hljs-header,
.hljs-javadoc {
  color: #998;
  font-style: italic
}

.hljs-keyword,
.css .rule .hljs-keyword,
.hljs-winutils,
.javascript .hljs-title,
.nginx .hljs-title,
.hljs-subst,
.hljs-request,
.hljs-status {
  color: #333;
  font-weight: bold
}

.hljs-number,
.hljs-hexcolor,
.ruby .hljs-constant {
  color: #099;
}

.hljs-string,
.hljs-tag .hljs-value,
.hljs-phpdoc,
.tex .hljs-formula {
  color: #d14
}

.hljs-title,
.hljs-id,
.coffeescript .hljs-params,
.scss .hljs-preprocessor {
  color: #900;
  font-weight: bold
}

.javascript .hljs-title,
.lisp .hljs-title,
.clojure .hljs-title,
.hljs-subst {
  font-weight: normal
}

.hljs-class .hljs-title,
.haskell .hljs-type,
.vhdl .hljs-literal,
.tex .hljs-command {
  color: #458;
  font-weight: bold
}

.hljs-tag,
.hljs-tag .hljs-title,
.hljs-rules .hljs-property,
.django .hljs-tag .hljs-keyword {
  color: #000080;
  font-weight: normal
}

.hljs-attribute,
.hljs-variable,
.lisp .hljs-body {
  color: #008080
}

.hljs-regexp {
  color: #009926
}

.hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.lisp .hljs-keyword,
.tex .hljs-special,
.hljs-prompt {
  color: #990073
}

.hljs-built_in,
.lisp .hljs-title,
.clojure .hljs-built_in {
  color: #0086b3
}

.hljs-preprocessor,
.hljs-pragma,
.hljs-pi,
.hljs-doctype,
.hljs-shebang,
.hljs-cdata {
  color: #999;
  font-weight: bold
}

.hljs-deletion {
  background: #fdd
}

.hljs-addition {
  background: #dfd
}

.diff .hljs-change {
  background: #0086b3
}

.hljs-chunk {
  color: #aaa
}


================================================
FILE: app/app/templates/-header.hbs
================================================
<header class='navbar navbar-default navbar-fixed-top'>
<div class='container'>
  <div class='navbar-header'>
    {{#link-to 'jobs.feed' (query-params filter='future' job='all') class='navbar-brand'}}
      <span class='logo'>
        &#9997;
      </span>
      Agenda UI
    {{/link-to}}
  </div>

  <div class='navbar-text navbar-right'>
    {{#if pollInterval}}
      Polling for changes every {{pollInterval}}ms.
    {{else}}
      Not polling for changes.
    {{/if}}
  </div>
</div>
</header>


================================================
FILE: app/app/templates/-loader.hbs
================================================
  <div class='loader'>
    <div class='loader-circle'></div>
    <div class='loader-circle'></div>
    <div class='loader-circle'></div>
  </div>


================================================
FILE: app/app/templates/-sidebar.hbs
================================================
<aside class='sidebar'>

  <ul class="nav nav-pills nav-stacked nav-filters">
    <li class='text-info'>
      {{#link-to 'jobs.feed' (query-params filter='future')}}
        <div class='text-overflow'>Future</div>
        <span class='badge pull-right'>{{meta.future}}</span>
      {{/link-to}}
    </li>
    <li class='text-success'>
      {{#link-to 'jobs.feed' (query-params filter='completed')}}
        <div class='text-overflow'>Completed</div>
        <span class='badge pull-right'>{{meta.completed}}</span>
      {{/link-to}}
    </li>
    <li class='text-danger'>
      {{#link-to 'jobs.feed' (query-params filter='failed')}}
        <div class='text-overflow'>Failed</div>
        <span class='badge pull-right'>{{meta.failed}}</span>
      {{/link-to}}
    </li>

  <hr />

  <ul class="nav nav-pills nav-stacked">
    {{#each definition in sortedDefinitions}}
      <li>
        {{#link-to 'jobs.feed' (query-params job=definition.id)}}
          <div class='text-overflow'>{{definition.name}}</div>
          <span class='badge pull-right'>{{definition.count}}</span>
        {{/link-to}}
      </li>
    {{/each}}
  </ul>

</aside>



================================================
FILE: app/app/templates/.gitkeep
================================================


================================================
FILE: app/app/templates/application.hbs
================================================
{{partial 'header'}}

{{outlet}}


================================================
FILE: app/app/templates/components/.gitkeep
================================================


================================================
FILE: app/app/templates/job.hbs
================================================
  <div class="panel-heading">
    <h3 class="panel-title">
      {{name}}
      <small>
      {{#if repeatInterval}}
        <span class='meta-item'>
          &#10561; Repeats: {{repeatInterval}}
        </span>

        &middot;
      {{/if}}

      <span class='meta-item'>
        <span {{bind-attr class=':priority priorityHuman'}}>&#9187;</span> Priority: {{priorityHuman}}
      </span>
      </small>
    </h3>

      {{#if nextRunAtFromNow}}
      <small class='next-run-counter'>
        {{nextRunAtFromNow}}
      </small>
      {{/if}}
  </div>
    {{#if failedAt}}
      <div class='fail-message bg-warning'>
        <span class='fail-icon'>&#9888;</span> {{failReason}} at {{time-tag failedAt}}
      </div>
    {{/if}}
  <div class="panel-body">
    <div class='meta'>

    </div>

<div class='times'>
{{time-tag lastRunAt prefix='Last:'}}
{{time-tag nextRunAt prefix='Next:'}}
{{time-tag lastFinishedAt prefix='Finished:'}}
{{time-tag lockedAt prefix='Locked:'}}
</div>

  </div>

  </div>
  <div {{action 'toggleDataExpand'}} {{bind-attr class=':job-data-preview :panel-footer dataExpanded:is-expanded'}}>{{highlight-object jobData null 2}}</div>







================================================
FILE: app/app/templates/jobs/loading.hbs
================================================
<div class='centered loading-container'>
  {{partial 'loader'}}
</div>


================================================
FILE: app/app/templates/jobs.hbs
================================================
<div class='container'>
  {{partial 'sidebar'}}

    <div class='feed'>
      {{outlet}}
    </div>

  </div>
</div>


================================================
FILE: app/app/utils/.gitkeep
================================================


================================================
FILE: app/app/views/.gitkeep
================================================


================================================
FILE: app/app/views/job.js
================================================
import Ember from 'ember';

var JobView = Ember.View.extend({

  templateName: 'job'

, classNames: ['panel', 'panel-default']

, classNameBindings: [
    'controller.isFinished'
  , 'controller.isRunning'
  ]

, controllerBinding: 'content'


});

export default JobView;


================================================
FILE: app/app/views/jobs/feed.js
================================================
import Ember from 'ember';

var JobsView = Ember.CollectionView.extend({

  tagName: 'ul'

, itemViewClass: 'job'

, contentBinding: 'controller'

});

export default JobsView;


================================================
FILE: app/bower.json
================================================
{
  "name": "app",
  "dependencies": {
    "handlebars": "~1.3.0",
    "jquery": "^1.11.1",
    "qunit": "~1.12.0",
    "ember-qunit": "~0.1.5",
    "ember": "1.7.0",
    "ember-resolver": "~0.1.1",
    "loader": "stefanpenner/loader.js#1.0.0",
    "ember-cli-shims": "stefanpenner/ember-cli-shims#0.0.2",
    "ember-load-initializers": "stefanpenner/ember-load-initializers#0.0.2",
    "ember-qunit-notifications": "^0.0.3",
    "ember-cli-test-loader": "rjackson/ember-cli-test-loader#0.0.2",
    "moment": "~2.8.2",
    "bootstrap-sass-official": "^3.2.0"
  }
}


================================================
FILE: app/config/environment.js
================================================
/* jshint node: true */

module.exports = function(environment) {
  var ENV = {
    environment: environment,
    baseURL: '/',
    locationType: 'auto',
    EmberENV: {
      FEATURES: {
        // Here you can enable experimental features on an ember canary build
        // e.g. 'with-controller': true
      }
    },

    APP: {
      // Here you can pass flags/options to your application instance
      // when it is created
    }
  };

  if (environment === 'development') {
    // LOG_MODULE_RESOLVER is needed for pre-1.6.0
    ENV.LOG_MODULE_RESOLVER = true;

    ENV.APP.LOG_RESOLVER = true;
    ENV.APP.LOG_ACTIVE_GENERATION = true;
    ENV.APP.LOG_MODULE_RESOLVER = true;
    // ENV.APP.LOG_TRANSITIONS = true;
    // ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
    ENV.APP.LOG_VIEW_LOOKUPS = true;
  }

  if (environment === 'production') {

  }

  return ENV;
};


================================================
FILE: app/package.json
================================================
{
  "name": "app",
  "version": "0.0.0",
  "private": true,
  "directories": {
    "doc": "doc",
    "test": "test"
  },
  "scripts": {
    "start": "ember server",
    "build": "ember build",
    "test": "ember test"
  },
  "repository": "https://github.com/stefanpenner/ember-cli",
  "engines": {
    "node": ">= 0.10.0"
  },
  "author": "",
  "license": "MIT",
  "devDependencies": {
    "body-parser": "^1.2.0",
    "broccoli-ember-hbs-template-compiler": "^1.5.0",
    "broccoli-sass": "^0.2.2",
    "ember-cli": "0.0.44",
    "ember-cli-ember-data": "^0.1.1",
    "ember-cli-ic-ajax": "0.1.0",
    "ember-cli-qunit": "0.0.7",
    "express": "^4.1.1",
    "glob": "^3.2.9",
    "node-bourbon": "^1.2.3",
    "originate": "0.1.5"
  }
}


================================================
FILE: app/public/.gitkeep
================================================


================================================
FILE: app/server/.jshintrc
================================================
{
  "node": true
}


================================================
FILE: app/server/index.js
================================================
// To use it create some files under `routes/`
// e.g. `server/routes/ember-hamsters.js`
//
// module.exports = function(app) {
//   app.get('/ember-hamsters', function(req, res) {
//     res.send('hello');
//   });
// };

var express    = require('express');
var bodyParser = require('body-parser');
var globSync   = require('glob').sync;
var routes     = globSync('./routes/*.js', { cwd: __dirname }).map(require);

module.exports = function(emberCLIMiddleware) {
  var app = express();
  app.use(bodyParser());

  routes.forEach(function(route) { route(app); });
  app.use(emberCLIMiddleware);

  return app;
};


================================================
FILE: app/server/routes/.gitkeep
================================================


================================================
FILE: app/testem.json
================================================
{
  "framework": "qunit",
  "test_page": "tests/index.html",
  "launch_in_ci": ["PhantomJS"],
  "launch_in_dev": ["PhantomJS", "Chrome"]
}


================================================
FILE: app/tests/.jshintrc
================================================
{
  "predef": [
    "document",
    "window",
    "location",
    "setTimeout",
    "Ember",
    "Em",
    "$",
    "QUnit",
    "define",
    "console",
    "equal",
    "notEqual",
    "notStrictEqual",
    "test",
    "asyncTest",
    "testBoth",
    "testWithDefault",
    "raises",
    "throws",
    "deepEqual",
    "start",
    "stop",
    "ok",
    "strictEqual",
    "module",
    "moduleFor",
    "moduleForComponent",
    "moduleForModel",
    "process",
    "expect",
    "visit",
    "exists",
    "fillIn",
    "click",
    "keyEvent",
    "find",
    "wait",
    "DS",
    "keyEvent",
    "isolatedContainer",
    "startApp",
    "andThen",
    "currentURL",
    "currentPath",
    "currentRouteName"
  ],
  "node" : false,
  "browser" : false,
  "boss" : true,
  "curly": false,
  "debug": false,
  "devel": false,
  "eqeqeq": true,
  "evil": true,
  "forin": false,
  "immed": false,
  "laxbreak": false,
  "newcap": true,
  "noarg": true,
  "noempty": false,
  "nonew": false,
  "nomen": false,
  "onevar": false,
  "plusplus": false,
  "regexp": false,
  "undef": true,
  "sub": true,
  "strict": false,
  "white": false,
  "eqnull": true,
  "esnext": true
}


================================================
FILE: app/tests/helpers/resolver.js
================================================
import Resolver from 'ember/resolver';

var resolver = Resolver.create();

resolver.namespace = {
  modulePrefix: 'app'
};

export default resolver;


================================================
FILE: app/tests/helpers/start-app.js
================================================
/* global require */

var Application = require('app/app')['default'];
var Router = require('app/router')['default'];

export default function startApp(attrs) {
  var App;

  var attributes = Ember.merge({
    // useful Test defaults
    rootElement: '#ember-testing',
    LOG_ACTIVE_GENERATION:false,
    LOG_VIEW_LOOKUPS: false
  }, attrs); // but you can override;

  Router.reopen({
    location: 'none'
  });

  Ember.run(function(){
    App = Application.create(attributes);
    App.setupForTesting();
    App.injectTestHelpers();
  });

  App.reset(); // this shouldn't be needed, i want to be able to "start an app at a specific URL"

  return App;
}


================================================
FILE: app/tests/index.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>App Tests</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    {{BASE_TAG}}

    <link rel="stylesheet" href="assets/vendor.css">
    <link rel="stylesheet" href="assets/app.css">
    <link rel="stylesheet" href="assets/qunit.css">
    <style>
      #ember-testing-container {
        position: absolute;
        background: white;
        bottom: 0;
        right: 0;
        width: 640px;
        height: 384px;
        overflow: auto;
        z-index: 9999;
        border: 1px solid #ccc;
      }
      #ember-testing {
        zoom: 50%;
      }
    </style>
  </head>
  <body>
    <div id="qunit"></div>
    <div id="qunit-fixture"></div>

    <script>
      window.AppENV = {{ENV}};
      window.EmberENV = window.AppENV.EmberENV;
    </script>
    <script src="assets/qunit.js"></script>
    <script src="assets/qunit-notifications.js"></script>
    <script src="assets/vendor.js"></script>
    <script src="assets/app.js"></script>
    <script src="testem.js"></script>
    <script>
      require('app/tests/test-helper');
    </script>
    <script src="assets/test-loader.js"></script>
  </body>
</html>


================================================
FILE: app/tests/test-helper.js
================================================
import resolver from './helpers/resolver';
import { setResolver } from 'ember-qunit';

setResolver(resolver);

document.write('<div id="ember-testing-container"><div id="ember-testing"></div></div>');


================================================
FILE: app/tests/unit/.gitkeep
================================================


================================================
FILE: app/tests/unit/components/nav-filter-test.js
================================================
import { test, moduleForComponent } from 'ember-qunit';

moduleForComponent('nav-filter', 'NavFilterComponent', {
  // specify the other units that are required for this test
  // needs: ['component:foo', 'helper:bar']
});

test('it renders', function() {
  expect(2);

  // creates the component instance
  var component = this.subject();
  equal(component.state, 'preRender');

  // appends the component to the page
  this.append();
  equal(component.state, 'inDOM');
});


================================================
FILE: app/tests/unit/routes/application-test.js
================================================
import { test, moduleFor } from 'ember-qunit';

moduleFor('route:application', 'ApplicationRoute', {
  // Specify the other units that are required for this test.
  // needs: ['controller:foo']
});

test('it exists', function() {
  var route = this.subject();
  ok(route);
});


================================================
FILE: app/vendor/highlight/CHANGES.md
================================================
## Version 8.2

We've finally got [real tests][test] and [continuous testing on Travis][ci]
thanks to [Jeremy Hull][] and [Chris Eidhof][]. The tests designed to cover
everything: language detection, correct parsing of individual language features
and various special cases. This is a very important change that gives us
confidence in extending language definitions and refactoring library core.

We're going to redesign the old [demo/test suite][demo] into an interactive
demo web app. If you're confident front-end developer or designer and want to
help us with it, drop a comment into [the issue][#542] on GitHub.

[test]: https://github.com/isagalaev/highlight.js/tree/master/test
[demo]: https://highlightjs.org/static/test.html
[#542]: https://github.com/isagalaev/highlight.js/issues/542
[ci]: https://travis-ci.org/isagalaev/highlight.js
[Jeremy Hull]: https://github.com/sourrust
[Chris Eidhof]: https://github.com/chriseidhof

As usually there's a handful of new languages in this release:

- *Groovy* by [Guillaume Laforge][]
- *Dart* by [Maxim Dikun][]
- *Dust* by [Michael Allen][]
- *Scheme* by [JP Verkamp][]
- *G-Code* by [Adam Joseph Cook][]
- *Q* from Kx Systems by [Sergey Vidyuk][]

[Guillaume Laforge]: https://github.com/glaforge
[Maxim Dikun]: https://github.com/dikmax
[Michael Allen]: https://github.com/bfui
[JP Verkamp]: https://github.com/jpverkamp
[Adam Joseph Cook]: https://github.com/adamjcook
[Sergey Vidyuk]: https://github.com/sv

Other improvements:

- [Erik Osheim][] heavily reworked Scala definitions making it richer.
- [Lucas Mazza][] fixed Ruby hashes highlighting
- Lisp variants (Lisp, Clojure and Scheme) are unified in regard to naming
  the first symbol in parentheses: it's "keyword" in general case and also
  "built_in" for built-in functions in Clojure and Scheme.

[Erik Osheim]: https://github.com/non
[Lucas Mazza]: https://github.com/lucasmazza

## Version 8.1

New languages:

- *Gherkin* by [Sam Pikesley][]
- *Elixir* by [Josh Adams][]
- *NSIS* by [Jan T. Sott][]
- *VIM script* by [Jun Yang][]
- *Protocol Buffers* by [Dan Tao][]
- *Nix* by [Domen Kožar][]
- *x86asm* by [innocenat][]
- *Cap’n Proto* and *Thrift* by [Oleg Efimov][]
- *Monkey* by [Arthur Bikmullin][]
- *TypeScript* by [Panu Horsmalahti][]
- *Nimrod* by [Flaviu Tamas][]
- *Gradle* by [Damian Mee][]
- *Haxe* by [Christopher Kaster][]
- *Swift* by [Chris Eidhof][] and [Nate Cook][]

New styles:

- *Kimbie*, light and dark variants by [Jan T. Sott][]
- *Color brewer* by [Fabrício Tavares de Oliveira][]
- *Codepen.io embed* by [Justin Perry][]
- *Hybrid* by [Nic West][]

[Sam Pikesley]: https://github.com/pikesley
[Sindre Sorhus]: https://github.com/sindresorhus
[Josh Adams]: https://github.com/knewter
[Jan T. Sott]: https://github.com/idleberg
[Jun Yang]: https://github.com/harttle
[Dan Tao]: https://github.com/dtao
[Domen Kožar]: https://github.com/iElectric
[innocenat]: https://github.com/innocenat
[Oleg Efimov]: https://github.com/Sannis
[Arthur Bikmullin]: https://github.com/devolonter
[Panu Horsmalahti]: https://github.com/panuhorsmalahti
[Flaviu Tamas]: https://github.com/flaviut
[Damian Mee]: https://github.com/chester1000
[Christopher Kaster]: http://christopher.kaster.ws
[Fabrício Tavares de Oliveira]: https://github.com/fabriciotav
[Justin Perry]: https://github.com/ourmaninamsterdam
[Nic West]: https://github.com/nicwest
[Chris Eidhof]: https://github.com/chriseidhof
[Nate Cook]: https://github.com/natecook1000

Other improvements:

- The README is heavily reworked and brought up to date by [Jeremy Hull][].
- Added [`listLanguages()`][ll] method in the API.
- Improved C/C++/C# detection.
- Added a bunch of new language aliases, documented the existing ones. Thanks to
  [Sindre Sorhus][] for background research.
- Added phrasal English words to boost relevance in comments.
- Many improvements to SQL definition made by [Heiko August][],
  [Nikolay Lisienko][] and [Travis Odom][].
- The shorter `lang-` prefix for language names in HTML classes supported
  alongside `language-`. Thanks to [Jeff Escalante][].
- Ruby's got support for interactive console sessions. Thanks to
  [Pascal Hurni][].
- Added built-in functions for R language. Thanks to [Artem A. Klevtsov][].
- Rust's got definition for lifetime parameters and improved string syntax.
  Thanks to [Roman Shmatov][].
- Various improvements to Objective-C definition by [Matt Diephouse][].
- Fixed highlighting of generics in Java.

[ll]: http://highlightjs.readthedocs.org/en/latest/api.html#listlanguages
[Sindre Sorhus]: https://github.com/sindresorhus
[Heiko August]: https://github.com/auge8472
[Nikolay Lisienko]: https://github.com/neor-ru
[Travis Odom]: https://github.com/Burstaholic
[Jeff Escalante]: https://github.com/jenius
[Pascal Hurni]: https://github.com/phurni
[Jiyin Yiyong]: https://github.com/jiyinyiyong
[Artem A. Klevtsov]: https://github.com/unikum
[Roman Shmatov]: https://github.com/shmatov
[Jeremy Hull]: https://github.com/sourrust
[Matt Diephouse]: https://github.com/mdiep

## Version 8.0

This new major release is quite a big overhaul bringing both new features and
some backwards incompatible changes. However, chances are that the majority of
users won't be affected by the latter: the basic scenario described in the
README is left intact.

Here's what did change in an incompatible way:

- We're now prefixing all classes located in [CSS classes reference][cr] with
  `hljs-`, by default, because some class names would collide with other
  people's stylesheets. If you were using an older version, you might still want
  the previous behavior, but still want to upgrade. To suppress this new
  behavior, you would initialize like so:

  ```html
  <script type="text/javascript">
    hljs.configure({classPrefix: ''});
    hljs.initHighlightingOnLoad();
  </script>
  ```

- `tabReplace` and `useBR` that were used in different places are also unified
  into the global options object and are to be set using `configure(options)`.
  This function is documented in our [API docs][]. Also note that these
  parameters are gone from `highlightBlock` and `fixMarkup` which are now also
  rely on `configure`.

- We removed public-facing (though undocumented) object `hljs.LANGUAGES` which
  was used to register languages with the library in favor of two new methods:
  `registerLanguage` and `getLanguage`. Both are documented in our [API docs][].

- Result returned from `highlight` and `highlightAuto` no longer contains two
  separate attributes contributing to relevance score, `relevance` and
  `keyword_count`. They are now unified in `relevance`.

Another technically compatible change that nonetheless might need attention:

- The structure of the NPM package was refactored, so if you had installed it
  locally, you'll have to update your paths. The usual `require('highlight.js')`
  works as before. This is contributed by [Dmitry Smolin][].

New features:

- Languages now can be recognized by multiple names like "js" for JavaScript or
  "html" for, well, HTML (which earlier insisted on calling it "xml"). These
  aliases can be specified in the class attribute of the code container in your
  HTML as well as in various API calls. For now there are only a few very common
  aliases but we'll expand it in the future. All of them are listed in the
  [class reference][cr].

- Language detection can now be restricted to a subset of languages relevant in
  a given context — a web page or even a single highlighting call. This is
  especially useful for node.js build that includes all the known languages.
  Another example is a StackOverflow-style site where users specify languages
  as tags rather than in the markdown-formatted code snippets. This is
  documented in the [API reference][] (see methods `highlightAuto` and
  `configure`).

- Language definition syntax streamlined with [variants][] and
  [beginKeywords][].

New languages and styles:

- *Oxygene* by [Carlo Kok][]
- *Mathematica* by [Daniel Kvasnička][]
- *Autohotkey* by [Seongwon Lee][]
- *Atelier* family of styles in 10 variants by [Bram de Haan][]
- *Paraíso* styles by [Jan T. Sott][]

Miscellaneous improvements:

- Highlighting `=>` prompts in Clojure.
- [Jeremy Hull][] fixed a lot of styles for consistency.
- Finally, highlighting PHP and HTML [mixed in peculiar ways][php-html].
- Objective C and C# now properly highlight titles in method definition.
- Big overhaul of relevance counting for a number of languages. Please do report
  bugs about mis-detection of non-trivial code snippets!

[cr]: http://highlightjs.readthedocs.org/en/latest/css-classes-reference.html
[api docs]: http://highlightjs.readthedocs.org/en/latest/api.html
[variants]: https://groups.google.com/d/topic/highlightjs/VoGC9-1p5vk/discussion
[beginKeywords]: https://github.com/isagalaev/highlight.js/commit/6c7fdea002eb3949577a85b3f7930137c7c3038d
[php-html]: https://twitter.com/highlightjs/status/408890903017689088

[Carlo Kok]: https://github.com/carlokok
[Bram de Haan]: https://github.com/atelierbram
[Daniel Kvasnička]: https://github.com/dkvasnicka
[Dmitry Smolin]: https://github.com/dimsmol
[Jeremy Hull]: https://github.com/sourrust
[Seongwon Lee]: https://github.com/dlimpid
[Jan T. Sott]: https://github.com/idleberg


## Version 7.5

A catch-up release dealing with some of the accumulated contributions. This one
is probably will be the last before the 8.0 which will be slightly backwards
incompatible regarding some advanced use-cases.

One outstanding change in this version is the addition of 6 languages to the
[hosted script][d]: Markdown, ObjectiveC, CoffeeScript, Apache, Nginx and
Makefile. It now weighs about 6K more but we're going to keep it under 30K.

New languages:

- OCaml by [Mehdi Dogguy][mehdid] and [Nicolas Braud-Santoni][nbraud]
- [LiveCode Server][lcs] by [Ralf Bitter][revig]
- Scilab by [Sylvestre Ledru][sylvestre]
- basic support for Makefile by [Ivan Sagalaev][isagalaev]

Improvements:

- Ruby's got support for characters like `?A`, `?1`, `?\012` etc. and `%r{..}`
  regexps.
- Clojure now allows a function call in the beginning of s-expressions
  `(($filter "myCount") (arr 1 2 3 4 5))`.
- Haskell's got new keywords and now recognizes more things like pragmas,
  preprocessors, modules, containers, FFIs etc. Thanks to [Zena Treep][treep]
  for the implementation and to [Jeremy Hull][sourrust] for guiding it.
- Miscellaneous fixes in PHP, Brainfuck, SCSS, Asciidoc, CMake, Python and F#.

[mehdid]: https://github.com/mehdid
[nbraud]: https://github.com/nbraud
[revig]: https://github.com/revig
[lcs]: http://livecode.com/developers/guides/server/
[sylvestre]: https://github.com/sylvestre
[isagalaev]: https://github.com/isagalaev
[treep]: https://github.com/treep
[sourrust]: https://github.com/sourrust
[d]: http://highlightjs.org/download/


## New core developers

The latest long period of almost complete inactivity in the project coincided
with growing interest to it led to a decision that now seems completely obvious:
we need more core developers.

So without further ado let me welcome to the core team two long-time
contributors: [Jeremy Hull][] and [Oleg
Efimov][].

Hope now we'll be able to work through stuff faster!

P.S. The historical commit is [here][1] for the record.

[Jeremy Hull]: https://github.com/sourrust
[Oleg Efimov]: https://github.com/sannis
[1]: https://github.com/isagalaev/highlight.js/commit/f3056941bda56d2b72276b97bc0dd5f230f2473f


## Version 7.4

This long overdue version is a snapshot of the current source tree with all the
changes that happened during the past year. Sorry for taking so long!

Along with the changes in code highlight.js has finally got its new home at
<http://highlightjs.org/>, moving from its cradle on Software Maniacs which it
outgrew a long time ago. Be sure to report any bugs about the site to
<mailto:info@highlightjs.org>.

On to what's new…

New languages:

- Handlebars templates by [Robin Ward][]
- Oracle Rules Language by [Jason Jacobson][]
- F# by [Joans Follesø][]
- AsciiDoc and Haml by [Dan Allen][]
- Lasso by [Eric Knibbe][]
- SCSS by [Kurt Emch][]
- VB.NET by [Poren Chiang][]
- Mizar by [Kelley van Evert][]

[Robin Ward]: https://github.com/eviltrout
[Jason Jacobson]: https://github.com/jayce7
[Joans Follesø]: https://github.com/follesoe
[Dan Allen]: https://github.com/mojavelinux
[Eric Knibbe]: https://github.com/EricFromCanada
[Kurt Emch]: https://github.com/kemch
[Poren Chiang]: https://github.com/rschiang
[Kelley van Evert]: https://github.com/kelleyvanevert

New style themes:

- Monokai Sublime by [noformnocontent][]
- Railscasts by [Damien White][]
- Obsidian by [Alexander Marenin][]
- Docco by [Simon Madine][]
- Mono Blue by [Ivan Sagalaev][] (uses a single color hue for everything)
- Foundation by [Dan Allen][]

[noformnocontent]: http://nn.mit-license.org/
[Damien White]: https://github.com/visoft
[Alexander Marenin]: https://github.com/ioncreature
[Simon Madine]: https://github.com/thingsinjars
[Ivan Sagalaev]: https://github.com/isagalaev

Other notable changes:

- Corrected many corner cases in CSS.
- Dropped Python 2 version of the build tool.
- Implemented building for the AMD format.
- Updated Rust keywords (thanks to [Dmitry Medvinsky][]).
- Literal regexes can now be used in language definitions.
- CoffeeScript highlighting is now significantly more robust and rich due to
  input from [Cédric Néhémie][].

[Dmitry Medvinsky]: https://github.com/dmedvinsky
[Cédric Néhémie]: https://github.com/abe33


## Version 7.3

- Since this version highlight.js no longer works in IE version 8 and older.
  It's made it possible to reduce the library size and dramatically improve code
  readability and made it easier to maintain. Time to go forward!

- New languages: AppleScript (by [Nathan Grigg][ng] and [Dr. Drang][dd]) and
  Brainfuck (by [Evgeny Stepanischev][bolk]).

- Improvements to existing languages:

    - interpreter prompt in Python (`>>>` and `...`)
    - @-properties and classes in CoffeeScript
    - E4X in JavaScript (by [Oleg Efimov][oe])
    - new keywords in Perl (by [Kirk Kimmel][kk])
    - big Ruby syntax update (by [Vasily Polovnyov][vast])
    - small fixes in Bash

- Also Oleg Efimov did a great job of moving all the docs for language and style
  developers and contributors from the old wiki under the source code in the
  "docs" directory. Now these docs are nicely presented at
  <http://highlightjs.readthedocs.org/>.

[ng]: https://github.com/nathan11g
[dd]: https://github.com/drdrang
[bolk]: https://github.com/bolknote
[oe]: https://github.com/Sannis
[kk]: https://github.com/kimmel
[vast]: https://github.com/vast


## Version 7.2

A regular bug-fix release without any significant new features. Enjoy!


## Version 7.1

A Summer crop:

- [Marc Fornos][mf] made the definition for Clojure along with the matching
  style Rainbow (which, of course, works for other languages too).
- CoffeeScript support continues to improve getting support for regular
  expressions.
- Yoshihide Jimbo ported to highlight.js [five Tomorrow styles][tm] from the
  [project by Chris Kempson][tm0].
- Thanks to [Casey Duncun][cd] the library can now be built in the popular
  [AMD format][amd].
- And last but not least, we've got a fair number of correctness and consistency
  fixes, including a pretty significant refactoring of Ruby.

[mf]: https://github.com/mfornos
[tm]: http://jmblog.github.com/color-themes-for-highlightjs/
[tm0]: https://github.com/ChrisKempson/Tomorrow-Theme
[cd]: https://github.com/caseman
[amd]: http://requirejs.org/docs/whyamd.html


## Version 7.0

The reason for the new major version update is a global change of keyword syntax
which resulted in the library getting smaller once again. For example, the
hosted build is 2K less than at the previous version while supporting two new
languages.

Notable changes:

- The library now works not only in a browser but also with [node.js][]. It is
  installable with `npm install highlight.js`. [API][] docs are available on our
  wiki.

- The new unique feature (apparently) among syntax highlighters is highlighting
  *HTTP* headers and an arbitrary language in the request body. The most useful
  languages here are *XML* and *JSON* both of which highlight.js does support.
  Here's [the detailed post][p] about the feature.

- Two new style themes: a dark "south" *[Pojoaque][]* by Jason Tate and an
  emulation of*XCode* IDE by [Angel Olloqui][ao].

- Three new languages: *D* by [Aleksandar Ružičić][ar], *R* by [Joe Cheng][jc]
  and *GLSL* by [Sergey Tikhomirov][st].

- *Nginx* syntax has become a million times smaller and more universal thanks to
  remaking it in a more generic manner that doesn't require listing all the
  directives in the known universe.

- Function titles are now highlighted in *PHP*.

- *Haskell* and *VHDL* were significantly reworked to be more rich and correct
  by their respective maintainers [Jeremy Hull][sr] and [Igor Kalnitsky][ik].

And last but not least, many bugs have been fixed around correctness and
language detection.

Overall highlight.js currently supports 51 languages and 20 style themes.

[node.js]: http://nodejs.org/
[api]: http://softwaremaniacs.org/wiki/doku.php/highlight.js:api
[p]: http://softwaremaniacs.org/blog/2012/05/10/http-and-json-in-highlight-js/en/
[pojoaque]: http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html
[ao]: https://github.com/angelolloqui
[ar]: https://github.com/raleksandar
[jc]: https://github.com/jcheng5
[st]: https://github.com/tikhomirov
[sr]: https://github.com/sourrust
[ik]: https://github.com/ikalnitsky


## Version 6.2

A lot of things happened in highlight.js since the last version! We've got nine
new contributors, the discussion group came alive, and the main branch on GitHub
now counts more than 350 followers. Here are most significant results coming
from all this activity:

- 5 (five!) new languages: Rust, ActionScript, CoffeeScript, MatLab and
  experimental support for markdown. Thanks go to [Andrey Vlasovskikh][av],
  [Alexander Myadzel][am], [Dmytrii Nagirniak][dn], [Oleg Efimov][oe], [Denis
  Bardadym][db] and [John Crepezzi][jc].

- 2 new style themes: Monokai by [Luigi Maselli][lm] and stylistic imitation of
  another well-known highlighter Google Code Prettify by [Aahan Krish][ak].

- A vast number of [correctness fixes and code refactorings][log], mostly made
  by [Oleg Efimov][oe] and [Evgeny Stepanischev][es].

[av]: https://github.com/vlasovskikh
[am]: https://github.com/myadzel
[dn]: https://github.com/dnagir
[oe]: https://github.com/Sannis
[db]: https://github.com/btd
[jc]: https://github.com/seejohnrun
[lm]: http://grigio.org/
[ak]: https://github.com/geekpanth3r
[es]: https://github.com/bolknote
[log]: https://github.com/isagalaev/highlight.js/commits/


## Version 6.1 — Solarized

[Jeremy Hull][jh] has implemented my dream feature — a port of [Solarized][]
style theme famous for being based on the intricate color theory to achieve
correct contrast and color perception. It is now available for highlight.js in
both variants — light and dark.

This version also adds a new original style Arta. Its author pumbur maintains a
[heavily modified fork of highlight.js][pb] on GitHub.

[jh]: https://github.com/sourrust
[solarized]: http://ethanschoonover.com/solarized
[pb]: https://github.com/pumbur/highlight.js


## Version 6.0

New major version of the highlighter has been built on a significantly
refactored syntax. Due to this it's even smaller than the previous one while
supporting more languages!

New languages are:

- Haskell by [Jeremy Hull][sourrust]
- Erlang in two varieties — module and REPL — made collectively by [Nikolay
  Zakharov][desh], [Dmitry Kovega][arhibot] and [Sergey Ignatov][ignatov]
- Objective C by [Valerii Hiora][vhbit]
- Vala by [Antono Vasiljev][antono]
- Go by [Stephan Kountso][steplg]

[sourrust]: https://github.com/sourrust
[desh]: http://desh.su/
[arhibot]: https://github.com/arhibot
[ignatov]: https://github.com/ignatov
[vhbit]: https://github.com/vhbit
[antono]: https://github.com/antono
[steplg]: https://github.com/steplg

Also this version is marginally faster and fixes a number of small long-standing
bugs.

Developer overview of the new language syntax is available in a [blog post about
recent beta release][beta].

[beta]: http://softwaremaniacs.org/blog/2011/04/25/highlight-js-60-beta/en/

P.S. New version is not yet available on a Yandex CDN, so for now you have to
download [your own copy][d].

[d]: /soft/highlight/en/download/


## Version 5.14

Fixed bugs in HTML/XML detection and relevance introduced in previous
refactoring.

Also test.html now shows the second best result of language detection by
relevance.


## Version 5.13

Past weekend began with a couple of simple additions for existing languages but
ended up in a big code refactoring bringing along nice improvements for language
developers.

### For users

- Description of C++ has got new keywords from the upcoming [C++ 0x][] standard.
- Description of HTML has got new tags from [HTML 5][].
- CSS-styles have been unified to use consistent padding and also have lost
  pop-outs with names of detected languages.
- [Igor Kalnitsky][ik] has sent two new language descriptions: CMake & VHDL.

This makes total number of languages supported by highlight.js to reach 35.

Bug fixes:

- Custom classes on `<pre>` tags are not being overridden anymore
- More correct highlighting of code blocks inside non-`<pre>` containers:
  highlighter now doesn't insist on replacing them with its own container and
  just replaces the contents.
- Small fixes in browser compatibility and heuristics.

[c++ 0x]: http://ru.wikipedia.org/wiki/C%2B%2B0x
[html 5]: http://en.wikipedia.org/wiki/HTML5
[ik]: http://kalnitsky.org.ua/

### For developers

The most significant change is the ability to include language submodes right
under `contains` instead of defining explicit named submodes in the main array:

    contains: [
      'string',
      'number',
      {begin: '\\n', end: hljs.IMMEDIATE_RE}
    ]

This is useful for auxiliary modes needed only in one place to define parsing.
Note that such modes often don't have `className` and hence won't generate a
separate `<span>` in the resulting markup. This is similar in effect to
`noMarkup: true`. All existing languages have been refactored accordingly.

Test file test.html has at last become a real test. Now it not only puts the
detected language name under the code snippet but also tests if it matches the
expected one. Test summary is displayed right above all language snippets.


## CDN

Fine people at [Yandex][] agreed to host highlight.js on their big fast servers.
[Link up][l]!

[yandex]: http://yandex.com/
[l]: http://softwaremaniacs.org/soft/highlight/en/download/


## Version 5.10 — "Paris".

Though I'm on a vacation in Paris, I decided to release a new version with a
couple of small fixes:

- Tomas Vitvar discovered that TAB replacement doesn't always work when used
  with custom markup in code
- SQL parsing is even more rigid now and doesn't step over SmallTalk in tests


## Version 5.9

A long-awaited version is finally released.

New languages:

- Andrew Fedorov made a definition for Lua
- a long-time highlight.js contributor [Peter Leonov][pl] made a definition for
  Nginx config
- [Vladimir Moskva][vm] made a definition for TeX

[pl]: http://kung-fu-tzu.ru/
[vm]: http://fulc.ru/

Fixes for existing languages:

- [Loren Segal][ls] reworked the Ruby definition and added highlighting for
  [YARD][] inline documentation
- the definition of SQL has become more solid and now it shouldn't be overly
  greedy when it comes to language detection

[ls]: http://gnuu.org/
[yard]: http://yardoc.org/

The highlighter has become more usable as a library allowing to do highlighting
from initialization code of JS frameworks and in ajax methods (see.
readme.eng.txt).

Also this version drops support for the [WordPress][wp] plugin. Everyone is
welcome to [pick up its maintenance][p] if needed.

[wp]: http://wordpress.org/
[p]: http://bazaar.launchpad.net/~isagalaev/+junk/highlight/annotate/342/src/wp_highlight.js.php


## Version 5.8

- Jan Berkel has contributed a definition for Scala. +1 to hotness!
- All CSS-styles are rewritten to work only inside `<pre>` tags to avoid
  conflicts with host site styles.


## Version 5.7.

Fixed escaping of quotes in VBScript strings.


## Version 5.5

This version brings a small change: now .ini-files allow digits, underscores and
square brackets in key names.


## Version 5.4

Fixed small but upsetting bug in the packer which caused incorrect highlighting
of explicitly specified languages. Thanks to Andrew Fedorov for precise
diagnostics!


## Version 5.3

The version to fulfil old promises.

The most significant change is that highlight.js now preserves custom user
markup in code along with its own highlighting markup. This means that now it's
possible to use, say, links in code. Thanks to [Vladimir Dolzhenko][vd] for the
[initial proposal][1] and for making a proof-of-concept patch.

Also in this version:

- [Vasily Polovnyov][vp] has sent a GitHub-like style and has implemented
  support for CSS @-rules and Ruby symbols.
- Yura Zaripov has sent two styles: Brown Paper and School Book.
- Oleg Volchkov has sent a definition for [Parser 3][p3].

[1]: http://softwaremaniacs.org/forum/highlightjs/6612/
[p3]: http://www.parser.ru/
[vp]: http://vasily.polovnyov.ru/
[vd]: http://dolzhenko.blogspot.com/


## Version 5.2

- at last it's possible to replace indentation TABs with something sensible
  (e.g. 2 or 4 spaces)
- new keywords and built-ins for 1C by Sergey Baranov
- a couple of small fixes to Apache highlighting


## Version 5.1

This is one of those nice version consisting entirely of new and shiny
contributions!

- [Vladimir Ermakov][vooon] created highlighting for AVR Assembler
- [Ruslan Keba][rukeba] created highlighting for Apache config file. Also his
  original visual style for it is now available for all highlight.js languages
  under the name "Magula".
- [Shuen-Huei Guan][drake] (aka Drake) sent new keywords for RenderMan
  languages. Also thanks go to [Konstantin Evdokimenko][ke] for his advice on
  the matter.

[vooon]: http://vehq.ru/about/
[rukeba]: http://rukeba.com/
[drake]: http://drakeguan.org/
[ke]: http://k-evdokimenko.moikrug.ru/


## Version 5.0

The main change in the new major version of highlight.js is a mechanism for
packing several languages along with the library itself into a single compressed
file. Now sites using several languages will load considerably faster because
the library won't dynamically include additional files while loading.

Also this version fixes a long-standing bug with Javascript highlighting that
couldn't distinguish between regular expressions and division operations.

And as usually there were a couple of minor correctness fixes.

Great thanks to all contributors! Keep using highlight.js.


## Version 4.3

This version comes with two contributions from [Jason Diamond][jd]:

- language definition for C# (yes! it was a long-missed thing!)
- Visual Studio-like highlighting style

Plus there are a couple of minor bug fixes for parsing HTML and XML attributes.

[jd]: http://jason.diamond.name/weblog/


## Version 4.2

The biggest news is highlighting for Lisp, courtesy of Vasily Polovnyov. It's
somewhat experimental meaning that for highlighting "keywords" it doesn't use
any pre-defined set of a Lisp dialect. Instead it tries to highlight first word
in parentheses wherever it makes sense. I'd like to ask people programming in
Lisp to confirm if it's a good idea and send feedback to [the forum][f].

Other changes:

- Smalltalk was excluded from DEFAULT_LANGUAGES to save traffic
- [Vladimir Epifanov][voldmar] has implemented javascript style switcher for
  test.html
- comments now allowed inside Ruby function definition
- [MEL][] language from [Shuen-Huei Guan][drake]
- whitespace now allowed between `<pre>` and `<code>`
- better auto-detection of C++ and PHP
- HTML allows embedded VBScript (`<% .. %>`)

[f]: http://softwaremaniacs.org/forum/highlightjs/
[voldmar]: http://voldmar.ya.ru/
[mel]: http://en.wikipedia.org/wiki/Maya_Embedded_Language
[drake]: http://drakeguan.org/


## Version 4.1

Languages:

- Bash from Vah
- DOS bat-files from Alexander Makarov (Sam)
- Diff files from Vasily Polovnyov
- Ini files from myself though initial idea was from Sam

Styles:

- Zenburn from Vladimir Epifanov, this is an imitation of a
  [well-known theme for Vim][zenburn].
- Ascetic from myself, as a realization of ideals of non-flashy highlighting:
  just one color in only three gradations :-)

In other news. [One small bug][bug] was fixed, built-in keywords were added for
Python and C++ which improved auto-detection for the latter (it was shame that
[my wife's blog][alenacpp] had issues with it from time to time). And lastly
thanks go to Sam for getting rid of my stylistic comments in code that were
getting in the way of [JSMin][].

[zenburn]: http://en.wikipedia.org/wiki/Zenburn
[alenacpp]: http://alenacpp.blogspot.com/
[bug]: http://softwaremaniacs.org/forum/viewtopic.php?id=1823
[jsmin]: http://code.google.com/p/jsmin-php/


## Version 4.0

New major version is a result of vast refactoring and of many contributions.

Visible new features:

- Highlighting of embedded languages. Currently is implemented highlighting of
  Javascript and CSS inside HTML.
- Bundled 5 ready-made style themes!

Invisible new features:

- Highlight.js no longer pollutes global namespace. Only one object and one
  function for backward compatibility.
- Performance is further increased by about 15%.

Changing of a major version number caused by a new format of language definition
files. If you use some third-party language files they should be updated.


## Version 3.5

A very nice version in my opinion fixing a number of small bugs and slightly
increased speed in a couple of corner cases. Thanks to everybody who reports
bugs in he [forum][f] and by email!

There is also a new language — XML. A custom XML formerly was detected as HTML
and didn't highlight custom tags. In this version I tried to make custom XML to
be detected and highlighted by its own rules. Which by the way include such
things as CDATA sections and processing instructions (`<? ... ?>`).

[f]: http://softwaremaniacs.org/forum/viewforum.php?id=6


## Version 3.3

[Vladimir Gubarkov][xonix] has provided an interesting and useful addition.
File export.html contains a little program that shows and allows to copy and
paste an HTML code generated by the highlighter for any code snippet. This can
be useful in situations when one can't use the script itself on a site.


[xonix]: http://xonixx.blogspot.com/


## Version 3.2 consists completely of contributions:

- Vladimir Gubarkov has described SmallTalk
- Yuri Ivanov has described 1C
- Peter Leonov has packaged the highlighter as a Firefox extension
- Vladimir Ermakov has compiled a mod for phpBB

Many thanks to you all!


## Version 3.1

Three new languages are available: Django templates, SQL and Axapta. The latter
two are sent by [Dmitri Roudakov][1]. However I've almost entirely rewrote an
SQL definition but I'd never started it be it from the ground up :-)

The engine itself has got a long awaited feature of grouping keywords
("keyword", "built-in function", "literal"). No more hacks!

[1]: http://roudakov.ru/


## Version 3.0

It is major mainly because now highlight.js has grown large and has become
modular. Now when you pass it a list of languages to highlight it will
dynamically load into a browser only those languages.

Also:

- Konstantin Evdokimenko of [RibKit][] project has created a highlighting for
  RenderMan Shading Language and RenderMan Interface Bytestream. Yay for more
  languages!
- Heuristics for C++ and HTML got better.
- I've implemented (at last) a correct handling of backslash escapes in C-like
  languages.

There is also a small backwards incompatible change in the new version. The
function initHighlighting that was used to initialize highlighting instead of
initHighlightingOnLoad a long time ago no longer works. If you by chance still
use it — replace it with the new one.

[RibKit]: http://ribkit.sourceforge.net/


## Version 2.9

Highlight.js is a parser, not just a couple of regular expressions. That said
I'm glad to announce that in the new version 2.9 has support for:

- in-string substitutions for Ruby -- `#{...}`
- strings from from numeric symbol codes (like #XX) for Delphi


## Version 2.8

A maintenance release with more tuned heuristics. Fully backwards compatible.


## Version 2.7

- Nikita Ledyaev presents highlighting for VBScript, yay!
- A couple of bugs with escaping in strings were fixed thanks to Mickle
- Ongoing tuning of heuristics

Fixed bugs were rather unpleasant so I encourage everyone to upgrade!


## Version 2.4

- Peter Leonov provides another improved highlighting for Perl
- Javascript gets a new kind of keywords — "literals". These are the words
  "true", "false" and "null"

Also highlight.js homepage now lists sites that use the library. Feel free to
add your site by [dropping me a message][mail] until I find the time to build a
submit form.

[mail]: mailto:Maniac@SoftwareManiacs.Org


## Version 2.3

This version fixes IE breakage in previous version. My apologies to all who have
already downloaded that one!


## Version 2.2

- added highlighting for Javascript
- at last fixed parsing of Delphi's escaped apostrophes in strings
- in Ruby fixed highlighting of keywords 'def' and 'class', same for 'sub' in
  Perl


## Version 2.0

- Ruby support by [Anton Kovalyov][ak]
- speed increased by orders of magnitude due to new way of parsing
- this same way allows now correct highlighting of keywords in some tricky
  places (like keyword "End" at the end of Delphi classes)

[ak]: http://anton.kovalyov.net/


## Version 1.0

Version 1.0 of javascript syntax highlighter is released!

It's the first version available with English description. Feel free to post
your comments and question to [highlight.js forum][forum]. And don't be afraid
if you find there some fancy Cyrillic letters -- it's for Russian users too :-)

[forum]: http://softwaremaniacs.org/forum/viewforum.php?id=6


================================================
FILE: app/vendor/highlight/LICENSE
================================================
Copyright (c) 2006, Ivan Sagalaev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of highlight.js nor the names of its contributors 
      may be used to endorse or promote products derived from this software 
      without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


================================================
FILE: app/vendor/highlight/README.md
================================================
# Highlight.js

[![Build Status](https://travis-ci.org/isagalaev/highlight.js.svg?branch=master)](https://travis-ci.org/isagalaev/highlight.js)

Highlight.js is a syntax highlighter written in JavaScript. It works in the
browser as well as on the server. It works with pretty much any markup,
doesn't depend on any framework and has automatic language detection.


## Getting Started

The bare minimum for using highlight.js on a web page is linking to the library
along with one of the styles and calling [`initHighlightingOnLoad`][1]:

```html
<link rel="stylesheet" href="/path/to/styles/default.css">
<script src="/path/to/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
```

This will find and highlight code inside of `<pre><code>` tags trying to detect
the language automatically. If automatic detection doesn't work for you, you can
specify the language in the class attribute:

```html
<pre><code class="html">...</code></pre>
```

The list of supported language classes is available in the [class reference][8].
Classes can also be prefixed with either `language-` or `lang-`.

To disable highlighting altogether use the `nohighlight` class:

```html
<pre><code class="nohighlight">...</code></pre>
```

## Custom Initialization

When you need a bit more control over the initialization of
highlight.js, you can use the [`highlightBlock`][2] and [`configure`][3]
functions. This allows you to control *what* to highlight and *when*.

Here's an equivalent way to calling [`initHighlightingOnLoad`][1] using jQuery:

```javascript
$(document).ready(function() {
  $('pre code').each(function(i, block) {
    hljs.highlightBlock(block);
  });
});
```

You can use any tags instead of `<pre><code>` to mark up your code. If you don't
use a container that preserve line breaks you will need to configure
highlight.js to use the `<br>` tag:

```javascript
hljs.configure({useBR: true});

$('div.code').each(function(i, block) {
  hljs.highlightBlock(block);
});
```

For other options refer to the documentation for [`configure`][3].


## Getting the Library

You can get highlight.js as a hosted or custom-build browser script or as a
server module. Head over to the [download page][4] for all the options.

Note, that the library is not supposed to work straight from the source on
GitHub, it requires building. If none of the pre-packaged options work for you
refer to the [building documentation][5].


## License

Highlight.js is released under the BSD License. See [LICENSE][10] file for
details.


## Links

The official site for the library is at <https://highlightjs.org/>.

Further in-depth documentation for the API and other topics is at
<http://highlightjs.readthedocs.org/>.

Authors and contributors are listed in the [AUTHORS.en.txt][9] file.

[1]: http://highlightjs.readthedocs.org/en/latest/api.html#inithighlightingonload
[2]: http://highlightjs.readthedocs.org/en/latest/api.html#highlightblock-block
[3]: http://highlightjs.readthedocs.org/en/latest/api.html#configure-options
[4]: https://highlightjs.org/download/
[5]: http://highlightjs.readthedocs.org/en/latest/building-testing.html
[8]: http://highlightjs.readthedocs.org/en/latest/css-classes-reference.html
[9]: https://github.com/isagalaev/highlight.js/blob/master/AUTHORS.en.txt
[10]: https://github.com/isagalaev/highlight.js/blob/master/LICENSE


================================================
FILE: app/vendor/highlight/README.ru.md
================================================
# Highlight.js

Highlight.js — это подсветчик синтаксиса, написанный на JavaScript. Он работает
и в браузере, и на сервере. Он работает с практически любой HTML разметкой, не
зависит от каких-либо фреймворков и умеет автоматически определять язык.


## Начало работы

Минимум, что нужно сделать для использования highlight.js на веб-странице — это
подключить библиотеку, CSS-стили и вызывать [`initHighlightingOnLoad`][1]:

```html
<link rel="stylesheet" href="/path/to/styles/default.css">
<script src="/path/to/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
```

Библиотека найдёт и раскрасит код внутри тегов `<pre><code>`, попытавшись
автоматически определить язык. Когда автоопределение не срабатывает, можно явно
указать язык в атрибуте class:

```html
<pre><code class="html">...</code></pre>
```

Список поддерживаемых классов языков доступен в [справочнике по классам][8].
Класс также можно предваоить префиксами `language-` или `lang-`.

Чтобы отключить подсветку для какого-то блока, используйте класс `nohighlight`:

```html
<pre><code class="nohighlight">...</code></pre>
```

## Инициализация вручную

Чтобы иметь чуть больше контроля за инициализацией подсветки, вы можете
использовать функции [`highlightBlock`][2] и [`configure`][3]. Таким образом
можно управлять тем, *что* подсвечивать и *когда*.

Вот пример инициализация, эквивалентной вызову [`initHighlightingOnLoad`][1], но
с использованием jQuery:

```javascript
$(document).ready(function() {
  $('pre code').each(function(i, block) {
    hljs.highlightBlock(block);
  });
});
```

Вы можете использовать любые теги разметки вместо `<pre><code>`. Если
используете контейнер, не сохраняющий переводы строк, вам нужно сказать
highlight.js использовать для них тег `<br>`:

```javascript
hljs.configure({useBR: true});

$('div.code').each(function(i, block) {
  hljs.highlightBlock(block);
});
```

Другие опции можно найти в документации функции [`configure`][3].


## Установка библиотеки

Highlight.js можно использовать в браузере прямо с CDN хостинга или скачать
индивидуальную сборку, а также установив модуль на сервере. На
[страница загрузки][4] подробно описаны все варианты.

Обратите внимание, что библиотека не предназначена для использования в виде
исходного кода на GitHub, а требует отдельной сборки. Если вам не подходит ни
один из готовых вариантов, читайте [документацию по сборке][5].


## Лицензия

Highlight.js распространяется под лицензией BSD. Подробнее читайте файл
[LICENSE][10].


## Ссылки

Официальный сайт билиотеки расположен по адресу <https://highlightjs.org/>.

Более подробная документация по API и другим темам расположена на
<http://highlightjs.readthedocs.org/>.

Авторы и контрибьютора перечислена в файле [AUTHORS.ru.txt][9] file.

[1]: http://highlightjs.readthedocs.org/en/latest/api.html#inithighlightingonload
[2]: http://highlightjs.readthedocs.org/en/latest/api.html#highlightblock-block
[3]: http://highlightjs.readthedocs.org/en/latest/api.html#configure-options
[4]: https://highlightjs.org/download/
[5]: http://highlightjs.readthedocs.org/en/latest/building-testing.html
[8]: http://highlightjs.readthedocs.org/en/latest/css-classes-reference.html
[9]: https://github.com/isagalaev/highlight.js/blob/master/AUTHORS.ru.txt
[10]: https://github.com/isagalaev/highlight.js/blob/master/LICENSE


================================================
FILE: app/vendor/highlight/highlight.pack.js
================================================
var hljs=new function(){function j(v){return v.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;")}function t(v){return v.nodeName.toLowerCase()}function h(w,x){var v=w&&w.exec(x);return v&&v.index==0}function r(w){var v=(w.className+" "+(w.parentNode?w.parentNode.className:"")).split(/\s+/);v=v.map(function(x){return x.replace(/^lang(uage)?-/,"")});return v.filter(function(x){return i(x)||/no(-?)highlight/.test(x)})[0]}function o(x,y){var v={};for(var w in x){v[w]=x[w]}if(y){for(var w in y){v[w]=y[w]}}return v}function u(x){var v=[];(function w(y,z){for(var A=y.firstChild;A;A=A.nextSibling){if(A.nodeType==3){z+=A.nodeValue.length}else{if(A.nodeType==1){v.push({event:"start",offset:z,node:A});z=w(A,z);if(!t(A).match(/br|hr|img|input/)){v.push({event:"stop",offset:z,node:A})}}}}return z})(x,0);return v}function q(w,y,C){var x=0;var F="";var z=[];function B(){if(!w.length||!y.length){return w.length?w:y}if(w[0].offset!=y[0].offset){return(w[0].offset<y[0].offset)?w:y}return y[0].event=="start"?w:y}function A(H){function G(I){return" "+I.nodeName+'="'+j(I.value)+'"'}F+="<"+t(H)+Array.prototype.map.call(H.attributes,G).join("")+">"}function E(G){F+="</"+t(G)+">"}function v(G){(G.event=="start"?A:E)(G.node)}while(w.length||y.length){var D=B();F+=j(C.substr(x,D[0].offset-x));x=D[0].offset;if(D==w){z.reverse().forEach(E);do{v(D.splice(0,1)[0]);D=B()}while(D==w&&D.length&&D[0].offset==x);z.reverse().forEach(A)}else{if(D[0].event=="start"){z.push(D[0].node)}else{z.pop()}v(D.splice(0,1)[0])}}return F+j(C.substr(x))}function m(y){function v(z){return(z&&z.source)||z}function w(A,z){return RegExp(v(A),"m"+(y.cI?"i":"")+(z?"g":""))}function x(D,C){if(D.compiled){return}D.compiled=true;D.k=D.k||D.bK;if(D.k){var z={};var E=function(G,F){if(y.cI){F=F.toLowerCase()}F.split(" ").forEach(function(H){var I=H.split("|");z[I[0]]=[G,I[1]?Number(I[1]):1]})};if(typeof D.k=="string"){E("keyword",D.k)}else{Object.keys(D.k).forEach(function(F){E(F,D.k[F])})}D.k=z}D.lR=w(D.l||/\b[A-Za-z0-9_]+\b/,true);if(C){if(D.bK){D.b="\\b("+D.bK.split(" ").join("|")+")\\b"}if(!D.b){D.b=/\B|\b/}D.bR=w(D.b);if(!D.e&&!D.eW){D.e=/\B|\b/}if(D.e){D.eR=w(D.e)}D.tE=v(D.e)||"";if(D.eW&&C.tE){D.tE+=(D.e?"|":"")+C.tE}}if(D.i){D.iR=w(D.i)}if(D.r===undefined){D.r=1}if(!D.c){D.c=[]}var B=[];D.c.forEach(function(F){if(F.v){F.v.forEach(function(G){B.push(o(F,G))})}else{B.push(F=="self"?D:F)}});D.c=B;D.c.forEach(function(F){x(F,D)});if(D.starts){x(D.starts,C)}var A=D.c.map(function(F){return F.bK?"\\.?("+F.b+")\\.?":F.b}).concat([D.tE,D.i]).map(v).filter(Boolean);D.t=A.length?w(A.join("|"),true):{exec:function(F){return null}}}x(y)}function c(T,L,J,R){function v(V,W){for(var U=0;U<W.c.length;U++){if(h(W.c[U].bR,V)){return W.c[U]}}}function z(V,U){if(h(V.eR,U)){return V}if(V.eW){return z(V.parent,U)}}function A(U,V){return !J&&h(V.iR,U)}function E(W,U){var V=M.cI?U[0].toLowerCase():U[0];return W.k.hasOwnProperty(V)&&W.k[V]}function w(aa,Y,X,W){var U=W?"":b.classPrefix,V='<span class="'+U,Z=X?"":"</span>";V+=aa+'">';return V+Y+Z}function N(){if(!I.k){return j(C)}var U="";var X=0;I.lR.lastIndex=0;var V=I.lR.exec(C);while(V){U+=j(C.substr(X,V.index-X));var W=E(I,V);if(W){H+=W[1];U+=w(W[0],j(V[0]))}else{U+=j(V[0])}X=I.lR.lastIndex;V=I.lR.exec(C)}return U+j(C.substr(X))}function F(){if(I.sL&&!f[I.sL]){return j(C)}var U=I.sL?c(I.sL,C,true,S):e(C);if(I.r>0){H+=U.r}if(I.subLanguageMode=="continuous"){S=U.top}return w(U.language,U.value,false,true)}function Q(){return I.sL!==undefined?F():N()}function P(W,V){var U=W.cN?w(W.cN,"",true):"";if(W.rB){D+=U;C=""}else{if(W.eB){D+=j(V)+U;C=""}else{D+=U;C=V}}I=Object.create(W,{parent:{value:I}})}function G(U,Y){C+=U;if(Y===undefined){D+=Q();return 0}var W=v(Y,I);if(W){D+=Q();P(W,Y);return W.rB?0:Y.length}var X=z(I,Y);if(X){var V=I;if(!(V.rE||V.eE)){C+=Y}D+=Q();do{if(I.cN){D+="</span>"}H+=I.r;I=I.parent}while(I!=X.parent);if(V.eE){D+=j(Y)}C="";if(X.starts){P(X.starts,"")}return V.rE?0:Y.length}if(A(Y,I)){throw new Error('Illegal lexeme "'+Y+'" for mode "'+(I.cN||"<unnamed>")+'"')}C+=Y;return Y.length||1}var M=i(T);if(!M){throw new Error('Unknown language: "'+T+'"')}m(M);var I=R||M;var S;var D="";for(var K=I;K!=M;K=K.parent){if(K.cN){D=w(K.cN,"",true)+D}}var C="";var H=0;try{var B,y,x=0;while(true){I.t.lastIndex=x;B=I.t.exec(L);if(!B){break}y=G(L.substr(x,B.index-x),B[0]);x=B.index+y}G(L.substr(x));for(var K=I;K.parent;K=K.parent){if(K.cN){D+="</span>"}}return{r:H,value:D,language:T,top:I}}catch(O){if(O.message.indexOf("Illegal")!=-1){return{r:0,value:j(L)}}else{throw O}}}function e(y,x){x=x||b.languages||Object.keys(f);var v={r:0,value:j(y)};var w=v;x.forEach(function(z){if(!i(z)){return}var A=c(z,y,false);A.language=z;if(A.r>w.r){w=A}if(A.r>v.r){w=v;v=A}});if(w.language){v.second_best=w}return v}function g(v){if(b.tabReplace){v=v.replace(/^((<[^>]+>|\t)+)/gm,function(w,z,y,x){return z.replace(/\t/g,b.tabReplace)})}if(b.useBR){v=v.replace(/\n/g,"<br>")}return v}function p(A){var B=r(A);if(/no(-?)highlight/.test(B)){return}var y;if(b.useBR){y=document.createElementNS("http://www.w3.org/1999/xhtml","div");y.innerHTML=A.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n")}else{y=A}var z=y.textContent;var v=B?c(B,z,true):e(z);var x=u(y);if(x.length){var w=document.createElementNS("http://www.w3.org/1999/xhtml","div");w.innerHTML=v.value;v.value=q(x,u(w),z)}v.value=g(v.value);A.innerHTML=v.value;A.className+=" hljs "+(!B&&v.language||"");A.result={language:v.language,re:v.r};if(v.second_best){A.second_best={language:v.second_best.language,re:v.second_best.r}}}var b={classPrefix:"hljs-",tabReplace:null,useBR:false,languages:undefined};function s(v){b=o(b,v)}function l(){if(l.called){return}l.called=true;var v=document.querySelectorAll("pre code");Array.prototype.forEach.call(v,p)}function a(){addEventListener("DOMContentLoaded",l,false);addEventListener("load",l,false)}var f={};var n={};function d(v,x){var w=f[v]=x(this);if(w.aliases){w.aliases.forEach(function(y){n[y]=v})}}function k(){return Object.keys(f)}function i(v){return f[v]||f[n[v]]}this.highlight=c;this.highlightAuto=e;this.fixMarkup=g;this.highlightBlock=p;this.configure=s;this.initHighlighting=l;this.initHighlightingOnLoad=a;this.registerLanguage=d;this.listLanguages=k;this.getLanguage=i;this.inherit=o;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE]};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE]};this.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\b/};this.CLCM={cN:"comment",b:"//",e:"$",c:[this.PWM]};this.CBCM={cN:"comment",b:"/\\*",e:"\\*/",c:[this.PWM]};this.HCM={cN:"comment",b:"#",e:"$",c:[this.PWM]};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.CSSNM={cN:"number",b:this.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0};this.RM={cN:"regexp",b:/\//,e:/\/[gim]*/,i:/\n/,c:[this.BE,{b:/\[/,e:/\]/,r:0,c:[this.BE]}]};this.TM={cN:"title",b:this.IR,r:0};this.UTM={cN:"title",b:this.UIR,r:0}}();hljs.registerLanguage("json",function(a){var e={literal:"true false null"};var d=[a.QSM,a.CNM];var c={cN:"value",e:",",eW:true,eE:true,c:d,k:e};var b={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:true,eE:true,c:[a.BE],i:"\\n",starts:c}],i:"\\S"};var f={b:"\\[",e:"\\]",c:[a.inherit(c,{cN:null})],i:"\\S"};d.splice(d.length,0,b,f);return{c:d,k:e,i:"\\S"}});

================================================
FILE: app/vendor/highlight/styles/arta.css
================================================
/*
Date: 17.V.2011
Author: pumbur <pumbur@pumbur.net>
*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #222;
  -webkit-text-size-adjust: none;
}

.profile .hljs-header *,
.ini .hljs-title,
.nginx .hljs-title {
  color: #fff;
}

.hljs-comment,
.hljs-javadoc,
.hljs-preprocessor,
.hljs-preprocessor .hljs-title,
.hljs-pragma,
.hljs-shebang,
.profile .hljs-summary,
.diff,
.hljs-pi,
.hljs-doctype,
.hljs-tag,
.hljs-template_comment,
.css .hljs-rules,
.tex .hljs-special {
  color: #444;
}

.hljs-string,
.hljs-symbol,
.diff .hljs-change,
.hljs-regexp,
.xml .hljs-attribute,
.smalltalk .hljs-char,
.xml .hljs-value,
.ini .hljs-value,
.clojure .hljs-attribute,
.coffeescript .hljs-attribute {
  color: #ffcc33;
}

.hljs-number,
.hljs-addition {
  color: #00cc66;
}

.hljs-built_in,
.hljs-literal,
.hljs-type,
.hljs-typename,
.go .hljs-constant,
.ini .hljs-keyword,
.lua .hljs-title,
.perl .hljs-variable,
.php .hljs-variable,
.mel .hljs-variable,
.django .hljs-variable,
.css .funtion,
.smalltalk .method,
.hljs-hexcolor,
.hljs-important,
.hljs-flow,
.hljs-inheritance,
.parser3 .hljs-variable {
  color: #32aaee;
}

.hljs-keyword,
.hljs-tag .hljs-title,
.css .hljs-tag,
.css .hljs-class,
.css .hljs-id,
.css .hljs-pseudo,
.css .hljs-attr_selector,
.hljs-winutils,
.tex .hljs-command,
.hljs-request,
.hljs-status {
  color: #6644aa;
}

.hljs-title,
.ruby .hljs-constant,
.vala .hljs-constant,
.hljs-parent,
.hljs-deletion,
.hljs-template_tag,
.css .hljs-keyword,
.objectivec .hljs-class .hljs-id,
.smalltalk .hljs-class,
.lisp .hljs-keyword,
.apache .hljs-tag,
.nginx .hljs-variable,
.hljs-envvar,
.bash .hljs-variable,
.go .hljs-built_in,
.vbscript .hljs-built_in,
.lua .hljs-built_in,
.rsl .hljs-built_in,
.tail,
.avrasm .hljs-label,
.tex .hljs-formula,
.tex .hljs-formula * {
  color: #bb1166;
}

.hljs-yardoctag,
.hljs-phpdoc,
.hljs-dartdoc,
.profile .hljs-header,
.ini .hljs-title,
.apache .hljs-tag,
.parser3 .hljs-title {
  font-weight: bold;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.6;
}

.hljs,
.hljs-subst,
.diff .hljs-chunk,
.css .hljs-value,
.css .hljs-attribute {
  color: #aaa;
}


================================================
FILE: app/vendor/highlight/styles/ascetic.css
================================================
/*

Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: white;
  color: black;
  -webkit-text-size-adjust: none;
}

.hljs-string,
.hljs-tag .hljs-value,
.hljs-filter .hljs-argument,
.hljs-addition,
.hljs-change,
.apache .hljs-tag,
.apache .hljs-cbracket,
.nginx .hljs-built_in,
.tex .hljs-formula {
  color: #888;
}

.hljs-comment,
.hljs-template_comment,
.hljs-shebang,
.hljs-doctype,
.hljs-pi,
.hljs-javadoc,
.hljs-deletion,
.apache .hljs-sqbracket {
  color: #ccc;
}

.hljs-keyword,
.hljs-tag .hljs-title,
.ini .hljs-title,
.lisp .hljs-title,
.http .hljs-title,
.nginx .hljs-title,
.css .hljs-tag,
.hljs-winutils,
.hljs-flow,
.apache .hljs-tag,
.tex .hljs-command,
.hljs-request,
.hljs-status {
  font-weight: bold;
}


================================================
FILE: app/vendor/highlight/styles/atelier-dune.dark.css
================================================
/* Base16 Atelier Dune Dark - Theme */
/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */
/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
/* https://github.com/jmblog/color-themes-for-highlightjs */

/* Atelier Dune Dark Comment */
.hljs-comment,
.hljs-title {
  color: #999580;
}

/* Atelier Dune Dark Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #d73737;
}

/* Atelier Dune Dark Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #b65611;
}

/* Atelier Dune Dark Yellow */
.ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #cfb017;
}

/* Atelier Dune Dark Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #60ac39;
}

/* Atelier Dune Dark Aqua */
.css .hljs-hexcolor {
  color: #1fad83;
}

/* Atelier Dune Dark Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #6684e1;
}

/* Atelier Dune Dark Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #b854d4;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #292824;
  color: #a6a28c;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/atelier-dune.light.css
================================================
/* Base16 Atelier Dune Light - Theme */
/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */
/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
/* https://github.com/jmblog/color-themes-for-highlightjs */

/* Atelier Dune Light Comment */
.hljs-comment,
.hljs-title {
  color: #7d7a68;
}

/* Atelier Dune Light Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #d73737;
}

/* Atelier Dune Light Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #b65611;
}

/* Atelier Dune Light Yellow */
.hljs-ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #cfb017;
}

/* Atelier Dune Light Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #60ac39;
}

/* Atelier Dune Light Aqua */
.css .hljs-hexcolor {
  color: #1fad83;
}

/* Atelier Dune Light Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #6684e1;
}

/* Atelier Dune Light Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #b854d4;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #fefbec;
  color: #6e6b5e;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/atelier-forest.dark.css
================================================
/* Base16 Atelier Forest Dark - Theme */
/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */
/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
/* https://github.com/jmblog/color-themes-for-highlightjs */

/* Atelier Forest Dark Comment */
.hljs-comment,
.hljs-title {
  color: #9c9491;
}

/* Atelier Forest Dark Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #f22c40;
}

/* Atelier Forest Dark Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #df5320;
}

/* Atelier Forest Dark Yellow */
.hljs-ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #d5911a;
}

/* Atelier Forest Dark Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #5ab738;
}

/* Atelier Forest Dark Aqua */
.css .hljs-hexcolor {
  color: #00ad9c;
}

/* Atelier Forest Dark Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #407ee7;
}

/* Atelier Forest Dark Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #6666ea;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #2c2421;
  color: #a8a19f;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/atelier-forest.light.css
================================================
/* Base16 Atelier Forest Light - Theme */
/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */
/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
/* https://github.com/jmblog/color-themes-for-highlightjs */

/* Atelier Forest Light Comment */
.hljs-comment,
.hljs-title {
  color: #766e6b;
}

/* Atelier Forest Light Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #f22c40;
}

/* Atelier Forest Light Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #df5320;
}

/* Atelier Forest Light Yellow */
.hljs-ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #d5911a;
}

/* Atelier Forest Light Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #5ab738;
}

/* Atelier Forest Light Aqua */
.css .hljs-hexcolor {
  color: #00ad9c;
}

/* Atelier Forest Light Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #407ee7;
}

/* Atelier Forest Light Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #6666ea;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #f1efee;
  color: #68615e;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/atelier-heath.dark.css
================================================
/* Base16 Atelier Heath Dark - Theme */
/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */
/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
/* https://github.com/jmblog/color-themes-for-highlightjs */

/* Atelier Heath Dark Comment */
.hljs-comment,
.hljs-title {
  color: #9e8f9e;
}

/* Atelier Heath Dark Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #ca402b;
}

/* Atelier Heath Dark Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #a65926;
}

/* Atelier Heath Dark Yellow */
.hljs-ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #bb8a35;
}

/* Atelier Heath Dark Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #379a37;
}

/* Atelier Heath Dark Aqua */
.css .hljs-hexcolor {
  color: #159393;
}

/* Atelier Heath Dark Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #516aec;
}

/* Atelier Heath Dark Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #7b59c0;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #292329;
  color: #ab9bab;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/atelier-heath.light.css
================================================
/* Base16 Atelier Heath Light - Theme */
/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */
/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
/* https://github.com/jmblog/color-themes-for-highlightjs */

/* Atelier Heath Light Comment */
.hljs-comment,
.hljs-title {
  color: #776977;
}

/* Atelier Heath Light Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #ca402b;
}

/* Atelier Heath Light Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #a65926;
}

/* Atelier Heath Light Yellow */
.hljs-ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #bb8a35;
}

/* Atelier Heath Light Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #379a37;
}

/* Atelier Heath Light Aqua */
.css .hljs-hexcolor {
  color: #159393;
}

/* Atelier Heath Light Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #516aec;
}

/* Atelier Heath Light Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #7b59c0;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #f7f3f7;
  color: #695d69;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/atelier-lakeside.dark.css
================================================
/* Base16 Atelier Lakeside Dark - Theme */
/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/) */
/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
/* https://github.com/jmblog/color-themes-for-highlightjs */

/* Atelier Lakeside Dark Comment */
.hljs-comment,
.hljs-title {
  color: #7195a8;
}

/* Atelier Lakeside Dark Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #d22d72;
}

/* Atelier Lakeside Dark Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #935c25;
}

/* Atelier Lakeside Dark Yellow */
.hljs-ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #8a8a0f;
}

/* Atelier Lakeside Dark Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #568c3b;
}

/* Atelier Lakeside Dark Aqua */
.css .hljs-hexcolor {
  color: #2d8f6f;
}

/* Atelier Lakeside Dark Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #257fad;
}

/* Atelier Lakeside Dark Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #5d5db1;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #1f292e;
  color: #7ea2b4;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/atelier-lakeside.light.css
================================================
/* Base16 Atelier Lakeside Light - Theme */
/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/) */
/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
/* https://github.com/jmblog/color-themes-for-highlightjs */

/* Atelier Lakeside Light Comment */
.hljs-comment,
.hljs-title {
  color: #5a7b8c;
}

/* Atelier Lakeside Light Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #d22d72;
}

/* Atelier Lakeside Light Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #935c25;
}

/* Atelier Lakeside Light Yellow */
.hljs-ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #8a8a0f;
}

/* Atelier Lakeside Light Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #568c3b;
}

/* Atelier Lakeside Light Aqua */
.css .hljs-hexcolor {
  color: #2d8f6f;
}

/* Atelier Lakeside Light Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #257fad;
}

/* Atelier Lakeside Light Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #5d5db1;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #ebf8ff;
  color: #516d7b;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/atelier-seaside.dark.css
================================================
/* Base16 Atelier Seaside Dark - Theme */
/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/) */
/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
/* https://github.com/jmblog/color-themes-for-highlightjs */

/* Atelier Seaside Dark Comment */
.hljs-comment,
.hljs-title {
  color: #809980;
}

/* Atelier Seaside Dark Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #e6193c;
}

/* Atelier Seaside Dark Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #87711d;
}

/* Atelier Seaside Dark Yellow */
.hljs-ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #c3c322;
}

/* Atelier Seaside Dark Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #29a329;
}

/* Atelier Seaside Dark Aqua */
.css .hljs-hexcolor {
  color: #1999b3;
}

/* Atelier Seaside Dark Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #3d62f5;
}

/* Atelier Seaside Dark Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #ad2bee;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #242924;
  color: #8ca68c;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/atelier-seaside.light.css
================================================
/* Base16 Atelier Seaside Light - Theme */
/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/) */
/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
/* https://github.com/jmblog/color-themes-for-highlightjs */

/* Atelier Seaside Light Comment */
.hljs-comment,
.hljs-title {
  color: #687d68;
}

/* Atelier Seaside Light Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #e6193c;
}

/* Atelier Seaside Light Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #87711d;
}

/* Atelier Seaside Light Yellow */
.hljs-ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #c3c322;
}

/* Atelier Seaside Light Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #29a329;
}

/* Atelier Seaside Light Aqua */
.css .hljs-hexcolor {
  color: #1999b3;
}

/* Atelier Seaside Light Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #3d62f5;
}

/* Atelier Seaside Light Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #ad2bee;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #f0fff0;
  color: #5e6e5e;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/brown_paper.css
================================================
/*

Brown Paper style from goldblog.com.ua (c) Zaripov Yura <yur4ik7@ukr.net>

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background:#b7a68e url(./brown_papersq.png);
  -webkit-text-size-adjust: none;
}

.hljs-keyword,
.hljs-literal,
.hljs-change,
.hljs-winutils,
.hljs-flow,
.nginx .hljs-title,
.tex .hljs-special,
.hljs-request,
.hljs-status {
  color:#005599;
  font-weight:bold;
}

.hljs,
.hljs-subst,
.hljs-tag .hljs-keyword {
  color: #363c69;
}

.hljs-string,
.hljs-title,
.hljs-type,
.hljs-tag .hljs-value,
.css .hljs-rules .hljs-value,
.hljs-preprocessor,
.hljs-pragma,
.ruby .hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.ruby .hljs-class .hljs-parent,
.hljs-built_in,
.django .hljs-template_tag,
.django .hljs-variable,
.smalltalk .hljs-class,
.hljs-javadoc,
.ruby .hljs-string,
.django .hljs-filter .hljs-argument,
.smalltalk .hljs-localvars,
.smalltalk .hljs-array,
.hljs-attr_selector,
.hljs-pseudo,
.hljs-addition,
.hljs-stream,
.hljs-envvar,
.apache .hljs-tag,
.apache .hljs-cbracket,
.tex .hljs-number {
  color: #2c009f;
}

.hljs-comment,
.hljs-annotation,
.hljs-decorator,
.hljs-template_comment,
.hljs-pi,
.hljs-doctype,
.hljs-deletion,
.hljs-shebang,
.apache .hljs-sqbracket,
.nginx .hljs-built_in,
.tex .hljs-formula {
  color: #802022;
}

.hljs-keyword,
.hljs-literal,
.css .hljs-id,
.hljs-phpdoc,
.hljs-dartdoc,
.hljs-title,
.hljs-type,
.vbscript .hljs-built_in,
.rsl .hljs-built_in,
.smalltalk .hljs-class,
.diff .hljs-header,
.hljs-chunk,
.hljs-winutils,
.bash .hljs-variable,
.apache .hljs-tag,
.tex .hljs-command {
  font-weight: bold;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.8;
}


================================================
FILE: app/vendor/highlight/styles/codepen-embed.css
================================================
/*
  codepen.io Embed Theme
  Author: Justin Perry <http://github.com/ourmaninamsterdam>
  Original theme - https://github.com/chriskempson/tomorrow-theme
*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #222;
  color: #fff;
  font-family: Menlo, Monaco, 'Andale Mono', 'Lucida Console', 'Courier New', monospace;
  -webkit-text-size-adjust: none;
}

.hljs-comment,
.hljs-title {
  color: #777;
}

.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .constant,
.xml .tag .title,
.xml .pi,
.xml .doctype,
.html .doctype {
  color: #ab875d;
}

.css .value {
  color: #cd6a51;
}

.css .value .function,
.css .value .string {
  color: #a67f59;
}

.css .value .number {
  color: #9b869c;
}

.css .id,
.css .class,
.css-pseudo,
.css .selector,
.css .tag {
  color: #dfc48c;
}

.hljs-number,
.hljs-preprocessor,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #ab875d;
}

.ruby .class .title,
.css .rules .attribute {
  color: #9b869b;
}

.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .symbol,
.xml .cdata {
  color: #8f9c6c;
}

.css .hexcolor {
  color: #cd6a51;
}

.function,
.python .decorator,
.python .title,
.ruby .function .title,
.ruby .title .keyword,
.perl .sub,
.javascript .title,
.coffeescript .title {
  color: #fff;
}

.hljs-keyword,
.javascript .function {
  color: #8f9c6c;
}

.coffeescript .javascript,
.javascript,
.javascript .xml,
.tex .formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .cdata {
    background: transparent;
    opacity: 1;
}


================================================
FILE: app/vendor/highlight/styles/color-brewer.css
================================================
/*

Colorbrewer theme
Original: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock <mike@ocks.org>
Ported by Fabrício Tavares de Oliveira

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #fff;
  -webkit-text-size-adjust: none;
}

.hljs,
.hljs-subst,
.hljs-tag .hljs-title,
.nginx .hljs-title {
  color: #000;
}

.hljs-string,
.hljs-title,
.hljs-constant,
.hljs-parent,
.hljs-tag .hljs-value,
.hljs-rules .hljs-value,
.hljs-preprocessor,
.hljs-pragma,
.haml .hljs-symbol,
.ruby .hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.hljs-template_tag,
.django .hljs-variable,
.smalltalk .hljs-class,
.hljs-addition,
.hljs-flow,
.hljs-stream,
.bash .hljs-variable,
.apache .hljs-tag,
.apache .hljs-cbracket,
.tex .hljs-command,
.tex .hljs-special,
.erlang_repl .hljs-function_or_atom,
.asciidoc .hljs-header,
.markdown .hljs-header,
.coffeescript .hljs-attribute {
  color: #756bb1;
}

.smartquote,
.hljs-comment,
.hljs-annotation,
.hljs-template_comment,
.diff .hljs-header,
.hljs-chunk,
.asciidoc .hljs-blockquote,
.markdown .hljs-blockquote {
  color: #636363;
}

.hljs-number,
.hljs-date,
.hljs-regexp,
.hljs-literal,
.hljs-hexcolor,
.smalltalk .hljs-symbol,
.smalltalk .hljs-char,
.go .hljs-constant,
.hljs-change,
.lasso .hljs-variable,
.makefile .hljs-variable,
.asciidoc .hljs-bullet,
.markdown .hljs-bullet,
.asciidoc .hljs-link_url,
.markdown .hljs-link_url {
  color: #31a354;
}

.hljs-label,
.hljs-javadoc,
.ruby .hljs-string,
.hljs-decorator,
.hljs-filter .hljs-argument,
.hljs-localvars,
.hljs-array,
.hljs-attr_selector,
.hljs-important,
.hljs-pseudo,
.hljs-pi,
.haml .hljs-bullet,
.hljs-doctype,
.hljs-deletion,
.hljs-envvar,
.hljs-shebang,
.apache .hljs-sqbracket,
.nginx .hljs-built_in,
.hljs-list .hljs-built_in,
.tex .hljs-formula,
.erlang_repl .hljs-reserved,
.hljs-prompt,
.asciidoc .hljs-link_label,
.markdown .hljs-link_label,
.vhdl .hljs-attribute,
.clojure .hljs-attribute,
.asciidoc .hljs-attribute,
.lasso .hljs-attribute,
.coffeescript .hljs-property,
.hljs-phony {
  color: #88f;
}



.hljs-keyword,
.hljs-id,
.hljs-title,
.hljs-built_in,
.css .hljs-tag,
.hljs-javadoctag,
.hljs-phpdoc,
.hljs-dartdoc,
.hljs-yardoctag,
.smalltalk .hljs-class,
.hljs-winutils,
.bash .hljs-variable,
.apache .hljs-tag,
.hljs-type,
.hljs-typename,
.tex .hljs-command,
.asciidoc .hljs-strong,
.markdown .hljs-strong,
.hljs-request,
.hljs-status {
  color: #3182bd;
}

.asciidoc .hljs-emphasis,
.markdown .hljs-emphasis {
  font-style: italic;
}

.nginx .hljs-built_in {
  font-weight: normal;
}

.coffeescript .javascript,
.javascript .xml,
.lasso .markup,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}

.css .hljs-attribute,
.html .hljs-attribute {
  color: #e6550d;
}

.css .hljs-class,
.html .hljs-tag,
.html .hljs-title {
  color: #3182bd;
}


================================================
FILE: app/vendor/highlight/styles/dark.css
================================================
/*

Dark style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #444;
  -webkit-text-size-adjust: none;
}

.hljs-keyword,
.hljs-literal,
.hljs-change,
.hljs-winutils,
.hljs-flow,
.nginx .hljs-title,
.tex .hljs-special {
  color: white;
}

.hljs,
.hljs-subst {
  color: #ddd;
}

.hljs-string,
.hljs-title,
.hljs-type,
.ini .hljs-title,
.hljs-tag .hljs-value,
.css .hljs-rules .hljs-value,
.hljs-preprocessor,
.hljs-pragma,
.ruby .hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.ruby .hljs-class .hljs-parent,
.hljs-built_in,
.django .hljs-template_tag,
.django .hljs-variable,
.smalltalk .hljs-class,
.hljs-javadoc,
.ruby .hljs-string,
.django .hljs-filter .hljs-argument,
.smalltalk .hljs-localvars,
.smalltalk .hljs-array,
.hljs-attr_selector,
.hljs-pseudo,
.hljs-addition,
.hljs-stream,
.hljs-envvar,
.apache .hljs-tag,
.apache .hljs-cbracket,
.tex .hljs-command,
.hljs-prompt,
.coffeescript .hljs-attribute {
  color: #d88;
}

.hljs-comment,
.hljs-annotation,
.hljs-decorator,
.hljs-template_comment,
.hljs-pi,
.hljs-doctype,
.hljs-deletion,
.hljs-shebang,
.apache .hljs-sqbracket,
.tex .hljs-formula {
  color: #777;
}

.hljs-keyword,
.hljs-literal,
.hljs-title,
.css .hljs-id,
.hljs-phpdoc,
.hljs-dartdoc,
.hljs-type,
.vbscript .hljs-built_in,
.rsl .hljs-built_in,
.smalltalk .hljs-class,
.diff .hljs-header,
.hljs-chunk,
.hljs-winutils,
.bash .hljs-variable,
.apache .hljs-tag,
.tex .hljs-special,
.hljs-request,
.hljs-status {
  font-weight: bold;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/default.css
================================================
/*

Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #f0f0f0;
  -webkit-text-size-adjust: none;
}

.hljs,
.hljs-subst,
.hljs-tag .hljs-title,
.nginx .hljs-title {
  color: black;
}

.hljs-string,
.hljs-title,
.hljs-constant,
.hljs-parent,
.hljs-tag .hljs-value,
.hljs-rules .hljs-value,
.hljs-preprocessor,
.hljs-pragma,
.haml .hljs-symbol,
.ruby .hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.hljs-template_tag,
.django .hljs-variable,
.smalltalk .hljs-class,
.hljs-addition,
.hljs-flow,
.hljs-stream,
.bash .hljs-variable,
.apache .hljs-tag,
.apache .hljs-cbracket,
.tex .hljs-command,
.tex .hljs-special,
.erlang_repl .hljs-function_or_atom,
.asciidoc .hljs-header,
.markdown .hljs-header,
.coffeescript .hljs-attribute {
  color: #800;
}

.smartquote,
.hljs-comment,
.hljs-annotation,
.hljs-template_comment,
.diff .hljs-header,
.hljs-chunk,
.asciidoc .hljs-blockquote,
.markdown .hljs-blockquote {
  color: #888;
}

.hljs-number,
.hljs-date,
.hljs-regexp,
.hljs-literal,
.hljs-hexcolor,
.smalltalk .hljs-symbol,
.smalltalk .hljs-char,
.go .hljs-constant,
.hljs-change,
.lasso .hljs-variable,
.makefile .hljs-variable,
.asciidoc .hljs-bullet,
.markdown .hljs-bullet,
.asciidoc .hljs-link_url,
.markdown .hljs-link_url {
  color: #080;
}

.hljs-label,
.hljs-javadoc,
.ruby .hljs-string,
.hljs-decorator,
.hljs-filter .hljs-argument,
.hljs-localvars,
.hljs-array,
.hljs-attr_selector,
.hljs-important,
.hljs-pseudo,
.hljs-pi,
.haml .hljs-bullet,
.hljs-doctype,
.hljs-deletion,
.hljs-envvar,
.hljs-shebang,
.apache .hljs-sqbracket,
.nginx .hljs-built_in,
.tex .hljs-formula,
.erlang_repl .hljs-reserved,
.hljs-prompt,
.asciidoc .hljs-link_label,
.markdown .hljs-link_label,
.vhdl .hljs-attribute,
.clojure .hljs-attribute,
.asciidoc .hljs-attribute,
.lasso .hljs-attribute,
.coffeescript .hljs-property,
.hljs-phony {
  color: #88f;
}

.hljs-keyword,
.hljs-id,
.hljs-title,
.hljs-built_in,
.css .hljs-tag,
.hljs-javadoctag,
.hljs-phpdoc,
.hljs-dartdoc,
.hljs-yardoctag,
.smalltalk .hljs-class,
.hljs-winutils,
.bash .hljs-variable,
.apache .hljs-tag,
.hljs-type,
.hljs-typename,
.tex .hljs-command,
.asciidoc .hljs-strong,
.markdown .hljs-strong,
.hljs-request,
.hljs-status {
  font-weight: bold;
}

.asciidoc .hljs-emphasis,
.markdown .hljs-emphasis {
  font-style: italic;
}

.nginx .hljs-built_in {
  font-weight: normal;
}

.coffeescript .javascript,
.javascript .xml,
.lasso .markup,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/docco.css
================================================
/*
Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars)
*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  color: #000;
  background: #f8f8ff;
  -webkit-text-size-adjust: none;
}

.hljs-comment,
.hljs-template_comment,
.diff .hljs-header,
.hljs-javadoc {
  color: #408080;
  font-style: italic;
}

.hljs-keyword,
.assignment,
.hljs-literal,
.css .rule .hljs-keyword,
.hljs-winutils,
.javascript .hljs-title,
.lisp .hljs-title,
.hljs-subst {
  color: #954121;
}

.hljs-number,
.hljs-hexcolor {
  color: #40a070;
}

.hljs-string,
.hljs-tag .hljs-value,
.hljs-phpdoc,
.hljs-dartdoc,
.tex .hljs-formula {
  color: #219161;
}

.hljs-title,
.hljs-id {
  color: #19469d;
}
.hljs-params {
  color: #00f;
}

.javascript .hljs-title,
.lisp .hljs-title,
.hljs-subst {
  font-weight: normal;
}

.hljs-class .hljs-title,
.haskell .hljs-label,
.tex .hljs-command {
  color: #458;
  font-weight: bold;
}

.hljs-tag,
.hljs-tag .hljs-title,
.hljs-rules .hljs-property,
.django .hljs-tag .hljs-keyword {
  color: #000080;
  font-weight: normal;
}

.hljs-attribute,
.hljs-variable,
.instancevar,
.lisp .hljs-body {
  color: #008080;
}

.hljs-regexp {
  color: #b68;
}

.hljs-class {
  color: #458;
  font-weight: bold;
}

.hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.ruby .hljs-symbol .hljs-keyword,
.ruby .hljs-symbol .keymethods,
.lisp .hljs-keyword,
.tex .hljs-special,
.input_number {
  color: #990073;
}

.builtin,
.constructor,
.hljs-built_in,
.lisp .hljs-title {
  color: #0086b3;
}

.hljs-preprocessor,
.hljs-pragma,
.hljs-pi,
.hljs-doctype,
.hljs-shebang,
.hljs-cdata {
  color: #999;
  font-weight: bold;
}

.hljs-deletion {
  background: #fdd;
}

.hljs-addition {
  background: #dfd;
}

.diff .hljs-change {
  background: #0086b3;
}

.hljs-chunk {
  color: #aaa;
}

.tex .hljs-formula {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/far.css
================================================
/*

FAR Style (c) MajestiC <majestic2k@gmail.com>

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #000080;
  -webkit-text-size-adjust: none;
}

.hljs,
.hljs-subst {
  color: #0ff;
}

.hljs-string,
.ruby .hljs-string,
.haskell .hljs-type,
.hljs-tag .hljs-value,
.hljs-rules .hljs-value,
.hljs-rules .hljs-value .hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.ruby .hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.hljs-built_in,
.django .hljs-template_tag,
.django .hljs-variable,
.smalltalk .hljs-class,
.hljs-addition,
.apache .hljs-tag,
.apache .hljs-cbracket,
.tex .hljs-command,
.coffeescript .hljs-attribute {
  color: #ff0;
}

.hljs-keyword,
.css .hljs-id,
.hljs-title,
.hljs-type,
.vbscript .hljs-built_in,
.rsl .hljs-built_in,
.smalltalk .hljs-class,
.xml .hljs-tag .hljs-title,
.hljs-winutils,
.hljs-flow,
.hljs-change,
.hljs-envvar,
.bash .hljs-variable,
.tex .hljs-special {
  color: #fff;
}

.hljs-comment,
.hljs-phpdoc,
.hljs-dartdoc,
.hljs-javadoc,
.hljs-annotation,
.hljs-template_comment,
.hljs-deletion,
.apache .hljs-sqbracket,
.tex .hljs-formula {
  color: #888;
}

.hljs-number,
.hljs-date,
.hljs-regexp,
.hljs-literal,
.smalltalk .hljs-symbol,
.smalltalk .hljs-char,
.clojure .hljs-attribute {
  color: #0f0;
}

.hljs-decorator,
.django .hljs-filter .hljs-argument,
.smalltalk .hljs-localvars,
.smalltalk .hljs-array,
.hljs-attr_selector,
.hljs-pseudo,
.xml .hljs-pi,
.diff .hljs-header,
.hljs-chunk,
.hljs-shebang,
.nginx .hljs-built_in,
.hljs-prompt {
  color: #008080;
}

.hljs-keyword,
.css .hljs-id,
.hljs-title,
.hljs-type,
.vbscript .hljs-built_in,
.rsl .hljs-built_in,
.smalltalk .hljs-class,
.hljs-winutils,
.hljs-flow,
.apache .hljs-tag,
.nginx .hljs-built_in,
.tex .hljs-command,
.tex .hljs-special,
.hljs-request,
.hljs-status {
  font-weight: bold;
}


================================================
FILE: app/vendor/highlight/styles/foundation.css
================================================
/*
Description: Foundation 4 docs style for highlight.js
Author: Dan Allen <dan.j.allen@gmail.com>
Website: http://foundation.zurb.com/docs/
Version: 1.0
Date: 2013-04-02
*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #eee;
  -webkit-text-size-adjust: none;
}

.hljs-header,
.hljs-decorator,
.hljs-annotation {
  color: #000077;
}

.hljs-horizontal_rule,
.hljs-link_url,
.hljs-emphasis,
.hljs-attribute {
  color: #070;
}

.hljs-emphasis {
  font-style: italic;
}

.hljs-link_label,
.hljs-strong,
.hljs-value,
.hljs-string,
.scss .hljs-value .hljs-string {
  color: #d14;
}

.hljs-strong {
  font-weight: bold;
}

.hljs-blockquote,
.hljs-comment {
  color: #998;
  font-style: italic;
}

.asciidoc .hljs-title,
.hljs-function .hljs-title {
  color: #900;
}

.hljs-class {
  color: #458;
}

.hljs-id,
.hljs-pseudo,
.hljs-constant,
.hljs-hexcolor {
  color: teal;
}

.hljs-variable {
  color: #336699;
}

.hljs-bullet,
.hljs-javadoc {
  color: #997700;
}

.hljs-pi,
.hljs-doctype {
  color: #3344bb;
}

.hljs-code,
.hljs-number {
  color: #099;
}

.hljs-important {
  color: #f00;
}

.smartquote,
.hljs-label {
  color: #970;
}

.hljs-preprocessor,
.hljs-pragma {
  color: #579;
}

.hljs-reserved,
.hljs-keyword,
.scss .hljs-value {
  color: #000;
}

.hljs-regexp {
  background-color: #fff0ff;
  color: #880088;
}

.hljs-symbol {
  color: #990073;
}

.hljs-symbol .hljs-string {
  color: #a60;
}

.hljs-tag {
  color: #007700;
}

.hljs-at_rule,
.hljs-at_rule .hljs-keyword {
  color: #088;
}

.hljs-at_rule .hljs-preprocessor {
  color: #808;
}

.scss .hljs-tag,
.scss .hljs-attribute {
  color: #339;
}


================================================
FILE: app/vendor/highlight/styles/github.css
================================================
/*

github.com style (c) Vasily Polovnyov <vast@whiteants.net>

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  color: #333;
  background: #f8f8f8;
  -webkit-text-size-adjust: none;
}

.hljs-comment,
.hljs-template_comment,
.diff .hljs-header,
.hljs-javadoc {
  color: #998;
  font-style: italic;
}

.hljs-keyword,
.css .rule .hljs-keyword,
.hljs-winutils,
.javascript .hljs-title,
.nginx .hljs-title,
.hljs-subst,
.hljs-request,
.hljs-status {
  color: #333;
  font-weight: bold;
}

.hljs-number,
.hljs-hexcolor,
.ruby .hljs-constant {
  color: #008080;
}

.hljs-string,
.hljs-tag .hljs-value,
.hljs-phpdoc,
.hljs-dartdoc,
.tex .hljs-formula {
  color: #d14;
}

.hljs-title,
.hljs-id,
.scss .hljs-preprocessor {
  color: #900;
  font-weight: bold;
}

.javascript .hljs-title,
.hljs-list .hljs-keyword,
.hljs-subst {
  font-weight: normal;
}

.hljs-class .hljs-title,
.hljs-type,
.vhdl .hljs-literal,
.tex .hljs-command {
  color: #458;
  font-weight: bold;
}

.hljs-tag,
.hljs-tag .hljs-title,
.hljs-rules .hljs-property,
.django .hljs-tag .hljs-keyword {
  color: #000080;
  font-weight: normal;
}

.hljs-attribute,
.hljs-variable,
.lisp .hljs-body {
  color: #008080;
}

.hljs-regexp {
  color: #009926;
}

.hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.lisp .hljs-keyword,
.clojure .hljs-keyword,
.scheme .hljs-keyword,
.tex .hljs-special,
.hljs-prompt {
  color: #990073;
}

.hljs-built_in {
  color: #0086b3;
}

.hljs-preprocessor,
.hljs-pragma,
.hljs-pi,
.hljs-doctype,
.hljs-shebang,
.hljs-cdata {
  color: #999;
  font-weight: bold;
}

.hljs-deletion {
  background: #fdd;
}

.hljs-addition {
  background: #dfd;
}

.diff .hljs-change {
  background: #0086b3;
}

.hljs-chunk {
  color: #aaa;
}


================================================
FILE: app/vendor/highlight/styles/googlecode.css
================================================
/*

Google Code style (c) Aahan Krish <geekpanth3r@gmail.com>

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: white;
  color: black;
  -webkit-text-size-adjust: none;
}

.hljs-comment,
.hljs-template_comment,
.hljs-javadoc {
  color: #800;
}

.hljs-keyword,
.method,
.hljs-list .hljs-keyword,
.nginx .hljs-title,
.hljs-tag .hljs-title,
.setting .hljs-value,
.hljs-winutils,
.tex .hljs-command,
.http .hljs-title,
.hljs-request,
.hljs-status {
  color: #008;
}

.hljs-envvar,
.tex .hljs-special {
  color: #660;
}

.hljs-string,
.hljs-tag .hljs-value,
.hljs-cdata,
.hljs-filter .hljs-argument,
.hljs-attr_selector,
.apache .hljs-cbracket,
.hljs-date,
.hljs-regexp,
.coffeescript .hljs-attribute {
  color: #080;
}

.hljs-sub .hljs-identifier,
.hljs-pi,
.hljs-tag,
.hljs-tag .hljs-keyword,
.hljs-decorator,
.ini .hljs-title,
.hljs-shebang,
.hljs-prompt,
.hljs-hexcolor,
.hljs-rules .hljs-value,
.hljs-literal,
.hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.hljs-number,
.css .hljs-function,
.clojure .hljs-attribute {
  color: #066;
}

.hljs-class .hljs-title,
.smalltalk .hljs-class,
.hljs-javadoctag,
.hljs-yardoctag,
.hljs-phpdoc,
.hljs-dartdoc,
.hljs-type,
.hljs-typename,
.hljs-tag .hljs-attribute,
.hljs-doctype,
.hljs-class .hljs-id,
.hljs-built_in,
.setting,
.hljs-params,
.hljs-variable {
  color: #606;
}

.css .hljs-tag,
.hljs-rules .hljs-property,
.hljs-pseudo,
.hljs-subst {
  color: #000;
}

.css .hljs-class,
.css .hljs-id {
  color: #9b703f;
}

.hljs-value .hljs-important {
  color: #ff7700;
  font-weight: bold;
}

.hljs-rules .hljs-keyword {
  color: #c5af75;
}

.hljs-annotation,
.apache .hljs-sqbracket,
.nginx .hljs-built_in {
  color: #9b859d;
}

.hljs-preprocessor,
.hljs-preprocessor *,
.hljs-pragma {
  color: #444;
}

.tex .hljs-formula {
  background-color: #eee;
  font-style: italic;
}

.diff .hljs-header,
.hljs-chunk {
  color: #808080;
  font-weight: bold;
}

.diff .hljs-change {
  background-color: #bccff9;
}

.hljs-addition {
  background-color: #baeeba;
}

.hljs-deletion {
  background-color: #ffc8bd;
}

.hljs-comment .hljs-yardoctag {
  font-weight: bold;
}


================================================
FILE: app/vendor/highlight/styles/hybrid.css
================================================
/*

vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid)

*/

/*background color*/
.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #1d1f21;
  -webkit-text-size-adjust: none;
}

/*selection color*/
.hljs::selection,
.hljs span::selection {
	background: #373b41;
}
.hljs::-moz-selection,
.hljs span::-moz-selection {
	background: #373b41;
}

/*foreground color*/
.hljs,
.hljs-setting .hljs-value,
.hljs-expression .hljs-variable,
.hljs-expression .hljs-begin-block,
.hljs-expression .hljs-end-block,
.hljs-class .hljs-params,
.hljs-function .hljs-params,
.hljs-at_rule .hljs-preprocessor {
  color: #c5c8c6;
}

/*color: fg_yellow*/
.hljs-title,
.hljs-function .hljs-title,
.hljs-keyword .hljs-common,
.hljs-class .hljs-title,
.hljs-decorator,
.hljs-tag .hljs-title,
.hljs-header,
.hljs-sub,
.hljs-function {
  color: #f0c674;
}

/*color: fg_comment*/
.hljs-comment,
.hljs-javadoc,
.hljs-output .hljs-value,
.hljs-pi,
.hljs-shebang,
.hljs-template_comment,
.hljs-doctype {
  color: #707880;
}

/*color: fg_red*/
.hljs-number,
.hljs-symbol,
.hljs-literal,
.hljs-deletion,
.hljs-link_url,
.hljs-symbol .hljs-string,
.hljs-argument,
.hljs-hexcolor,
.hljs-input .hljs-prompt,
.hljs-char {
 color: #cc6666
}

/*color: fg_green*/
.hljs-string,
.hljs-special,
.hljs-javadoctag,
.hljs-addition,
.hljs-important,
.hljs-tag .hljs-value,
.hljs-at.rule .hljs-keyword,
.hljs-regexp,
.hljs-attr_selector {
  color: #b5bd68;
}

/*color: fg_purple*/
.hljs-variable,
.hljs-property,
.hljs-envar,
.hljs-code,
.hljs-expression,
.hljs-localvars,
.hljs-id,
.hljs-variable .hljs-filter,
.hljs-variable .hljs-filter .hljs-keyword,
.hljs-template_tag .hljs-filter .hljs-keyword {
 color: #b294bb;
}

/*color: fg_blue*/
.hljs-statement,
.hljs-label,
.hljs-keyword,
.hljs-xmlDocTag,
.hljs-function .hljs-keyword,
.hljs-chunk,
.hljs-cdata,
.hljs-link_label,
.hljs-bullet,
.hljs-class .hljs-keyword,
.hljs-smartquote,
.hljs-method,
.hljs-list .hljs-title,
.hljs-tag {
 color: #81a2be;
}

/*color: fg_aqua*/
.hljs-pseudo,
.hljs-exception,
.hljs-annotation,
.hljs-subst,
.hljs-change,
.hljs-cbracket,
.hljs-operator,
.hljs-horizontal_rule,
.hljs-preprocessor .hljs-keyword,
.hljs-typedef,
.hljs-template_tag,
.hljs-variable,
.hljs-variable .hljs-filter .hljs-argument,
.hljs-at_rule,
.hljs-at_rule .hljs-string,
.hljs-at_rule .hljs-keyword {
  color: #8abeb7;
}


/*color: fg_orange*/
.hljs-type,
.hljs-typename,
.hljs-inheritance .hljs-parent,
.hljs-constant,
.hljs-built_in,
.hljs-setting,
.hljs-structure,
.hljs-link_reference,
.hljs-attribute,
.hljs-blockquote,
.hljs-quoted,
.hljs-class,
.hljs-header {
  color: #de935f;
}

.hljs-emphasis
{
  font-style: italic;
}

.hljs-strong
{
  font-weight: bold;
}






================================================
FILE: app/vendor/highlight/styles/idea.css
================================================
/*

Intellij Idea-like styling (c) Vasily Polovnyov <vast@whiteants.net>

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  color: #000;
  background: #fff;
  -webkit-text-size-adjust: none;
}

.hljs-subst,
.hljs-title,
.json .hljs-value {
  font-weight: normal;
  color: #000;
}

.hljs-comment,
.hljs-template_comment,
.hljs-javadoc,
.diff .hljs-header {
  color: #808080;
  font-style: italic;
}

.hljs-annotation,
.hljs-decorator,
.hljs-preprocessor,
.hljs-pragma,
.hljs-doctype,
.hljs-pi,
.hljs-chunk,
.hljs-shebang,
.apache .hljs-cbracket,
.hljs-prompt,
.http .hljs-title {
  color: #808000;
}

.hljs-tag,
.hljs-pi {
  background: #efefef;
}

.hljs-tag .hljs-title,
.hljs-id,
.hljs-attr_selector,
.hljs-pseudo,
.hljs-literal,
.hljs-keyword,
.hljs-hexcolor,
.css .hljs-function,
.ini .hljs-title,
.css .hljs-class,
.hljs-list .hljs-keyword,
.nginx .hljs-title,
.tex .hljs-command,
.hljs-request,
.hljs-status {
  font-weight: bold;
  color: #000080;
}

.hljs-attribute,
.hljs-rules .hljs-keyword,
.hljs-number,
.hljs-date,
.hljs-regexp,
.tex .hljs-special {
  font-weight: bold;
  color: #0000ff;
}

.hljs-number,
.hljs-regexp {
  font-weight: normal;
}

.hljs-string,
.hljs-value,
.hljs-filter .hljs-argument,
.css .hljs-function .hljs-params,
.apache .hljs-tag {
  color: #008000;
  font-weight: bold;
}

.hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.hljs-char,
.tex .hljs-formula {
  color: #000;
  background: #d0eded;
  font-style: italic;
}

.hljs-phpdoc,
.hljs-dartdoc,
.hljs-yardoctag,
.hljs-javadoctag {
  text-decoration: underline;
}

.hljs-variable,
.hljs-envvar,
.apache .hljs-sqbracket,
.nginx .hljs-built_in {
  color: #660e7a;
}

.hljs-addition {
  background: #baeeba;
}

.hljs-deletion {
  background: #ffc8bd;
}

.diff .hljs-change {
  background: #bccff9;
}


================================================
FILE: app/vendor/highlight/styles/ir_black.css
================================================
/*
  IR_Black style (c) Vasily Mikhailitchenko <vaskas@programica.ru>
*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #000;
  color: #f8f8f8;
  -webkit-text-size-adjust: none;
}

.hljs-shebang,
.hljs-comment,
.hljs-template_comment,
.hljs-javadoc {
  color: #7c7c7c;
}

.hljs-keyword,
.hljs-tag,
.tex .hljs-command,
.hljs-request,
.hljs-status,
.clojure .hljs-attribute {
  color: #96cbfe;
}

.hljs-sub .hljs-keyword,
.method,
.hljs-list .hljs-title,
.nginx .hljs-title {
  color: #ffffb6;
}

.hljs-string,
.hljs-tag .hljs-value,
.hljs-cdata,
.hljs-filter .hljs-argument,
.hljs-attr_selector,
.apache .hljs-cbracket,
.hljs-date,
.coffeescript .hljs-attribute {
  color: #a8ff60;
}

.hljs-subst {
  color: #daefa3;
}

.hljs-regexp {
  color: #e9c062;
}

.hljs-title,
.hljs-sub .hljs-identifier,
.hljs-pi,
.hljs-decorator,
.tex .hljs-special,
.hljs-type,
.hljs-constant,
.smalltalk .hljs-class,
.hljs-javadoctag,
.hljs-yardoctag,
.hljs-phpdoc,
.hljs-dartdoc,
.nginx .hljs-built_in {
  color: #ffffb6;
}

.hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.hljs-number,
.hljs-variable,
.vbscript,
.hljs-literal {
  color: #c6c5fe;
}

.css .hljs-tag {
  color: #96cbfe;
}

.css .hljs-rules .hljs-property,
.css .hljs-id {
  color: #ffffb6;
}

.css .hljs-class {
  color: #fff;
}

.hljs-hexcolor {
  color: #c6c5fe;
}

.hljs-number {
  color:#ff73fd;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.7;
}


================================================
FILE: app/vendor/highlight/styles/kimbie.dark.css
================================================
/*
    Name:     Kimbie (dark)
    Author:   Jan T. Sott
    License:  Creative Commons Attribution-ShareAlike 4.0 Unported License
    URL:      https://github.com/idleberg/Kimbie-highlight.js
*/

/* Kimbie Comment */
.hljs-comment,
.hljs-title {
  color: #d6baad;
}

/* Kimbie Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #dc3958;
}

/* Kimbie Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #f79a32;
}

/* Kimbie Yellow */
.ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #f06431;
}

/* Kimbie Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #889b4a;
}

/* Kimbie Aqua */
.css .hljs-hexcolor {
  color: #088649;
}

/* Kimbie Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #8ab1b0;
}

/* Kimbie Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #98676a;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #221a0f;
  color: #d3af86;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/kimbie.light.css
================================================
/*
    Name:     Kimbie (light)
    Author:   Jan T. Sott
    License:  Creative Commons Attribution-ShareAlike 4.0 Unported License
    URL:      https://github.com/idleberg/Kimbie-highlight.js
*/

/* Kimbie Comment */
.hljs-comment,
.hljs-title {
  color: #a57a4c;
}

/* Kimbie Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #dc3958;
}

/* Kimbie Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #f79a32;
}

/* Kimbie Yellow */
.ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #f06431;
}

/* Kimbie Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #889b4a;
}

/* Kimbie Aqua */
.css .hljs-hexcolor {
  color: #088649;
}

/* Kimbie Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #8ab1b0;
}

/* Kimbie Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #98676a;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #fbebd4;
  color: #84613d;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/magula.css
================================================
/*
Description: Magula style for highligh.js
Author: Ruslan Keba <rukeba@gmail.com>
Website: http://rukeba.com/
Version: 1.0
Date: 2009-01-03
Music: Aphex Twin / Xtal
*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background-color: #f4f4f4;
  -webkit-text-size-adjust: none;
}

.hljs,
.hljs-subst {
  color: black;
}

.hljs-string,
.hljs-title,
.hljs-parent,
.hljs-tag .hljs-value,
.hljs-rules .hljs-value,
.hljs-preprocessor,
.hljs-pragma,
.ruby .hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.hljs-template_tag,
.django .hljs-variable,
.smalltalk .hljs-class,
.hljs-addition,
.hljs-flow,
.hljs-stream,
.bash .hljs-variable,
.apache .hljs-cbracket,
.coffeescript .hljs-attribute {
  color: #050;
}

.hljs-comment,
.hljs-annotation,
.hljs-template_comment,
.diff .hljs-header,
.hljs-chunk {
  color: #777;
}

.hljs-number,
.hljs-date,
.hljs-regexp,
.hljs-literal,
.smalltalk .hljs-symbol,
.smalltalk .hljs-char,
.hljs-change,
.tex .hljs-special {
  color: #800;
}

.hljs-label,
.hljs-javadoc,
.ruby .hljs-string,
.hljs-decorator,
.hljs-filter .hljs-argument,
.hljs-localvars,
.hljs-array,
.hljs-attr_selector,
.hljs-pseudo,
.hljs-pi,
.hljs-doctype,
.hljs-deletion,
.hljs-envvar,
.hljs-shebang,
.apache .hljs-sqbracket,
.nginx .hljs-built_in,
.tex .hljs-formula,
.hljs-prompt,
.clojure .hljs-attribute {
  color: #00e;
}

.hljs-keyword,
.hljs-id,
.hljs-phpdoc,
.hljs-dartdoc,
.hljs-title,
.hljs-built_in,
.smalltalk .hljs-class,
.hljs-winutils,
.bash .hljs-variable,
.apache .hljs-tag,
.xml .hljs-tag,
.tex .hljs-command,
.hljs-request,
.hljs-status {
  font-weight: bold;
  color: navy;
}

.nginx .hljs-built_in {
  font-weight: normal;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}

/* --- */
.apache .hljs-tag {
  font-weight: bold;
  color: blue;
}



================================================
FILE: app/vendor/highlight/styles/mono-blue.css
================================================
/*
  Five-color theme from a single blue hue.
*/
.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #eaeef3;
  -webkit-text-size-adjust: none;
}

.hljs,
.hljs-list .hljs-built_in {
  color: #00193a;
}

.hljs-keyword,
.hljs-title,
.hljs-important,
.hljs-request,
.hljs-header,
.hljs-javadoctag {
  font-weight: bold;
}

.hljs-comment,
.hljs-chunk,
.hljs-template_comment {
  color: #738191;
}

.hljs-string,
.hljs-title,
.hljs-parent,
.hljs-built_in,
.hljs-literal,
.hljs-filename,
.hljs-value,
.hljs-addition,
.hljs-tag,
.hljs-argument,
.hljs-link_label,
.hljs-blockquote,
.hljs-header {
  color: #0048ab;
}

.hljs-decorator,
.hljs-prompt,
.hljs-yardoctag,
.hljs-subst,
.hljs-symbol,
.hljs-doctype,
.hljs-regexp,
.hljs-preprocessor,
.hljs-pragma,
.hljs-pi,
.hljs-attribute,
.hljs-attr_selector,
.hljs-javadoc,
.hljs-xmlDocTag,
.hljs-deletion,
.hljs-shebang,
.hljs-string .hljs-variable,
.hljs-link_url,
.hljs-bullet,
.hljs-sqbracket,
.hljs-phony {
  color: #4c81c9;
}


================================================
FILE: app/vendor/highlight/styles/monokai.css
================================================
/*
Monokai style - ported by Luigi Maselli - http://grigio.org
*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #272822;
  -webkit-text-size-adjust: none;
}

.hljs-tag,
.hljs-tag .hljs-title,
.hljs-keyword,
.hljs-literal,
.hljs-strong,
.hljs-change,
.hljs-winutils,
.hljs-flow,
.nginx .hljs-title,
.tex .hljs-special {
  color: #f92672;
}

.hljs {
  color: #ddd;
}

.hljs .hljs-constant,
.asciidoc .hljs-code {
	color: #66d9ef;
}

.hljs-code,
.hljs-class .hljs-title,
.hljs-header {
	color: white;
}

.hljs-link_label,
.hljs-attribute,
.hljs-symbol,
.hljs-symbol .hljs-string,
.hljs-value,
.hljs-regexp {
	color: #bf79db;
}

.hljs-link_url,
.hljs-tag .hljs-value,
.hljs-string,
.hljs-bullet,
.hljs-subst,
.hljs-title,
.hljs-emphasis,
.hljs-type,
.hljs-preprocessor,
.hljs-pragma,
.ruby .hljs-class .hljs-parent,
.hljs-built_in,
.django .hljs-template_tag,
.django .hljs-variable,
.smalltalk .hljs-class,
.hljs-javadoc,
.django .hljs-filter .hljs-argument,
.smalltalk .hljs-localvars,
.smalltalk .hljs-array,
.hljs-attr_selector,
.hljs-pseudo,
.hljs-addition,
.hljs-stream,
.hljs-envvar,
.apache .hljs-tag,
.apache .hljs-cbracket,
.tex .hljs-command,
.hljs-prompt {
  color: #a6e22e;
}

.hljs-comment,
.hljs-annotation,
.smartquote,
.hljs-blockquote,
.hljs-horizontal_rule,
.hljs-decorator,
.hljs-template_comment,
.hljs-pi,
.hljs-doctype,
.hljs-deletion,
.hljs-shebang,
.apache .hljs-sqbracket,
.tex .hljs-formula {
  color: #75715e;
}

.hljs-keyword,
.hljs-literal,
.css .hljs-id,
.hljs-phpdoc,
.hljs-dartdoc,
.hljs-title,
.hljs-header,
.hljs-type,
.vbscript .hljs-built_in,
.rsl .hljs-built_in,
.smalltalk .hljs-class,
.diff .hljs-header,
.hljs-chunk,
.hljs-winutils,
.bash .hljs-variable,
.apache .hljs-tag,
.tex .hljs-special,
.hljs-request,
.hljs-status {
  font-weight: bold;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/monokai_sublime.css
================================================
/*

Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #23241f;
  -webkit-text-size-adjust: none;
}

.hljs,
.hljs-tag,
.css .hljs-rules,
.css .hljs-value,
.css .hljs-function
.hljs-preprocessor,
.hljs-pragma {
  color: #f8f8f2;
}

.hljs-strongemphasis,
.hljs-strong,
.hljs-emphasis {
  color: #a8a8a2;
}

.hljs-bullet,
.hljs-blockquote,
.hljs-horizontal_rule,
.hljs-number,
.hljs-regexp,
.alias .hljs-keyword,
.hljs-literal,
.hljs-hexcolor {
  color: #ae81ff;
}

.hljs-tag .hljs-value,
.hljs-code,
.hljs-title,
.css .hljs-class,
.hljs-class .hljs-title:last-child {
  color: #a6e22e;
}

.hljs-link_url {
  font-size: 80%;
}

.hljs-strong,
.hljs-strongemphasis {
  font-weight: bold;
}

.hljs-emphasis,
.hljs-strongemphasis,
.hljs-class .hljs-title:last-child {
  font-style: italic;
}

.hljs-keyword,
.hljs-function,
.hljs-change,
.hljs-winutils,
.hljs-flow,
.nginx .hljs-title,
.tex .hljs-special,
.hljs-header,
.hljs-attribute,
.hljs-symbol,
.hljs-symbol .hljs-string,
.hljs-tag .hljs-title,
.hljs-value,
.alias .hljs-keyword:first-child,
.css .hljs-tag,
.css .unit,
.css .hljs-important {
  color: #f92672;
}

.hljs-function .hljs-keyword,
.hljs-class .hljs-keyword:first-child,
.hljs-constant,
.css .hljs-attribute {
  color: #66d9ef;
}

.hljs-variable,
.hljs-params,
.hljs-class .hljs-title {
  color: #f8f8f2;
}

.hljs-string,
.css .hljs-id,
.hljs-subst,
.hljs-type,
.ruby .hljs-class .hljs-parent,
.hljs-built_in,
.django .hljs-template_tag,
.django .hljs-variable,
.smalltalk .hljs-class,
.django .hljs-filter .hljs-argument,
.smalltalk .hljs-localvars,
.smalltalk .hljs-array,
.hljs-attr_selector,
.hljs-pseudo,
.hljs-addition,
.hljs-stream,
.hljs-envvar,
.apache .hljs-tag,
.apache .hljs-cbracket,
.tex .hljs-command,
.hljs-prompt,
.hljs-link_label,
.hljs-link_url {
  color: #e6db74;
}

.hljs-comment,
.hljs-javadoc,
.hljs-annotation,
.hljs-decorator,
.hljs-template_comment,
.hljs-pi,
.hljs-doctype,
.hljs-deletion,
.hljs-shebang,
.apache .hljs-sqbracket,
.tex .hljs-formula {
  color: #75715e;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata,
.xml .php,
.php .xml {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/obsidian.css
================================================
/**
 * Obsidian style
 * ported by Alexander Marenin (http://github.com/ioncreature)
 */

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #282b2e;
  -webkit-text-size-adjust: none;
}

.hljs-keyword,
.hljs-literal,
.hljs-change,
.hljs-winutils,
.hljs-flow,
.nginx .hljs-title,
.css .hljs-id,
.tex .hljs-special {
  color: #93c763;
}

.hljs-number {
  color: #ffcd22;
}

.hljs {
  color: #e0e2e4;
}

.css .hljs-tag,
.css .hljs-pseudo {
  color: #d0d2b5;
}

.hljs-attribute,
.hljs .hljs-constant {
  color: #668bb0;
}

.xml .hljs-attribute {
  color: #b3b689;
}

.xml .hljs-tag .hljs-value {
  color: #e8e2b7;
}

.hljs-code,
.hljs-class .hljs-title,
.hljs-header {
  color: white;
}

.hljs-class,
.hljs-hexcolor {
  color: #93c763;
}

.hljs-regexp {
  color: #d39745;
}

.hljs-at_rule,
.hljs-at_rule .hljs-keyword {
  color: #a082bd;
}

.hljs-doctype {
  color: #557182;
}

.hljs-link_url,
.hljs-tag,
.hljs-tag .hljs-title,
.hljs-bullet,
.hljs-subst,
.hljs-emphasis,
.hljs-type,
.hljs-preprocessor,
.hljs-pragma,
.ruby .hljs-class .hljs-parent,
.hljs-built_in,
.django .hljs-template_tag,
.django .hljs-variable,
.smalltalk .hljs-class,
.hljs-javadoc,
.django .hljs-filter .hljs-argument,
.smalltalk .hljs-localvars,
.smalltalk .hljs-array,
.hljs-attr_selector,
.hljs-pseudo,
.hljs-addition,
.hljs-stream,
.hljs-envvar,
.apache .hljs-tag,
.apache .hljs-cbracket,
.tex .hljs-command,
.hljs-prompt {
  color: #8cbbad;
}

.hljs-string {
  color: #ec7600;
}

.hljs-comment,
.hljs-annotation,
.hljs-blockquote,
.hljs-horizontal_rule,
.hljs-decorator,
.hljs-template_comment,
.hljs-pi,
.hljs-deletion,
.hljs-shebang,
.apache .hljs-sqbracket,
.tex .hljs-formula {
  color: #818e96;
}

.hljs-keyword,
.hljs-literal,
.css .hljs-id,
.hljs-phpdoc,
.hljs-dartdoc,
.hljs-title,
.hljs-header,
.hljs-type,
.vbscript .hljs-built_in,
.rsl .hljs-built_in,
.smalltalk .hljs-class,
.diff .hljs-header,
.hljs-chunk,
.hljs-winutils,
.bash .hljs-variable,
.apache .hljs-tag,
.tex .hljs-special,
.hljs-request,
.hljs-at_rule .hljs-keyword,
.hljs-status {
  font-weight: bold;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/paraiso.dark.css
================================================
/*
    Paraíso (dark)
    Created by Jan T. Sott (http://github.com/idleberg)
    Inspired by the art of Rubens LP (http://www.rubenslp.com.br)
*/

/* Paraíso Comment */
.hljs-comment,
.hljs-title {
  color: #8d8687;
}

/* Paraíso Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #ef6155;
}

/* Paraíso Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #f99b15;
}

/* Paraíso Yellow */
.ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #fec418;
}

/* Paraíso Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #48b685;
}

/* Paraíso Aqua */
.css .hljs-hexcolor {
  color: #5bc4bf;
}

/* Paraíso Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #06b6ef;
}

/* Paraíso Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #815ba4;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #2f1e2e;
  color: #a39e9b;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/paraiso.light.css
================================================
/*
    Paraíso (light)
    Created by Jan T. Sott (http://github.com/idleberg)
    Inspired by the art of Rubens LP (http://www.rubenslp.com.br)
*/

/* Paraíso Comment */
.hljs-comment,
.hljs-title {
  color: #776e71;
}

/* Paraíso Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #ef6155;
}

/* Paraíso Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #f99b15;
}

/* Paraíso Yellow */
.ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #fec418;
}

/* Paraíso Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #48b685;
}

/* Paraíso Aqua */
.css .hljs-hexcolor {
  color: #5bc4bf;
}

/* Paraíso Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #06b6ef;
}

/* Paraíso Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #815ba4;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #e7e9db;
  color: #4f424c;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/pojoaque.css
================================================
/*

Pojoaque Style by Jason Tate
http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html
Based on Solarized Style from http://ethanschoonover.com/solarized

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  color: #dccf8f;
  background: url(./pojoaque.jpg) repeat scroll left top #181914;
  -webkit-text-size-adjust: none;
}

.hljs-comment,
.hljs-template_comment,
.diff .hljs-header,
.hljs-doctype,
.lisp .hljs-string,
.hljs-javadoc {
  color: #586e75;
  font-style: italic;
}

.hljs-keyword,
.css .rule .hljs-keyword,
.hljs-winutils,
.javascript .hljs-title,
.method,
.hljs-addition,
.css .hljs-tag,
.hljs-list .hljs-keyword,
.nginx .hljs-title {
  color: #b64926;
}

.hljs-number,
.hljs-command,
.hljs-string,
.hljs-tag .hljs-value,
.hljs-phpdoc,
.hljs-dartdoc,
.tex .hljs-formula,
.hljs-regexp,
.hljs-hexcolor {
  color: #468966;
}

.hljs-title,
.hljs-localvars,
.hljs-function .hljs-title,
.hljs-chunk,
.hljs-decorator,
.hljs-built_in,
.hljs-identifier,
.hljs-id {
  color: #ffb03b;
}

.hljs-attribute,
.hljs-variable,
.lisp .hljs-body,
.smalltalk .hljs-number,
.hljs-constant,
.hljs-class .hljs-title,
.hljs-parent,
.hljs-type {
  color: #b58900;
}

.css .hljs-attribute {
  color: #b89859;
}

.css .hljs-number,
.css .hljs-hexcolor {
  color: #dccf8f;
}

.css .hljs-class {
  color: #d3a60c;
}

.hljs-preprocessor,
.hljs-pragma,
.hljs-pi,
.hljs-shebang,
.hljs-symbol,
.hljs-symbol .hljs-string,
.diff .hljs-change,
.hljs-special,
.hljs-attr_selector,
.hljs-important,
.hljs-subst,
.hljs-cdata {
  color: #cb4b16;
}

.hljs-deletion {
  color: #dc322f;
}

.tex .hljs-formula {
  background: #073642;
}


================================================
FILE: app/vendor/highlight/styles/railscasts.css
================================================
/*

Railscasts-like style (c) Visoft, Inc. (Damien White)

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #232323;
  color: #e6e1dc;
  -webkit-text-size-adjust: none;
}

.hljs-comment,
.hljs-template_comment,
.hljs-javadoc,
.hljs-shebang {
  color: #bc9458;
  font-style: italic;
}

.hljs-keyword,
.ruby .hljs-function .hljs-keyword,
.hljs-request,
.hljs-status,
.nginx .hljs-title,
.method,
.hljs-list .hljs-title {
  color: #c26230;
}

.hljs-string,
.hljs-number,
.hljs-regexp,
.hljs-tag .hljs-value,
.hljs-cdata,
.hljs-filter .hljs-argument,
.hljs-attr_selector,
.apache .hljs-cbracket,
.hljs-date,
.tex .hljs-command,
.markdown .hljs-link_label {
  color: #a5c261;
}

.hljs-subst {
  color: #519f50;
}

.hljs-tag,
.hljs-tag .hljs-keyword,
.hljs-tag .hljs-title,
.hljs-doctype,
.hljs-sub .hljs-identifier,
.hljs-pi,
.input_number {
  color: #e8bf6a;
}

.hljs-identifier {
  color: #d0d0ff;
}

.hljs-class .hljs-title,
.hljs-type,
.smalltalk .hljs-class,
.hljs-javadoctag,
.hljs-yardoctag,
.hljs-phpdoc,
.hljs-dartdoc {
  text-decoration: none;
}

.hljs-constant {
  color: #da4939;
}


.hljs-symbol,
.hljs-built_in,
.ruby .hljs-symbol .hljs-string,
.ruby .hljs-symbol .hljs-identifier,
.markdown .hljs-link_url,
.hljs-attribute {
  color: #6d9cbe;
}

.markdown .hljs-link_url {
  text-decoration: underline;
}



.hljs-params,
.hljs-variable,
.clojure .hljs-attribute {
  color: #d0d0ff;
}

.css .hljs-tag,
.hljs-rules .hljs-property,
.hljs-pseudo,
.tex .hljs-special {
  color: #cda869;
}

.css .hljs-class {
  color: #9b703f;
}

.hljs-rules .hljs-keyword {
  color: #c5af75;
}

.hljs-rules .hljs-value {
  color: #cf6a4c;
}

.css .hljs-id {
  color: #8b98ab;
}

.hljs-annotation,
.apache .hljs-sqbracket,
.nginx .hljs-built_in {
  color: #9b859d;
}

.hljs-preprocessor,
.hljs-preprocessor *,
.hljs-pragma {
  color: #8996a8 !important;
}

.hljs-hexcolor,
.css .hljs-value .hljs-number {
  color: #a5c261;
}

.hljs-title,
.hljs-decorator,
.css .hljs-function {
  color: #ffc66d;
}

.diff .hljs-header,
.hljs-chunk {
  background-color: #2f33ab;
  color: #e6e1dc;
  display: inline-block;
  width: 100%;
}

.diff .hljs-change {
  background-color: #4a410d;
  color: #f8f8f8;
  display: inline-block;
  width: 100%;
}

.hljs-addition {
  background-color: #144212;
  color: #e6e1dc;
  display: inline-block;
  width: 100%;
}

.hljs-deletion {
  background-color: #600;
  color: #e6e1dc;
  display: inline-block;
  width: 100%;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.7;
}


================================================
FILE: app/vendor/highlight/styles/rainbow.css
================================================
/*

Style with support for rainbow parens

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #474949;
  color: #d1d9e1;
  -webkit-text-size-adjust: none;
}


.hljs-body,
.hljs-collection {
   color: #d1d9e1;
}

.hljs-comment,
.hljs-template_comment,
.diff .hljs-header,
.hljs-doctype,
.lisp .hljs-string,
.hljs-javadoc {
  color: #969896;
  font-style: italic;
}

.hljs-keyword,
.clojure .hljs-attribute,
.hljs-winutils,
.javascript .hljs-title,
.hljs-addition,
.css .hljs-tag {
  color: #cc99cc;
}

.hljs-number { color: #f99157; }

.hljs-command,
.hljs-string,
.hljs-tag .hljs-value,
.hljs-phpdoc,
.hljs-dartdoc,
.tex .hljs-formula,
.hljs-regexp,
.hljs-hexcolor {
  color: #8abeb7;
}

.hljs-title,
.hljs-localvars,
.hljs-function .hljs-title,
.hljs-chunk,
.hljs-decorator,
.hljs-built_in,
.hljs-identifier {
  color: #b5bd68;
}

.hljs-class .hljs-keyword {
  color: #f2777a;
}

.hljs-variable,
.smalltalk .hljs-number,
.hljs-constant,
.hljs-class .hljs-title,
.hljs-parent,
.haskell .hljs-label,
.hljs-id {
   color: #ffcc66;
}

.hljs-tag .hljs-title,
.hljs-rules .hljs-property,
.django .hljs-tag .hljs-keyword {
  font-weight: bold;
}

.hljs-attribute {
  color: #81a2be;
}

.hljs-preprocessor,
.hljs-pragma,
.hljs-pi,
.hljs-shebang,
.hljs-symbol,
.hljs-symbol .hljs-string,
.diff .hljs-change,
.hljs-special,
.hljs-attr_selector,
.hljs-important,
.hljs-subst,
.hljs-cdata {
  color: #f99157;
}

.hljs-deletion {
  color: #dc322f;
}

.tex .hljs-formula {
  background: #eee8d5;
}


================================================
FILE: app/vendor/highlight/styles/school_book.css
================================================
/*

School Book style from goldblog.com.ua (c) Zaripov Yura <yur4ik7@ukr.net>

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 15px 0.5em 0.5em 30px;
  font-size: 11px !important;
  line-height:16px !important;
  -webkit-text-size-adjust: none;
}

pre{
  background:#f6f6ae url(./school_book.png);
  border-top: solid 2px #d2e8b9;
  border-bottom: solid 1px #d2e8b9;
}

.hljs-keyword,
.hljs-literal,
.hljs-change,
.hljs-winutils,
.hljs-flow,
.nginx .hljs-title,
.tex .hljs-special {
  color:#005599;
  font-weight:bold;
}

.hljs,
.hljs-subst,
.hljs-tag .hljs-keyword {
  color: #3e5915;
}

.hljs-string,
.hljs-title,
.hljs-type,
.hljs-tag .hljs-value,
.css .hljs-rules .hljs-value,
.hljs-preprocessor,
.hljs-pragma,
.ruby .hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.ruby .hljs-class .hljs-parent,
.hljs-built_in,
.django .hljs-template_tag,
.django .hljs-variable,
.smalltalk .hljs-class,
.hljs-javadoc,
.ruby .hljs-string,
.django .hljs-filter .hljs-argument,
.smalltalk .hljs-localvars,
.smalltalk .hljs-array,
.hljs-attr_selector,
.hljs-pseudo,
.hljs-addition,
.hljs-stream,
.hljs-envvar,
.apache .hljs-tag,
.apache .hljs-cbracket,
.nginx .hljs-built_in,
.tex .hljs-command,
.coffeescript .hljs-attribute {
  color: #2c009f;
}

.hljs-comment,
.hljs-annotation,
.hljs-decorator,
.hljs-template_comment,
.hljs-pi,
.hljs-doctype,
.hljs-deletion,
.hljs-shebang,
.apache .hljs-sqbracket {
  color: #e60415;
}

.hljs-keyword,
.hljs-literal,
.css .hljs-id,
.hljs-phpdoc,
.hljs-dartdoc,
.hljs-title,
.hljs-type,
.vbscript .hljs-built_in,
.rsl .hljs-built_in,
.smalltalk .hljs-class,
.xml .hljs-tag .hljs-title,
.diff .hljs-header,
.hljs-chunk,
.hljs-winutils,
.bash .hljs-variable,
.apache .hljs-tag,
.tex .hljs-command,
.hljs-request,
.hljs-status {
  font-weight: bold;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/solarized_dark.css
================================================
/*

Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com>

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #002b36;
  color: #839496;
  -webkit-text-size-adjust: none;
}

.hljs-comment,
.hljs-template_comment,
.diff .hljs-header,
.hljs-doctype,
.hljs-pi,
.lisp .hljs-string,
.hljs-javadoc {
  color: #586e75;
}

/* Solarized Green */
.hljs-keyword,
.hljs-winutils,
.method,
.hljs-addition,
.css .hljs-tag,
.hljs-request,
.hljs-status,
.nginx .hljs-title {
  color: #859900;
}

/* Solarized Cyan */
.hljs-number,
.hljs-command,
.hljs-string,
.hljs-tag .hljs-value,
.hljs-rules .hljs-value,
.hljs-phpdoc,
.hljs-dartdoc,
.tex .hljs-formula,
.hljs-regexp,
.hljs-hexcolor,
.hljs-link_url {
  color: #2aa198;
}

/* Solarized Blue */
.hljs-title,
.hljs-localvars,
.hljs-chunk,
.hljs-decorator,
.hljs-built_in,
.hljs-identifier,
.vhdl .hljs-literal,
.hljs-id,
.css .hljs-function {
  color: #268bd2;
}

/* Solarized Yellow */
.hljs-attribute,
.hljs-variable,
.lisp .hljs-body,
.smalltalk .hljs-number,
.hljs-constant,
.hljs-class .hljs-title,
.hljs-parent,
.hljs-type,
.hljs-link_reference {
  color: #b58900;
}

/* Solarized Orange */
.hljs-preprocessor,
.hljs-preprocessor .hljs-keyword,
.hljs-pragma,
.hljs-shebang,
.hljs-symbol,
.hljs-symbol .hljs-string,
.diff .hljs-change,
.hljs-special,
.hljs-attr_selector,
.hljs-subst,
.hljs-cdata,
.css .hljs-pseudo,
.hljs-header {
  color: #cb4b16;
}

/* Solarized Red */
.hljs-deletion,
.hljs-important {
  color: #dc322f;
}

/* Solarized Violet */
.hljs-link_label {
  color: #6c71c4;
}

.tex .hljs-formula {
  background: #073642;
}


================================================
FILE: app/vendor/highlight/styles/solarized_light.css
================================================
/*

Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com>

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #fdf6e3;
  color: #657b83;
  -webkit-text-size-adjust: none;
}

.hljs-comment,
.hljs-template_comment,
.diff .hljs-header,
.hljs-doctype,
.hljs-pi,
.lisp .hljs-string,
.hljs-javadoc {
  color: #93a1a1;
}

/* Solarized Green */
.hljs-keyword,
.hljs-winutils,
.method,
.hljs-addition,
.css .hljs-tag,
.hljs-request,
.hljs-status,
.nginx .hljs-title {
  color: #859900;
}

/* Solarized Cyan */
.hljs-number,
.hljs-command,
.hljs-string,
.hljs-tag .hljs-value,
.hljs-rules .hljs-value,
.hljs-phpdoc,
.hljs-dartdoc,
.tex .hljs-formula,
.hljs-regexp,
.hljs-hexcolor,
.hljs-link_url {
  color: #2aa198;
}

/* Solarized Blue */
.hljs-title,
.hljs-localvars,
.hljs-chunk,
.hljs-decorator,
.hljs-built_in,
.hljs-identifier,
.vhdl .hljs-literal,
.hljs-id,
.css .hljs-function {
  color: #268bd2;
}

/* Solarized Yellow */
.hljs-attribute,
.hljs-variable,
.lisp .hljs-body,
.smalltalk .hljs-number,
.hljs-constant,
.hljs-class .hljs-title,
.hljs-parent,
.hljs-type,
.hljs-link_reference {
  color: #b58900;
}

/* Solarized Orange */
.hljs-preprocessor,
.hljs-preprocessor .hljs-keyword,
.hljs-pragma,
.hljs-shebang,
.hljs-symbol,
.hljs-symbol .hljs-string,
.diff .hljs-change,
.hljs-special,
.hljs-attr_selector,
.hljs-subst,
.hljs-cdata,
.css .hljs-pseudo,
.hljs-header {
  color: #cb4b16;
}

/* Solarized Red */
.hljs-deletion,
.hljs-important {
  color: #dc322f;
}

/* Solarized Violet */
.hljs-link_label {
  color: #6c71c4;
}

.tex .hljs-formula {
  background: #eee8d5;
}


================================================
FILE: app/vendor/highlight/styles/sunburst.css
================================================
/*

Sunburst-like style (c) Vasily Polovnyov <vast@whiteants.net>

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #000;
  color: #f8f8f8;
  -webkit-text-size-adjust: none;
}

.hljs-comment,
.hljs-template_comment,
.hljs-javadoc {
  color: #aeaeae;
  font-style: italic;
}

.hljs-keyword,
.ruby .hljs-function .hljs-keyword,
.hljs-request,
.hljs-status,
.nginx .hljs-title {
  color: #e28964;
}

.hljs-function .hljs-keyword,
.hljs-sub .hljs-keyword,
.method,
.hljs-list .hljs-title {
  color: #99cf50;
}

.hljs-string,
.hljs-tag .hljs-value,
.hljs-cdata,
.hljs-filter .hljs-argument,
.hljs-attr_selector,
.apache .hljs-cbracket,
.hljs-date,
.tex .hljs-command,
.coffeescript .hljs-attribute {
  color: #65b042;
}

.hljs-subst {
  color: #daefa3;
}

.hljs-regexp {
  color: #e9c062;
}

.hljs-title,
.hljs-sub .hljs-identifier,
.hljs-pi,
.hljs-tag,
.hljs-tag .hljs-keyword,
.hljs-decorator,
.hljs-shebang,
.hljs-prompt {
  color: #89bdff;
}

.hljs-class .hljs-title,
.hljs-type,
.smalltalk .hljs-class,
.hljs-javadoctag,
.hljs-yardoctag,
.hljs-phpdoc,
.hljs-dartdoc {
  text-decoration: underline;
}

.hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.hljs-number {
  color: #3387cc;
}

.hljs-params,
.hljs-variable,
.clojure .hljs-attribute {
  color: #3e87e3;
}

.css .hljs-tag,
.hljs-rules .hljs-property,
.hljs-pseudo,
.tex .hljs-special {
  color: #cda869;
}

.css .hljs-class {
  color: #9b703f;
}

.hljs-rules .hljs-keyword {
  color: #c5af75;
}

.hljs-rules .hljs-value {
  color: #cf6a4c;
}

.css .hljs-id {
  color: #8b98ab;
}

.hljs-annotation,
.apache .hljs-sqbracket,
.nginx .hljs-built_in {
  color: #9b859d;
}

.hljs-preprocessor,
.hljs-pragma {
  color: #8996a8;
}

.hljs-hexcolor,
.css .hljs-value .hljs-number {
  color: #dd7b3b;
}

.css .hljs-function {
  color: #dad085;
}

.diff .hljs-header,
.hljs-chunk,
.tex .hljs-formula {
  background-color: #0e2231;
  color: #f8f8f8;
  font-style: italic;
}

.diff .hljs-change {
  background-color: #4a410d;
  color: #f8f8f8;
}

.hljs-addition {
  background-color: #253b22;
  color: #f8f8f8;
}

.hljs-deletion {
  background-color: #420e09;
  color: #f8f8f8;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/tomorrow-night-blue.css
================================================
/* Tomorrow Night Blue Theme */
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */

/* Tomorrow Comment */
.hljs-comment,
.hljs-title {
  color: #7285b7;
}

/* Tomorrow Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #ff9da4;
}

/* Tomorrow Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #ffc58f;
}

/* Tomorrow Yellow */
.ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #ffeead;
}

/* Tomorrow Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #d1f1a9;
}

/* Tomorrow Aqua */
.css .hljs-hexcolor {
  color: #99ffff;
}

/* Tomorrow Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #bbdaff;
}

/* Tomorrow Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #ebbbff;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #002451;
  color: white;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/tomorrow-night-bright.css
================================================
/* Tomorrow Night Bright Theme */
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */

/* Tomorrow Comment */
.hljs-comment,
.hljs-title {
  color: #969896;
}

/* Tomorrow Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #d54e53;
}

/* Tomorrow Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #e78c45;
}

/* Tomorrow Yellow */
.ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #e7c547;
}

/* Tomorrow Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #b9ca4a;
}

/* Tomorrow Aqua */
.css .hljs-hexcolor {
  color: #70c0b1;
}

/* Tomorrow Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #7aa6da;
}

/* Tomorrow Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #c397d8;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: black;
  color: #eaeaea;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/tomorrow-night-eighties.css
================================================
/* Tomorrow Night Eighties Theme */
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */

/* Tomorrow Comment */
.hljs-comment,
.hljs-title {
  color: #999999;
}

/* Tomorrow Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #f2777a;
}

/* Tomorrow Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #f99157;
}

/* Tomorrow Yellow */
.ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #ffcc66;
}

/* Tomorrow Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #99cc99;
}

/* Tomorrow Aqua */
.css .hljs-hexcolor {
  color: #66cccc;
}

/* Tomorrow Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #6699cc;
}

/* Tomorrow Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #cc99cc;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #2d2d2d;
  color: #cccccc;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/tomorrow-night.css
================================================
/* Tomorrow Night Theme */
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */

/* Tomorrow Comment */
.hljs-comment,
.hljs-title {
  color: #969896;
}

/* Tomorrow Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #cc6666;
}

/* Tomorrow Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #de935f;
}

/* Tomorrow Yellow */
.ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #f0c674;
}

/* Tomorrow Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #b5bd68;
}

/* Tomorrow Aqua */
.css .hljs-hexcolor {
  color: #8abeb7;
}

/* Tomorrow Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #81a2be;
}

/* Tomorrow Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #b294bb;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: #1d1f21;
  color: #c5c8c6;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/tomorrow.css
================================================
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */

/* Tomorrow Comment */
.hljs-comment,
.hljs-title {
  color: #8e908c;
}

/* Tomorrow Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
  color: #c82829;
}

/* Tomorrow Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
  color: #f5871f;
}

/* Tomorrow Yellow */
.ruby .hljs-class .hljs-title,
.css .hljs-rules .hljs-attribute {
  color: #eab700;
}

/* Tomorrow Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
  color: #718c00;
}

/* Tomorrow Aqua */
.css .hljs-hexcolor {
  color: #3e999f;
}

/* Tomorrow Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
  color: #4271ae;
}

/* Tomorrow Purple */
.hljs-keyword,
.javascript .hljs-function {
  color: #8959a8;
}

.hljs {
  display: block;
  overflow-x: auto;
  background: white;
  color: #4d4d4c;
  padding: 0.5em;
  -webkit-text-size-adjust: none;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}


================================================
FILE: app/vendor/highlight/styles/vs.css
================================================
/*

Visual Studio-like style based on original C# coloring by Jason Diamond <jason@diamond.name>

*/
.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: white;
  color: black;
  -webkit-text-size-adjust: none;
}

.hljs-comment,
.hljs-annotation,
.hljs-template_comment,
.diff .hljs-header,
.hljs-chunk,
.apache .hljs-cbracket {
  color: #008000;
}

.hljs-keyword,
.hljs-id,
.hljs-built_in,.css
.smalltalk .hljs-class,
.hljs-winutils,
.bash .hljs-variable,
.tex .hljs-command,
.hljs-request,
.hljs-status,
.nginx .hljs-title,
.xml .hljs-tag,
.xml .hljs-tag .hljs-value {
  color: #00f;
}

.hljs-string,
.hljs-title,
.hljs-parent,
.hljs-tag .hljs-value,
.hljs-rules .hljs-value,
.ruby .hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.hljs-template_tag,
.django .hljs-variable,
.hljs-addition,
.hljs-flow,
.hljs-stream,
.apache .hljs-tag,
.hljs-date,
.tex .hljs-formula,
.coffeescript .hljs-attribute {
  color: #a31515;
}

.ruby .hljs-string,
.hljs-decorator,
.hljs-filter .hljs-argument,
.hljs-localvars,
.hljs-array,
.hljs-attr_selector,
.hljs-pseudo,
.hljs-pi,
.hljs-doctype,
.hljs-deletion,
.hljs-envvar,
.hljs-shebang,
.hljs-preprocessor,
.hljs-pragma,
.userType,
.apache .hljs-sqbracket,
.nginx .hljs-built_in,
.tex .hljs-special,
.hljs-prompt {
  color: #2b91af;
}

.hljs-phpdoc,
.hljs-dartdoc,
.hljs-javadoc,
.hljs-xmlDocTag {
  color: #808080;
}

.hljs-type,
.hljs-typename { font-weight: bold; }

.vhdl .hljs-string { color: #666666; }
.vhdl .hljs-literal { color: #a31515; }
.vhdl .hljs-attribute { color: #00b0e8; }

.xml .hljs-attribute { color: #f00; }


================================================
FILE: app/vendor/highlight/styles/xcode.css
================================================
/*

XCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #fff;
  color: black;
  -webkit-text-size-adjust: none;
}

.hljs-comment,
.hljs-template_comment,
.hljs-javadoc {
  color: #006a00;
}

.hljs-keyword,
.hljs-literal,
.nginx .hljs-title {
  color: #aa0d91;
}
.method,
.hljs-list .hljs-title,
.hljs-tag .hljs-title,
.setting .hljs-value,
.hljs-winutils,
.tex .hljs-command,
.http .hljs-title,
.hljs-request,
.hljs-status {
  color: #008;
}

.hljs-envvar,
.tex .hljs-special {
  color: #660;
}

.hljs-string {
  color: #c41a16;
}
.hljs-tag .hljs-value,
.hljs-cdata,
.hljs-filter .hljs-argument,
.hljs-attr_selector,
.apache .hljs-cbracket,
.hljs-date,
.hljs-regexp {
  color: #080;
}

.hljs-sub .hljs-identifier,
.hljs-pi,
.hljs-tag,
.hljs-tag .hljs-keyword,
.hljs-decorator,
.ini .hljs-title,
.hljs-shebang,
.hljs-prompt,
.hljs-hexcolor,
.hljs-rules .hljs-value,
.hljs-symbol,
.hljs-symbol .hljs-string,
.hljs-number,
.css .hljs-function,
.hljs-function .hljs-title,
.coffeescript .hljs-attribute {
  color: #1c00cf;
}

.hljs-class .hljs-title,
.smalltalk .hljs-class,
.hljs-javadoctag,
.hljs-yardoctag,
.hljs-phpdoc,
.hljs-dartdoc,
.hljs-type,
.hljs-typename,
.hljs-tag .hljs-attribute,
.hljs-doctype,
.hljs-class .hljs-id,
.hljs-built_in,
.setting,
.hljs-params,
.clojure .hljs-attribute {
  color: #5c2699;
}

.hljs-variable {
 color: #3f6e74;
}
.css .hljs-tag,
.hljs-rules .hljs-property,
.hljs-pseudo,
.hljs-subst {
  color: #000;
}

.css .hljs-class,
.css .hljs-id {
  color: #9b703f;
}

.hljs-value .hljs-important {
  color: #ff7700;
  font-weight: bold;
}

.hljs-rules .hljs-keyword {
  color: #c5af75;
}

.hljs-annotation,
.apache .hljs-sqbracket,
.nginx .hljs-built_in {
  color: #9b859d;
}

.hljs-preprocessor,
.hljs-preprocessor *,
.hljs-pragma {
  color: #643820;
}

.tex .hljs-formula {
  background-color: #eee;
  font-style: italic;
}

.diff .hljs-header,
.hljs-chunk {
  color: #808080;
  font-weight: bold;
}

.diff .hljs-change {
  background-color: #bccff9;
}

.hljs-addition {
  background-color: #baeeba;
}

.hljs-deletion {
  background-color: #ffc8bd;
}

.hljs-comment .hljs-yardoctag {
  font-weight: bold;
}

.method .hljs-id {
  color: #000;
}


================================================
FILE: app/vendor/highlight/styles/zenburn.css
================================================
/*

Zenburn style from voldmar.ru (c) Vladimir Epifanov <voldmar@voldmar.ru>
based on dark.css by Ivan Sagalaev

*/

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #3f3f3f;
  color: #dcdcdc;
  -webkit-text-size-adjust: none;
}

.hljs-keyword,
.hljs-tag,
.css .hljs-class,
.css .hljs-id,
.lisp .hljs-title,
.nginx .hljs-title,
.hljs-request,
.hljs-status,
.clojure .hljs-attribute {
  color: #e3ceab;
}

.django .hljs-template_tag,
.django .hljs-variable,
.django .hljs-filter .hljs-argument {
  color: #dcdcdc;
}

.hljs-number,
.hljs-date {
  color: #8cd0d3;
}

.dos .hljs-envvar,
.dos .hljs-stream,
.hljs-variable,
.apache .hljs-sqbracket {
  color: #efdcbc;
}

.dos .hljs-flow,
.diff .hljs-change,
.python .exception,
.python .hljs-built_in,
.hljs-literal,
.tex .hljs-special {
  color: #efefaf;
}

.diff .hljs-chunk,
.hljs-subst {
  color: #8f8f8f;
}

.dos .hljs-keyword,
.hljs-decorator,
.hljs-title,
.hljs-type,
.diff .hljs-header,
.ruby .hljs-class .hljs-parent,
.apache .hljs-tag,
.nginx .hljs-built_in,
.tex .hljs-command,
.hljs-prompt {
  color: #efef8f;
}

.dos .hljs-winutils,
.ruby .hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.ruby .hljs-string {
  color: #dca3a3;
}

.diff .hljs-deletion,
.hljs-string,
.hljs-tag .hljs-value,
.hljs-preprocessor,
.hljs-pragma,
.hljs-built_in,
.hljs-javadoc,
.smalltalk .hljs-class,
.smalltalk .hljs-localvars,
.smalltalk .hljs-array,
.css .hljs-rules .hljs-value,
.hljs-attr_selector,
.hljs-pseudo,
.apache .hljs-cbracket,
.tex .hljs-formula,
.coffeescript .hljs-attribute {
  color: #cc9393;
}

.hljs-shebang,
.diff .hljs-addition,
.hljs-comment,
.hljs-annotation,
.hljs-template_comment,
.hljs-pi,
.hljs-doctype {
  color: #7f9f7f;
}

.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
  opacity: 0.5;
}



================================================
FILE: dev.js
================================================
var express = require('express');
var Agenda = require('agenda');
var agendaUI = require('./index');

var app = express();

var agenda = new Agenda({db: { address: 'localhost:27017/agenda-ui-development'}});
agenda._db.remove(function () {

  agenda.define('Send Email', {priority: 'highest'}, function(job, done) {
    console.log('Send Email', job.attrs.data);
    setTimeout(done, 1000);
  });

  agenda.define('Delete Users', function(job, done) {
    console.log('Delete users', job.attrs.data);
    setTimeout(done.bind(null, new Error('Error deleting users')), 3000);
  });

  agenda.define('Run Analytics', function(job, done) {
    console.log('Run Analytics', job.attrs.data);
    setTimeout(done, 2000);
  });

  agenda.schedule('in 25 seconds', 'Send Email', {
    to: 'admin@example.com'
  , subject: 'Report'
  });

  agenda.every('18 seconds', 'Delete Users', {
    inactive: true
  , paying: false
  });

  agenda.every('1 minute', 'Run Analytics', {
    type: 'engagement'
  , email: 'team'
  });

  app.use('/', agendaUI(agenda, {
    poll: 2000
  , ASSET_HOST: '//localhost:4200'
  }));

  agenda.start();

  app.listen(3022);
});


================================================
FILE: index.js
================================================
var path = require('path');
var express = require('express');
var ejs = require('ejs');
var api = require('./lib/api');

module.exports = function (agenda, options) {
  options || (options = {});
  if (typeof options.poll === 'undefined') {
    options.POLL_INTERVAL = 1000;
  } else {
    options.POLL_INTERVAL = options.poll;
  }

  var app = express();
  var indexHTML = path.join(__dirname, 'lib', 'index.html');

  var router = express.Router();

  router.get('/:definitionId?', function (req, res) {
    var data = {};

    options.NAMESPACE = req.originalUrl.replace(/(^\/|\/$)/g, '');

    if(options.ASSET_HOST) {
      options.ASSETS_NAMESPACE = options.ASSET_HOST + '/' + options.NAMESPACE;
    } else {
      options.ASSETS_NAMESPACE = '/' + options.NAMESPACE;
    }

    data.options = options;

    ejs.renderFile(indexHTML, data, function (err, html) {
      res.send(html);
    });
  });

  app.use('/assets', express.static(path.join(__dirname, 'assets')));
  app.use(api(agenda));
  app.use(router);

  return app;

};


================================================
FILE: lib/api.js
================================================
var express = require('express');
var Store = require('./store');

module.exports = function (agenda) {
  var router = express.Router();
  var store = new Store(agenda);

  router.get('/jobs', function (req, res) {
    store.data(req.query).then(res.json.bind(res));
  });

  router.get('/definitions', function (req, res) {
    store.definitions().then(function (definitions) {
      res.json({ definitions: definitions });
    });
  });

  return router;
};


================================================
FILE: lib/index.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Agenda UI</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
    <link href="<%= options.ASSETS_NAMESPACE %>/assets/app.css" rel="stylesheet">
  </head>
  <body>
    <script>
      var ENV = {};
      ENV.NAMESPACE = "<%= options.NAMESPACE %>";
      ENV.POLL_INTERVAL = <%= options.POLL_INTERVAL %>;
    </script>
    <script src="<%= options.ASSETS_NAMESPACE %>/assets/vendor.js"></script>
    <script src="<%= options.ASSETS_NAMESPACE %>/assets/app.js"></script>
    <script>
      window.App = require('app/app')['default'].create();
    </script>
  </body>
</html>


================================================
FILE: lib/store.js
================================================
var RSVP = require('rsvp');
var slug = require('speakingurl');

var Store = module.exports = function (agenda) {
  if (!agenda) {throw new Error('agenda is undefined. Check agenda config.');}
  this.agenda = agenda;
  this.collection = agenda._collection;
};

Store.prototype.data = function (query) {
  return RSVP.hash({
    jobs: this.jobs(query)
  , meta: this.meta()
  , definitions: this.definitions(query)
  });
};

Store.prototype.jobs = function (query) {
  query = this.buildQuery(query);
  var jobs = RSVP.denodeify(this.agenda.jobs.bind(this.agenda));
  return jobs(query).then(function (results) {
    return results.map(function (result) {
      result.attrs.jobData = result.attrs.data;
      delete result.attrs.data;
      return result;
    });
  });
};

Store.prototype.meta = function () {
  var hash = {
    total: this.count()
  , completed: this.count({filter: 'completed'})
  , future: this.count({filter: 'future'})
  , failed: this.count({filter: 'failed'})
  };

  return RSVP.hash(hash);
};

Store.prototype.count = function (options) {
  var count = RSVP.denodeify(this.collection.count.bind(this.collection));
  return count(this.buildQuery(options));
};

Store.prototype.buildQuery = function (queryParams) {
  queryParams || (queryParams = {});
  var query = {};
  var filter = queryParams.filter;
  var name = queryParams.name;

  if (!filter || 'future' === filter) {
    query.nextRunAt =  { $gte: new Date() };
  } else if ('completed' === filter) {
    query.lastFinishedAt =  { $exists: true };
    query.type = 'normal';
  } else if ('failed' === filter) {
    query.failedAt =  { $exists: true };
  }

  if (name && 'All' !== name) {
    query.name = name;
  }

  return query;
};

Store.prototype.definitions = function (query) {
  query || (query = {});
  var hash = { all: this.count({filter: query.filter}) };
  var indexMap = {};
  var objects = this.definitionObjects();

  objects.forEach(function (definition) {
    indexMap[definition._id] = objects.indexOf(definition);
    hash[definition._id] = this.count({name: definition.name, filter: query.filter});
  }, this);

  return RSVP.hash(hash).then(function (counts) {
    return Object.keys(counts).map(function (id) {
      var object = objects[indexMap[id]];
      object.count = counts[id];
      return object;
    });
  });
};

Store.prototype.definitionObjects = function () {
  var objects = Object.keys(this.agenda._definitions).map(function (d) {
    var id = slug(d);
    return {
      _id: id
    , name: d
    , sortValue: 0
    };
  });

  objects.push({
    _id: 'all'
  , name: 'All'
  , sortValue: -1
  });

  return objects;
};


================================================
FILE: package.json
================================================
{
  "name": "agenda-ui",
  "version": "0.0.7",
  "description": "UI for Agenda",
  "repository": "https://github.com/moudy/agenda-ui",
  "main": "index.js",
  "scripts": {
    "test": "mocha",
    "dev": "nodemon --ignore tmp/ --ignore app/ --ignore node_modules/ dev.js",
    "prepublish": "./scripts/build"
  },
  "keywords": [
    "agenda"
  ],
  "author": "Moudy",
  "license": "MIT",
  "devDependencies": {
    "agenda": "^0.6.12",
    "broccoli": "^0.12.1",
    "broccoli-browserify": "^0.1.0",
    "broccoli-clean-css": "^0.1.5",
    "broccoli-cli": "0.0.1",
    "broccoli-merge-trees": "^0.1.3",
    "broccoli-middleware": "0.0.1",
    "broccoli-sass": "^0.1.4",
    "broccoli-template-builder": "0.0.4",
    "broccoli-uglify-js": "^0.1.3",
    "countdown": "^2.3.0",
    "ember-cli": "0.0.39",
    "ember-template-compiler": "^1.6.0-beta.5",
    "handlebars": "^1.1.0",
    "highlight.js": "^8.0.0",
    "jquery": "^2.1.1",
    "lodash": "^2.4.1",
    "moment": "^2.6.0",
    "moment-countdown": "0.0.1",
    "moment-duration-format": "^1.2.1"
  },
  "dependencies": {
    "ejs": "^1.0.0",
    "express": "^4.3.2",
    "rsvp": "^3.0.9",
    "speakingurl": "^0.9.1"
  }
}


================================================
FILE: scripts/build
================================================
#!/usr/bin/env sh

rm -rf ./assets
mkdir -p ./assets
cd app
ember build --environment=production
mv ./dist/assets/app.* ../assets/
mv ./dist/assets/vendor* ../assets/
Download .txt
gitextract_kuwiszd9/

├── .gitignore
├── .npmignore
├── README.md
├── app/
│   ├── .gitignore
│   ├── .jshintrc
│   ├── Brocfile.js
│   ├── README.md
│   ├── app/
│   │   ├── adapters/
│   │   │   ├── .gitkeep
│   │   │   └── application.js
│   │   ├── app.js
│   │   ├── clock.js
│   │   ├── components/
│   │   │   └── .gitkeep
│   │   ├── controllers/
│   │   │   ├── .gitkeep
│   │   │   ├── application.js
│   │   │   ├── item.js
│   │   │   ├── jobs/
│   │   │   │   ├── feed-item.js
│   │   │   │   └── feed.js
│   │   │   └── jobs.js
│   │   ├── helpers/
│   │   │   ├── .gitkeep
│   │   │   ├── highlight-object.js
│   │   │   └── time-tag.js
│   │   ├── index.html
│   │   ├── initializers/
│   │   │   ├── .gitkeep
│   │   │   └── clock.js
│   │   ├── mixins/
│   │   │   └── .gitkeep
│   │   ├── models/
│   │   │   ├── .gitkeep
│   │   │   ├── definition.js
│   │   │   └── job.js
│   │   ├── router.js
│   │   ├── routes/
│   │   │   ├── .gitkeep
│   │   │   ├── application.js
│   │   │   ├── jobs/
│   │   │   │   └── feed.js
│   │   │   └── jobs.js
│   │   ├── serializers/
│   │   │   └── application.js
│   │   ├── styles/
│   │   │   ├── .gitkeep
│   │   │   ├── app.scss
│   │   │   ├── base.scss
│   │   │   ├── job-card.scss
│   │   │   ├── loader.scss
│   │   │   ├── variables.scss
│   │   │   └── vendor/
│   │   │       └── highlight.scss
│   │   ├── templates/
│   │   │   ├── -header.hbs
│   │   │   ├── -loader.hbs
│   │   │   ├── -sidebar.hbs
│   │   │   ├── .gitkeep
│   │   │   ├── application.hbs
│   │   │   ├── components/
│   │   │   │   └── .gitkeep
│   │   │   ├── job.hbs
│   │   │   ├── jobs/
│   │   │   │   └── loading.hbs
│   │   │   └── jobs.hbs
│   │   ├── utils/
│   │   │   └── .gitkeep
│   │   └── views/
│   │       ├── .gitkeep
│   │       ├── job.js
│   │       └── jobs/
│   │           └── feed.js
│   ├── bower.json
│   ├── config/
│   │   └── environment.js
│   ├── package.json
│   ├── public/
│   │   └── .gitkeep
│   ├── server/
│   │   ├── .jshintrc
│   │   ├── index.js
│   │   └── routes/
│   │       └── .gitkeep
│   ├── testem.json
│   ├── tests/
│   │   ├── .jshintrc
│   │   ├── helpers/
│   │   │   ├── resolver.js
│   │   │   └── start-app.js
│   │   ├── index.html
│   │   ├── test-helper.js
│   │   └── unit/
│   │       ├── .gitkeep
│   │       ├── components/
│   │       │   └── nav-filter-test.js
│   │       └── routes/
│   │           └── application-test.js
│   └── vendor/
│       └── highlight/
│           ├── CHANGES.md
│           ├── LICENSE
│           ├── README.md
│           ├── README.ru.md
│           ├── highlight.pack.js
│           └── styles/
│               ├── arta.css
│               ├── ascetic.css
│               ├── atelier-dune.dark.css
│               ├── atelier-dune.light.css
│               ├── atelier-forest.dark.css
│               ├── atelier-forest.light.css
│               ├── atelier-heath.dark.css
│               ├── atelier-heath.light.css
│               ├── atelier-lakeside.dark.css
│               ├── atelier-lakeside.light.css
│               ├── atelier-seaside.dark.css
│               ├── atelier-seaside.light.css
│               ├── brown_paper.css
│               ├── codepen-embed.css
│               ├── color-brewer.css
│               ├── dark.css
│               ├── default.css
│               ├── docco.css
│               ├── far.css
│               ├── foundation.css
│               ├── github.css
│               ├── googlecode.css
│               ├── hybrid.css
│               ├── idea.css
│               ├── ir_black.css
│               ├── kimbie.dark.css
│               ├── kimbie.light.css
│               ├── magula.css
│               ├── mono-blue.css
│               ├── monokai.css
│               ├── monokai_sublime.css
│               ├── obsidian.css
│               ├── paraiso.dark.css
│               ├── paraiso.light.css
│               ├── pojoaque.css
│               ├── railscasts.css
│               ├── rainbow.css
│               ├── school_book.css
│               ├── solarized_dark.css
│               ├── solarized_light.css
│               ├── sunburst.css
│               ├── tomorrow-night-blue.css
│               ├── tomorrow-night-bright.css
│               ├── tomorrow-night-eighties.css
│               ├── tomorrow-night.css
│               ├── tomorrow.css
│               ├── vs.css
│               ├── xcode.css
│               └── zenburn.css
├── dev.js
├── index.js
├── lib/
│   ├── api.js
│   ├── index.html
│   └── store.js
├── package.json
└── scripts/
    └── build
Download .txt
SYMBOL INDEX (19 symbols across 2 files)

FILE: app/tests/helpers/start-app.js
  function startApp (line 6) | function startApp(attrs) {

FILE: app/vendor/highlight/highlight.pack.js
  function j (line 1) | function j(v){return v.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").repl...
  function t (line 1) | function t(v){return v.nodeName.toLowerCase()}
  function h (line 1) | function h(w,x){var v=w&&w.exec(x);return v&&v.index==0}
  function r (line 1) | function r(w){var v=(w.className+" "+(w.parentNode?w.parentNode.classNam...
  function o (line 1) | function o(x,y){var v={};for(var w in x){v[w]=x[w]}if(y){for(var w in y)...
  function u (line 1) | function u(x){var v=[];(function w(y,z){for(var A=y.firstChild;A;A=A.nex...
  function q (line 1) | function q(w,y,C){var x=0;var F="";var z=[];function B(){if(!w.length||!...
  function m (line 1) | function m(y){function v(z){return(z&&z.source)||z}function w(A,z){retur...
  function c (line 1) | function c(T,L,J,R){function v(V,W){for(var U=0;U<W.c.length;U++){if(h(W...
  function e (line 1) | function e(y,x){x=x||b.languages||Object.keys(f);var v={r:0,value:j(y)};...
  function g (line 1) | function g(v){if(b.tabReplace){v=v.replace(/^((<[^>]+>|\t)+)/gm,function...
  function p (line 1) | function p(A){var B=r(A);if(/no(-?)highlight/.test(B)){return}var y;if(b...
  function s (line 1) | function s(v){b=o(b,v)}
  function l (line 1) | function l(){if(l.called){return}l.called=true;var v=document.querySelec...
  function a (line 1) | function a(){addEventListener("DOMContentLoaded",l,false);addEventListen...
  function d (line 1) | function d(v,x){var w=f[v]=x(this);if(w.aliases){w.aliases.forEach(funct...
  function k (line 1) | function k(){return Object.keys(f)}
  function i (line 1) | function i(v){return f[v]||f[n[v]]}
Condensed preview — 131 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (196K chars).
[
  {
    "path": ".gitignore",
    "chars": 84,
    "preview": ".DS_Store\nnode_modules/\n.sass-cache/\n/tmp/\n/assets\n/app/dist\n/app/tmp\nnpm-debug.log\n"
  },
  {
    "path": ".npmignore",
    "chars": 27,
    "preview": "/tmp\n/app\n/dev.js\n/scripts\n"
  },
  {
    "path": "README.md",
    "chars": 2502,
    "preview": "\n# DEPRECIATED\nTry https://github.com/agenda/agendash\n\n# Agenda UI\n\nA UI to view [Agenda](https://github.com/rschmukler/"
  },
  {
    "path": "app/.gitignore",
    "chars": 249,
    "preview": "# See http://help.github.com/ignore-files/ for more about ignoring files.\n\n# compiled output\n/dist\n/tmp\n\n# dependencies\n"
  },
  {
    "path": "app/.jshintrc",
    "chars": 594,
    "preview": "{\n  \"predef\": {\n    \"document\": true,\n    \"window\": true,\n    \"moment\": true,\n    \"hljs\": true,\n    \"AppENV\": true\n  },\n"
  },
  {
    "path": "app/Brocfile.js",
    "chars": 808,
    "preview": "/* global require, module */\n\nvar EmberApp = require('ember-cli/lib/broccoli/ember-app');\n\nvar app = new EmberApp();\n\nap"
  },
  {
    "path": "app/README.md",
    "chars": 439,
    "preview": "# App\n\nThis README outlines the details of collaborating on this Ember application.\n\n## Installation\n\n* `git clone` this"
  },
  {
    "path": "app/app/adapters/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/app/adapters/application.js",
    "chars": 133,
    "preview": "import Ember from 'ember';\nimport DS from 'ember-data';\n\nexport default DS.RESTAdapter.extend({\n  namespace: Ember.ENV.N"
  },
  {
    "path": "app/app/app.js",
    "chars": 327,
    "preview": "import Ember from 'ember';\nimport Resolver from 'ember/resolver';\nimport loadInitializers from 'ember/load-initializers'"
  },
  {
    "path": "app/app/clock.js",
    "chars": 445,
    "preview": "import Ember from 'ember';\n\nvar TICK_INTERVAL = 500;\n\nexport default Ember.Object.extend({\n  second: null\n\n, minute: nul"
  },
  {
    "path": "app/app/components/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/app/controllers/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/app/controllers/application.js",
    "chars": 116,
    "preview": "import Ember from 'ember';\n\nexport default Ember.Controller.extend({\n\n  pollInterval: Ember.ENV.POLL_INTERVAL\n\n});\n\n"
  },
  {
    "path": "app/app/controllers/item.js",
    "chars": 838,
    "preview": "import Ember from 'ember';\n\nvar PRIORITY_MAP = {\n  '20': 'highest'\n, '10': 'high'\n, '0': 'default'\n, '-10': 'low'\n, '-20"
  },
  {
    "path": "app/app/controllers/jobs/feed-item.js",
    "chars": 838,
    "preview": "import Ember from 'ember';\n\nvar PRIORITY_MAP = {\n  '20': 'highest'\n, '10': 'high'\n, '0': 'default'\n, '-10': 'low'\n, '-20"
  },
  {
    "path": "app/app/controllers/jobs/feed.js",
    "chars": 809,
    "preview": "import Ember from 'ember';\n\nexport default Ember.ArrayController.extend({\n\n  needs: ['jobs']\n\n, queryParams: ['filter', "
  },
  {
    "path": "app/app/controllers/jobs.js",
    "chars": 386,
    "preview": "import Ember from 'ember';\n\nexport default Ember.Controller.extend({\n\n  needs: ['jobs/feed']\n\n, filter: 'future'\n\n, job:"
  },
  {
    "path": "app/app/helpers/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/app/helpers/highlight-object.js",
    "chars": 339,
    "preview": "import Ember from 'ember';\n\n export default Ember.Handlebars.makeBoundHelper(function(object, replacer, spacer){\n  objec"
  },
  {
    "path": "app/app/helpers/time-tag.js",
    "chars": 534,
    "preview": "import Ember from 'ember';\n\nexport default Ember.Handlebars.makeBoundHelper(function(date, object) {\n  if (date) {\n    v"
  },
  {
    "path": "app/app/index.html",
    "chars": 702,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n   "
  },
  {
    "path": "app/app/initializers/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/app/initializers/clock.js",
    "chars": 243,
    "preview": "import Clock from \"../clock\";\n\nexport default {\n\n  name: 'clock'\n\n, initialize: function(container) {\n    container.regi"
  },
  {
    "path": "app/app/mixins/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/app/models/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/app/models/definition.js",
    "chars": 168,
    "preview": "import DS from 'ember-data';\n\nvar attr = DS.attr;\n\nexport default DS.Model.extend({\n\n  name: attr('string')\n\n, count: at"
  },
  {
    "path": "app/app/models/job.js",
    "chars": 617,
    "preview": "import DS from 'ember-data';\n\nvar attr = DS.attr;\n\nexport default DS.Model.extend({\n  name: attr('string')\n, jobData: at"
  },
  {
    "path": "app/app/router.js",
    "chars": 380,
    "preview": "import Ember from 'ember';\n\nvar Router = Ember.Router.extend({\n\n// TODO - figure out why this doesn't work when mounted "
  },
  {
    "path": "app/app/routes/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/app/routes/application.js",
    "chars": 68,
    "preview": "import Ember from 'ember';\n\nexport default Ember.Route.extend({\n});\n"
  },
  {
    "path": "app/app/routes/jobs/feed.js",
    "chars": 754,
    "preview": "import Ember from 'ember';\n\nvar POLL_INTERVAL = Ember.ENV.POLL_INTERVAL;\n\nexport default Ember.Route.extend({\n\n  activat"
  },
  {
    "path": "app/app/routes/jobs.js",
    "chars": 236,
    "preview": "import Ember from 'ember';\n\nexport default Ember.Route.extend({\n\n  model: function () {\n    return this.store.find('defi"
  },
  {
    "path": "app/app/serializers/application.js",
    "chars": 96,
    "preview": "import DS from 'ember-data';\n\nexport default DS.RESTSerializer.extend({\n  primaryKey: '_id'\n});\n"
  },
  {
    "path": "app/app/styles/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/app/styles/app.scss",
    "chars": 1645,
    "preview": "@import 'base';\n\n@import '../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap';\n@import './vendo"
  },
  {
    "path": "app/app/styles/base.scss",
    "chars": 92,
    "preview": "@import 'variables';\n@import '../../node_modules/node-bourbon/assets/stylesheets/bourbon';\n\n"
  },
  {
    "path": "app/app/styles/job-card.scss",
    "chars": 1442,
    "preview": "@import 'variables';\n\n\n.fail-message {\n  line-height: 28px;\n  position: relative;\n  padding: 10px;\n}\n\n.fail-icon {\n  fon"
  },
  {
    "path": "app/app/styles/loader.scss",
    "chars": 809,
    "preview": "@import 'base';\n\n$loader-size: 20px;\n\n.loader {\n  display: inline-block;\n}\n\n.loader-circle {\n  width: $loader-size;\n  he"
  },
  {
    "path": "app/app/styles/variables.scss",
    "chars": 523,
    "preview": "$background-color: white;\n$border-color: #ddd;\n$brand-color: #12A1FF;\n$active-color: $brand-color;\n$fail-color: #ccbb00;"
  },
  {
    "path": "app/app/styles/vendor/highlight.scss",
    "chars": 1684,
    "preview": "/*\n\ngithub.com style (c) Vasily Polovnyov <vast@whiteants.net>\n\n*/\n\n.hljs {\n  display: block; padding: 0.5em;\n  color: #"
  },
  {
    "path": "app/app/templates/-header.hbs",
    "chars": 500,
    "preview": "<header class='navbar navbar-default navbar-fixed-top'>\n<div class='container'>\n  <div class='navbar-header'>\n    {{#lin"
  },
  {
    "path": "app/app/templates/-loader.hbs",
    "chars": 146,
    "preview": "  <div class='loader'>\n    <div class='loader-circle'></div>\n    <div class='loader-circle'></div>\n    <div class='loade"
  },
  {
    "path": "app/app/templates/-sidebar.hbs",
    "chars": 1149,
    "preview": "<aside class='sidebar'>\n\n  <ul class=\"nav nav-pills nav-stacked nav-filters\">\n    <li class='text-info'>\n      {{#link-t"
  },
  {
    "path": "app/app/templates/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/app/templates/application.hbs",
    "chars": 33,
    "preview": "{{partial 'header'}}\n\n{{outlet}}\n"
  },
  {
    "path": "app/app/templates/components/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/app/templates/job.hbs",
    "chars": 1169,
    "preview": "  <div class=\"panel-heading\">\n    <h3 class=\"panel-title\">\n      {{name}}\n      <small>\n      {{#if repeatInterval}}\n   "
  },
  {
    "path": "app/app/templates/jobs/loading.hbs",
    "chars": 71,
    "preview": "<div class='centered loading-container'>\n  {{partial 'loader'}}\n</div>\n"
  },
  {
    "path": "app/app/templates/jobs.hbs",
    "chars": 117,
    "preview": "<div class='container'>\n  {{partial 'sidebar'}}\n\n    <div class='feed'>\n      {{outlet}}\n    </div>\n\n  </div>\n</div>\n"
  },
  {
    "path": "app/app/utils/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/app/views/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/app/views/job.js",
    "chars": 273,
    "preview": "import Ember from 'ember';\n\nvar JobView = Ember.View.extend({\n\n  templateName: 'job'\n\n, classNames: ['panel', 'panel-def"
  },
  {
    "path": "app/app/views/jobs/feed.js",
    "chars": 177,
    "preview": "import Ember from 'ember';\n\nvar JobsView = Ember.CollectionView.extend({\n\n  tagName: 'ul'\n\n, itemViewClass: 'job'\n\n, con"
  },
  {
    "path": "app/bower.json",
    "chars": 565,
    "preview": "{\n  \"name\": \"app\",\n  \"dependencies\": {\n    \"handlebars\": \"~1.3.0\",\n    \"jquery\": \"^1.11.1\",\n    \"qunit\": \"~1.12.0\",\n    "
  },
  {
    "path": "app/config/environment.js",
    "chars": 875,
    "preview": "/* jshint node: true */\n\nmodule.exports = function(environment) {\n  var ENV = {\n    environment: environment,\n    baseUR"
  },
  {
    "path": "app/package.json",
    "chars": 740,
    "preview": "{\n  \"name\": \"app\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"directories\": {\n    \"doc\": \"doc\",\n    \"test\": \"test\"\n  },"
  },
  {
    "path": "app/public/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/server/.jshintrc",
    "chars": 19,
    "preview": "{\n  \"node\": true\n}\n"
  },
  {
    "path": "app/server/index.js",
    "chars": 615,
    "preview": "// To use it create some files under `routes/`\n// e.g. `server/routes/ember-hamsters.js`\n//\n// module.exports = function"
  },
  {
    "path": "app/server/routes/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/testem.json",
    "chars": 139,
    "preview": "{\n  \"framework\": \"qunit\",\n  \"test_page\": \"tests/index.html\",\n  \"launch_in_ci\": [\"PhantomJS\"],\n  \"launch_in_dev\": [\"Phant"
  },
  {
    "path": "app/tests/.jshintrc",
    "chars": 1178,
    "preview": "{\n  \"predef\": [\n    \"document\",\n    \"window\",\n    \"location\",\n    \"setTimeout\",\n    \"Ember\",\n    \"Em\",\n    \"$\",\n    \"QUn"
  },
  {
    "path": "app/tests/helpers/resolver.js",
    "chars": 149,
    "preview": "import Resolver from 'ember/resolver';\n\nvar resolver = Resolver.create();\n\nresolver.namespace = {\n  modulePrefix: 'app'\n"
  },
  {
    "path": "app/tests/helpers/start-app.js",
    "chars": 659,
    "preview": "/* global require */\n\nvar Application = require('app/app')['default'];\nvar Router = require('app/router')['default'];\n\ne"
  },
  {
    "path": "app/tests/index.html",
    "chars": 1316,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n   "
  },
  {
    "path": "app/tests/test-helper.js",
    "chars": 201,
    "preview": "import resolver from './helpers/resolver';\nimport { setResolver } from 'ember-qunit';\n\nsetResolver(resolver);\n\ndocument."
  },
  {
    "path": "app/tests/unit/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/tests/unit/components/nav-filter-test.js",
    "chars": 475,
    "preview": "import { test, moduleForComponent } from 'ember-qunit';\n\nmoduleForComponent('nav-filter', 'NavFilterComponent', {\n  // s"
  },
  {
    "path": "app/tests/unit/routes/application-test.js",
    "chars": 277,
    "preview": "import { test, moduleFor } from 'ember-qunit';\n\nmoduleFor('route:application', 'ApplicationRoute', {\n  // Specify the ot"
  },
  {
    "path": "app/vendor/highlight/CHANGES.md",
    "chars": 34355,
    "preview": "## Version 8.2\n\nWe've finally got [real tests][test] and [continuous testing on Travis][ci]\nthanks to [Jeremy Hull][] an"
  },
  {
    "path": "app/vendor/highlight/LICENSE",
    "chars": 1498,
    "preview": "Copyright (c) 2006, Ivan Sagalaev\nAll rights reserved.\nRedistribution and use in source and binary forms, with or withou"
  },
  {
    "path": "app/vendor/highlight/README.md",
    "chars": 3362,
    "preview": "# Highlight.js\n\n[![Build Status](https://travis-ci.org/isagalaev/highlight.js.svg?branch=master)](https://travis-ci.org/"
  },
  {
    "path": "app/vendor/highlight/README.ru.md",
    "chars": 3344,
    "preview": "# Highlight.js\n\nHighlight.js — это подсветчик синтаксиса, написанный на JavaScript. Он работает\nи в браузере, и на серве"
  },
  {
    "path": "app/vendor/highlight/highlight.pack.js",
    "chars": 7826,
    "preview": "var hljs=new function(){function j(v){return v.replace(/&/gm,\"&amp;\").replace(/</gm,\"&lt;\").replace(/>/gm,\"&gt;\")}functi"
  },
  {
    "path": "app/vendor/highlight/styles/arta.css",
    "chars": 2226,
    "preview": "/*\nDate: 17.V.2011\nAuthor: pumbur <pumbur@pumbur.net>\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em"
  },
  {
    "path": "app/vendor/highlight/styles/ascetic.css",
    "chars": 840,
    "preview": "/*\n\nOriginal style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>\n\n*/\n\n.hljs {\n  display: bloc"
  },
  {
    "path": "app/vendor/highlight/styles/atelier-dune.dark.css",
    "chars": 1772,
    "preview": "/* Base16 Atelier Dune Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-sche"
  },
  {
    "path": "app/vendor/highlight/styles/atelier-dune.light.css",
    "chars": 1786,
    "preview": "/* Base16 Atelier Dune Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-sch"
  },
  {
    "path": "app/vendor/highlight/styles/atelier-forest.dark.css",
    "chars": 1797,
    "preview": "/* Base16 Atelier Forest Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-sc"
  },
  {
    "path": "app/vendor/highlight/styles/atelier-forest.light.css",
    "chars": 1806,
    "preview": "/* Base16 Atelier Forest Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-s"
  },
  {
    "path": "app/vendor/highlight/styles/atelier-heath.dark.css",
    "chars": 1787,
    "preview": "/* Base16 Atelier Heath Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-sch"
  },
  {
    "path": "app/vendor/highlight/styles/atelier-heath.light.css",
    "chars": 1796,
    "preview": "/* Base16 Atelier Heath Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-sc"
  },
  {
    "path": "app/vendor/highlight/styles/atelier-lakeside.dark.css",
    "chars": 1818,
    "preview": "/* Base16 Atelier Lakeside Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-"
  },
  {
    "path": "app/vendor/highlight/styles/atelier-lakeside.light.css",
    "chars": 1827,
    "preview": "/* Base16 Atelier Lakeside Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier"
  },
  {
    "path": "app/vendor/highlight/styles/atelier-seaside.dark.css",
    "chars": 1808,
    "preview": "/* Base16 Atelier Seaside Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-s"
  },
  {
    "path": "app/vendor/highlight/styles/atelier-seaside.light.css",
    "chars": 1817,
    "preview": "/* Base16 Atelier Seaside Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-"
  },
  {
    "path": "app/vendor/highlight/styles/brown_paper.css",
    "chars": 1742,
    "preview": "/*\n\nBrown Paper style from goldblog.com.ua (c) Zaripov Yura <yur4ik7@ukr.net>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-"
  },
  {
    "path": "app/vendor/highlight/styles/codepen-embed.css",
    "chars": 1554,
    "preview": "/*\n  codepen.io Embed Theme\n  Author: Justin Perry <http://github.com/ourmaninamsterdam>\n  Original theme - https://gith"
  },
  {
    "path": "app/vendor/highlight/styles/color-brewer.css",
    "chars": 2848,
    "preview": "/*\n\nColorbrewer theme\nOriginal: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock <mike@ocks.org>\nPorted by"
  },
  {
    "path": "app/vendor/highlight/styles/dark.css",
    "chars": 1711,
    "preview": "/*\n\nDark style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>\n\n*/\n\n.hljs {\n  display: block;\n "
  },
  {
    "path": "app/vendor/highlight/styles/default.css",
    "chars": 2615,
    "preview": "/*\n\nOriginal style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>\n\n*/\n\n.hljs {\n  display: block"
  },
  {
    "path": "app/vendor/highlight/styles/docco.css",
    "chars": 1863,
    "preview": "/*\nDocco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars)\n*/\n\n.hljs {\n  displa"
  },
  {
    "path": "app/vendor/highlight/styles/far.css",
    "chars": 1819,
    "preview": "/*\n\nFAR Style (c) MajestiC <majestic2k@gmail.com>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n "
  },
  {
    "path": "app/vendor/highlight/styles/foundation.css",
    "chars": 1638,
    "preview": "/*\nDescription: Foundation 4 docs style for highlight.js\nAuthor: Dan Allen <dan.j.allen@gmail.com>\nWebsite: http://found"
  },
  {
    "path": "app/vendor/highlight/styles/github.css",
    "chars": 1726,
    "preview": "/*\n\ngithub.com style (c) Vasily Polovnyov <vast@whiteants.net>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padd"
  },
  {
    "path": "app/vendor/highlight/styles/googlecode.css",
    "chars": 2133,
    "preview": "/*\n\nGoogle Code style (c) Aahan Krish <geekpanth3r@gmail.com>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  paddi"
  },
  {
    "path": "app/vendor/highlight/styles/hybrid.css",
    "chars": 2719,
    "preview": "/*\n\nvim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid)\n\n*/\n\n/*background color*/\n.hljs {\n  display: block;\n  "
  },
  {
    "path": "app/vendor/highlight/styles/idea.css",
    "chars": 1804,
    "preview": "/*\n\nIntellij Idea-like styling (c) Vasily Polovnyov <vast@whiteants.net>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: au"
  },
  {
    "path": "app/vendor/highlight/styles/ir_black.css",
    "chars": 1526,
    "preview": "/*\n  IR_Black style (c) Vasily Mikhailitchenko <vaskas@programica.ru>\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n"
  },
  {
    "path": "app/vendor/highlight/styles/kimbie.dark.css",
    "chars": 1580,
    "preview": "/*\n    Name:     Kimbie (dark)\n    Author:   Jan T. Sott\n    License:  Creative Commons Attribution-ShareAlike 4.0 Unpor"
  },
  {
    "path": "app/vendor/highlight/styles/kimbie.light.css",
    "chars": 1581,
    "preview": "/*\n    Name:     Kimbie (light)\n    Author:   Jan T. Sott\n    License:  Creative Commons Attribution-ShareAlike 4.0 Unpo"
  },
  {
    "path": "app/vendor/highlight/styles/magula.css",
    "chars": 1881,
    "preview": "/*\nDescription: Magula style for highligh.js\nAuthor: Ruslan Keba <rukeba@gmail.com>\nWebsite: http://rukeba.com/\nVersion"
  },
  {
    "path": "app/vendor/highlight/styles/mono-blue.css",
    "chars": 995,
    "preview": "/*\n  Five-color theme from a single blue hue.\n*/\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  backg"
  },
  {
    "path": "app/vendor/highlight/styles/monokai.css",
    "chars": 1965,
    "preview": "/*\nMonokai style - ported by Luigi Maselli - http://grigio.org\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  paddi"
  },
  {
    "path": "app/vendor/highlight/styles/monokai_sublime.css",
    "chars": 2301,
    "preview": "/*\n\nMonokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/\n\n*/\n\n.hljs {\n  display: bl"
  },
  {
    "path": "app/vendor/highlight/styles/obsidian.css",
    "chars": 2229,
    "preview": "/**\n * Obsidian style\n * ported by Alexander Marenin (http://github.com/ioncreature)\n */\n\n.hljs {\n  display: block;\n  ov"
  },
  {
    "path": "app/vendor/highlight/styles/paraiso.dark.css",
    "chars": 1538,
    "preview": "/*\n    Paraíso (dark)\n    Created by Jan T. Sott (http://github.com/idleberg)\n    Inspired by the art of Rubens LP (http"
  },
  {
    "path": "app/vendor/highlight/styles/paraiso.light.css",
    "chars": 1539,
    "preview": "/*\n    Paraíso (light)\n    Created by Jan T. Sott (http://github.com/idleberg)\n    Inspired by the art of Rubens LP (htt"
  },
  {
    "path": "app/vendor/highlight/styles/pojoaque.css",
    "chars": 1663,
    "preview": "/*\n\nPojoaque Style by Jason Tate\nhttp://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter."
  },
  {
    "path": "app/vendor/highlight/styles/railscasts.css",
    "chars": 2614,
    "preview": "/*\n\nRailscasts-like style (c) Visoft, Inc. (Damien White)\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: "
  },
  {
    "path": "app/vendor/highlight/styles/rainbow.css",
    "chars": 1516,
    "preview": "/*\n\nStyle with support for rainbow parens\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  backgro"
  },
  {
    "path": "app/vendor/highlight/styles/school_book.css",
    "chars": 1934,
    "preview": "/*\n\nSchool Book style from goldblog.com.ua (c) Zaripov Yura <yur4ik7@ukr.net>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-"
  },
  {
    "path": "app/vendor/highlight/styles/solarized_dark.css",
    "chars": 1640,
    "preview": "/*\n\nOrginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com>\n\n*/\n\n.hljs {\n  display: block"
  },
  {
    "path": "app/vendor/highlight/styles/solarized_light.css",
    "chars": 1640,
    "preview": "/*\n\nOrginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com>\n\n*/\n\n.hljs {\n  display: block"
  },
  {
    "path": "app/vendor/highlight/styles/sunburst.css",
    "chars": 2302,
    "preview": "/*\n\nSunburst-like style (c) Vasily Polovnyov <vast@whiteants.net>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  p"
  },
  {
    "path": "app/vendor/highlight/styles/tomorrow-night-blue.css",
    "chars": 1657,
    "preview": "/* Tomorrow Night Blue Theme */\n/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */\n/* Original them"
  },
  {
    "path": "app/vendor/highlight/styles/tomorrow-night-bright.css",
    "chars": 1587,
    "preview": "/* Tomorrow Night Bright Theme */\n/* Original theme - https://github.com/chriskempson/tomorrow-theme */\n/* http://jmblog"
  },
  {
    "path": "app/vendor/highlight/styles/tomorrow-night-eighties.css",
    "chars": 1591,
    "preview": "/* Tomorrow Night Eighties Theme */\n/* Original theme - https://github.com/chriskempson/tomorrow-theme */\n/* http://jmbl"
  },
  {
    "path": "app/vendor/highlight/styles/tomorrow-night.css",
    "chars": 1654,
    "preview": "/* Tomorrow Night Theme */\n/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */\n/* Original theme - h"
  },
  {
    "path": "app/vendor/highlight/styles/tomorrow.css",
    "chars": 1483,
    "preview": "/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */\n\n/* Tomorrow Comment */\n.hljs-comment,\n.hljs-tit"
  },
  {
    "path": "app/vendor/highlight/styles/vs.css",
    "chars": 1590,
    "preview": "/*\n\nVisual Studio-like style based on original C# coloring by Jason Diamond <jason@diamond.name>\n\n*/\n.hljs {\n  display: "
  },
  {
    "path": "app/vendor/highlight/styles/xcode.css",
    "chars": 2263,
    "preview": "/*\n\nXCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  paddi"
  },
  {
    "path": "app/vendor/highlight/styles/zenburn.css",
    "chars": 1865,
    "preview": "/*\n\nZenburn style from voldmar.ru (c) Vladimir Epifanov <voldmar@voldmar.ru>\nbased on dark.css by Ivan Sagalaev\n\n*/\n\n.hl"
  },
  {
    "path": "dev.js",
    "chars": 1150,
    "preview": "var express = require('express');\nvar Agenda = require('agenda');\nvar agendaUI = require('./index');\n\nvar app = express("
  },
  {
    "path": "index.js",
    "chars": 1037,
    "preview": "var path = require('path');\nvar express = require('express');\nvar ejs = require('ejs');\nvar api = require('./lib/api');\n"
  },
  {
    "path": "lib/api.js",
    "chars": 460,
    "preview": "var express = require('express');\nvar Store = require('./store');\n\nmodule.exports = function (agenda) {\n  var router = e"
  },
  {
    "path": "lib/index.html",
    "chars": 691,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\">\n    <title>Agenda UI</title>\n    <meta name=\"viewport\" conten"
  },
  {
    "path": "lib/store.js",
    "chars": 2647,
    "preview": "var RSVP = require('rsvp');\nvar slug = require('speakingurl');\n\nvar Store = module.exports = function (agenda) {\n  if (!"
  },
  {
    "path": "package.json",
    "chars": 1180,
    "preview": "{\n  \"name\": \"agenda-ui\",\n  \"version\": \"0.0.7\",\n  \"description\": \"UI for Agenda\",\n  \"repository\": \"https://github.com/mou"
  },
  {
    "path": "scripts/build",
    "chars": 167,
    "preview": "#!/usr/bin/env sh\n\nrm -rf ./assets\nmkdir -p ./assets\ncd app\nember build --environment=production\nmv ./dist/assets/app.* "
  }
]

About this extraction

This page contains the full source code of the moudy/agenda-ui GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 131 files (172.7 KB), approximately 57.1k tokens, and a symbol index with 19 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!