##// END OF EJS Templates
More work on the dual mode UX.
Brian E. Granger -
Show More
@@ -1,468 +1,469 b''
1 //----------------------------------------------------------------------------
1 //----------------------------------------------------------------------------
2 // Copyright (C) 2008-2011 The IPython Development Team
2 // Copyright (C) 2008-2011 The IPython Development Team
3 //
3 //
4 // Distributed under the terms of the BSD License. The full license is in
4 // Distributed under the terms of the BSD License. The full license is in
5 // the file COPYING, distributed as part of this software.
5 // the file COPYING, distributed as part of this software.
6 //----------------------------------------------------------------------------
6 //----------------------------------------------------------------------------
7
7
8 //============================================================================
8 //============================================================================
9 // Cell
9 // Cell
10 //============================================================================
10 //============================================================================
11 /**
11 /**
12 * An extendable module that provide base functionnality to create cell for notebook.
12 * An extendable module that provide base functionnality to create cell for notebook.
13 * @module IPython
13 * @module IPython
14 * @namespace IPython
14 * @namespace IPython
15 * @submodule Cell
15 * @submodule Cell
16 */
16 */
17
17
18 var IPython = (function (IPython) {
18 var IPython = (function (IPython) {
19 "use strict";
19 "use strict";
20
20
21 var utils = IPython.utils;
21 var utils = IPython.utils;
22
22
23 /**
23 /**
24 * The Base `Cell` class from which to inherit
24 * The Base `Cell` class from which to inherit
25 * @class Cell
25 * @class Cell
26 **/
26 **/
27
27
28 /*
28 /*
29 * @constructor
29 * @constructor
30 *
30 *
31 * @param {object|undefined} [options]
31 * @param {object|undefined} [options]
32 * @param [options.cm_config] {object} config to pass to CodeMirror, will extend default parameters
32 * @param [options.cm_config] {object} config to pass to CodeMirror, will extend default parameters
33 */
33 */
34 var Cell = function (options) {
34 var Cell = function (options) {
35
35
36 options = this.mergeopt(Cell, options);
36 options = this.mergeopt(Cell, options);
37 // superclass default overwrite our default
37 // superclass default overwrite our default
38
38
39 this.placeholder = options.placeholder || '';
39 this.placeholder = options.placeholder || '';
40 this.read_only = options.cm_config.readOnly;
40 this.read_only = options.cm_config.readOnly;
41 this.selected = false;
41 this.selected = false;
42 this.rendered = false;
42 this.rendered = false;
43 this.mode = 'command';
43 this.mode = 'command';
44 this.metadata = {};
44 this.metadata = {};
45 // load this from metadata later ?
45 // load this from metadata later ?
46 this.user_highlight = 'auto';
46 this.user_highlight = 'auto';
47 this.cm_config = options.cm_config;
47 this.cm_config = options.cm_config;
48 this.cell_id = utils.uuid();
48 this.cell_id = utils.uuid();
49 this._options = options;
49 this._options = options;
50
50
51 // For JS VM engines optimisation, attributes should be all set (even
51 // For JS VM engines optimisation, attributes should be all set (even
52 // to null) in the constructor, and if possible, if different subclass
52 // to null) in the constructor, and if possible, if different subclass
53 // have new attributes with same name, they should be created in the
53 // have new attributes with same name, they should be created in the
54 // same order. Easiest is to create and set to null in parent class.
54 // same order. Easiest is to create and set to null in parent class.
55
55
56 this.element = null;
56 this.element = null;
57 this.cell_type = this.cell_type || null;
57 this.cell_type = this.cell_type || null;
58 this.code_mirror = null;
58 this.code_mirror = null;
59
59
60
60
61 this.create_element();
61 this.create_element();
62 if (this.element !== null) {
62 if (this.element !== null) {
63 this.element.data("cell", this);
63 this.element.data("cell", this);
64 this.bind_events();
64 this.bind_events();
65 }
65 }
66 };
66 };
67
67
68 Cell.options_default = {
68 Cell.options_default = {
69 cm_config : {
69 cm_config : {
70 indentUnit : 4,
70 indentUnit : 4,
71 readOnly: false,
71 readOnly: false,
72 theme: "default"
72 theme: "default"
73 }
73 }
74 };
74 };
75
75
76 // FIXME: Workaround CM Bug #332 (Safari segfault on drag)
76 // FIXME: Workaround CM Bug #332 (Safari segfault on drag)
77 // by disabling drag/drop altogether on Safari
77 // by disabling drag/drop altogether on Safari
78 // https://github.com/marijnh/CodeMirror/issues/332
78 // https://github.com/marijnh/CodeMirror/issues/332
79
79
80 if (utils.browser[0] == "Safari") {
80 if (utils.browser[0] == "Safari") {
81 Cell.options_default.cm_config.dragDrop = false;
81 Cell.options_default.cm_config.dragDrop = false;
82 }
82 }
83
83
84 Cell.prototype.mergeopt = function(_class, options, overwrite){
84 Cell.prototype.mergeopt = function(_class, options, overwrite){
85 options = options || {};
85 options = options || {};
86 overwrite = overwrite || {};
86 overwrite = overwrite || {};
87 return $.extend(true, {}, _class.options_default, options, overwrite)
87 return $.extend(true, {}, _class.options_default, options, overwrite)
88
88
89 }
89 }
90
90
91
91
92
92
93 /**
93 /**
94 * Empty. Subclasses must implement create_element.
94 * Empty. Subclasses must implement create_element.
95 * This should contain all the code to create the DOM element in notebook
95 * This should contain all the code to create the DOM element in notebook
96 * and will be called by Base Class constructor.
96 * and will be called by Base Class constructor.
97 * @method create_element
97 * @method create_element
98 */
98 */
99 Cell.prototype.create_element = function () {
99 Cell.prototype.create_element = function () {
100 };
100 };
101
101
102
102
103 /**
103 /**
104 * Subclasses can implement override bind_events.
104 * Subclasses can implement override bind_events.
105 * Be carefull to call the parent method when overwriting as it fires event.
105 * Be carefull to call the parent method when overwriting as it fires event.
106 * this will be triggerd after create_element in constructor.
106 * this will be triggerd after create_element in constructor.
107 * @method bind_events
107 * @method bind_events
108 */
108 */
109 Cell.prototype.bind_events = function () {
109 Cell.prototype.bind_events = function () {
110 var that = this;
110 var that = this;
111 // We trigger events so that Cell doesn't have to depend on Notebook.
111 // We trigger events so that Cell doesn't have to depend on Notebook.
112 that.element.click(function (event) {
112 that.element.click(function (event) {
113 if (that.selected === false) {
113 if (that.selected === false) {
114 $([IPython.events]).trigger('select.Cell', {'cell':that});
114 $([IPython.events]).trigger('select.Cell', {'cell':that});
115 }
115 }
116 });
116 });
117 that.element.focusin(function (event) {
117 that.element.focusin(function (event) {
118 if (that.selected === false) {
118 if (that.selected === false) {
119 $([IPython.events]).trigger('select.Cell', {'cell':that});
119 $([IPython.events]).trigger('select.Cell', {'cell':that});
120 }
120 }
121 });
121 });
122 if (this.code_mirror) {
122 if (this.code_mirror) {
123 this.code_mirror.on("change", function(cm, change) {
123 this.code_mirror.on("change", function(cm, change) {
124 $([IPython.events]).trigger("set_dirty.Notebook", {value: true});
124 $([IPython.events]).trigger("set_dirty.Notebook", {value: true});
125 });
125 });
126 }
126 };
127 if (this.code_mirror) {
128 this.code_mirror.on('focus', function(cm, change) {
129 $([IPython.events]).trigger('edit_mode.Cell', {cell: that});
130 });
131 };
127 };
132 };
128
133
129 /**
134 /**
130 * Triger typsetting of math by mathjax on current cell element
135 * Triger typsetting of math by mathjax on current cell element
131 * @method typeset
136 * @method typeset
132 */
137 */
133 Cell.prototype.typeset = function () {
138 Cell.prototype.typeset = function () {
134 if (window.MathJax) {
139 if (window.MathJax) {
135 var cell_math = this.element.get(0);
140 var cell_math = this.element.get(0);
136 MathJax.Hub.Queue(["Typeset", MathJax.Hub, cell_math]);
141 MathJax.Hub.Queue(["Typeset", MathJax.Hub, cell_math]);
137 };
142 };
138 };
143 };
139
144
140 /**
145 /**
141 * handle cell level logic when a cell is selected
146 * handle cell level logic when a cell is selected
142 * @method select
147 * @method select
143 * @return is the action being taken
148 * @return is the action being taken
144 */
149 */
145 Cell.prototype.select = function () {
150 Cell.prototype.select = function () {
151 console.log('Cell.select');
146 if (!this.selected) {
152 if (!this.selected) {
147 this.element.addClass('selected');
153 this.element.addClass('selected');
148 this.element.removeClass('unselected');
154 this.element.removeClass('unselected');
149 this.selected = true;
155 this.selected = true;
150 return true;
156 return true;
151 } else {
157 } else {
158 console.log('WARNING: select');
152 return false;
159 return false;
153 };
160 };
154 };
161 };
155
162
156 /**
163 /**
157 * handle cell level logic when a cell is unselected
164 * handle cell level logic when a cell is unselected
158 * @method unselect
165 * @method unselect
159 * @return is the action being taken
166 * @return is the action being taken
160 */
167 */
161 Cell.prototype.unselect = function () {
168 Cell.prototype.unselect = function () {
169 console.log('Cell.unselect');
162 if (this.selected) {
170 if (this.selected) {
163 this.element.addClass('unselected');
171 this.element.addClass('unselected');
164 this.element.removeClass('selected');
172 this.element.removeClass('selected');
165 this.selected = false;
173 this.selected = false;
166 return true;
174 return true;
167 } else {
175 } else {
176 console.log('WARNING: unselect');
168 return false;
177 return false;
169 };
178 };
170 };
179 };
171
180
172 /**
181 /**
173 * handle cell level logic when a cell is rendered
182 * handle cell level logic when a cell is rendered
174 * @method render
183 * @method render
175 * @return is the action being taken
184 * @return is the action being taken
176 */
185 */
177 Cell.prototype.render = function () {
186 Cell.prototype.render = function () {
187 console.log('Cell.render');
178 if (!this.rendered) {
188 if (!this.rendered) {
179 this.element.addClass('rendered');
189 this.element.addClass('rendered');
180 this.element.removeClass('unrendered');
190 this.element.removeClass('unrendered');
181 this.rendered = true;
191 this.rendered = true;
182 return true;
192 return true;
183 } else {
193 } else {
194 console.log('WARNING: render');
184 return false;
195 return false;
185 };
196 };
186 };
197 };
187
198
188 /**
199 /**
189 * handle cell level logic when a cell is unrendered
200 * handle cell level logic when a cell is unrendered
190 * @method unrender
201 * @method unrender
191 * @return is the action being taken
202 * @return is the action being taken
192 */
203 */
193 Cell.prototype.unrender = function () {
204 Cell.prototype.unrender = function () {
205 console.log('Cell.unrender');
194 if (this.rendered) {
206 if (this.rendered) {
195 this.element.addClass('unrendered');
207 this.element.addClass('unrendered');
196 this.element.removeClass('rendered');
208 this.element.removeClass('rendered');
197 this.rendered = false;
209 this.rendered = false;
198 return true;
210 return true;
199 } else {
211 } else {
212 console.log('WARNING: unrender');
200 return false;
213 return false;
201 };
214 };
202 };
215 };
203
216
204 /**
217 /**
205 * enter the command mode for the cell
218 * enter the command mode for the cell
206 * @method command_mode
219 * @method command_mode
207 * @return is the action being taken
220 * @return is the action being taken
208 */
221 */
209 Cell.prototype.command_mode = function () {
222 Cell.prototype.command_mode = function () {
223 console.log('Cell.command_mode:', this.mode);
210 if (this.mode !== 'command') {
224 if (this.mode !== 'command') {
211 this.element.addClass('command_mode');
225 this.element.addClass('command_mode');
212 this.element.removeClass('edit_mode');
226 this.element.removeClass('edit_mode');
213 this.mode = 'command';
227 this.mode = 'command';
214 return true;
228 return true;
215 } else {
229 } else {
230 console.log('WARNING: command_mode');
216 return false;
231 return false;
217 };
232 };
218 };
233 };
219
234
220 /**
235 /**
221 * enter the edit mode for the cell
236 * enter the edit mode for the cell
222 * @method command_mode
237 * @method command_mode
223 * @return is the action being taken
238 * @return is the action being taken
224 */
239 */
225 Cell.prototype.edit_mode = function () {
240 Cell.prototype.edit_mode = function () {
241 console.log('Cell.edit_mode:', this.mode);
226 if (this.mode !== 'edit') {
242 if (this.mode !== 'edit') {
227 this.element.addClass('edit_mode');
243 this.element.addClass('edit_mode');
228 this.element.removeClass('command_mode');
244 this.element.removeClass('command_mode');
229 this.mode = 'edit';
245 this.mode = 'edit';
230 return true;
246 return true;
231 } else {
247 } else {
248 console.log('WARNING: edit_mode');
232 return false;
249 return false;
233 };
250 };
234 }
251 }
235
252
236 /**
253 /**
237 * Focus the cell in the DOM sense
254 * Focus the cell in the DOM sense
238 * @method focus_cell
255 * @method focus_cell
239 */
256 */
240 Cell.prototype.focus_cell = function () {
257 Cell.prototype.focus_cell = function () {
241 this.element.focus();
258 this.element.focus();
242 }
259 }
243
260
244 /**
261 /**
245 * Focus the editor area so a user can type
262 * Focus the editor area so a user can type
246 * @method focus_editor
263 * @method focus_editor
247 */
264 */
248 Cell.prototype.focus_editor = function () {
265 Cell.prototype.focus_editor = function () {
249 this.code_mirror.refresh();
266 this.refresh();
250 this.code_mirror.focus();
267 this.code_mirror.focus();
251 }
268 }
252
269
253 /**
270 /**
254 * should be overritten by subclass
255 * @method get_text
256 */
257 Cell.prototype.get_text = function () {
258 };
259
260 /**
261 * should be overritten by subclass
262 * @method set_text
263 * @param {string} text
264 */
265 Cell.prototype.set_text = function (text) {
266 };
267
268 /**
269 * Refresh codemirror instance
271 * Refresh codemirror instance
270 * @method refresh
272 * @method refresh
271 */
273 */
272 Cell.prototype.refresh = function () {
274 Cell.prototype.refresh = function () {
273 this.code_mirror.refresh();
275 this.code_mirror.refresh();
274 };
276 };
275
277
276
277 /**
278 /**
278 * should be overritten by subclass
279 * should be overritten by subclass
279 * @method edit
280 * @method get_text
280 **/
281 */
281 Cell.prototype.edit = function () {
282 Cell.prototype.get_text = function () {
282 };
283 };
283
284
284
285 /**
285 /**
286 * should be overritten by subclass
286 * should be overritten by subclass
287 * @method render
287 * @method set_text
288 **/
288 * @param {string} text
289 Cell.prototype.render = function () {
289 */
290 Cell.prototype.set_text = function (text) {
290 };
291 };
291
292
292 /**
293 /**
293 * should be overritten by subclass
294 * should be overritten by subclass
294 * serialise cell to json.
295 * serialise cell to json.
295 * @method toJSON
296 * @method toJSON
296 **/
297 **/
297 Cell.prototype.toJSON = function () {
298 Cell.prototype.toJSON = function () {
298 var data = {};
299 var data = {};
299 data.metadata = this.metadata;
300 data.metadata = this.metadata;
300 data.cell_type = this.cell_type;
301 data.cell_type = this.cell_type;
301 return data;
302 return data;
302 };
303 };
303
304
304
305
305 /**
306 /**
306 * should be overritten by subclass
307 * should be overritten by subclass
307 * @method fromJSON
308 * @method fromJSON
308 **/
309 **/
309 Cell.prototype.fromJSON = function (data) {
310 Cell.prototype.fromJSON = function (data) {
310 if (data.metadata !== undefined) {
311 if (data.metadata !== undefined) {
311 this.metadata = data.metadata;
312 this.metadata = data.metadata;
312 }
313 }
313 this.celltoolbar.rebuild();
314 this.celltoolbar.rebuild();
314 };
315 };
315
316
316
317
317 /**
318 /**
318 * can the cell be split into two cells
319 * can the cell be split into two cells
319 * @method is_splittable
320 * @method is_splittable
320 **/
321 **/
321 Cell.prototype.is_splittable = function () {
322 Cell.prototype.is_splittable = function () {
322 return true;
323 return true;
323 };
324 };
324
325
325
326
326 /**
327 /**
327 * can the cell be merged with other cells
328 * can the cell be merged with other cells
328 * @method is_mergeable
329 * @method is_mergeable
329 **/
330 **/
330 Cell.prototype.is_mergeable = function () {
331 Cell.prototype.is_mergeable = function () {
331 return true;
332 return true;
332 };
333 };
333
334
334
335
335 /**
336 /**
336 * @return {String} - the text before the cursor
337 * @return {String} - the text before the cursor
337 * @method get_pre_cursor
338 * @method get_pre_cursor
338 **/
339 **/
339 Cell.prototype.get_pre_cursor = function () {
340 Cell.prototype.get_pre_cursor = function () {
340 var cursor = this.code_mirror.getCursor();
341 var cursor = this.code_mirror.getCursor();
341 var text = this.code_mirror.getRange({line:0, ch:0}, cursor);
342 var text = this.code_mirror.getRange({line:0, ch:0}, cursor);
342 text = text.replace(/^\n+/, '').replace(/\n+$/, '');
343 text = text.replace(/^\n+/, '').replace(/\n+$/, '');
343 return text;
344 return text;
344 }
345 }
345
346
346
347
347 /**
348 /**
348 * @return {String} - the text after the cursor
349 * @return {String} - the text after the cursor
349 * @method get_post_cursor
350 * @method get_post_cursor
350 **/
351 **/
351 Cell.prototype.get_post_cursor = function () {
352 Cell.prototype.get_post_cursor = function () {
352 var cursor = this.code_mirror.getCursor();
353 var cursor = this.code_mirror.getCursor();
353 var last_line_num = this.code_mirror.lineCount()-1;
354 var last_line_num = this.code_mirror.lineCount()-1;
354 var last_line_len = this.code_mirror.getLine(last_line_num).length;
355 var last_line_len = this.code_mirror.getLine(last_line_num).length;
355 var end = {line:last_line_num, ch:last_line_len}
356 var end = {line:last_line_num, ch:last_line_len}
356 var text = this.code_mirror.getRange(cursor, end);
357 var text = this.code_mirror.getRange(cursor, end);
357 text = text.replace(/^\n+/, '').replace(/\n+$/, '');
358 text = text.replace(/^\n+/, '').replace(/\n+$/, '');
358 return text;
359 return text;
359 };
360 };
360
361
361 /**
362 /**
362 * Show/Hide CodeMirror LineNumber
363 * Show/Hide CodeMirror LineNumber
363 * @method show_line_numbers
364 * @method show_line_numbers
364 *
365 *
365 * @param value {Bool} show (true), or hide (false) the line number in CodeMirror
366 * @param value {Bool} show (true), or hide (false) the line number in CodeMirror
366 **/
367 **/
367 Cell.prototype.show_line_numbers = function (value) {
368 Cell.prototype.show_line_numbers = function (value) {
368 this.code_mirror.setOption('lineNumbers', value);
369 this.code_mirror.setOption('lineNumbers', value);
369 this.code_mirror.refresh();
370 this.code_mirror.refresh();
370 };
371 };
371
372
372 /**
373 /**
373 * Toggle CodeMirror LineNumber
374 * Toggle CodeMirror LineNumber
374 * @method toggle_line_numbers
375 * @method toggle_line_numbers
375 **/
376 **/
376 Cell.prototype.toggle_line_numbers = function () {
377 Cell.prototype.toggle_line_numbers = function () {
377 var val = this.code_mirror.getOption('lineNumbers');
378 var val = this.code_mirror.getOption('lineNumbers');
378 this.show_line_numbers(!val);
379 this.show_line_numbers(!val);
379 };
380 };
380
381
381 /**
382 /**
382 * Force codemirror highlight mode
383 * Force codemirror highlight mode
383 * @method force_highlight
384 * @method force_highlight
384 * @param {object} - CodeMirror mode
385 * @param {object} - CodeMirror mode
385 **/
386 **/
386 Cell.prototype.force_highlight = function(mode) {
387 Cell.prototype.force_highlight = function(mode) {
387 this.user_highlight = mode;
388 this.user_highlight = mode;
388 this.auto_highlight();
389 this.auto_highlight();
389 };
390 };
390
391
391 /**
392 /**
392 * Try to autodetect cell highlight mode, or use selected mode
393 * Try to autodetect cell highlight mode, or use selected mode
393 * @methods _auto_highlight
394 * @methods _auto_highlight
394 * @private
395 * @private
395 * @param {String|object|undefined} - CodeMirror mode | 'auto'
396 * @param {String|object|undefined} - CodeMirror mode | 'auto'
396 **/
397 **/
397 Cell.prototype._auto_highlight = function (modes) {
398 Cell.prototype._auto_highlight = function (modes) {
398 //Here we handle manually selected modes
399 //Here we handle manually selected modes
399 if( this.user_highlight != undefined && this.user_highlight != 'auto' )
400 if( this.user_highlight != undefined && this.user_highlight != 'auto' )
400 {
401 {
401 var mode = this.user_highlight;
402 var mode = this.user_highlight;
402 CodeMirror.autoLoadMode(this.code_mirror, mode);
403 CodeMirror.autoLoadMode(this.code_mirror, mode);
403 this.code_mirror.setOption('mode', mode);
404 this.code_mirror.setOption('mode', mode);
404 return;
405 return;
405 }
406 }
406 var current_mode = this.code_mirror.getOption('mode', mode);
407 var current_mode = this.code_mirror.getOption('mode', mode);
407 var first_line = this.code_mirror.getLine(0);
408 var first_line = this.code_mirror.getLine(0);
408 // loop on every pairs
409 // loop on every pairs
409 for( var mode in modes) {
410 for( var mode in modes) {
410 var regs = modes[mode]['reg'];
411 var regs = modes[mode]['reg'];
411 // only one key every time but regexp can't be keys...
412 // only one key every time but regexp can't be keys...
412 for(var reg in regs ) {
413 for(var reg in regs ) {
413 // here we handle non magic_modes
414 // here we handle non magic_modes
414 if(first_line.match(regs[reg]) != null) {
415 if(first_line.match(regs[reg]) != null) {
415 if(current_mode == mode){
416 if(current_mode == mode){
416 return;
417 return;
417 }
418 }
418 if (mode.search('magic_') != 0) {
419 if (mode.search('magic_') != 0) {
419 this.code_mirror.setOption('mode', mode);
420 this.code_mirror.setOption('mode', mode);
420 CodeMirror.autoLoadMode(this.code_mirror, mode);
421 CodeMirror.autoLoadMode(this.code_mirror, mode);
421 return;
422 return;
422 }
423 }
423 var open = modes[mode]['open']|| "%%";
424 var open = modes[mode]['open']|| "%%";
424 var close = modes[mode]['close']|| "%%end";
425 var close = modes[mode]['close']|| "%%end";
425 var mmode = mode;
426 var mmode = mode;
426 mode = mmode.substr(6);
427 mode = mmode.substr(6);
427 if(current_mode == mode){
428 if(current_mode == mode){
428 return;
429 return;
429 }
430 }
430 CodeMirror.autoLoadMode(this.code_mirror, mode);
431 CodeMirror.autoLoadMode(this.code_mirror, mode);
431 // create on the fly a mode that swhitch between
432 // create on the fly a mode that swhitch between
432 // plain/text and smth else otherwise `%%` is
433 // plain/text and smth else otherwise `%%` is
433 // source of some highlight issues.
434 // source of some highlight issues.
434 // we use patchedGetMode to circumvent a bug in CM
435 // we use patchedGetMode to circumvent a bug in CM
435 CodeMirror.defineMode(mmode , function(config) {
436 CodeMirror.defineMode(mmode , function(config) {
436 return CodeMirror.multiplexingMode(
437 return CodeMirror.multiplexingMode(
437 CodeMirror.patchedGetMode(config, 'text/plain'),
438 CodeMirror.patchedGetMode(config, 'text/plain'),
438 // always set someting on close
439 // always set someting on close
439 {open: open, close: close,
440 {open: open, close: close,
440 mode: CodeMirror.patchedGetMode(config, mode),
441 mode: CodeMirror.patchedGetMode(config, mode),
441 delimStyle: "delimit"
442 delimStyle: "delimit"
442 }
443 }
443 );
444 );
444 });
445 });
445 this.code_mirror.setOption('mode', mmode);
446 this.code_mirror.setOption('mode', mmode);
446 return;
447 return;
447 }
448 }
448 }
449 }
449 }
450 }
450 // fallback on default
451 // fallback on default
451 var default_mode
452 var default_mode
452 try {
453 try {
453 default_mode = this._options.cm_config.mode;
454 default_mode = this._options.cm_config.mode;
454 } catch(e) {
455 } catch(e) {
455 default_mode = 'text/plain';
456 default_mode = 'text/plain';
456 }
457 }
457 if( current_mode === default_mode){
458 if( current_mode === default_mode){
458 return
459 return
459 }
460 }
460 this.code_mirror.setOption('mode', default_mode);
461 this.code_mirror.setOption('mode', default_mode);
461 };
462 };
462
463
463 IPython.Cell = Cell;
464 IPython.Cell = Cell;
464
465
465 return IPython;
466 return IPython;
466
467
467 }(IPython));
468 }(IPython));
468
469
@@ -1,497 +1,506 b''
1 //----------------------------------------------------------------------------
1 //----------------------------------------------------------------------------
2 // Copyright (C) 2008-2011 The IPython Development Team
2 // Copyright (C) 2008-2011 The IPython Development Team
3 //
3 //
4 // Distributed under the terms of the BSD License. The full license is in
4 // Distributed under the terms of the BSD License. The full license is in
5 // the file COPYING, distributed as part of this software.
5 // the file COPYING, distributed as part of this software.
6 //----------------------------------------------------------------------------
6 //----------------------------------------------------------------------------
7
7
8 //============================================================================
8 //============================================================================
9 // CodeCell
9 // CodeCell
10 //============================================================================
10 //============================================================================
11 /**
11 /**
12 * An extendable module that provide base functionnality to create cell for notebook.
12 * An extendable module that provide base functionnality to create cell for notebook.
13 * @module IPython
13 * @module IPython
14 * @namespace IPython
14 * @namespace IPython
15 * @submodule CodeCell
15 * @submodule CodeCell
16 */
16 */
17
17
18
18
19 /* local util for codemirror */
19 /* local util for codemirror */
20 var posEq = function(a, b) {return a.line == b.line && a.ch == b.ch;};
20 var posEq = function(a, b) {return a.line == b.line && a.ch == b.ch;};
21
21
22 /**
22 /**
23 *
23 *
24 * function to delete until previous non blanking space character
24 * function to delete until previous non blanking space character
25 * or first multiple of 4 tabstop.
25 * or first multiple of 4 tabstop.
26 * @private
26 * @private
27 */
27 */
28 CodeMirror.commands.delSpaceToPrevTabStop = function(cm){
28 CodeMirror.commands.delSpaceToPrevTabStop = function(cm){
29 var from = cm.getCursor(true), to = cm.getCursor(false), sel = !posEq(from, to);
29 var from = cm.getCursor(true), to = cm.getCursor(false), sel = !posEq(from, to);
30 if (!posEq(from, to)) { cm.replaceRange("", from, to); return; }
30 if (!posEq(from, to)) { cm.replaceRange("", from, to); return; }
31 var cur = cm.getCursor(), line = cm.getLine(cur.line);
31 var cur = cm.getCursor(), line = cm.getLine(cur.line);
32 var tabsize = cm.getOption('tabSize');
32 var tabsize = cm.getOption('tabSize');
33 var chToPrevTabStop = cur.ch-(Math.ceil(cur.ch/tabsize)-1)*tabsize;
33 var chToPrevTabStop = cur.ch-(Math.ceil(cur.ch/tabsize)-1)*tabsize;
34 from = {ch:cur.ch-chToPrevTabStop,line:cur.line};
34 from = {ch:cur.ch-chToPrevTabStop,line:cur.line};
35 var select = cm.getRange(from,cur);
35 var select = cm.getRange(from,cur);
36 if( select.match(/^\ +$/) !== null){
36 if( select.match(/^\ +$/) !== null){
37 cm.replaceRange("",from,cur);
37 cm.replaceRange("",from,cur);
38 } else {
38 } else {
39 cm.deleteH(-1,"char");
39 cm.deleteH(-1,"char");
40 }
40 }
41 };
41 };
42
42
43
43
44 var IPython = (function (IPython) {
44 var IPython = (function (IPython) {
45 "use strict";
45 "use strict";
46
46
47 var utils = IPython.utils;
47 var utils = IPython.utils;
48 var key = IPython.utils.keycodes;
48 var key = IPython.utils.keycodes;
49
49
50 /**
50 /**
51 * A Cell conceived to write code.
51 * A Cell conceived to write code.
52 *
52 *
53 * The kernel doesn't have to be set at creation time, in that case
53 * The kernel doesn't have to be set at creation time, in that case
54 * it will be null and set_kernel has to be called later.
54 * it will be null and set_kernel has to be called later.
55 * @class CodeCell
55 * @class CodeCell
56 * @extends IPython.Cell
56 * @extends IPython.Cell
57 *
57 *
58 * @constructor
58 * @constructor
59 * @param {Object|null} kernel
59 * @param {Object|null} kernel
60 * @param {object|undefined} [options]
60 * @param {object|undefined} [options]
61 * @param [options.cm_config] {object} config to pass to CodeMirror
61 * @param [options.cm_config] {object} config to pass to CodeMirror
62 */
62 */
63 var CodeCell = function (kernel, options) {
63 var CodeCell = function (kernel, options) {
64 this.kernel = kernel || null;
64 this.kernel = kernel || null;
65 this.collapsed = false;
65 this.collapsed = false;
66
66
67 // create all attributed in constructor function
67 // create all attributed in constructor function
68 // even if null for V8 VM optimisation
68 // even if null for V8 VM optimisation
69 this.input_prompt_number = null;
69 this.input_prompt_number = null;
70 this.celltoolbar = null;
70 this.celltoolbar = null;
71 this.output_area = null;
71 this.output_area = null;
72 this.last_msg_id = null;
72 this.last_msg_id = null;
73 this.completer = null;
73 this.completer = null;
74
74
75
75
76 var cm_overwrite_options = {
76 var cm_overwrite_options = {
77 onKeyEvent: $.proxy(this.handle_codemirror_keyevent,this)
77 onKeyEvent: $.proxy(this.handle_codemirror_keyevent,this)
78 };
78 };
79
79
80 options = this.mergeopt(CodeCell, options, {cm_config:cm_overwrite_options});
80 options = this.mergeopt(CodeCell, options, {cm_config:cm_overwrite_options});
81
81
82 IPython.Cell.apply(this,[options]);
82 IPython.Cell.apply(this,[options]);
83
83
84 // Attributes we want to override in this subclass.
84 // Attributes we want to override in this subclass.
85 this.cell_type = "code";
85 this.cell_type = "code";
86
86
87 var that = this;
87 var that = this;
88 this.element.focusout(
88 this.element.focusout(
89 function() { that.auto_highlight(); }
89 function() { that.auto_highlight(); }
90 );
90 );
91 };
91 };
92
92
93 CodeCell.options_default = {
93 CodeCell.options_default = {
94 cm_config : {
94 cm_config : {
95 extraKeys: {
95 extraKeys: {
96 "Tab" : "indentMore",
96 "Tab" : "indentMore",
97 "Shift-Tab" : "indentLess",
97 "Shift-Tab" : "indentLess",
98 "Backspace" : "delSpaceToPrevTabStop",
98 "Backspace" : "delSpaceToPrevTabStop",
99 "Cmd-/" : "toggleComment",
99 "Cmd-/" : "toggleComment",
100 "Ctrl-/" : "toggleComment"
100 "Ctrl-/" : "toggleComment"
101 },
101 },
102 mode: 'ipython',
102 mode: 'ipython',
103 theme: 'ipython',
103 theme: 'ipython',
104 matchBrackets: true
104 matchBrackets: true
105 }
105 }
106 };
106 };
107
107
108
108
109 CodeCell.prototype = new IPython.Cell();
109 CodeCell.prototype = new IPython.Cell();
110
110
111 /**
111 /**
112 * @method auto_highlight
112 * @method auto_highlight
113 */
113 */
114 CodeCell.prototype.auto_highlight = function () {
114 CodeCell.prototype.auto_highlight = function () {
115 this._auto_highlight(IPython.config.cell_magic_highlight);
115 this._auto_highlight(IPython.config.cell_magic_highlight);
116 };
116 };
117
117
118 /** @method create_element */
118 /** @method create_element */
119 CodeCell.prototype.create_element = function () {
119 CodeCell.prototype.create_element = function () {
120 IPython.Cell.prototype.create_element.apply(this, arguments);
120 IPython.Cell.prototype.create_element.apply(this, arguments);
121
121
122 var cell = $('<div></div>').addClass('cell border-box-sizing code_cell');
122 var cell = $('<div></div>').addClass('cell border-box-sizing code_cell');
123 cell.attr('tabindex','2');
123 cell.attr('tabindex','2');
124
124
125 var input = $('<div></div>').addClass('input');
125 var input = $('<div></div>').addClass('input');
126 var prompt = $('<div/>').addClass('prompt input_prompt');
126 var prompt = $('<div/>').addClass('prompt input_prompt');
127 var inner_cell = $('<div/>').addClass('inner_cell');
127 var inner_cell = $('<div/>').addClass('inner_cell');
128 this.celltoolbar = new IPython.CellToolbar(this);
128 this.celltoolbar = new IPython.CellToolbar(this);
129 inner_cell.append(this.celltoolbar.element);
129 inner_cell.append(this.celltoolbar.element);
130 var input_area = $('<div/>').addClass('input_area');
130 var input_area = $('<div/>').addClass('input_area');
131 this.code_mirror = CodeMirror(input_area.get(0), this.cm_config);
131 this.code_mirror = CodeMirror(input_area.get(0), this.cm_config);
132 $(this.code_mirror.getInputField()).attr("spellcheck", "false");
132 $(this.code_mirror.getInputField()).attr("spellcheck", "false");
133 inner_cell.append(input_area);
133 inner_cell.append(input_area);
134 input.append(prompt).append(inner_cell);
134 input.append(prompt).append(inner_cell);
135 var output = $('<div></div>');
135 var output = $('<div></div>');
136 cell.append(input).append(output);
136 cell.append(input).append(output);
137 this.element = cell;
137 this.element = cell;
138 this.output_area = new IPython.OutputArea(output, true);
138 this.output_area = new IPython.OutputArea(output, true);
139 this.completer = new IPython.Completer(this);
139 this.completer = new IPython.Completer(this);
140 };
140 };
141
141
142 /** @method bind_events */
143 CodeCell.prototype.bind_events = function () {
144 IPython.Cell.prototype.bind_events.apply(this);
145 var that = this;
146
147 this.element.focusout(
148 function() { that.auto_highlight(); }
149 );
150 };
151
142 /**
152 /**
143 * This method gets called in CodeMirror's onKeyDown/onKeyPress
153 * This method gets called in CodeMirror's onKeyDown/onKeyPress
144 * handlers and is used to provide custom key handling. Its return
154 * handlers and is used to provide custom key handling. Its return
145 * value is used to determine if CodeMirror should ignore the event:
155 * value is used to determine if CodeMirror should ignore the event:
146 * true = ignore, false = don't ignore.
156 * true = ignore, false = don't ignore.
147 * @method handle_codemirror_keyevent
157 * @method handle_codemirror_keyevent
148 */
158 */
149 CodeCell.prototype.handle_codemirror_keyevent = function (editor, event) {
159 CodeCell.prototype.handle_codemirror_keyevent = function (editor, event) {
150
160
151 var that = this;
161 var that = this;
152
162
153 if (this.mode === 'command') {
163 if (this.mode === 'command') {
154 return false
164 return false
155 } else if (this.mode === 'edit') {
165 } else if (this.mode === 'edit') {
156 // whatever key is pressed, first, cancel the tooltip request before
166 // whatever key is pressed, first, cancel the tooltip request before
157 // they are sent, and remove tooltip if any, except for tab again
167 // they are sent, and remove tooltip if any, except for tab again
158 if (event.type === 'keydown' && event.which != key.TAB ) {
168 if (event.type === 'keydown' && event.which != key.TAB ) {
159 IPython.tooltip.remove_and_cancel_tooltip();
169 IPython.tooltip.remove_and_cancel_tooltip();
160 };
170 };
161
171
162 var cur = editor.getCursor();
172 var cur = editor.getCursor();
163 if (event.keyCode === key.ENTER){
173 if (event.keyCode === key.ENTER){
164 this.auto_highlight();
174 this.auto_highlight();
165 }
175 }
166
176
167 if (event.keyCode === key.ENTER && (event.shiftKey || event.ctrlKey)) {
177 if (event.keyCode === key.ENTER && (event.shiftKey || event.ctrlKey)) {
168 // Always ignore shift-enter in CodeMirror as we handle it.
178 // Always ignore shift-enter in CodeMirror as we handle it.
169 return true;
179 return true;
170
180
171 } else if (event.which === 40 && event.type === 'keypress' && IPython.tooltip.time_before_tooltip >= 0) {
181 } else if (event.which === 40 && event.type === 'keypress' && IPython.tooltip.time_before_tooltip >= 0) {
172 // triger on keypress (!) otherwise inconsistent event.which depending on plateform
182 // triger on keypress (!) otherwise inconsistent event.which depending on plateform
173 // browser and keyboard layout !
183 // browser and keyboard layout !
174 // Pressing '(' , request tooltip, don't forget to reappend it
184 // Pressing '(' , request tooltip, don't forget to reappend it
175 // The second argument says to hide the tooltip if the docstring
185 // The second argument says to hide the tooltip if the docstring
176 // is actually empty
186 // is actually empty
177 IPython.tooltip.pending(that, true);
187 IPython.tooltip.pending(that, true);
178 } else if (event.which === key.UPARROW && event.type === 'keydown') {
188 } else if (event.which === key.UPARROW && event.type === 'keydown') {
179 // If we are not at the top, let CM handle the up arrow and
189 // If we are not at the top, let CM handle the up arrow and
180 // prevent the global keydown handler from handling it.
190 // prevent the global keydown handler from handling it.
181 if (!that.at_top()) {
191 if (!that.at_top()) {
182 event.stop();
192 event.stop();
183 return false;
193 return false;
184 } else {
194 } else {
185 return true;
195 return true;
186 };
196 };
187 } else if (event.which === key.ESC) {
197 } else if (event.which === key.ESC) {
188 IPython.tooltip.remove_and_cancel_tooltip(true);
198 IPython.tooltip.remove_and_cancel_tooltip(true);
189 return true;
199 return true;
190 } else if (event.which === key.DOWNARROW && event.type === 'keydown') {
200 } else if (event.which === key.DOWNARROW && event.type === 'keydown') {
191 // If we are not at the bottom, let CM handle the down arrow and
201 // If we are not at the bottom, let CM handle the down arrow and
192 // prevent the global keydown handler from handling it.
202 // prevent the global keydown handler from handling it.
193 if (!that.at_bottom()) {
203 if (!that.at_bottom()) {
194 event.stop();
204 event.stop();
195 return false;
205 return false;
196 } else {
206 } else {
197 return true;
207 return true;
198 };
208 };
199 } else if (event.keyCode === key.TAB && event.type == 'keydown' && event.shiftKey) {
209 } else if (event.keyCode === key.TAB && event.type == 'keydown' && event.shiftKey) {
200 if (editor.somethingSelected()){
210 if (editor.somethingSelected()){
201 var anchor = editor.getCursor("anchor");
211 var anchor = editor.getCursor("anchor");
202 var head = editor.getCursor("head");
212 var head = editor.getCursor("head");
203 if( anchor.line != head.line){
213 if( anchor.line != head.line){
204 return false;
214 return false;
205 }
215 }
206 }
216 }
207 }
217 }
208 IPython.tooltip.request(that);
218 IPython.tooltip.request(that);
209 event.stop();
219 event.stop();
210 return true;
220 return true;
211 } else if (event.keyCode === key.TAB && event.type == 'keydown') {
221 } else if (event.keyCode === key.TAB && event.type == 'keydown') {
212 // Tab completion.
222 // Tab completion.
213 IPython.tooltip.remove_and_cancel_tooltip();
223 IPython.tooltip.remove_and_cancel_tooltip();
214 if (editor.somethingSelected()) {
224 if (editor.somethingSelected()) {
215 return false;
225 return false;
216 }
226 }
217 var pre_cursor = editor.getRange({line:cur.line,ch:0},cur);
227 var pre_cursor = editor.getRange({line:cur.line,ch:0},cur);
218 if (pre_cursor.trim() === "") {
228 if (pre_cursor.trim() === "") {
219 // Don't autocomplete if the part of the line before the cursor
229 // Don't autocomplete if the part of the line before the cursor
220 // is empty. In this case, let CodeMirror handle indentation.
230 // is empty. In this case, let CodeMirror handle indentation.
221 return false;
231 return false;
222 } else {
232 } else {
223 // keypress/keyup also trigger on TAB press, and we don't want to
233 // keypress/keyup also trigger on TAB press, and we don't want to
224 // use those to disable tab completion.
234 // use those to disable tab completion.
225 return false;
235 return false;
226 };
236 };
227 return false;
237 return false;
228 }
238 }
229 return false;
239 return false;
230 };
240 };
231
241
232
242
233 // Kernel related calls.
243 // Kernel related calls.
234
244
235 CodeCell.prototype.set_kernel = function (kernel) {
245 CodeCell.prototype.set_kernel = function (kernel) {
236 this.kernel = kernel;
246 this.kernel = kernel;
237 };
247 };
238
248
239 /**
249 /**
240 * Execute current code cell to the kernel
250 * Execute current code cell to the kernel
241 * @method execute
251 * @method execute
242 */
252 */
243 CodeCell.prototype.execute = function () {
253 CodeCell.prototype.execute = function () {
244 this.output_area.clear_output();
254 this.output_area.clear_output();
245 this.set_input_prompt('*');
255 this.set_input_prompt('*');
246 this.element.addClass("running");
256 this.element.addClass("running");
247 if (this.last_msg_id) {
257 if (this.last_msg_id) {
248 this.kernel.clear_callbacks_for_msg(this.last_msg_id);
258 this.kernel.clear_callbacks_for_msg(this.last_msg_id);
249 }
259 }
250 var callbacks = this.get_callbacks();
260 var callbacks = this.get_callbacks();
251
261
252 this.last_msg_id = this.kernel.execute(this.get_text(), callbacks, {silent: false, store_history: true});
262 this.last_msg_id = this.kernel.execute(this.get_text(), callbacks, {silent: false, store_history: true});
253 };
263 };
254
264
255 /**
265 /**
256 * Construct the default callbacks for
266 * Construct the default callbacks for
257 * @method get_callbacks
267 * @method get_callbacks
258 */
268 */
259 CodeCell.prototype.get_callbacks = function () {
269 CodeCell.prototype.get_callbacks = function () {
260 return {
270 return {
261 shell : {
271 shell : {
262 reply : $.proxy(this._handle_execute_reply, this),
272 reply : $.proxy(this._handle_execute_reply, this),
263 payload : {
273 payload : {
264 set_next_input : $.proxy(this._handle_set_next_input, this),
274 set_next_input : $.proxy(this._handle_set_next_input, this),
265 page : $.proxy(this._open_with_pager, this)
275 page : $.proxy(this._open_with_pager, this)
266 }
276 }
267 },
277 },
268 iopub : {
278 iopub : {
269 output : $.proxy(this.output_area.handle_output, this.output_area),
279 output : $.proxy(this.output_area.handle_output, this.output_area),
270 clear_output : $.proxy(this.output_area.handle_clear_output, this.output_area),
280 clear_output : $.proxy(this.output_area.handle_clear_output, this.output_area),
271 },
281 },
272 input : $.proxy(this._handle_input_request, this)
282 input : $.proxy(this._handle_input_request, this)
273 };
283 };
274 };
284 };
275
285
276 CodeCell.prototype._open_with_pager = function (payload) {
286 CodeCell.prototype._open_with_pager = function (payload) {
277 $([IPython.events]).trigger('open_with_text.Pager', payload);
287 $([IPython.events]).trigger('open_with_text.Pager', payload);
278 };
288 };
279
289
280 /**
290 /**
281 * @method _handle_execute_reply
291 * @method _handle_execute_reply
282 * @private
292 * @private
283 */
293 */
284 CodeCell.prototype._handle_execute_reply = function (msg) {
294 CodeCell.prototype._handle_execute_reply = function (msg) {
285 this.set_input_prompt(msg.content.execution_count);
295 this.set_input_prompt(msg.content.execution_count);
286 this.element.removeClass("running");
296 this.element.removeClass("running");
287 $([IPython.events]).trigger('set_dirty.Notebook', {value: true});
297 $([IPython.events]).trigger('set_dirty.Notebook', {value: true});
288 };
298 };
289
299
290 /**
300 /**
291 * @method _handle_set_next_input
301 * @method _handle_set_next_input
292 * @private
302 * @private
293 */
303 */
294 CodeCell.prototype._handle_set_next_input = function (payload) {
304 CodeCell.prototype._handle_set_next_input = function (payload) {
295 var data = {'cell': this, 'text': payload.text};
305 var data = {'cell': this, 'text': payload.text};
296 $([IPython.events]).trigger('set_next_input.Notebook', data);
306 $([IPython.events]).trigger('set_next_input.Notebook', data);
297 };
307 };
298
308
299 /**
309 /**
300 * @method _handle_input_request
310 * @method _handle_input_request
301 * @private
311 * @private
302 */
312 */
303 CodeCell.prototype._handle_input_request = function (msg) {
313 CodeCell.prototype._handle_input_request = function (msg) {
304 this.output_area.append_raw_input(msg);
314 this.output_area.append_raw_input(msg);
305 };
315 };
306
316
307
317
308 // Basic cell manipulation.
318 // Basic cell manipulation.
309
319
310 CodeCell.prototype.select = function () {
320 CodeCell.prototype.select = function () {
311 var continue = IPython.Cell.prototype.select.apply(this);
321 var cont = IPython.Cell.prototype.select.apply(this);
312 if (continue) {
322 console.log('CodeCell.select', cont);
323 if (cont) {
313 this.code_mirror.refresh();
324 this.code_mirror.refresh();
314 this.auto_highlight();
325 this.auto_highlight();
315 };
326 };
316 return continue;
327 return cont;
317 };
328 };
318
329
319 CodeCell.prototype.render = function () {
330 CodeCell.prototype.render = function () {
320 var continue = IPython.Cell.prototype.render.apply(this);
331 var cont = IPython.Cell.prototype.render.apply(this);
321 if (continue) {
332 console.log('CodeCell.render');
322 this.execute();
333 // Always execute, even if we are already in the rendered state
323 };
334 return cont;
324 return continue;
325 };
335 };
326
336
327 CodeCell.prototype.unrender = function () {
337 CodeCell.prototype.unrender = function () {
328 var continue = IPython.Cell.prototype.unrender.apply(this);
338 // CodeCell is always rendered
329 if (continue) {
339 return false;
330 this.clear_output(true, true, true);
331 };
332 return continue;
333 };
340 };
334
341
335 CodeCell.prototype.command_mode = function () {
342 CodeCell.prototype.command_mode = function () {
336 var continue = IPython.Cell.prototype.command_mode.apply(this);
343 var cont = IPython.Cell.prototype.command_mode.apply(this);
337 if (continue) {
344 console.log('CodeCell.command_mode');
345 if (cont) {
338 this.focus_cell();
346 this.focus_cell();
339 };
347 };
340 return continue;
348 return cont;
341 }
349 }
342
350
343 CodeCell.prototype.edit_mode = function () {
351 CodeCell.prototype.edit_mode = function () {
344 var continue = IPython.Cell.prototype.edit_mode.apply(this);
352 var cont = IPython.Cell.prototype.edit_mode.apply(this);
345 if (continue) {
353 console.log('CodeCell.edit_mode');
354 if (cont) {
346 this.focus_editor();
355 this.focus_editor();
347 };
356 };
348 return continue;
357 return cont;
349 }
358 }
350
359
351 CodeCell.prototype.select_all = function () {
360 CodeCell.prototype.select_all = function () {
352 var start = {line: 0, ch: 0};
361 var start = {line: 0, ch: 0};
353 var nlines = this.code_mirror.lineCount();
362 var nlines = this.code_mirror.lineCount();
354 var last_line = this.code_mirror.getLine(nlines-1);
363 var last_line = this.code_mirror.getLine(nlines-1);
355 var end = {line: nlines-1, ch: last_line.length};
364 var end = {line: nlines-1, ch: last_line.length};
356 this.code_mirror.setSelection(start, end);
365 this.code_mirror.setSelection(start, end);
357 };
366 };
358
367
359
368
360 CodeCell.prototype.collapse = function () {
369 CodeCell.prototype.collapse = function () {
361 this.collapsed = true;
370 this.collapsed = true;
362 this.output_area.collapse();
371 this.output_area.collapse();
363 };
372 };
364
373
365
374
366 CodeCell.prototype.expand = function () {
375 CodeCell.prototype.expand = function () {
367 this.collapsed = false;
376 this.collapsed = false;
368 this.output_area.expand();
377 this.output_area.expand();
369 };
378 };
370
379
371
380
372 CodeCell.prototype.toggle_output = function () {
381 CodeCell.prototype.toggle_output = function () {
373 this.collapsed = Boolean(1 - this.collapsed);
382 this.collapsed = Boolean(1 - this.collapsed);
374 this.output_area.toggle_output();
383 this.output_area.toggle_output();
375 };
384 };
376
385
377
386
378 CodeCell.prototype.toggle_output_scroll = function () {
387 CodeCell.prototype.toggle_output_scroll = function () {
379 this.output_area.toggle_scroll();
388 this.output_area.toggle_scroll();
380 };
389 };
381
390
382
391
383 CodeCell.input_prompt_classical = function (prompt_value, lines_number) {
392 CodeCell.input_prompt_classical = function (prompt_value, lines_number) {
384 var ns = prompt_value || "&nbsp;";
393 var ns = prompt_value || "&nbsp;";
385 return 'In&nbsp;[' + ns + ']:';
394 return 'In&nbsp;[' + ns + ']:';
386 };
395 };
387
396
388 CodeCell.input_prompt_continuation = function (prompt_value, lines_number) {
397 CodeCell.input_prompt_continuation = function (prompt_value, lines_number) {
389 var html = [CodeCell.input_prompt_classical(prompt_value, lines_number)];
398 var html = [CodeCell.input_prompt_classical(prompt_value, lines_number)];
390 for(var i=1; i < lines_number; i++) {
399 for(var i=1; i < lines_number; i++) {
391 html.push(['...:']);
400 html.push(['...:']);
392 }
401 }
393 return html.join('<br/>');
402 return html.join('<br/>');
394 };
403 };
395
404
396 CodeCell.input_prompt_function = CodeCell.input_prompt_classical;
405 CodeCell.input_prompt_function = CodeCell.input_prompt_classical;
397
406
398
407
399 CodeCell.prototype.set_input_prompt = function (number) {
408 CodeCell.prototype.set_input_prompt = function (number) {
400 var nline = 1;
409 var nline = 1;
401 if (this.code_mirror !== undefined) {
410 if (this.code_mirror !== undefined) {
402 nline = this.code_mirror.lineCount();
411 nline = this.code_mirror.lineCount();
403 }
412 }
404 this.input_prompt_number = number;
413 this.input_prompt_number = number;
405 var prompt_html = CodeCell.input_prompt_function(this.input_prompt_number, nline);
414 var prompt_html = CodeCell.input_prompt_function(this.input_prompt_number, nline);
406 this.element.find('div.input_prompt').html(prompt_html);
415 this.element.find('div.input_prompt').html(prompt_html);
407 };
416 };
408
417
409
418
410 CodeCell.prototype.clear_input = function () {
419 CodeCell.prototype.clear_input = function () {
411 this.code_mirror.setValue('');
420 this.code_mirror.setValue('');
412 };
421 };
413
422
414
423
415 CodeCell.prototype.get_text = function () {
424 CodeCell.prototype.get_text = function () {
416 return this.code_mirror.getValue();
425 return this.code_mirror.getValue();
417 };
426 };
418
427
419
428
420 CodeCell.prototype.set_text = function (code) {
429 CodeCell.prototype.set_text = function (code) {
421 return this.code_mirror.setValue(code);
430 return this.code_mirror.setValue(code);
422 };
431 };
423
432
424
433
425 CodeCell.prototype.at_top = function () {
434 CodeCell.prototype.at_top = function () {
426 var cursor = this.code_mirror.getCursor();
435 var cursor = this.code_mirror.getCursor();
427 if (cursor.line === 0 && cursor.ch === 0) {
436 if (cursor.line === 0 && cursor.ch === 0) {
428 return true;
437 return true;
429 } else {
438 } else {
430 return false;
439 return false;
431 }
440 }
432 };
441 };
433
442
434
443
435 CodeCell.prototype.at_bottom = function () {
444 CodeCell.prototype.at_bottom = function () {
436 var cursor = this.code_mirror.getCursor();
445 var cursor = this.code_mirror.getCursor();
437 if (cursor.line === (this.code_mirror.lineCount()-1) && cursor.ch === this.code_mirror.getLine(cursor.line).length) {
446 if (cursor.line === (this.code_mirror.lineCount()-1) && cursor.ch === this.code_mirror.getLine(cursor.line).length) {
438 return true;
447 return true;
439 } else {
448 } else {
440 return false;
449 return false;
441 }
450 }
442 };
451 };
443
452
444
453
445 CodeCell.prototype.clear_output = function (wait) {
454 CodeCell.prototype.clear_output = function (wait) {
446 this.output_area.clear_output(wait);
455 this.output_area.clear_output(wait);
447 };
456 };
448
457
449
458
450 // JSON serialization
459 // JSON serialization
451
460
452 CodeCell.prototype.fromJSON = function (data) {
461 CodeCell.prototype.fromJSON = function (data) {
453 IPython.Cell.prototype.fromJSON.apply(this, arguments);
462 IPython.Cell.prototype.fromJSON.apply(this, arguments);
454 if (data.cell_type === 'code') {
463 if (data.cell_type === 'code') {
455 if (data.input !== undefined) {
464 if (data.input !== undefined) {
456 this.set_text(data.input);
465 this.set_text(data.input);
457 // make this value the starting point, so that we can only undo
466 // make this value the starting point, so that we can only undo
458 // to this state, instead of a blank cell
467 // to this state, instead of a blank cell
459 this.code_mirror.clearHistory();
468 this.code_mirror.clearHistory();
460 this.auto_highlight();
469 this.auto_highlight();
461 }
470 }
462 if (data.prompt_number !== undefined) {
471 if (data.prompt_number !== undefined) {
463 this.set_input_prompt(data.prompt_number);
472 this.set_input_prompt(data.prompt_number);
464 } else {
473 } else {
465 this.set_input_prompt();
474 this.set_input_prompt();
466 }
475 }
467 this.output_area.fromJSON(data.outputs);
476 this.output_area.fromJSON(data.outputs);
468 if (data.collapsed !== undefined) {
477 if (data.collapsed !== undefined) {
469 if (data.collapsed) {
478 if (data.collapsed) {
470 this.collapse();
479 this.collapse();
471 } else {
480 } else {
472 this.expand();
481 this.expand();
473 }
482 }
474 }
483 }
475 }
484 }
476 };
485 };
477
486
478
487
479 CodeCell.prototype.toJSON = function () {
488 CodeCell.prototype.toJSON = function () {
480 var data = IPython.Cell.prototype.toJSON.apply(this);
489 var data = IPython.Cell.prototype.toJSON.apply(this);
481 data.input = this.get_text();
490 data.input = this.get_text();
482 // is finite protect against undefined and '*' value
491 // is finite protect against undefined and '*' value
483 if (isFinite(this.input_prompt_number)) {
492 if (isFinite(this.input_prompt_number)) {
484 data.prompt_number = this.input_prompt_number;
493 data.prompt_number = this.input_prompt_number;
485 }
494 }
486 var outputs = this.output_area.toJSON();
495 var outputs = this.output_area.toJSON();
487 data.outputs = outputs;
496 data.outputs = outputs;
488 data.language = 'python';
497 data.language = 'python';
489 data.collapsed = this.collapsed;
498 data.collapsed = this.collapsed;
490 return data;
499 return data;
491 };
500 };
492
501
493
502
494 IPython.CodeCell = CodeCell;
503 IPython.CodeCell = CodeCell;
495
504
496 return IPython;
505 return IPython;
497 }(IPython));
506 }(IPython));
@@ -1,2267 +1,2338 b''
1 //----------------------------------------------------------------------------
1 //----------------------------------------------------------------------------
2 // Copyright (C) 2011 The IPython Development Team
2 // Copyright (C) 2011 The IPython Development Team
3 //
3 //
4 // Distributed under the terms of the BSD License. The full license is in
4 // Distributed under the terms of the BSD License. The full license is in
5 // the file COPYING, distributed as part of this software.
5 // the file COPYING, distributed as part of this software.
6 //----------------------------------------------------------------------------
6 //----------------------------------------------------------------------------
7
7
8 //============================================================================
8 //============================================================================
9 // Notebook
9 // Notebook
10 //============================================================================
10 //============================================================================
11
11
12 var IPython = (function (IPython) {
12 var IPython = (function (IPython) {
13 "use strict";
13 "use strict";
14
14
15 var utils = IPython.utils;
15 var utils = IPython.utils;
16 var key = IPython.utils.keycodes;
16 var key = IPython.utils.keycodes;
17
17
18 /**
18 /**
19 * A notebook contains and manages cells.
19 * A notebook contains and manages cells.
20 *
20 *
21 * @class Notebook
21 * @class Notebook
22 * @constructor
22 * @constructor
23 * @param {String} selector A jQuery selector for the notebook's DOM element
23 * @param {String} selector A jQuery selector for the notebook's DOM element
24 * @param {Object} [options] A config object
24 * @param {Object} [options] A config object
25 */
25 */
26 var Notebook = function (selector, options) {
26 var Notebook = function (selector, options) {
27 var options = options || {};
27 var options = options || {};
28 this._baseProjectUrl = options.baseProjectUrl;
28 this._baseProjectUrl = options.baseProjectUrl;
29 this.notebook_path = options.notebookPath;
29 this.notebook_path = options.notebookPath;
30 this.notebook_name = options.notebookName;
30 this.notebook_name = options.notebookName;
31 this.element = $(selector);
31 this.element = $(selector);
32 this.element.scroll();
32 this.element.scroll();
33 this.element.data("notebook", this);
33 this.element.data("notebook", this);
34 this.next_prompt_number = 1;
34 this.next_prompt_number = 1;
35 this.session = null;
35 this.session = null;
36 this.kernel = null;
36 this.kernel = null;
37 this.clipboard = null;
37 this.clipboard = null;
38 this.undelete_backup = null;
38 this.undelete_backup = null;
39 this.undelete_index = null;
39 this.undelete_index = null;
40 this.undelete_below = false;
40 this.undelete_below = false;
41 this.paste_enabled = false;
41 this.paste_enabled = false;
42 this.mode = 'command';
43 this.edit_index = null;
42 this.set_dirty(false);
44 this.set_dirty(false);
43 this.metadata = {};
45 this.metadata = {};
44 this._checkpoint_after_save = false;
46 this._checkpoint_after_save = false;
45 this.last_checkpoint = null;
47 this.last_checkpoint = null;
46 this.checkpoints = [];
48 this.checkpoints = [];
47 this.autosave_interval = 0;
49 this.autosave_interval = 0;
48 this.autosave_timer = null;
50 this.autosave_timer = null;
49 // autosave *at most* every two minutes
51 // autosave *at most* every two minutes
50 this.minimum_autosave_interval = 120000;
52 this.minimum_autosave_interval = 120000;
51 // single worksheet for now
53 // single worksheet for now
52 this.worksheet_metadata = {};
54 this.worksheet_metadata = {};
53 this.control_key_active = false;
55 this.control_key_active = false;
54 this.notebook_name_blacklist_re = /[\/\\:]/;
56 this.notebook_name_blacklist_re = /[\/\\:]/;
55 this.nbformat = 3 // Increment this when changing the nbformat
57 this.nbformat = 3 // Increment this when changing the nbformat
56 this.nbformat_minor = 0 // Increment this when changing the nbformat
58 this.nbformat_minor = 0 // Increment this when changing the nbformat
57 this.style();
59 this.style();
58 this.create_elements();
60 this.create_elements();
59 this.bind_events();
61 this.bind_events();
60 };
62 };
61
63
62 /**
64 /**
63 * Tweak the notebook's CSS style.
65 * Tweak the notebook's CSS style.
64 *
66 *
65 * @method style
67 * @method style
66 */
68 */
67 Notebook.prototype.style = function () {
69 Notebook.prototype.style = function () {
68 $('div#notebook').addClass('border-box-sizing');
70 $('div#notebook').addClass('border-box-sizing');
69 };
71 };
70
72
71 /**
73 /**
72 * Get the root URL of the notebook server.
74 * Get the root URL of the notebook server.
73 *
75 *
74 * @method baseProjectUrl
76 * @method baseProjectUrl
75 * @return {String} The base project URL
77 * @return {String} The base project URL
76 */
78 */
77 Notebook.prototype.baseProjectUrl = function(){
79 Notebook.prototype.baseProjectUrl = function() {
78 return this._baseProjectUrl || $('body').data('baseProjectUrl');
80 return this._baseProjectUrl || $('body').data('baseProjectUrl');
79 };
81 };
80
82
81 Notebook.prototype.notebookName = function() {
83 Notebook.prototype.notebookName = function() {
82 return $('body').data('notebookName');
84 return $('body').data('notebookName');
83 };
85 };
84
86
85 Notebook.prototype.notebookPath = function() {
87 Notebook.prototype.notebookPath = function() {
86 return $('body').data('notebookPath');
88 return $('body').data('notebookPath');
87 };
89 };
88
90
89 /**
91 /**
90 * Create an HTML and CSS representation of the notebook.
92 * Create an HTML and CSS representation of the notebook.
91 *
93 *
92 * @method create_elements
94 * @method create_elements
93 */
95 */
94 Notebook.prototype.create_elements = function () {
96 Notebook.prototype.create_elements = function () {
95 // We add this end_space div to the end of the notebook div to:
97 // We add this end_space div to the end of the notebook div to:
96 // i) provide a margin between the last cell and the end of the notebook
98 // i) provide a margin between the last cell and the end of the notebook
97 // ii) to prevent the div from scrolling up when the last cell is being
99 // ii) to prevent the div from scrolling up when the last cell is being
98 // edited, but is too low on the page, which browsers will do automatically.
100 // edited, but is too low on the page, which browsers will do automatically.
99 var that = this;
101 var that = this;
100 this.container = $("<div/>").addClass("container").attr("id", "notebook-container");
102 this.container = $("<div/>").addClass("container").attr("id", "notebook-container");
101 var end_space = $('<div/>').addClass('end_space');
103 var end_space = $('<div/>').addClass('end_space');
102 end_space.dblclick(function (e) {
104 end_space.dblclick(function (e) {
103 var ncells = that.ncells();
105 var ncells = that.ncells();
104 that.insert_cell_below('code',ncells-1);
106 that.insert_cell_below('code',ncells-1);
105 });
107 });
106 this.element.append(this.container);
108 this.element.append(this.container);
107 this.container.append(end_space);
109 this.container.append(end_space);
108 $('div#notebook').addClass('border-box-sizing');
110 $('div#notebook').addClass('border-box-sizing');
109 };
111 };
110
112
111 /**
113 /**
112 * Bind JavaScript events: key presses and custom IPython events.
114 * Bind JavaScript events: key presses and custom IPython events.
113 *
115 *
114 * @method bind_events
116 * @method bind_events
115 */
117 */
116 Notebook.prototype.bind_events = function () {
118 Notebook.prototype.bind_events = function () {
117 var that = this;
119 var that = this;
118
120
119 $([IPython.events]).on('set_next_input.Notebook', function (event, data) {
121 $([IPython.events]).on('set_next_input.Notebook', function (event, data) {
120 var index = that.find_cell_index(data.cell);
122 var index = that.find_cell_index(data.cell);
121 var new_cell = that.insert_cell_below('code',index);
123 var new_cell = that.insert_cell_below('code',index);
122 new_cell.set_text(data.text);
124 new_cell.set_text(data.text);
123 that.dirty = true;
125 that.dirty = true;
124 });
126 });
125
127
126 $([IPython.events]).on('set_dirty.Notebook', function (event, data) {
128 $([IPython.events]).on('set_dirty.Notebook', function (event, data) {
127 that.dirty = data.value;
129 that.dirty = data.value;
128 });
130 });
129
131
130 $([IPython.events]).on('select.Cell', function (event, data) {
132 $([IPython.events]).on('select.Cell', function (event, data) {
131 var index = that.find_cell_index(data.cell);
133 var index = that.find_cell_index(data.cell);
132 that.select(index);
134 that.select(index);
133 });
135 });
134
136
137 $([IPython.events]).on('edit_mode.Cell', function (event, data) {
138 var index = that.find_cell_index(data.cell);
139 that.select(index);
140 that.edit_mode();
141 });
142
135 $([IPython.events]).on('status_autorestarting.Kernel', function () {
143 $([IPython.events]).on('status_autorestarting.Kernel', function () {
136 IPython.dialog.modal({
144 IPython.dialog.modal({
137 title: "Kernel Restarting",
145 title: "Kernel Restarting",
138 body: "The kernel appears to have died. It will restart automatically.",
146 body: "The kernel appears to have died. It will restart automatically.",
139 buttons: {
147 buttons: {
140 OK : {
148 OK : {
141 class : "btn-primary"
149 class : "btn-primary"
142 }
150 }
143 }
151 }
144 });
152 });
145 });
153 });
146
154
147
148 $(document).keydown(function (event) {
155 $(document).keydown(function (event) {
149
156
150 // Save (CTRL+S) or (AppleKey+S)
157 // Event handlers for both command and edit mode
151 //metaKey = applekey on mac
152 if ((event.ctrlKey || event.metaKey) && event.keyCode==83) {
158 if ((event.ctrlKey || event.metaKey) && event.keyCode==83) {
159 // Save (CTRL+S) or (Command+S on Mac)
153 that.save_checkpoint();
160 that.save_checkpoint();
154 event.preventDefault();
161 event.preventDefault();
155 return false;
162 return false;
156 } else if (event.which === key.ESC) {
163 } else if (event.which === key.ESC) {
157 // Intercept escape at highest level to avoid closing
164 // Intercept escape at highest level to avoid closing
158 // websocket connection with firefox
165 // websocket connection with firefox
159 IPython.pager.collapse();
160 event.preventDefault();
166 event.preventDefault();
167 // Don't return yet to allow edit/command modes to handle
161 } else if (event.which === key.SHIFT) {
168 } else if (event.which === key.SHIFT) {
162 // ignore shift keydown
169 // ignore shift keydown
163 return true;
170 return true;
171 } else if (event.which === key.ENTER && event.shiftKey) {
172 that.execute_selected_cell('shift');
173 return false;
174 } else if (event.which === key.ENTER && event.altKey) {
175 // Execute code cell, and insert new in place
176 that.execute_selected_cell('alt');
177 return false;
178 } else if (event.which === key.ENTER && event.ctrlKey) {
179 that.execute_selected_cell('ctrl');
180 return false;
164 }
181 }
165 if (event.which === key.UPARROW && !event.shiftKey) {
182
183 // Event handlers for edit mode
184 if (that.mode === 'edit') {
185 if (event.which === key.ESC) {
186 // ESC
187 that.command_mode();
188 return false;
189 } else if (event.which === 77 && event.ctrlKey) {
190 // Ctrl-m
191 that.command_mode();
192 return false;
193 } else if (event.which === key.UPARROW && !event.shiftKey) {
166 var cell = that.get_selected_cell();
194 var cell = that.get_selected_cell();
167 if (cell && cell.at_top()) {
195 if (cell && cell.at_top()) {
168 event.preventDefault();
196 event.preventDefault();
197 that.command_mode()
169 that.select_prev();
198 that.select_prev();
199 that.edit_mode();
200 return false;
170 };
201 };
171 } else if (event.which === key.DOWNARROW && !event.shiftKey) {
202 } else if (event.which === key.DOWNARROW && !event.shiftKey) {
172 var cell = that.get_selected_cell();
203 var cell = that.get_selected_cell();
173 if (cell && cell.at_bottom()) {
204 if (cell && cell.at_bottom()) {
174 event.preventDefault();
205 event.preventDefault();
206 that.command_mode()
175 that.select_next();
207 that.select_next();
176 };
208 that.edit_mode();
177 } else if (event.which === key.ENTER && event.shiftKey) {
178 that.execute_selected_cell();
179 return false;
180 } else if (event.which === key.ENTER && event.altKey) {
181 // Execute code cell, and insert new in place
182 that.execute_selected_cell();
183 // Only insert a new cell, if we ended up in an already populated cell
184 if (/\S/.test(that.get_selected_cell().get_text()) == true) {
185 that.insert_cell_above('code');
186 }
187 return false;
209 return false;
188 } else if (event.which === key.ENTER && event.ctrlKey) {
210 };
189 that.execute_selected_cell({terminal:true});
211 };
212 // Event handlers for command mode
213 } else if (that.mode === 'command' && !(event.ctrlKey || event.altKey)) {
214 if (event.which === key.ENTER && !(event.ctrlKey || event.altKey || event.shiftKey)) {
215 // Enter edit mode = ENTER alone
216 that.edit_mode();
217 return false
218 } else if (event.which === key.UPARROW && !event.shiftKey) {
219 var index = that.get_selected_index();
220 if (index !== 0 && index !== null) {
221 that.select_prev();
222 var cell = that.get_selected_cell();
223 cell.focus_cell();
224 };
190 return false;
225 return false;
191 } else if (event.which === 77 && event.ctrlKey && that.control_key_active == false) {
226 } else if (event.which === key.DOWNARROW && !event.shiftKey) {
192 that.control_key_active = true;
227 var index = that.get_selected_index();
228 if (index !== (that.ncells()-1) && index !== null) {
229 that.select_next();
230 var cell = that.get_selected_cell();
231 cell.focus_cell();
232 };
193 return false;
233 return false;
194 } else if (event.which === 88 && that.control_key_active) {
234 } else if (event.which === 88) {
195 // Cut selected cell = x
235 // Cut selected cell = x
196 that.cut_cell();
236 that.cut_cell();
197 that.control_key_active = false;
198 return false;
237 return false;
199 } else if (event.which === 67 && that.control_key_active) {
238 } else if (event.which === 67) {
200 // Copy selected cell = c
239 // Copy selected cell = c
201 that.copy_cell();
240 that.copy_cell();
202 that.control_key_active = false;
203 return false;
241 return false;
204 } else if (event.which === 86 && that.control_key_active) {
242 } else if (event.which === 86) {
205 // Paste below selected cell = v
243 // Paste below selected cell = v
206 that.paste_cell_below();
244 that.paste_cell_below();
207 that.control_key_active = false;
208 return false;
245 return false;
209 } else if (event.which === 68 && that.control_key_active) {
246 } else if (event.which === 68) {
210 // Delete selected cell = d
247 // Delete selected cell = d
211 that.delete_cell();
248 that.delete_cell();
212 that.control_key_active = false;
213 return false;
249 return false;
214 } else if (event.which === 65 && that.control_key_active) {
250 } else if (event.which === 65) {
215 // Insert code cell above selected = a
251 // Insert code cell above selected = a
216 that.insert_cell_above('code');
252 that.insert_cell_above('code');
217 that.control_key_active = false;
253 that.select_prev();
218 return false;
254 return false;
219 } else if (event.which === 66 && that.control_key_active) {
255 } else if (event.which === 66) {
220 // Insert code cell below selected = b
256 // Insert code cell below selected = b
221 that.insert_cell_below('code');
257 that.insert_cell_below('code');
222 that.control_key_active = false;
258 that.select_next();
223 return false;
259 return false;
224 } else if (event.which === 89 && that.control_key_active) {
260 } else if (event.which === 89) {
225 // To code = y
261 // To code = y
226 that.to_code();
262 that.to_code();
227 that.control_key_active = false;
228 return false;
263 return false;
229 } else if (event.which === 77 && that.control_key_active) {
264 } else if (event.which === 77) {
230 // To markdown = m
265 // To markdown = m
231 that.to_markdown();
266 that.to_markdown();
232 that.control_key_active = false;
233 return false;
267 return false;
234 } else if (event.which === 84 && that.control_key_active) {
268 } else if (event.which === 84) {
235 // To Raw = t
269 // To Raw = t
236 that.to_raw();
270 that.to_raw();
237 that.control_key_active = false;
238 return false;
271 return false;
239 } else if (event.which === 49 && that.control_key_active) {
272 } else if (event.which === 49) {
240 // To Heading 1 = 1
273 // To Heading 1 = 1
241 that.to_heading(undefined, 1);
274 that.to_heading(undefined, 1);
242 that.control_key_active = false;
243 return false;
275 return false;
244 } else if (event.which === 50 && that.control_key_active) {
276 } else if (event.which === 50) {
245 // To Heading 2 = 2
277 // To Heading 2 = 2
246 that.to_heading(undefined, 2);
278 that.to_heading(undefined, 2);
247 that.control_key_active = false;
248 return false;
279 return false;
249 } else if (event.which === 51 && that.control_key_active) {
280 } else if (event.which === 51) {
250 // To Heading 3 = 3
281 // To Heading 3 = 3
251 that.to_heading(undefined, 3);
282 that.to_heading(undefined, 3);
252 that.control_key_active = false;
253 return false;
283 return false;
254 } else if (event.which === 52 && that.control_key_active) {
284 } else if (event.which === 52) {
255 // To Heading 4 = 4
285 // To Heading 4 = 4
256 that.to_heading(undefined, 4);
286 that.to_heading(undefined, 4);
257 that.control_key_active = false;
258 return false;
287 return false;
259 } else if (event.which === 53 && that.control_key_active) {
288 } else if (event.which === 53) {
260 // To Heading 5 = 5
289 // To Heading 5 = 5
261 that.to_heading(undefined, 5);
290 that.to_heading(undefined, 5);
262 that.control_key_active = false;
263 return false;
291 return false;
264 } else if (event.which === 54 && that.control_key_active) {
292 } else if (event.which === 54) {
265 // To Heading 6 = 6
293 // To Heading 6 = 6
266 that.to_heading(undefined, 6);
294 that.to_heading(undefined, 6);
267 that.control_key_active = false;
268 return false;
295 return false;
269 } else if (event.which === 79 && that.control_key_active) {
296 } else if (event.which === 79) {
270 // Toggle output = o
297 // Toggle output = o
271 if (event.shiftKey){
298 if (event.shiftKey) {
272 that.toggle_output_scroll();
299 that.toggle_output_scroll();
273 } else {
300 } else {
274 that.toggle_output();
301 that.toggle_output();
275 }
302 };
276 that.control_key_active = false;
277 return false;
303 return false;
278 } else if (event.which === 83 && that.control_key_active) {
304 } else if (event.which === 83) {
279 // Save notebook = s
305 // Save notebook = s
280 that.save_checkpoint();
306 that.save_checkpoint();
281 that.control_key_active = false;
307 that.control_key_active = false;
282 return false;
308 return false;
283 } else if (event.which === 74 && that.control_key_active) {
309 } else if (event.which === 74) {
284 // Move cell down = j
310 // Move cell down = j
285 that.move_cell_down();
311 that.move_cell_down();
286 that.control_key_active = false;
287 return false;
312 return false;
288 } else if (event.which === 75 && that.control_key_active) {
313 } else if (event.which === 75) {
289 // Move cell up = k
314 // Move cell up = k
290 that.move_cell_up();
315 that.move_cell_up();
291 that.control_key_active = false;
292 return false;
316 return false;
293 } else if (event.which === 80 && that.control_key_active) {
317 } else if (event.which === 80) {
294 // Select previous = p
318 // Select previous = p
295 that.select_prev();
319 that.select_prev();
296 that.control_key_active = false;
297 return false;
320 return false;
298 } else if (event.which === 78 && that.control_key_active) {
321 } else if (event.which === 78) {
299 // Select next = n
322 // Select next = n
300 that.select_next();
323 that.select_next();
301 that.control_key_active = false;
302 return false;
324 return false;
303 } else if (event.which === 76 && that.control_key_active) {
325 } else if (event.which === 76) {
304 // Toggle line numbers = l
326 // Toggle line numbers = l
305 that.cell_toggle_line_numbers();
327 that.cell_toggle_line_numbers();
306 that.control_key_active = false;
307 return false;
328 return false;
308 } else if (event.which === 73 && that.control_key_active) {
329 } else if (event.which === 73) {
309 // Interrupt kernel = i
330 // Interrupt kernel = i
310 that.session.interrupt_kernel();
331 that.kernel.interrupt();
311 that.control_key_active = false;
312 return false;
332 return false;
313 } else if (event.which === 190 && that.control_key_active) {
333 } else if (event.which === 190) {
314 // Restart kernel = . # matches qt console
334 // Restart kernel = . # matches qt console
315 that.restart_kernel();
335 that.restart_kernel();
316 that.control_key_active = false;
317 return false;
336 return false;
318 } else if (event.which === 72 && that.control_key_active) {
337 } else if (event.which === 72) {
319 // Show keyboard shortcuts = h
338 // Show keyboard shortcuts = h
320 IPython.quick_help.show_keyboard_shortcuts();
339 IPython.quick_help.show_keyboard_shortcuts();
321 that.control_key_active = false;
322 return false;
340 return false;
323 } else if (event.which === 90 && that.control_key_active) {
341 } else if (event.which === 90) {
324 // Undo last cell delete = z
342 // Undo last cell delete = z
325 that.undelete();
343 that.undelete();
326 that.control_key_active = false;
327 return false;
328 } else if ((event.which === 189 || event.which === 173) &&
329 that.control_key_active) {
330 // how fun! '-' is 189 in Chrome, but 173 in FF and Opera
331 // Split cell = -
332 that.split_cell();
333 that.control_key_active = false;
334 return false;
344 return false;
335 } else if (that.control_key_active) {
345 };
336 that.control_key_active = false;
346 };
337 return true;
347
338 }
348 // If we havn't handled it, let someone else.
339 return true;
349 return true;
340 });
350 });
341
351
342 var collapse_time = function(time){
352 var collapse_time = function (time) {
343 var app_height = $('#ipython-main-app').height(); // content height
353 var app_height = $('#ipython-main-app').height(); // content height
344 var splitter_height = $('div#pager_splitter').outerHeight(true);
354 var splitter_height = $('div#pager_splitter').outerHeight(true);
345 var new_height = app_height - splitter_height;
355 var new_height = app_height - splitter_height;
346 that.element.animate({height : new_height + 'px'}, time);
356 that.element.animate({height : new_height + 'px'}, time);
347 }
357 };
348
358
349 this.element.bind('collapse_pager', function (event,extrap) {
359 this.element.bind('collapse_pager', function (event, extrap) {
350 var time = (extrap != undefined) ? ((extrap.duration != undefined ) ? extrap.duration : 'fast') : 'fast';
360 var time = (extrap != undefined) ? ((extrap.duration != undefined ) ? extrap.duration : 'fast') : 'fast';
351 collapse_time(time);
361 collapse_time(time);
352 });
362 });
353
363
354 var expand_time = function(time) {
364 var expand_time = function (time) {
355 var app_height = $('#ipython-main-app').height(); // content height
365 var app_height = $('#ipython-main-app').height(); // content height
356 var splitter_height = $('div#pager_splitter').outerHeight(true);
366 var splitter_height = $('div#pager_splitter').outerHeight(true);
357 var pager_height = $('div#pager').outerHeight(true);
367 var pager_height = $('div#pager').outerHeight(true);
358 var new_height = app_height - pager_height - splitter_height;
368 var new_height = app_height - pager_height - splitter_height;
359 that.element.animate({height : new_height + 'px'}, time);
369 that.element.animate({height : new_height + 'px'}, time);
360 }
370 };
361
371
362 this.element.bind('expand_pager', function (event, extrap) {
372 this.element.bind('expand_pager', function (event, extrap) {
363 var time = (extrap != undefined) ? ((extrap.duration != undefined ) ? extrap.duration : 'fast') : 'fast';
373 var time = (extrap != undefined) ? ((extrap.duration != undefined ) ? extrap.duration : 'fast') : 'fast';
364 expand_time(time);
374 expand_time(time);
365 });
375 });
366
376
367 // Firefox 22 broke $(window).on("beforeunload")
377 // Firefox 22 broke $(window).on("beforeunload")
368 // I'm not sure why or how.
378 // I'm not sure why or how.
369 window.onbeforeunload = function (e) {
379 window.onbeforeunload = function (e) {
370 // TODO: Make killing the kernel configurable.
380 // TODO: Make killing the kernel configurable.
371 var kill_kernel = false;
381 var kill_kernel = false;
372 if (kill_kernel) {
382 if (kill_kernel) {
373 that.session.kill_kernel();
383 that.session.kill_kernel();
374 }
384 }
375 // if we are autosaving, trigger an autosave on nav-away.
385 // if we are autosaving, trigger an autosave on nav-away.
376 // still warn, because if we don't the autosave may fail.
386 // still warn, because if we don't the autosave may fail.
377 if (that.dirty) {
387 if (that.dirty) {
378 if ( that.autosave_interval ) {
388 if ( that.autosave_interval ) {
379 // schedule autosave in a timeout
389 // schedule autosave in a timeout
380 // this gives you a chance to forcefully discard changes
390 // this gives you a chance to forcefully discard changes
381 // by reloading the page if you *really* want to.
391 // by reloading the page if you *really* want to.
382 // the timer doesn't start until you *dismiss* the dialog.
392 // the timer doesn't start until you *dismiss* the dialog.
383 setTimeout(function () {
393 setTimeout(function () {
384 if (that.dirty) {
394 if (that.dirty) {
385 that.save_notebook();
395 that.save_notebook();
386 }
396 }
387 }, 1000);
397 }, 1000);
388 return "Autosave in progress, latest changes may be lost.";
398 return "Autosave in progress, latest changes may be lost.";
389 } else {
399 } else {
390 return "Unsaved changes will be lost.";
400 return "Unsaved changes will be lost.";
391 }
401 }
392 };
402 };
393 // Null is the *only* return value that will make the browser not
403 // Null is the *only* return value that will make the browser not
394 // pop up the "don't leave" dialog.
404 // pop up the "don't leave" dialog.
395 return null;
405 return null;
396 };
406 };
397 };
407 };
398
408
399 /**
409 /**
400 * Set the dirty flag, and trigger the set_dirty.Notebook event
410 * Set the dirty flag, and trigger the set_dirty.Notebook event
401 *
411 *
402 * @method set_dirty
412 * @method set_dirty
403 */
413 */
404 Notebook.prototype.set_dirty = function (value) {
414 Notebook.prototype.set_dirty = function (value) {
405 if (value === undefined) {
415 if (value === undefined) {
406 value = true;
416 value = true;
407 }
417 }
408 if (this.dirty == value) {
418 if (this.dirty == value) {
409 return;
419 return;
410 }
420 }
411 $([IPython.events]).trigger('set_dirty.Notebook', {value: value});
421 $([IPython.events]).trigger('set_dirty.Notebook', {value: value});
412 };
422 };
413
423
414 /**
424 /**
415 * Scroll the top of the page to a given cell.
425 * Scroll the top of the page to a given cell.
416 *
426 *
417 * @method scroll_to_cell
427 * @method scroll_to_cell
418 * @param {Number} cell_number An index of the cell to view
428 * @param {Number} cell_number An index of the cell to view
419 * @param {Number} time Animation time in milliseconds
429 * @param {Number} time Animation time in milliseconds
420 * @return {Number} Pixel offset from the top of the container
430 * @return {Number} Pixel offset from the top of the container
421 */
431 */
422 Notebook.prototype.scroll_to_cell = function (cell_number, time) {
432 Notebook.prototype.scroll_to_cell = function (cell_number, time) {
423 var cells = this.get_cells();
433 var cells = this.get_cells();
424 var time = time || 0;
434 var time = time || 0;
425 cell_number = Math.min(cells.length-1,cell_number);
435 cell_number = Math.min(cells.length-1,cell_number);
426 cell_number = Math.max(0 ,cell_number);
436 cell_number = Math.max(0 ,cell_number);
427 var scroll_value = cells[cell_number].element.position().top-cells[0].element.position().top ;
437 var scroll_value = cells[cell_number].element.position().top-cells[0].element.position().top ;
428 this.element.animate({scrollTop:scroll_value}, time);
438 this.element.animate({scrollTop:scroll_value}, time);
429 return scroll_value;
439 return scroll_value;
430 };
440 };
431
441
432 /**
442 /**
433 * Scroll to the bottom of the page.
443 * Scroll to the bottom of the page.
434 *
444 *
435 * @method scroll_to_bottom
445 * @method scroll_to_bottom
436 */
446 */
437 Notebook.prototype.scroll_to_bottom = function () {
447 Notebook.prototype.scroll_to_bottom = function () {
438 this.element.animate({scrollTop:this.element.get(0).scrollHeight}, 0);
448 this.element.animate({scrollTop:this.element.get(0).scrollHeight}, 0);
439 };
449 };
440
450
441 /**
451 /**
442 * Scroll to the top of the page.
452 * Scroll to the top of the page.
443 *
453 *
444 * @method scroll_to_top
454 * @method scroll_to_top
445 */
455 */
446 Notebook.prototype.scroll_to_top = function () {
456 Notebook.prototype.scroll_to_top = function () {
447 this.element.animate({scrollTop:0}, 0);
457 this.element.animate({scrollTop:0}, 0);
448 };
458 };
449
459
450 // Edit Notebook metadata
460 // Edit Notebook metadata
451
461
452 Notebook.prototype.edit_metadata = function () {
462 Notebook.prototype.edit_metadata = function () {
453 var that = this;
463 var that = this;
454 IPython.dialog.edit_metadata(this.metadata, function (md) {
464 IPython.dialog.edit_metadata(this.metadata, function (md) {
455 that.metadata = md;
465 that.metadata = md;
456 }, 'Notebook');
466 }, 'Notebook');
457 };
467 };
458
468
459 // Cell indexing, retrieval, etc.
469 // Cell indexing, retrieval, etc.
460
470
461 /**
471 /**
462 * Get all cell elements in the notebook.
472 * Get all cell elements in the notebook.
463 *
473 *
464 * @method get_cell_elements
474 * @method get_cell_elements
465 * @return {jQuery} A selector of all cell elements
475 * @return {jQuery} A selector of all cell elements
466 */
476 */
467 Notebook.prototype.get_cell_elements = function () {
477 Notebook.prototype.get_cell_elements = function () {
468 return this.container.children("div.cell");
478 return this.container.children("div.cell");
469 };
479 };
470
480
471 /**
481 /**
472 * Get a particular cell element.
482 * Get a particular cell element.
473 *
483 *
474 * @method get_cell_element
484 * @method get_cell_element
475 * @param {Number} index An index of a cell to select
485 * @param {Number} index An index of a cell to select
476 * @return {jQuery} A selector of the given cell.
486 * @return {jQuery} A selector of the given cell.
477 */
487 */
478 Notebook.prototype.get_cell_element = function (index) {
488 Notebook.prototype.get_cell_element = function (index) {
479 var result = null;
489 var result = null;
480 var e = this.get_cell_elements().eq(index);
490 var e = this.get_cell_elements().eq(index);
481 if (e.length !== 0) {
491 if (e.length !== 0) {
482 result = e;
492 result = e;
483 }
493 }
484 return result;
494 return result;
485 };
495 };
486
496
487 /**
497 /**
488 * Count the cells in this notebook.
498 * Count the cells in this notebook.
489 *
499 *
490 * @method ncells
500 * @method ncells
491 * @return {Number} The number of cells in this notebook
501 * @return {Number} The number of cells in this notebook
492 */
502 */
493 Notebook.prototype.ncells = function () {
503 Notebook.prototype.ncells = function () {
494 return this.get_cell_elements().length;
504 return this.get_cell_elements().length;
495 };
505 };
496
506
497 /**
507 /**
498 * Get all Cell objects in this notebook.
508 * Get all Cell objects in this notebook.
499 *
509 *
500 * @method get_cells
510 * @method get_cells
501 * @return {Array} This notebook's Cell objects
511 * @return {Array} This notebook's Cell objects
502 */
512 */
503 // TODO: we are often calling cells as cells()[i], which we should optimize
513 // TODO: we are often calling cells as cells()[i], which we should optimize
504 // to cells(i) or a new method.
514 // to cells(i) or a new method.
505 Notebook.prototype.get_cells = function () {
515 Notebook.prototype.get_cells = function () {
506 return this.get_cell_elements().toArray().map(function (e) {
516 return this.get_cell_elements().toArray().map(function (e) {
507 return $(e).data("cell");
517 return $(e).data("cell");
508 });
518 });
509 };
519 };
510
520
511 /**
521 /**
512 * Get a Cell object from this notebook.
522 * Get a Cell object from this notebook.
513 *
523 *
514 * @method get_cell
524 * @method get_cell
515 * @param {Number} index An index of a cell to retrieve
525 * @param {Number} index An index of a cell to retrieve
516 * @return {Cell} A particular cell
526 * @return {Cell} A particular cell
517 */
527 */
518 Notebook.prototype.get_cell = function (index) {
528 Notebook.prototype.get_cell = function (index) {
519 var result = null;
529 var result = null;
520 var ce = this.get_cell_element(index);
530 var ce = this.get_cell_element(index);
521 if (ce !== null) {
531 if (ce !== null) {
522 result = ce.data('cell');
532 result = ce.data('cell');
523 }
533 }
524 return result;
534 return result;
525 }
535 }
526
536
527 /**
537 /**
528 * Get the cell below a given cell.
538 * Get the cell below a given cell.
529 *
539 *
530 * @method get_next_cell
540 * @method get_next_cell
531 * @param {Cell} cell The provided cell
541 * @param {Cell} cell The provided cell
532 * @return {Cell} The next cell
542 * @return {Cell} The next cell
533 */
543 */
534 Notebook.prototype.get_next_cell = function (cell) {
544 Notebook.prototype.get_next_cell = function (cell) {
535 var result = null;
545 var result = null;
536 var index = this.find_cell_index(cell);
546 var index = this.find_cell_index(cell);
537 if (this.is_valid_cell_index(index+1)) {
547 if (this.is_valid_cell_index(index+1)) {
538 result = this.get_cell(index+1);
548 result = this.get_cell(index+1);
539 }
549 }
540 return result;
550 return result;
541 }
551 }
542
552
543 /**
553 /**
544 * Get the cell above a given cell.
554 * Get the cell above a given cell.
545 *
555 *
546 * @method get_prev_cell
556 * @method get_prev_cell
547 * @param {Cell} cell The provided cell
557 * @param {Cell} cell The provided cell
548 * @return {Cell} The previous cell
558 * @return {Cell} The previous cell
549 */
559 */
550 Notebook.prototype.get_prev_cell = function (cell) {
560 Notebook.prototype.get_prev_cell = function (cell) {
551 // TODO: off-by-one
561 // TODO: off-by-one
552 // nb.get_prev_cell(nb.get_cell(1)) is null
562 // nb.get_prev_cell(nb.get_cell(1)) is null
553 var result = null;
563 var result = null;
554 var index = this.find_cell_index(cell);
564 var index = this.find_cell_index(cell);
555 if (index !== null && index > 1) {
565 if (index !== null && index > 1) {
556 result = this.get_cell(index-1);
566 result = this.get_cell(index-1);
557 }
567 }
558 return result;
568 return result;
559 }
569 }
560
570
561 /**
571 /**
562 * Get the numeric index of a given cell.
572 * Get the numeric index of a given cell.
563 *
573 *
564 * @method find_cell_index
574 * @method find_cell_index
565 * @param {Cell} cell The provided cell
575 * @param {Cell} cell The provided cell
566 * @return {Number} The cell's numeric index
576 * @return {Number} The cell's numeric index
567 */
577 */
568 Notebook.prototype.find_cell_index = function (cell) {
578 Notebook.prototype.find_cell_index = function (cell) {
569 var result = null;
579 var result = null;
570 this.get_cell_elements().filter(function (index) {
580 this.get_cell_elements().filter(function (index) {
571 if ($(this).data("cell") === cell) {
581 if ($(this).data("cell") === cell) {
572 result = index;
582 result = index;
573 };
583 };
574 });
584 });
575 return result;
585 return result;
576 };
586 };
577
587
578 /**
588 /**
579 * Get a given index , or the selected index if none is provided.
589 * Get a given index , or the selected index if none is provided.
580 *
590 *
581 * @method index_or_selected
591 * @method index_or_selected
582 * @param {Number} index A cell's index
592 * @param {Number} index A cell's index
583 * @return {Number} The given index, or selected index if none is provided.
593 * @return {Number} The given index, or selected index if none is provided.
584 */
594 */
585 Notebook.prototype.index_or_selected = function (index) {
595 Notebook.prototype.index_or_selected = function (index) {
586 var i;
596 var i;
587 if (index === undefined || index === null) {
597 if (index === undefined || index === null) {
588 i = this.get_selected_index();
598 i = this.get_selected_index();
589 if (i === null) {
599 if (i === null) {
590 i = 0;
600 i = 0;
591 }
601 }
592 } else {
602 } else {
593 i = index;
603 i = index;
594 }
604 }
595 return i;
605 return i;
596 };
606 };
597
607
598 /**
608 /**
599 * Get the currently selected cell.
609 * Get the currently selected cell.
600 * @method get_selected_cell
610 * @method get_selected_cell
601 * @return {Cell} The selected cell
611 * @return {Cell} The selected cell
602 */
612 */
603 Notebook.prototype.get_selected_cell = function () {
613 Notebook.prototype.get_selected_cell = function () {
604 var index = this.get_selected_index();
614 var index = this.get_selected_index();
605 return this.get_cell(index);
615 return this.get_cell(index);
606 };
616 };
607
617
608 /**
618 /**
609 * Check whether a cell index is valid.
619 * Check whether a cell index is valid.
610 *
620 *
611 * @method is_valid_cell_index
621 * @method is_valid_cell_index
612 * @param {Number} index A cell index
622 * @param {Number} index A cell index
613 * @return True if the index is valid, false otherwise
623 * @return True if the index is valid, false otherwise
614 */
624 */
615 Notebook.prototype.is_valid_cell_index = function (index) {
625 Notebook.prototype.is_valid_cell_index = function (index) {
616 if (index !== null && index >= 0 && index < this.ncells()) {
626 if (index !== null && index >= 0 && index < this.ncells()) {
617 return true;
627 return true;
618 } else {
628 } else {
619 return false;
629 return false;
620 };
630 };
621 }
631 }
622
632
623 /**
633 /**
624 * Get the index of the currently selected cell.
634 * Get the index of the currently selected cell.
625
635
626 * @method get_selected_index
636 * @method get_selected_index
627 * @return {Number} The selected cell's numeric index
637 * @return {Number} The selected cell's numeric index
628 */
638 */
629 Notebook.prototype.get_selected_index = function () {
639 Notebook.prototype.get_selected_index = function () {
630 var result = null;
640 var result = null;
631 this.get_cell_elements().filter(function (index) {
641 this.get_cell_elements().filter(function (index) {
632 if ($(this).data("cell").selected === true) {
642 if ($(this).data("cell").selected === true) {
633 result = index;
643 result = index;
634 };
644 };
635 });
645 });
636 return result;
646 return result;
637 };
647 };
638
648
639
649
640 // Cell selection.
650 // Cell selection.
641
651
642 /**
652 /**
643 * Programmatically select a cell.
653 * Programmatically select a cell.
644 *
654 *
645 * @method select
655 * @method select
646 * @param {Number} index A cell's index
656 * @param {Number} index A cell's index
647 * @return {Notebook} This notebook
657 * @return {Notebook} This notebook
648 */
658 */
649 Notebook.prototype.select = function (index) {
659 Notebook.prototype.select = function (index) {
650 if (this.is_valid_cell_index(index)) {
660 if (this.is_valid_cell_index(index)) {
651 var sindex = this.get_selected_index()
661 var sindex = this.get_selected_index()
652 if (sindex !== null && index !== sindex) {
662 if (sindex !== null && index !== sindex) {
653 this.get_cell(sindex).unselect();
663 this.get_cell(sindex).unselect();
654 };
664 };
655 var cell = this.get_cell(index);
665 var cell = this.get_cell(index);
666 console.log('Notebook.select', index);
656 cell.select();
667 cell.select();
657 if (cell.cell_type === 'heading') {
668 if (cell.cell_type === 'heading') {
658 $([IPython.events]).trigger('selected_cell_type_changed.Notebook',
669 $([IPython.events]).trigger('selected_cell_type_changed.Notebook',
659 {'cell_type':cell.cell_type,level:cell.level}
670 {'cell_type':cell.cell_type,level:cell.level}
660 );
671 );
661 } else {
672 } else {
662 $([IPython.events]).trigger('selected_cell_type_changed.Notebook',
673 $([IPython.events]).trigger('selected_cell_type_changed.Notebook',
663 {'cell_type':cell.cell_type}
674 {'cell_type':cell.cell_type}
664 );
675 );
665 };
676 };
666 };
677 };
667 return this;
678 return this;
668 };
679 };
669
680
670 /**
681 /**
671 * Programmatically select the next cell.
682 * Programmatically select the next cell.
672 *
683 *
673 * @method select_next
684 * @method select_next
674 * @return {Notebook} This notebook
685 * @return {Notebook} This notebook
675 */
686 */
676 Notebook.prototype.select_next = function () {
687 Notebook.prototype.select_next = function () {
677 var index = this.get_selected_index();
688 var index = this.get_selected_index();
678 this.select(index+1);
689 this.select(index+1);
679 return this;
690 return this;
680 };
691 };
681
692
682 /**
693 /**
683 * Programmatically select the previous cell.
694 * Programmatically select the previous cell.
684 *
695 *
685 * @method select_prev
696 * @method select_prev
686 * @return {Notebook} This notebook
697 * @return {Notebook} This notebook
687 */
698 */
688 Notebook.prototype.select_prev = function () {
699 Notebook.prototype.select_prev = function () {
689 var index = this.get_selected_index();
700 var index = this.get_selected_index();
690 this.select(index-1);
701 this.select(index-1);
691 return this;
702 return this;
692 };
703 };
693
704
694
705
706 // Edit/Command mode
707
708 /**
709 * Enter command mode for the currently selected cell
710 *
711 * @method command_mode
712 */
713 Notebook.prototype.command_mode = function () {
714 console.log('Notebook.command_mode', this.mode, this.edit_index);
715 if (this.mode !== 'command') {
716 var cell = this.get_cell(this.edit_index);
717 if (cell) {
718 cell.command_mode();
719 this.mode = 'command';
720 this.edit_index = null;
721 };
722 };
723 };
724
725 /**
726 * Enter edit mode for the currently selected cell
727 *
728 * @method editmode
729 */
730 Notebook.prototype.edit_mode = function () {
731 var index = this.get_selected_index();
732 console.log('Notebook.edit_mode', this.mode, index);
733 if (index !== this.edit_index) {
734 if (this.edit_index !== null) {
735 var old_cell = this.get_cell(this.edit_index)
736 old_cell.command_mode();
737 }
738 var cell = this.get_cell(index);
739 if (cell) {
740 cell.edit_mode();
741 this.mode = 'edit';
742 this.edit_index = index;
743 };
744 };
745 };
746
747
695 // Cell movement
748 // Cell movement
696
749
697 /**
750 /**
698 * Move given (or selected) cell up and select it.
751 * Move given (or selected) cell up and select it.
699 *
752 *
700 * @method move_cell_up
753 * @method move_cell_up
701 * @param [index] {integer} cell index
754 * @param [index] {integer} cell index
702 * @return {Notebook} This notebook
755 * @return {Notebook} This notebook
703 **/
756 **/
704 Notebook.prototype.move_cell_up = function (index) {
757 Notebook.prototype.move_cell_up = function (index) {
705 var i = this.index_or_selected(index);
758 var i = this.index_or_selected(index);
706 if (this.is_valid_cell_index(i) && i > 0) {
759 if (this.is_valid_cell_index(i) && i > 0) {
707 var pivot = this.get_cell_element(i-1);
760 var pivot = this.get_cell_element(i-1);
708 var tomove = this.get_cell_element(i);
761 var tomove = this.get_cell_element(i);
709 if (pivot !== null && tomove !== null) {
762 if (pivot !== null && tomove !== null) {
710 tomove.detach();
763 tomove.detach();
711 pivot.before(tomove);
764 pivot.before(tomove);
712 this.select(i-1);
765 this.select(i-1);
713 };
766 };
714 this.set_dirty(true);
767 this.set_dirty(true);
715 };
768 };
716 return this;
769 return this;
717 };
770 };
718
771
719
772
720 /**
773 /**
721 * Move given (or selected) cell down and select it
774 * Move given (or selected) cell down and select it
722 *
775 *
723 * @method move_cell_down
776 * @method move_cell_down
724 * @param [index] {integer} cell index
777 * @param [index] {integer} cell index
725 * @return {Notebook} This notebook
778 * @return {Notebook} This notebook
726 **/
779 **/
727 Notebook.prototype.move_cell_down = function (index) {
780 Notebook.prototype.move_cell_down = function (index) {
728 var i = this.index_or_selected(index);
781 var i = this.index_or_selected(index);
729 if ( this.is_valid_cell_index(i) && this.is_valid_cell_index(i+1)) {
782 if ( this.is_valid_cell_index(i) && this.is_valid_cell_index(i+1)) {
730 var pivot = this.get_cell_element(i+1);
783 var pivot = this.get_cell_element(i+1);
731 var tomove = this.get_cell_element(i);
784 var tomove = this.get_cell_element(i);
732 if (pivot !== null && tomove !== null) {
785 if (pivot !== null && tomove !== null) {
733 tomove.detach();
786 tomove.detach();
734 pivot.after(tomove);
787 pivot.after(tomove);
735 this.select(i+1);
788 this.select(i+1);
736 };
789 };
737 };
790 };
738 this.set_dirty();
791 this.set_dirty();
739 return this;
792 return this;
740 };
793 };
741
794
742
795
743 // Insertion, deletion.
796 // Insertion, deletion.
744
797
745 /**
798 /**
746 * Delete a cell from the notebook.
799 * Delete a cell from the notebook.
747 *
800 *
748 * @method delete_cell
801 * @method delete_cell
749 * @param [index] A cell's numeric index
802 * @param [index] A cell's numeric index
750 * @return {Notebook} This notebook
803 * @return {Notebook} This notebook
751 */
804 */
752 Notebook.prototype.delete_cell = function (index) {
805 Notebook.prototype.delete_cell = function (index) {
753 var i = this.index_or_selected(index);
806 var i = this.index_or_selected(index);
754 var cell = this.get_selected_cell();
807 var cell = this.get_selected_cell();
755 this.undelete_backup = cell.toJSON();
808 this.undelete_backup = cell.toJSON();
756 $('#undelete_cell').removeClass('disabled');
809 $('#undelete_cell').removeClass('disabled');
757 if (this.is_valid_cell_index(i)) {
810 if (this.is_valid_cell_index(i)) {
758 var ce = this.get_cell_element(i);
811 var ce = this.get_cell_element(i);
759 ce.remove();
812 ce.remove();
760 if (i === (this.ncells())) {
813 if (i === (this.ncells())) {
761 this.select(i-1);
814 this.select(i-1);
762 this.undelete_index = i - 1;
815 this.undelete_index = i - 1;
763 this.undelete_below = true;
816 this.undelete_below = true;
764 } else {
817 } else {
765 this.select(i);
818 this.select(i);
766 this.undelete_index = i;
819 this.undelete_index = i;
767 this.undelete_below = false;
820 this.undelete_below = false;
768 };
821 };
769 $([IPython.events]).trigger('delete.Cell', {'cell': cell, 'index': i});
822 $([IPython.events]).trigger('delete.Cell', {'cell': cell, 'index': i});
770 this.set_dirty(true);
823 this.set_dirty(true);
771 };
824 };
772 return this;
825 return this;
773 };
826 };
774
827
775 /**
828 /**
776 * Insert a cell so that after insertion the cell is at given index.
829 * Insert a cell so that after insertion the cell is at given index.
777 *
830 *
778 * Similar to insert_above, but index parameter is mandatory
831 * Similar to insert_above, but index parameter is mandatory
779 *
832 *
780 * Index will be brought back into the accissible range [0,n]
833 * Index will be brought back into the accissible range [0,n]
781 *
834 *
782 * @method insert_cell_at_index
835 * @method insert_cell_at_index
783 * @param type {string} in ['code','markdown','heading']
836 * @param type {string} in ['code','markdown','heading']
784 * @param [index] {int} a valid index where to inser cell
837 * @param [index] {int} a valid index where to inser cell
785 *
838 *
786 * @return cell {cell|null} created cell or null
839 * @return cell {cell|null} created cell or null
787 **/
840 **/
788 Notebook.prototype.insert_cell_at_index = function(type, index){
841 Notebook.prototype.insert_cell_at_index = function(type, index){
789
842
790 var ncells = this.ncells();
843 var ncells = this.ncells();
791 var index = Math.min(index,ncells);
844 var index = Math.min(index,ncells);
792 index = Math.max(index,0);
845 index = Math.max(index,0);
793 var cell = null;
846 var cell = null;
794
847
795 if (ncells === 0 || this.is_valid_cell_index(index) || index === ncells) {
848 if (ncells === 0 || this.is_valid_cell_index(index) || index === ncells) {
796 if (type === 'code') {
849 if (type === 'code') {
797 cell = new IPython.CodeCell(this.kernel);
850 cell = new IPython.CodeCell(this.kernel);
798 cell.set_input_prompt();
851 cell.set_input_prompt();
799 } else if (type === 'markdown') {
852 } else if (type === 'markdown') {
800 cell = new IPython.MarkdownCell();
853 cell = new IPython.MarkdownCell();
801 } else if (type === 'raw') {
854 } else if (type === 'raw') {
802 cell = new IPython.RawCell();
855 cell = new IPython.RawCell();
803 } else if (type === 'heading') {
856 } else if (type === 'heading') {
804 cell = new IPython.HeadingCell();
857 cell = new IPython.HeadingCell();
805 }
858 }
806
859
807 if(this._insert_element_at_index(cell.element,index)){
860 if(this._insert_element_at_index(cell.element,index)) {
808 cell.render();
861 cell.render();
809 this.select(this.find_cell_index(cell));
810 $([IPython.events]).trigger('create.Cell', {'cell': cell, 'index': index});
862 $([IPython.events]).trigger('create.Cell', {'cell': cell, 'index': index});
863 cell.refresh();
864 // TODO: should we really get rid of this?
865 //this.select(this.find_cell_index(cell));
811 this.set_dirty(true);
866 this.set_dirty(true);
812 }
867 }
813 }
868 }
814 return cell;
869 return cell;
815
870
816 };
871 };
817
872
818 /**
873 /**
819 * Insert an element at given cell index.
874 * Insert an element at given cell index.
820 *
875 *
821 * @method _insert_element_at_index
876 * @method _insert_element_at_index
822 * @param element {dom element} a cell element
877 * @param element {dom element} a cell element
823 * @param [index] {int} a valid index where to inser cell
878 * @param [index] {int} a valid index where to inser cell
824 * @private
879 * @private
825 *
880 *
826 * return true if everything whent fine.
881 * return true if everything whent fine.
827 **/
882 **/
828 Notebook.prototype._insert_element_at_index = function(element, index){
883 Notebook.prototype._insert_element_at_index = function(element, index){
829 if (element === undefined){
884 if (element === undefined){
830 return false;
885 return false;
831 }
886 }
832
887
833 var ncells = this.ncells();
888 var ncells = this.ncells();
834
889
835 if (ncells === 0) {
890 if (ncells === 0) {
836 // special case append if empty
891 // special case append if empty
837 this.element.find('div.end_space').before(element);
892 this.element.find('div.end_space').before(element);
838 } else if ( ncells === index ) {
893 } else if ( ncells === index ) {
839 // special case append it the end, but not empty
894 // special case append it the end, but not empty
840 this.get_cell_element(index-1).after(element);
895 this.get_cell_element(index-1).after(element);
841 } else if (this.is_valid_cell_index(index)) {
896 } else if (this.is_valid_cell_index(index)) {
842 // otherwise always somewhere to append to
897 // otherwise always somewhere to append to
843 this.get_cell_element(index).before(element);
898 this.get_cell_element(index).before(element);
844 } else {
899 } else {
845 return false;
900 return false;
846 }
901 }
847
902
848 if (this.undelete_index !== null && index <= this.undelete_index) {
903 if (this.undelete_index !== null && index <= this.undelete_index) {
849 this.undelete_index = this.undelete_index + 1;
904 this.undelete_index = this.undelete_index + 1;
850 this.set_dirty(true);
905 this.set_dirty(true);
851 }
906 }
852 return true;
907 return true;
853 };
908 };
854
909
855 /**
910 /**
856 * Insert a cell of given type above given index, or at top
911 * Insert a cell of given type above given index, or at top
857 * of notebook if index smaller than 0.
912 * of notebook if index smaller than 0.
858 *
913 *
859 * default index value is the one of currently selected cell
914 * default index value is the one of currently selected cell
860 *
915 *
861 * @method insert_cell_above
916 * @method insert_cell_above
862 * @param type {string} cell type
917 * @param type {string} cell type
863 * @param [index] {integer}
918 * @param [index] {integer}
864 *
919 *
865 * @return handle to created cell or null
920 * @return handle to created cell or null
866 **/
921 **/
867 Notebook.prototype.insert_cell_above = function (type, index) {
922 Notebook.prototype.insert_cell_above = function (type, index) {
868 index = this.index_or_selected(index);
923 index = this.index_or_selected(index);
869 return this.insert_cell_at_index(type, index);
924 return this.insert_cell_at_index(type, index);
870 };
925 };
871
926
872 /**
927 /**
873 * Insert a cell of given type below given index, or at bottom
928 * Insert a cell of given type below given index, or at bottom
874 * of notebook if index greater thatn number of cell
929 * of notebook if index greater thatn number of cell
875 *
930 *
876 * default index value is the one of currently selected cell
931 * default index value is the one of currently selected cell
877 *
932 *
878 * @method insert_cell_below
933 * @method insert_cell_below
879 * @param type {string} cell type
934 * @param type {string} cell type
880 * @param [index] {integer}
935 * @param [index] {integer}
881 *
936 *
882 * @return handle to created cell or null
937 * @return handle to created cell or null
883 *
938 *
884 **/
939 **/
885 Notebook.prototype.insert_cell_below = function (type, index) {
940 Notebook.prototype.insert_cell_below = function (type, index) {
886 index = this.index_or_selected(index);
941 index = this.index_or_selected(index);
887 return this.insert_cell_at_index(type, index+1);
942 return this.insert_cell_at_index(type, index+1);
888 };
943 };
889
944
890
945
891 /**
946 /**
892 * Insert cell at end of notebook
947 * Insert cell at end of notebook
893 *
948 *
894 * @method insert_cell_at_bottom
949 * @method insert_cell_at_bottom
895 * @param {String} type cell type
950 * @param {String} type cell type
896 *
951 *
897 * @return the added cell; or null
952 * @return the added cell; or null
898 **/
953 **/
899 Notebook.prototype.insert_cell_at_bottom = function (type){
954 Notebook.prototype.insert_cell_at_bottom = function (type){
900 var len = this.ncells();
955 var len = this.ncells();
901 return this.insert_cell_below(type,len-1);
956 return this.insert_cell_below(type,len-1);
902 };
957 };
903
958
904 /**
959 /**
905 * Turn a cell into a code cell.
960 * Turn a cell into a code cell.
906 *
961 *
907 * @method to_code
962 * @method to_code
908 * @param {Number} [index] A cell's index
963 * @param {Number} [index] A cell's index
909 */
964 */
910 Notebook.prototype.to_code = function (index) {
965 Notebook.prototype.to_code = function (index) {
911 var i = this.index_or_selected(index);
966 var i = this.index_or_selected(index);
912 if (this.is_valid_cell_index(i)) {
967 if (this.is_valid_cell_index(i)) {
913 var source_element = this.get_cell_element(i);
968 var source_element = this.get_cell_element(i);
914 var source_cell = source_element.data("cell");
969 var source_cell = source_element.data("cell");
915 if (!(source_cell instanceof IPython.CodeCell)) {
970 if (!(source_cell instanceof IPython.CodeCell)) {
916 var target_cell = this.insert_cell_below('code',i);
971 var target_cell = this.insert_cell_below('code',i);
917 var text = source_cell.get_text();
972 var text = source_cell.get_text();
918 if (text === source_cell.placeholder) {
973 if (text === source_cell.placeholder) {
919 text = '';
974 text = '';
920 }
975 }
921 target_cell.set_text(text);
976 target_cell.set_text(text);
922 // make this value the starting point, so that we can only undo
977 // make this value the starting point, so that we can only undo
923 // to this state, instead of a blank cell
978 // to this state, instead of a blank cell
924 target_cell.code_mirror.clearHistory();
979 target_cell.code_mirror.clearHistory();
925 source_element.remove();
980 source_element.remove();
926 this.set_dirty(true);
981 this.set_dirty(true);
927 };
982 };
928 };
983 };
929 };
984 };
930
985
931 /**
986 /**
932 * Turn a cell into a Markdown cell.
987 * Turn a cell into a Markdown cell.
933 *
988 *
934 * @method to_markdown
989 * @method to_markdown
935 * @param {Number} [index] A cell's index
990 * @param {Number} [index] A cell's index
936 */
991 */
937 Notebook.prototype.to_markdown = function (index) {
992 Notebook.prototype.to_markdown = function (index) {
938 var i = this.index_or_selected(index);
993 var i = this.index_or_selected(index);
939 if (this.is_valid_cell_index(i)) {
994 if (this.is_valid_cell_index(i)) {
940 var source_element = this.get_cell_element(i);
995 var source_element = this.get_cell_element(i);
941 var source_cell = source_element.data("cell");
996 var source_cell = source_element.data("cell");
942 if (!(source_cell instanceof IPython.MarkdownCell)) {
997 if (!(source_cell instanceof IPython.MarkdownCell)) {
943 var target_cell = this.insert_cell_below('markdown',i);
998 var target_cell = this.insert_cell_below('markdown',i);
944 var text = source_cell.get_text();
999 var text = source_cell.get_text();
945 if (text === source_cell.placeholder) {
1000 if (text === source_cell.placeholder) {
946 text = '';
1001 text = '';
947 };
1002 };
948 // The edit must come before the set_text.
1003 // The edit must come before the set_text.
949 target_cell.unrender();
1004 target_cell.unrender();
950 target_cell.set_text(text);
1005 target_cell.set_text(text);
951 // make this value the starting point, so that we can only undo
1006 // make this value the starting point, so that we can only undo
952 // to this state, instead of a blank cell
1007 // to this state, instead of a blank cell
953 target_cell.code_mirror.clearHistory();
1008 target_cell.code_mirror.clearHistory();
954 source_element.remove();
1009 source_element.remove();
1010 this.select(i);
1011 this.edit_mode();
955 this.set_dirty(true);
1012 this.set_dirty(true);
956 };
1013 };
957 };
1014 };
958 };
1015 };
959
1016
960 /**
1017 /**
961 * Turn a cell into a raw text cell.
1018 * Turn a cell into a raw text cell.
962 *
1019 *
963 * @method to_raw
1020 * @method to_raw
964 * @param {Number} [index] A cell's index
1021 * @param {Number} [index] A cell's index
965 */
1022 */
966 Notebook.prototype.to_raw = function (index) {
1023 Notebook.prototype.to_raw = function (index) {
967 var i = this.index_or_selected(index);
1024 var i = this.index_or_selected(index);
968 if (this.is_valid_cell_index(i)) {
1025 if (this.is_valid_cell_index(i)) {
969 var source_element = this.get_cell_element(i);
1026 var source_element = this.get_cell_element(i);
970 var source_cell = source_element.data("cell");
1027 var source_cell = source_element.data("cell");
971 var target_cell = null;
1028 var target_cell = null;
972 if (!(source_cell instanceof IPython.RawCell)) {
1029 if (!(source_cell instanceof IPython.RawCell)) {
973 target_cell = this.insert_cell_below('raw',i);
1030 target_cell = this.insert_cell_below('raw',i);
974 var text = source_cell.get_text();
1031 var text = source_cell.get_text();
975 if (text === source_cell.placeholder) {
1032 if (text === source_cell.placeholder) {
976 text = '';
1033 text = '';
977 };
1034 };
978 // The edit must come before the set_text.
1035 // The edit must come before the set_text.
979 target_cell.unrender();
1036 target_cell.unrender();
980 target_cell.set_text(text);
1037 target_cell.set_text(text);
981 // make this value the starting point, so that we can only undo
1038 // make this value the starting point, so that we can only undo
982 // to this state, instead of a blank cell
1039 // to this state, instead of a blank cell
983 target_cell.code_mirror.clearHistory();
1040 target_cell.code_mirror.clearHistory();
984 source_element.remove();
1041 source_element.remove();
985 this.set_dirty(true);
1042 this.set_dirty(true);
986 };
1043 };
987 };
1044 };
988 };
1045 };
989
1046
990 /**
1047 /**
991 * Turn a cell into a heading cell.
1048 * Turn a cell into a heading cell.
992 *
1049 *
993 * @method to_heading
1050 * @method to_heading
994 * @param {Number} [index] A cell's index
1051 * @param {Number} [index] A cell's index
995 * @param {Number} [level] A heading level (e.g., 1 becomes &lt;h1&gt;)
1052 * @param {Number} [level] A heading level (e.g., 1 becomes &lt;h1&gt;)
996 */
1053 */
997 Notebook.prototype.to_heading = function (index, level) {
1054 Notebook.prototype.to_heading = function (index, level) {
998 level = level || 1;
1055 level = level || 1;
999 var i = this.index_or_selected(index);
1056 var i = this.index_or_selected(index);
1000 if (this.is_valid_cell_index(i)) {
1057 if (this.is_valid_cell_index(i)) {
1001 var source_element = this.get_cell_element(i);
1058 var source_element = this.get_cell_element(i);
1002 var source_cell = source_element.data("cell");
1059 var source_cell = source_element.data("cell");
1003 var target_cell = null;
1060 var target_cell = null;
1004 if (source_cell instanceof IPython.HeadingCell) {
1061 if (source_cell instanceof IPython.HeadingCell) {
1005 source_cell.set_level(level);
1062 source_cell.set_level(level);
1006 } else {
1063 } else {
1007 target_cell = this.insert_cell_below('heading',i);
1064 target_cell = this.insert_cell_below('heading',i);
1008 var text = source_cell.get_text();
1065 var text = source_cell.get_text();
1009 if (text === source_cell.placeholder) {
1066 if (text === source_cell.placeholder) {
1010 text = '';
1067 text = '';
1011 };
1068 };
1012 // The edit must come before the set_text.
1069 // The edit must come before the set_text.
1013 target_cell.set_level(level);
1070 target_cell.set_level(level);
1014 target_cell.unrender();
1071 target_cell.unrender();
1015 target_cell.set_text(text);
1072 target_cell.set_text(text);
1016 // make this value the starting point, so that we can only undo
1073 // make this value the starting point, so that we can only undo
1017 // to this state, instead of a blank cell
1074 // to this state, instead of a blank cell
1018 target_cell.code_mirror.clearHistory();
1075 target_cell.code_mirror.clearHistory();
1019 source_element.remove();
1076 source_element.remove();
1020 this.set_dirty(true);
1077 this.set_dirty(true);
1021 };
1078 };
1022 $([IPython.events]).trigger('selected_cell_type_changed.Notebook',
1079 $([IPython.events]).trigger('selected_cell_type_changed.Notebook',
1023 {'cell_type':'heading',level:level}
1080 {'cell_type':'heading',level:level}
1024 );
1081 );
1025 };
1082 };
1026 };
1083 };
1027
1084
1028
1085
1029 // Cut/Copy/Paste
1086 // Cut/Copy/Paste
1030
1087
1031 /**
1088 /**
1032 * Enable UI elements for pasting cells.
1089 * Enable UI elements for pasting cells.
1033 *
1090 *
1034 * @method enable_paste
1091 * @method enable_paste
1035 */
1092 */
1036 Notebook.prototype.enable_paste = function () {
1093 Notebook.prototype.enable_paste = function () {
1037 var that = this;
1094 var that = this;
1038 if (!this.paste_enabled) {
1095 if (!this.paste_enabled) {
1039 $('#paste_cell_replace').removeClass('disabled')
1096 $('#paste_cell_replace').removeClass('disabled')
1040 .on('click', function () {that.paste_cell_replace();});
1097 .on('click', function () {that.paste_cell_replace();});
1041 $('#paste_cell_above').removeClass('disabled')
1098 $('#paste_cell_above').removeClass('disabled')
1042 .on('click', function () {that.paste_cell_above();});
1099 .on('click', function () {that.paste_cell_above();});
1043 $('#paste_cell_below').removeClass('disabled')
1100 $('#paste_cell_below').removeClass('disabled')
1044 .on('click', function () {that.paste_cell_below();});
1101 .on('click', function () {that.paste_cell_below();});
1045 this.paste_enabled = true;
1102 this.paste_enabled = true;
1046 };
1103 };
1047 };
1104 };
1048
1105
1049 /**
1106 /**
1050 * Disable UI elements for pasting cells.
1107 * Disable UI elements for pasting cells.
1051 *
1108 *
1052 * @method disable_paste
1109 * @method disable_paste
1053 */
1110 */
1054 Notebook.prototype.disable_paste = function () {
1111 Notebook.prototype.disable_paste = function () {
1055 if (this.paste_enabled) {
1112 if (this.paste_enabled) {
1056 $('#paste_cell_replace').addClass('disabled').off('click');
1113 $('#paste_cell_replace').addClass('disabled').off('click');
1057 $('#paste_cell_above').addClass('disabled').off('click');
1114 $('#paste_cell_above').addClass('disabled').off('click');
1058 $('#paste_cell_below').addClass('disabled').off('click');
1115 $('#paste_cell_below').addClass('disabled').off('click');
1059 this.paste_enabled = false;
1116 this.paste_enabled = false;
1060 };
1117 };
1061 };
1118 };
1062
1119
1063 /**
1120 /**
1064 * Cut a cell.
1121 * Cut a cell.
1065 *
1122 *
1066 * @method cut_cell
1123 * @method cut_cell
1067 */
1124 */
1068 Notebook.prototype.cut_cell = function () {
1125 Notebook.prototype.cut_cell = function () {
1069 this.copy_cell();
1126 this.copy_cell();
1070 this.delete_cell();
1127 this.delete_cell();
1071 }
1128 }
1072
1129
1073 /**
1130 /**
1074 * Copy a cell.
1131 * Copy a cell.
1075 *
1132 *
1076 * @method copy_cell
1133 * @method copy_cell
1077 */
1134 */
1078 Notebook.prototype.copy_cell = function () {
1135 Notebook.prototype.copy_cell = function () {
1079 var cell = this.get_selected_cell();
1136 var cell = this.get_selected_cell();
1080 this.clipboard = cell.toJSON();
1137 this.clipboard = cell.toJSON();
1081 this.enable_paste();
1138 this.enable_paste();
1082 };
1139 };
1083
1140
1084 /**
1141 /**
1085 * Replace the selected cell with a cell in the clipboard.
1142 * Replace the selected cell with a cell in the clipboard.
1086 *
1143 *
1087 * @method paste_cell_replace
1144 * @method paste_cell_replace
1088 */
1145 */
1089 Notebook.prototype.paste_cell_replace = function () {
1146 Notebook.prototype.paste_cell_replace = function () {
1090 if (this.clipboard !== null && this.paste_enabled) {
1147 if (this.clipboard !== null && this.paste_enabled) {
1091 var cell_data = this.clipboard;
1148 var cell_data = this.clipboard;
1092 var new_cell = this.insert_cell_above(cell_data.cell_type);
1149 var new_cell = this.insert_cell_above(cell_data.cell_type);
1093 new_cell.fromJSON(cell_data);
1150 new_cell.fromJSON(cell_data);
1094 var old_cell = this.get_next_cell(new_cell);
1151 var old_cell = this.get_next_cell(new_cell);
1095 this.delete_cell(this.find_cell_index(old_cell));
1152 this.delete_cell(this.find_cell_index(old_cell));
1096 this.select(this.find_cell_index(new_cell));
1153 this.select(this.find_cell_index(new_cell));
1097 };
1154 };
1098 };
1155 };
1099
1156
1100 /**
1157 /**
1101 * Paste a cell from the clipboard above the selected cell.
1158 * Paste a cell from the clipboard above the selected cell.
1102 *
1159 *
1103 * @method paste_cell_above
1160 * @method paste_cell_above
1104 */
1161 */
1105 Notebook.prototype.paste_cell_above = function () {
1162 Notebook.prototype.paste_cell_above = function () {
1106 if (this.clipboard !== null && this.paste_enabled) {
1163 if (this.clipboard !== null && this.paste_enabled) {
1107 var cell_data = this.clipboard;
1164 var cell_data = this.clipboard;
1108 var new_cell = this.insert_cell_above(cell_data.cell_type);
1165 var new_cell = this.insert_cell_above(cell_data.cell_type);
1109 new_cell.fromJSON(cell_data);
1166 new_cell.fromJSON(cell_data);
1110 };
1167 };
1111 };
1168 };
1112
1169
1113 /**
1170 /**
1114 * Paste a cell from the clipboard below the selected cell.
1171 * Paste a cell from the clipboard below the selected cell.
1115 *
1172 *
1116 * @method paste_cell_below
1173 * @method paste_cell_below
1117 */
1174 */
1118 Notebook.prototype.paste_cell_below = function () {
1175 Notebook.prototype.paste_cell_below = function () {
1119 if (this.clipboard !== null && this.paste_enabled) {
1176 if (this.clipboard !== null && this.paste_enabled) {
1120 var cell_data = this.clipboard;
1177 var cell_data = this.clipboard;
1121 var new_cell = this.insert_cell_below(cell_data.cell_type);
1178 var new_cell = this.insert_cell_below(cell_data.cell_type);
1122 new_cell.fromJSON(cell_data);
1179 new_cell.fromJSON(cell_data);
1123 };
1180 };
1124 };
1181 };
1125
1182
1126 // Cell undelete
1183 // Cell undelete
1127
1184
1128 /**
1185 /**
1129 * Restore the most recently deleted cell.
1186 * Restore the most recently deleted cell.
1130 *
1187 *
1131 * @method undelete
1188 * @method undelete
1132 */
1189 */
1133 Notebook.prototype.undelete = function() {
1190 Notebook.prototype.undelete = function() {
1134 if (this.undelete_backup !== null && this.undelete_index !== null) {
1191 if (this.undelete_backup !== null && this.undelete_index !== null) {
1135 var current_index = this.get_selected_index();
1192 var current_index = this.get_selected_index();
1136 if (this.undelete_index < current_index) {
1193 if (this.undelete_index < current_index) {
1137 current_index = current_index + 1;
1194 current_index = current_index + 1;
1138 }
1195 }
1139 if (this.undelete_index >= this.ncells()) {
1196 if (this.undelete_index >= this.ncells()) {
1140 this.select(this.ncells() - 1);
1197 this.select(this.ncells() - 1);
1141 }
1198 }
1142 else {
1199 else {
1143 this.select(this.undelete_index);
1200 this.select(this.undelete_index);
1144 }
1201 }
1145 var cell_data = this.undelete_backup;
1202 var cell_data = this.undelete_backup;
1146 var new_cell = null;
1203 var new_cell = null;
1147 if (this.undelete_below) {
1204 if (this.undelete_below) {
1148 new_cell = this.insert_cell_below(cell_data.cell_type);
1205 new_cell = this.insert_cell_below(cell_data.cell_type);
1149 } else {
1206 } else {
1150 new_cell = this.insert_cell_above(cell_data.cell_type);
1207 new_cell = this.insert_cell_above(cell_data.cell_type);
1151 }
1208 }
1152 new_cell.fromJSON(cell_data);
1209 new_cell.fromJSON(cell_data);
1153 this.select(current_index);
1210 this.select(current_index);
1154 this.undelete_backup = null;
1211 this.undelete_backup = null;
1155 this.undelete_index = null;
1212 this.undelete_index = null;
1156 }
1213 }
1157 $('#undelete_cell').addClass('disabled');
1214 $('#undelete_cell').addClass('disabled');
1158 }
1215 }
1159
1216
1160 // Split/merge
1217 // Split/merge
1161
1218
1162 /**
1219 /**
1163 * Split the selected cell into two, at the cursor.
1220 * Split the selected cell into two, at the cursor.
1164 *
1221 *
1165 * @method split_cell
1222 * @method split_cell
1166 */
1223 */
1167 Notebook.prototype.split_cell = function () {
1224 Notebook.prototype.split_cell = function () {
1168 // Todo: implement spliting for other cell types.
1225 // Todo: implement spliting for other cell types.
1169 var cell = this.get_selected_cell();
1226 var cell = this.get_selected_cell();
1170 if (cell.is_splittable()) {
1227 if (cell.is_splittable()) {
1171 var texta = cell.get_pre_cursor();
1228 var texta = cell.get_pre_cursor();
1172 var textb = cell.get_post_cursor();
1229 var textb = cell.get_post_cursor();
1173 if (cell instanceof IPython.CodeCell) {
1230 if (cell instanceof IPython.CodeCell) {
1174 cell.set_text(textb);
1231 cell.set_text(textb);
1175 var new_cell = this.insert_cell_above('code');
1232 var new_cell = this.insert_cell_above('code');
1176 new_cell.set_text(texta);
1233 new_cell.set_text(texta);
1177 this.select_next();
1234 this.select_next();
1178 } else if (cell instanceof IPython.MarkdownCell) {
1235 } else if (cell instanceof IPython.MarkdownCell) {
1179 cell.set_text(textb);
1236 cell.set_text(textb);
1180 cell.render();
1237 cell.render();
1181 var new_cell = this.insert_cell_above('markdown');
1238 var new_cell = this.insert_cell_above('markdown');
1182 new_cell.unrender(); // editor must be visible to call set_text
1239 new_cell.unrender(); // editor must be visible to call set_text
1183 new_cell.set_text(texta);
1240 new_cell.set_text(texta);
1184 new_cell.render();
1241 new_cell.render();
1185 this.select_next();
1242 this.select_next();
1186 }
1243 }
1187 };
1244 };
1188 };
1245 };
1189
1246
1190 /**
1247 /**
1191 * Combine the selected cell into the cell above it.
1248 * Combine the selected cell into the cell above it.
1192 *
1249 *
1193 * @method merge_cell_above
1250 * @method merge_cell_above
1194 */
1251 */
1195 Notebook.prototype.merge_cell_above = function () {
1252 Notebook.prototype.merge_cell_above = function () {
1196 var index = this.get_selected_index();
1253 var index = this.get_selected_index();
1197 var cell = this.get_cell(index);
1254 var cell = this.get_cell(index);
1198 if (!cell.is_mergeable()) {
1255 if (!cell.is_mergeable()) {
1199 return;
1256 return;
1200 }
1257 }
1201 if (index > 0) {
1258 if (index > 0) {
1202 var upper_cell = this.get_cell(index-1);
1259 var upper_cell = this.get_cell(index-1);
1203 if (!upper_cell.is_mergeable()) {
1260 if (!upper_cell.is_mergeable()) {
1204 return;
1261 return;
1205 }
1262 }
1206 var upper_text = upper_cell.get_text();
1263 var upper_text = upper_cell.get_text();
1207 var text = cell.get_text();
1264 var text = cell.get_text();
1208 if (cell instanceof IPython.CodeCell) {
1265 if (cell instanceof IPython.CodeCell) {
1209 cell.set_text(upper_text+'\n'+text);
1266 cell.set_text(upper_text+'\n'+text);
1210 } else if (cell instanceof IPython.MarkdownCell) {
1267 } else if (cell instanceof IPython.MarkdownCell) {
1211 cell.unrender();
1268 cell.unrender();
1212 cell.set_text(upper_text+'\n'+text);
1269 cell.set_text(upper_text+'\n'+text);
1213 cell.render();
1270 cell.render();
1214 };
1271 };
1215 this.delete_cell(index-1);
1272 this.delete_cell(index-1);
1216 this.select(this.find_cell_index(cell));
1273 this.select(this.find_cell_index(cell));
1217 };
1274 };
1218 };
1275 };
1219
1276
1220 /**
1277 /**
1221 * Combine the selected cell into the cell below it.
1278 * Combine the selected cell into the cell below it.
1222 *
1279 *
1223 * @method merge_cell_below
1280 * @method merge_cell_below
1224 */
1281 */
1225 Notebook.prototype.merge_cell_below = function () {
1282 Notebook.prototype.merge_cell_below = function () {
1226 var index = this.get_selected_index();
1283 var index = this.get_selected_index();
1227 var cell = this.get_cell(index);
1284 var cell = this.get_cell(index);
1228 if (!cell.is_mergeable()) {
1285 if (!cell.is_mergeable()) {
1229 return;
1286 return;
1230 }
1287 }
1231 if (index < this.ncells()-1) {
1288 if (index < this.ncells()-1) {
1232 var lower_cell = this.get_cell(index+1);
1289 var lower_cell = this.get_cell(index+1);
1233 if (!lower_cell.is_mergeable()) {
1290 if (!lower_cell.is_mergeable()) {
1234 return;
1291 return;
1235 }
1292 }
1236 var lower_text = lower_cell.get_text();
1293 var lower_text = lower_cell.get_text();
1237 var text = cell.get_text();
1294 var text = cell.get_text();
1238 if (cell instanceof IPython.CodeCell) {
1295 if (cell instanceof IPython.CodeCell) {
1239 cell.set_text(text+'\n'+lower_text);
1296 cell.set_text(text+'\n'+lower_text);
1240 } else if (cell instanceof IPython.MarkdownCell) {
1297 } else if (cell instanceof IPython.MarkdownCell) {
1241 cell.unrender();
1298 cell.unrender();
1242 cell.set_text(text+'\n'+lower_text);
1299 cell.set_text(text+'\n'+lower_text);
1243 cell.render();
1300 cell.render();
1244 };
1301 };
1245 this.delete_cell(index+1);
1302 this.delete_cell(index+1);
1246 this.select(this.find_cell_index(cell));
1303 this.select(this.find_cell_index(cell));
1247 };
1304 };
1248 };
1305 };
1249
1306
1250
1307
1251 // Cell collapsing and output clearing
1308 // Cell collapsing and output clearing
1252
1309
1253 /**
1310 /**
1254 * Hide a cell's output.
1311 * Hide a cell's output.
1255 *
1312 *
1256 * @method collapse
1313 * @method collapse
1257 * @param {Number} index A cell's numeric index
1314 * @param {Number} index A cell's numeric index
1258 */
1315 */
1259 Notebook.prototype.collapse = function (index) {
1316 Notebook.prototype.collapse = function (index) {
1260 var i = this.index_or_selected(index);
1317 var i = this.index_or_selected(index);
1261 this.get_cell(i).collapse();
1318 this.get_cell(i).collapse();
1262 this.set_dirty(true);
1319 this.set_dirty(true);
1263 };
1320 };
1264
1321
1265 /**
1322 /**
1266 * Show a cell's output.
1323 * Show a cell's output.
1267 *
1324 *
1268 * @method expand
1325 * @method expand
1269 * @param {Number} index A cell's numeric index
1326 * @param {Number} index A cell's numeric index
1270 */
1327 */
1271 Notebook.prototype.expand = function (index) {
1328 Notebook.prototype.expand = function (index) {
1272 var i = this.index_or_selected(index);
1329 var i = this.index_or_selected(index);
1273 this.get_cell(i).expand();
1330 this.get_cell(i).expand();
1274 this.set_dirty(true);
1331 this.set_dirty(true);
1275 };
1332 };
1276
1333
1277 /** Toggle whether a cell's output is collapsed or expanded.
1334 /** Toggle whether a cell's output is collapsed or expanded.
1278 *
1335 *
1279 * @method toggle_output
1336 * @method toggle_output
1280 * @param {Number} index A cell's numeric index
1337 * @param {Number} index A cell's numeric index
1281 */
1338 */
1282 Notebook.prototype.toggle_output = function (index) {
1339 Notebook.prototype.toggle_output = function (index) {
1283 var i = this.index_or_selected(index);
1340 var i = this.index_or_selected(index);
1284 this.get_cell(i).toggle_output();
1341 this.get_cell(i).toggle_output();
1285 this.set_dirty(true);
1342 this.set_dirty(true);
1286 };
1343 };
1287
1344
1288 /**
1345 /**
1289 * Toggle a scrollbar for long cell outputs.
1346 * Toggle a scrollbar for long cell outputs.
1290 *
1347 *
1291 * @method toggle_output_scroll
1348 * @method toggle_output_scroll
1292 * @param {Number} index A cell's numeric index
1349 * @param {Number} index A cell's numeric index
1293 */
1350 */
1294 Notebook.prototype.toggle_output_scroll = function (index) {
1351 Notebook.prototype.toggle_output_scroll = function (index) {
1295 var i = this.index_or_selected(index);
1352 var i = this.index_or_selected(index);
1296 this.get_cell(i).toggle_output_scroll();
1353 this.get_cell(i).toggle_output_scroll();
1297 };
1354 };
1298
1355
1299 /**
1356 /**
1300 * Hide each code cell's output area.
1357 * Hide each code cell's output area.
1301 *
1358 *
1302 * @method collapse_all_output
1359 * @method collapse_all_output
1303 */
1360 */
1304 Notebook.prototype.collapse_all_output = function () {
1361 Notebook.prototype.collapse_all_output = function () {
1305 var ncells = this.ncells();
1362 var ncells = this.ncells();
1306 var cells = this.get_cells();
1363 var cells = this.get_cells();
1307 for (var i=0; i<ncells; i++) {
1364 for (var i=0; i<ncells; i++) {
1308 if (cells[i] instanceof IPython.CodeCell) {
1365 if (cells[i] instanceof IPython.CodeCell) {
1309 cells[i].output_area.collapse();
1366 cells[i].output_area.collapse();
1310 }
1367 }
1311 };
1368 };
1312 // this should not be set if the `collapse` key is removed from nbformat
1369 // this should not be set if the `collapse` key is removed from nbformat
1313 this.set_dirty(true);
1370 this.set_dirty(true);
1314 };
1371 };
1315
1372
1316 /**
1373 /**
1317 * Expand each code cell's output area, and add a scrollbar for long output.
1374 * Expand each code cell's output area, and add a scrollbar for long output.
1318 *
1375 *
1319 * @method scroll_all_output
1376 * @method scroll_all_output
1320 */
1377 */
1321 Notebook.prototype.scroll_all_output = function () {
1378 Notebook.prototype.scroll_all_output = function () {
1322 var ncells = this.ncells();
1379 var ncells = this.ncells();
1323 var cells = this.get_cells();
1380 var cells = this.get_cells();
1324 for (var i=0; i<ncells; i++) {
1381 for (var i=0; i<ncells; i++) {
1325 if (cells[i] instanceof IPython.CodeCell) {
1382 if (cells[i] instanceof IPython.CodeCell) {
1326 cells[i].output_area.expand();
1383 cells[i].output_area.expand();
1327 cells[i].output_area.scroll_if_long();
1384 cells[i].output_area.scroll_if_long();
1328 }
1385 }
1329 };
1386 };
1330 // this should not be set if the `collapse` key is removed from nbformat
1387 // this should not be set if the `collapse` key is removed from nbformat
1331 this.set_dirty(true);
1388 this.set_dirty(true);
1332 };
1389 };
1333
1390
1334 /**
1391 /**
1335 * Expand each code cell's output area, and remove scrollbars.
1392 * Expand each code cell's output area, and remove scrollbars.
1336 *
1393 *
1337 * @method expand_all_output
1394 * @method expand_all_output
1338 */
1395 */
1339 Notebook.prototype.expand_all_output = function () {
1396 Notebook.prototype.expand_all_output = function () {
1340 var ncells = this.ncells();
1397 var ncells = this.ncells();
1341 var cells = this.get_cells();
1398 var cells = this.get_cells();
1342 for (var i=0; i<ncells; i++) {
1399 for (var i=0; i<ncells; i++) {
1343 if (cells[i] instanceof IPython.CodeCell) {
1400 if (cells[i] instanceof IPython.CodeCell) {
1344 cells[i].output_area.expand();
1401 cells[i].output_area.expand();
1345 cells[i].output_area.unscroll_area();
1402 cells[i].output_area.unscroll_area();
1346 }
1403 }
1347 };
1404 };
1348 // this should not be set if the `collapse` key is removed from nbformat
1405 // this should not be set if the `collapse` key is removed from nbformat
1349 this.set_dirty(true);
1406 this.set_dirty(true);
1350 };
1407 };
1351
1408
1352 /**
1409 /**
1353 * Clear each code cell's output area.
1410 * Clear each code cell's output area.
1354 *
1411 *
1355 * @method clear_all_output
1412 * @method clear_all_output
1356 */
1413 */
1357 Notebook.prototype.clear_all_output = function () {
1414 Notebook.prototype.clear_all_output = function () {
1358 var ncells = this.ncells();
1415 var ncells = this.ncells();
1359 var cells = this.get_cells();
1416 var cells = this.get_cells();
1360 for (var i=0; i<ncells; i++) {
1417 for (var i=0; i<ncells; i++) {
1361 if (cells[i] instanceof IPython.CodeCell) {
1418 if (cells[i] instanceof IPython.CodeCell) {
1362 cells[i].clear_output();
1419 cells[i].clear_output();
1363 // Make all In[] prompts blank, as well
1420 // Make all In[] prompts blank, as well
1364 // TODO: make this configurable (via checkbox?)
1421 // TODO: make this configurable (via checkbox?)
1365 cells[i].set_input_prompt();
1422 cells[i].set_input_prompt();
1366 }
1423 }
1367 };
1424 };
1368 this.set_dirty(true);
1425 this.set_dirty(true);
1369 };
1426 };
1370
1427
1371
1428
1372 // Other cell functions: line numbers, ...
1429 // Other cell functions: line numbers, ...
1373
1430
1374 /**
1431 /**
1375 * Toggle line numbers in the selected cell's input area.
1432 * Toggle line numbers in the selected cell's input area.
1376 *
1433 *
1377 * @method cell_toggle_line_numbers
1434 * @method cell_toggle_line_numbers
1378 */
1435 */
1379 Notebook.prototype.cell_toggle_line_numbers = function() {
1436 Notebook.prototype.cell_toggle_line_numbers = function() {
1380 this.get_selected_cell().toggle_line_numbers();
1437 this.get_selected_cell().toggle_line_numbers();
1381 };
1438 };
1382
1439
1383 // Session related things
1440 // Session related things
1384
1441
1385 /**
1442 /**
1386 * Start a new session and set it on each code cell.
1443 * Start a new session and set it on each code cell.
1387 *
1444 *
1388 * @method start_session
1445 * @method start_session
1389 */
1446 */
1390 Notebook.prototype.start_session = function () {
1447 Notebook.prototype.start_session = function () {
1391 this.session = new IPython.Session(this.notebook_name, this.notebook_path, this);
1448 this.session = new IPython.Session(this.notebook_name, this.notebook_path, this);
1392 this.session.start($.proxy(this._session_started, this));
1449 this.session.start($.proxy(this._session_started, this));
1393 };
1450 };
1394
1451
1395
1452
1396 /**
1453 /**
1397 * Once a session is started, link the code cells to the kernel
1454 * Once a session is started, link the code cells to the kernel
1398 *
1455 *
1399 */
1456 */
1400 Notebook.prototype._session_started = function(){
1457 Notebook.prototype._session_started = function(){
1401 this.kernel = this.session.kernel;
1458 this.kernel = this.session.kernel;
1402 var ncells = this.ncells();
1459 var ncells = this.ncells();
1403 for (var i=0; i<ncells; i++) {
1460 for (var i=0; i<ncells; i++) {
1404 var cell = this.get_cell(i);
1461 var cell = this.get_cell(i);
1405 if (cell instanceof IPython.CodeCell) {
1462 if (cell instanceof IPython.CodeCell) {
1406 cell.set_kernel(this.session.kernel);
1463 cell.set_kernel(this.session.kernel);
1407 };
1464 };
1408 };
1465 };
1409 };
1466 };
1410
1467
1411 /**
1468 /**
1412 * Prompt the user to restart the IPython kernel.
1469 * Prompt the user to restart the IPython kernel.
1413 *
1470 *
1414 * @method restart_kernel
1471 * @method restart_kernel
1415 */
1472 */
1416 Notebook.prototype.restart_kernel = function () {
1473 Notebook.prototype.restart_kernel = function () {
1417 var that = this;
1474 var that = this;
1418 IPython.dialog.modal({
1475 IPython.dialog.modal({
1419 title : "Restart kernel or continue running?",
1476 title : "Restart kernel or continue running?",
1420 body : $("<p/>").html(
1477 body : $("<p/>").html(
1421 'Do you want to restart the current kernel? You will lose all variables defined in it.'
1478 'Do you want to restart the current kernel? You will lose all variables defined in it.'
1422 ),
1479 ),
1423 buttons : {
1480 buttons : {
1424 "Continue running" : {},
1481 "Continue running" : {},
1425 "Restart" : {
1482 "Restart" : {
1426 "class" : "btn-danger",
1483 "class" : "btn-danger",
1427 "click" : function() {
1484 "click" : function() {
1428 that.session.restart_kernel();
1485 that.session.restart_kernel();
1429 }
1486 }
1430 }
1487 }
1431 }
1488 }
1432 });
1489 });
1433 };
1490 };
1434
1491
1435 /**
1492 /**
1436 * Run the selected cell.
1493 * Run the selected cell.
1437 *
1494 *
1438 * Execute or render cell outputs.
1495 * Execute or render cell outputs.
1439 *
1496 *
1440 * @method execute_selected_cell
1497 * @method execute_selected_cell
1441 * @param {Object} options Customize post-execution behavior
1498 * @param {Object} options Customize post-execution behavior
1442 */
1499 */
1443 Notebook.prototype.execute_selected_cell = function (options) {
1500 Notebook.prototype.execute_selected_cell = function (mode) {
1444 // add_new: should a new cell be added if we are at the end of the nb
1501 // mode = shift, ctrl, alt
1445 // terminal: execute in terminal mode, which stays in the current cell
1502 mode = mode || 'shift'
1446 var default_options = {terminal: false, add_new: true};
1447 $.extend(default_options, options);
1448 var that = this;
1503 var that = this;
1449 var cell = that.get_selected_cell();
1504 var cell = that.get_selected_cell();
1450 var cell_index = that.find_cell_index(cell);
1505 var cell_index = that.find_cell_index(cell);
1451 if (cell instanceof IPython.CodeCell) {
1506
1452 cell.execute();
1507 cell.execute();
1453 }
1508 console.log('Notebook.execute_selected_cell', mode);
1454 if (default_options.terminal) {
1509 if (mode === 'shift') {
1455 cell.select_all();
1510 if (cell_index === (that.ncells()-1)) {
1456 } else {
1457 if ((cell_index === (that.ncells()-1)) && default_options.add_new) {
1458 that.insert_cell_below('code');
1511 that.insert_cell_below('code');
1459 // If we are adding a new cell at the end, scroll down to show it.
1512 that.select(cell_index+1);
1513 that.edit_mode();
1460 that.scroll_to_bottom();
1514 that.scroll_to_bottom();
1461 } else {
1515 } else {
1516 that.command_mode();
1517 }
1518 } else if (mode === 'ctrl') {
1462 that.select(cell_index+1);
1519 that.select(cell_index+1);
1463 };
1520 that.get_cell(cell_index+1).focus_cell();
1464 };
1521 } else if (mode === 'alt') {
1522 // Only insert a new cell, if we ended up in an already populated cell
1523 if (/\S/.test(that.get_next_cell().get_text()) == true) {
1524 that.insert_cell_below('code');
1525 }
1526 var next_index = cell_index+1;
1527 that.select(cell_index+1);
1528 that.edit_mode();
1529 }
1530
1465 this.set_dirty(true);
1531 this.set_dirty(true);
1466 };
1532 };
1467
1533
1534
1468 /**
1535 /**
1469 * Execute all cells below the selected cell.
1536 * Execute all cells below the selected cell.
1470 *
1537 *
1471 * @method execute_cells_below
1538 * @method execute_cells_below
1472 */
1539 */
1473 Notebook.prototype.execute_cells_below = function () {
1540 Notebook.prototype.execute_cells_below = function () {
1474 this.execute_cell_range(this.get_selected_index(), this.ncells());
1541 this.execute_cell_range(this.get_selected_index(), this.ncells());
1475 this.scroll_to_bottom();
1542 this.scroll_to_bottom();
1476 };
1543 };
1477
1544
1478 /**
1545 /**
1479 * Execute all cells above the selected cell.
1546 * Execute all cells above the selected cell.
1480 *
1547 *
1481 * @method execute_cells_above
1548 * @method execute_cells_above
1482 */
1549 */
1483 Notebook.prototype.execute_cells_above = function () {
1550 Notebook.prototype.execute_cells_above = function () {
1484 this.execute_cell_range(0, this.get_selected_index());
1551 this.execute_cell_range(0, this.get_selected_index());
1485 };
1552 };
1486
1553
1487 /**
1554 /**
1488 * Execute all cells.
1555 * Execute all cells.
1489 *
1556 *
1490 * @method execute_all_cells
1557 * @method execute_all_cells
1491 */
1558 */
1492 Notebook.prototype.execute_all_cells = function () {
1559 Notebook.prototype.execute_all_cells = function () {
1493 this.execute_cell_range(0, this.ncells());
1560 this.execute_cell_range(0, this.ncells());
1494 this.scroll_to_bottom();
1561 this.scroll_to_bottom();
1495 };
1562 };
1496
1563
1497 /**
1564 /**
1498 * Execute a contiguous range of cells.
1565 * Execute a contiguous range of cells.
1499 *
1566 *
1500 * @method execute_cell_range
1567 * @method execute_cell_range
1501 * @param {Number} start Index of the first cell to execute (inclusive)
1568 * @param {Number} start Index of the first cell to execute (inclusive)
1502 * @param {Number} end Index of the last cell to execute (exclusive)
1569 * @param {Number} end Index of the last cell to execute (exclusive)
1503 */
1570 */
1504 Notebook.prototype.execute_cell_range = function (start, end) {
1571 Notebook.prototype.execute_cell_range = function (start, end) {
1505 for (var i=start; i<end; i++) {
1572 for (var i=start; i<end; i++) {
1506 this.select(i);
1573 this.select(i);
1507 this.execute_selected_cell({add_new:false});
1574 this.execute_selected_cell({add_new:false});
1508 };
1575 };
1509 };
1576 };
1510
1577
1511 // Persistance and loading
1578 // Persistance and loading
1512
1579
1513 /**
1580 /**
1514 * Getter method for this notebook's name.
1581 * Getter method for this notebook's name.
1515 *
1582 *
1516 * @method get_notebook_name
1583 * @method get_notebook_name
1517 * @return {String} This notebook's name
1584 * @return {String} This notebook's name
1518 */
1585 */
1519 Notebook.prototype.get_notebook_name = function () {
1586 Notebook.prototype.get_notebook_name = function () {
1520 var nbname = this.notebook_name.substring(0,this.notebook_name.length-6);
1587 var nbname = this.notebook_name.substring(0,this.notebook_name.length-6);
1521 return nbname;
1588 return nbname;
1522 };
1589 };
1523
1590
1524 /**
1591 /**
1525 * Setter method for this notebook's name.
1592 * Setter method for this notebook's name.
1526 *
1593 *
1527 * @method set_notebook_name
1594 * @method set_notebook_name
1528 * @param {String} name A new name for this notebook
1595 * @param {String} name A new name for this notebook
1529 */
1596 */
1530 Notebook.prototype.set_notebook_name = function (name) {
1597 Notebook.prototype.set_notebook_name = function (name) {
1531 this.notebook_name = name;
1598 this.notebook_name = name;
1532 };
1599 };
1533
1600
1534 /**
1601 /**
1535 * Check that a notebook's name is valid.
1602 * Check that a notebook's name is valid.
1536 *
1603 *
1537 * @method test_notebook_name
1604 * @method test_notebook_name
1538 * @param {String} nbname A name for this notebook
1605 * @param {String} nbname A name for this notebook
1539 * @return {Boolean} True if the name is valid, false if invalid
1606 * @return {Boolean} True if the name is valid, false if invalid
1540 */
1607 */
1541 Notebook.prototype.test_notebook_name = function (nbname) {
1608 Notebook.prototype.test_notebook_name = function (nbname) {
1542 nbname = nbname || '';
1609 nbname = nbname || '';
1543 if (this.notebook_name_blacklist_re.test(nbname) == false && nbname.length>0) {
1610 if (this.notebook_name_blacklist_re.test(nbname) == false && nbname.length>0) {
1544 return true;
1611 return true;
1545 } else {
1612 } else {
1546 return false;
1613 return false;
1547 };
1614 };
1548 };
1615 };
1549
1616
1550 /**
1617 /**
1551 * Load a notebook from JSON (.ipynb).
1618 * Load a notebook from JSON (.ipynb).
1552 *
1619 *
1553 * This currently handles one worksheet: others are deleted.
1620 * This currently handles one worksheet: others are deleted.
1554 *
1621 *
1555 * @method fromJSON
1622 * @method fromJSON
1556 * @param {Object} data JSON representation of a notebook
1623 * @param {Object} data JSON representation of a notebook
1557 */
1624 */
1558 Notebook.prototype.fromJSON = function (data) {
1625 Notebook.prototype.fromJSON = function (data) {
1559 var content = data.content;
1626 var content = data.content;
1560 var ncells = this.ncells();
1627 var ncells = this.ncells();
1561 var i;
1628 var i;
1562 for (i=0; i<ncells; i++) {
1629 for (i=0; i<ncells; i++) {
1563 // Always delete cell 0 as they get renumbered as they are deleted.
1630 // Always delete cell 0 as they get renumbered as they are deleted.
1564 this.delete_cell(0);
1631 this.delete_cell(0);
1565 };
1632 };
1566 // Save the metadata and name.
1633 // Save the metadata and name.
1567 this.metadata = content.metadata;
1634 this.metadata = content.metadata;
1568 this.notebook_name = data.name;
1635 this.notebook_name = data.name;
1569 // Only handle 1 worksheet for now.
1636 // Only handle 1 worksheet for now.
1570 var worksheet = content.worksheets[0];
1637 var worksheet = content.worksheets[0];
1571 if (worksheet !== undefined) {
1638 if (worksheet !== undefined) {
1572 if (worksheet.metadata) {
1639 if (worksheet.metadata) {
1573 this.worksheet_metadata = worksheet.metadata;
1640 this.worksheet_metadata = worksheet.metadata;
1574 }
1641 }
1575 var new_cells = worksheet.cells;
1642 var new_cells = worksheet.cells;
1576 ncells = new_cells.length;
1643 ncells = new_cells.length;
1577 var cell_data = null;
1644 var cell_data = null;
1578 var new_cell = null;
1645 var new_cell = null;
1579 for (i=0; i<ncells; i++) {
1646 for (i=0; i<ncells; i++) {
1580 cell_data = new_cells[i];
1647 cell_data = new_cells[i];
1581 // VERSIONHACK: plaintext -> raw
1648 // VERSIONHACK: plaintext -> raw
1582 // handle never-released plaintext name for raw cells
1649 // handle never-released plaintext name for raw cells
1583 if (cell_data.cell_type === 'plaintext'){
1650 if (cell_data.cell_type === 'plaintext'){
1584 cell_data.cell_type = 'raw';
1651 cell_data.cell_type = 'raw';
1585 }
1652 }
1586
1653
1587 new_cell = this.insert_cell_at_bottom(cell_data.cell_type);
1654 new_cell = this.insert_cell_at_bottom(cell_data.cell_type);
1588 new_cell.fromJSON(cell_data);
1655 new_cell.fromJSON(cell_data);
1589 };
1656 };
1590 };
1657 };
1591 if (content.worksheets.length > 1) {
1658 if (content.worksheets.length > 1) {
1592 IPython.dialog.modal({
1659 IPython.dialog.modal({
1593 title : "Multiple worksheets",
1660 title : "Multiple worksheets",
1594 body : "This notebook has " + data.worksheets.length + " worksheets, " +
1661 body : "This notebook has " + data.worksheets.length + " worksheets, " +
1595 "but this version of IPython can only handle the first. " +
1662 "but this version of IPython can only handle the first. " +
1596 "If you save this notebook, worksheets after the first will be lost.",
1663 "If you save this notebook, worksheets after the first will be lost.",
1597 buttons : {
1664 buttons : {
1598 OK : {
1665 OK : {
1599 class : "btn-danger"
1666 class : "btn-danger"
1600 }
1667 }
1601 }
1668 }
1602 });
1669 });
1603 }
1670 }
1604 };
1671 };
1605
1672
1606 /**
1673 /**
1607 * Dump this notebook into a JSON-friendly object.
1674 * Dump this notebook into a JSON-friendly object.
1608 *
1675 *
1609 * @method toJSON
1676 * @method toJSON
1610 * @return {Object} A JSON-friendly representation of this notebook.
1677 * @return {Object} A JSON-friendly representation of this notebook.
1611 */
1678 */
1612 Notebook.prototype.toJSON = function () {
1679 Notebook.prototype.toJSON = function () {
1613 var cells = this.get_cells();
1680 var cells = this.get_cells();
1614 var ncells = cells.length;
1681 var ncells = cells.length;
1615 var cell_array = new Array(ncells);
1682 var cell_array = new Array(ncells);
1616 for (var i=0; i<ncells; i++) {
1683 for (var i=0; i<ncells; i++) {
1617 cell_array[i] = cells[i].toJSON();
1684 cell_array[i] = cells[i].toJSON();
1618 };
1685 };
1619 var data = {
1686 var data = {
1620 // Only handle 1 worksheet for now.
1687 // Only handle 1 worksheet for now.
1621 worksheets : [{
1688 worksheets : [{
1622 cells: cell_array,
1689 cells: cell_array,
1623 metadata: this.worksheet_metadata
1690 metadata: this.worksheet_metadata
1624 }],
1691 }],
1625 metadata : this.metadata
1692 metadata : this.metadata
1626 };
1693 };
1627 return data;
1694 return data;
1628 };
1695 };
1629
1696
1630 /**
1697 /**
1631 * Start an autosave timer, for periodically saving the notebook.
1698 * Start an autosave timer, for periodically saving the notebook.
1632 *
1699 *
1633 * @method set_autosave_interval
1700 * @method set_autosave_interval
1634 * @param {Integer} interval the autosave interval in milliseconds
1701 * @param {Integer} interval the autosave interval in milliseconds
1635 */
1702 */
1636 Notebook.prototype.set_autosave_interval = function (interval) {
1703 Notebook.prototype.set_autosave_interval = function (interval) {
1637 var that = this;
1704 var that = this;
1638 // clear previous interval, so we don't get simultaneous timers
1705 // clear previous interval, so we don't get simultaneous timers
1639 if (this.autosave_timer) {
1706 if (this.autosave_timer) {
1640 clearInterval(this.autosave_timer);
1707 clearInterval(this.autosave_timer);
1641 }
1708 }
1642
1709
1643 this.autosave_interval = this.minimum_autosave_interval = interval;
1710 this.autosave_interval = this.minimum_autosave_interval = interval;
1644 if (interval) {
1711 if (interval) {
1645 this.autosave_timer = setInterval(function() {
1712 this.autosave_timer = setInterval(function() {
1646 if (that.dirty) {
1713 if (that.dirty) {
1647 that.save_notebook();
1714 that.save_notebook();
1648 }
1715 }
1649 }, interval);
1716 }, interval);
1650 $([IPython.events]).trigger("autosave_enabled.Notebook", interval);
1717 $([IPython.events]).trigger("autosave_enabled.Notebook", interval);
1651 } else {
1718 } else {
1652 this.autosave_timer = null;
1719 this.autosave_timer = null;
1653 $([IPython.events]).trigger("autosave_disabled.Notebook");
1720 $([IPython.events]).trigger("autosave_disabled.Notebook");
1654 };
1721 };
1655 };
1722 };
1656
1723
1657 /**
1724 /**
1658 * Save this notebook on the server.
1725 * Save this notebook on the server.
1659 *
1726 *
1660 * @method save_notebook
1727 * @method save_notebook
1661 */
1728 */
1662 Notebook.prototype.save_notebook = function (extra_settings) {
1729 Notebook.prototype.save_notebook = function (extra_settings) {
1663 // Create a JSON model to be sent to the server.
1730 // Create a JSON model to be sent to the server.
1664 var model = {};
1731 var model = {};
1665 model.name = this.notebook_name;
1732 model.name = this.notebook_name;
1666 model.path = this.notebook_path;
1733 model.path = this.notebook_path;
1667 model.content = this.toJSON();
1734 model.content = this.toJSON();
1668 model.content.nbformat = this.nbformat;
1735 model.content.nbformat = this.nbformat;
1669 model.content.nbformat_minor = this.nbformat_minor;
1736 model.content.nbformat_minor = this.nbformat_minor;
1670 // time the ajax call for autosave tuning purposes.
1737 // time the ajax call for autosave tuning purposes.
1671 var start = new Date().getTime();
1738 var start = new Date().getTime();
1672 // We do the call with settings so we can set cache to false.
1739 // We do the call with settings so we can set cache to false.
1673 var settings = {
1740 var settings = {
1674 processData : false,
1741 processData : false,
1675 cache : false,
1742 cache : false,
1676 type : "PUT",
1743 type : "PUT",
1677 data : JSON.stringify(model),
1744 data : JSON.stringify(model),
1678 headers : {'Content-Type': 'application/json'},
1745 headers : {'Content-Type': 'application/json'},
1679 success : $.proxy(this.save_notebook_success, this, start),
1746 success : $.proxy(this.save_notebook_success, this, start),
1680 error : $.proxy(this.save_notebook_error, this)
1747 error : $.proxy(this.save_notebook_error, this)
1681 };
1748 };
1682 if (extra_settings) {
1749 if (extra_settings) {
1683 for (var key in extra_settings) {
1750 for (var key in extra_settings) {
1684 settings[key] = extra_settings[key];
1751 settings[key] = extra_settings[key];
1685 }
1752 }
1686 }
1753 }
1687 $([IPython.events]).trigger('notebook_saving.Notebook');
1754 $([IPython.events]).trigger('notebook_saving.Notebook');
1688 var url = utils.url_join_encode(
1755 var url = utils.url_join_encode(
1689 this._baseProjectUrl,
1756 this._baseProjectUrl,
1690 'api/notebooks',
1757 'api/notebooks',
1691 this.notebook_path,
1758 this.notebook_path,
1692 this.notebook_name
1759 this.notebook_name
1693 );
1760 );
1694 $.ajax(url, settings);
1761 $.ajax(url, settings);
1695 };
1762 };
1696
1763
1697 /**
1764 /**
1698 * Success callback for saving a notebook.
1765 * Success callback for saving a notebook.
1699 *
1766 *
1700 * @method save_notebook_success
1767 * @method save_notebook_success
1701 * @param {Integer} start the time when the save request started
1768 * @param {Integer} start the time when the save request started
1702 * @param {Object} data JSON representation of a notebook
1769 * @param {Object} data JSON representation of a notebook
1703 * @param {String} status Description of response status
1770 * @param {String} status Description of response status
1704 * @param {jqXHR} xhr jQuery Ajax object
1771 * @param {jqXHR} xhr jQuery Ajax object
1705 */
1772 */
1706 Notebook.prototype.save_notebook_success = function (start, data, status, xhr) {
1773 Notebook.prototype.save_notebook_success = function (start, data, status, xhr) {
1707 this.set_dirty(false);
1774 this.set_dirty(false);
1708 $([IPython.events]).trigger('notebook_saved.Notebook');
1775 $([IPython.events]).trigger('notebook_saved.Notebook');
1709 this._update_autosave_interval(start);
1776 this._update_autosave_interval(start);
1710 if (this._checkpoint_after_save) {
1777 if (this._checkpoint_after_save) {
1711 this.create_checkpoint();
1778 this.create_checkpoint();
1712 this._checkpoint_after_save = false;
1779 this._checkpoint_after_save = false;
1713 };
1780 };
1714 };
1781 };
1715
1782
1716 /**
1783 /**
1717 * update the autosave interval based on how long the last save took
1784 * update the autosave interval based on how long the last save took
1718 *
1785 *
1719 * @method _update_autosave_interval
1786 * @method _update_autosave_interval
1720 * @param {Integer} timestamp when the save request started
1787 * @param {Integer} timestamp when the save request started
1721 */
1788 */
1722 Notebook.prototype._update_autosave_interval = function (start) {
1789 Notebook.prototype._update_autosave_interval = function (start) {
1723 var duration = (new Date().getTime() - start);
1790 var duration = (new Date().getTime() - start);
1724 if (this.autosave_interval) {
1791 if (this.autosave_interval) {
1725 // new save interval: higher of 10x save duration or parameter (default 30 seconds)
1792 // new save interval: higher of 10x save duration or parameter (default 30 seconds)
1726 var interval = Math.max(10 * duration, this.minimum_autosave_interval);
1793 var interval = Math.max(10 * duration, this.minimum_autosave_interval);
1727 // round to 10 seconds, otherwise we will be setting a new interval too often
1794 // round to 10 seconds, otherwise we will be setting a new interval too often
1728 interval = 10000 * Math.round(interval / 10000);
1795 interval = 10000 * Math.round(interval / 10000);
1729 // set new interval, if it's changed
1796 // set new interval, if it's changed
1730 if (interval != this.autosave_interval) {
1797 if (interval != this.autosave_interval) {
1731 this.set_autosave_interval(interval);
1798 this.set_autosave_interval(interval);
1732 }
1799 }
1733 }
1800 }
1734 };
1801 };
1735
1802
1736 /**
1803 /**
1737 * Failure callback for saving a notebook.
1804 * Failure callback for saving a notebook.
1738 *
1805 *
1739 * @method save_notebook_error
1806 * @method save_notebook_error
1740 * @param {jqXHR} xhr jQuery Ajax object
1807 * @param {jqXHR} xhr jQuery Ajax object
1741 * @param {String} status Description of response status
1808 * @param {String} status Description of response status
1742 * @param {String} error HTTP error message
1809 * @param {String} error HTTP error message
1743 */
1810 */
1744 Notebook.prototype.save_notebook_error = function (xhr, status, error) {
1811 Notebook.prototype.save_notebook_error = function (xhr, status, error) {
1745 $([IPython.events]).trigger('notebook_save_failed.Notebook', [xhr, status, error]);
1812 $([IPython.events]).trigger('notebook_save_failed.Notebook', [xhr, status, error]);
1746 };
1813 };
1747
1814
1748 Notebook.prototype.new_notebook = function(){
1815 Notebook.prototype.new_notebook = function(){
1749 var path = this.notebook_path;
1816 var path = this.notebook_path;
1750 var base_project_url = this._baseProjectUrl;
1817 var base_project_url = this._baseProjectUrl;
1751 var settings = {
1818 var settings = {
1752 processData : false,
1819 processData : false,
1753 cache : false,
1820 cache : false,
1754 type : "POST",
1821 type : "POST",
1755 dataType : "json",
1822 dataType : "json",
1756 async : false,
1823 async : false,
1757 success : function (data, status, xhr){
1824 success : function (data, status, xhr){
1758 var notebook_name = data.name;
1825 var notebook_name = data.name;
1759 window.open(
1826 window.open(
1760 utils.url_join_encode(
1827 utils.url_join_encode(
1761 base_project_url,
1828 base_project_url,
1762 'notebooks',
1829 'notebooks',
1763 path,
1830 path,
1764 notebook_name
1831 notebook_name
1765 ),
1832 ),
1766 '_blank'
1833 '_blank'
1767 );
1834 );
1768 }
1835 }
1769 };
1836 };
1770 var url = utils.url_join_encode(
1837 var url = utils.url_join_encode(
1771 base_project_url,
1838 base_project_url,
1772 'api/notebooks',
1839 'api/notebooks',
1773 path
1840 path
1774 );
1841 );
1775 $.ajax(url,settings);
1842 $.ajax(url,settings);
1776 };
1843 };
1777
1844
1778
1845
1779 Notebook.prototype.copy_notebook = function(){
1846 Notebook.prototype.copy_notebook = function(){
1780 var path = this.notebook_path;
1847 var path = this.notebook_path;
1781 var base_project_url = this._baseProjectUrl;
1848 var base_project_url = this._baseProjectUrl;
1782 var settings = {
1849 var settings = {
1783 processData : false,
1850 processData : false,
1784 cache : false,
1851 cache : false,
1785 type : "POST",
1852 type : "POST",
1786 dataType : "json",
1853 dataType : "json",
1787 data : JSON.stringify({copy_from : this.notebook_name}),
1854 data : JSON.stringify({copy_from : this.notebook_name}),
1788 async : false,
1855 async : false,
1789 success : function (data, status, xhr) {
1856 success : function (data, status, xhr) {
1790 window.open(utils.url_join_encode(
1857 window.open(utils.url_join_encode(
1791 base_project_url,
1858 base_project_url,
1792 'notebooks',
1859 'notebooks',
1793 data.path,
1860 data.path,
1794 data.name
1861 data.name
1795 ), '_blank');
1862 ), '_blank');
1796 }
1863 }
1797 };
1864 };
1798 var url = utils.url_join_encode(
1865 var url = utils.url_join_encode(
1799 base_project_url,
1866 base_project_url,
1800 'api/notebooks',
1867 'api/notebooks',
1801 path
1868 path
1802 );
1869 );
1803 $.ajax(url,settings);
1870 $.ajax(url,settings);
1804 };
1871 };
1805
1872
1806 Notebook.prototype.rename = function (nbname) {
1873 Notebook.prototype.rename = function (nbname) {
1807 var that = this;
1874 var that = this;
1808 var data = {name: nbname + '.ipynb'};
1875 var data = {name: nbname + '.ipynb'};
1809 var settings = {
1876 var settings = {
1810 processData : false,
1877 processData : false,
1811 cache : false,
1878 cache : false,
1812 type : "PATCH",
1879 type : "PATCH",
1813 data : JSON.stringify(data),
1880 data : JSON.stringify(data),
1814 dataType: "json",
1881 dataType: "json",
1815 headers : {'Content-Type': 'application/json'},
1882 headers : {'Content-Type': 'application/json'},
1816 success : $.proxy(that.rename_success, this),
1883 success : $.proxy(that.rename_success, this),
1817 error : $.proxy(that.rename_error, this)
1884 error : $.proxy(that.rename_error, this)
1818 };
1885 };
1819 $([IPython.events]).trigger('rename_notebook.Notebook', data);
1886 $([IPython.events]).trigger('rename_notebook.Notebook', data);
1820 var url = utils.url_join_encode(
1887 var url = utils.url_join_encode(
1821 this._baseProjectUrl,
1888 this._baseProjectUrl,
1822 'api/notebooks',
1889 'api/notebooks',
1823 this.notebook_path,
1890 this.notebook_path,
1824 this.notebook_name
1891 this.notebook_name
1825 );
1892 );
1826 $.ajax(url, settings);
1893 $.ajax(url, settings);
1827 };
1894 };
1828
1895
1829
1896
1830 Notebook.prototype.rename_success = function (json, status, xhr) {
1897 Notebook.prototype.rename_success = function (json, status, xhr) {
1831 this.notebook_name = json.name;
1898 this.notebook_name = json.name;
1832 var name = this.notebook_name;
1899 var name = this.notebook_name;
1833 var path = json.path;
1900 var path = json.path;
1834 this.session.rename_notebook(name, path);
1901 this.session.rename_notebook(name, path);
1835 $([IPython.events]).trigger('notebook_renamed.Notebook', json);
1902 $([IPython.events]).trigger('notebook_renamed.Notebook', json);
1836 }
1903 }
1837
1904
1838 Notebook.prototype.rename_error = function (xhr, status, error) {
1905 Notebook.prototype.rename_error = function (xhr, status, error) {
1839 var that = this;
1906 var that = this;
1840 var dialog = $('<div/>').append(
1907 var dialog = $('<div/>').append(
1841 $("<p/>").addClass("rename-message")
1908 $("<p/>").addClass("rename-message")
1842 .html('This notebook name already exists.')
1909 .html('This notebook name already exists.')
1843 )
1910 )
1844 $([IPython.events]).trigger('notebook_rename_failed.Notebook', [xhr, status, error]);
1911 $([IPython.events]).trigger('notebook_rename_failed.Notebook', [xhr, status, error]);
1845 IPython.dialog.modal({
1912 IPython.dialog.modal({
1846 title: "Notebook Rename Error!",
1913 title: "Notebook Rename Error!",
1847 body: dialog,
1914 body: dialog,
1848 buttons : {
1915 buttons : {
1849 "Cancel": {},
1916 "Cancel": {},
1850 "OK": {
1917 "OK": {
1851 class: "btn-primary",
1918 class: "btn-primary",
1852 click: function () {
1919 click: function () {
1853 IPython.save_widget.rename_notebook();
1920 IPython.save_widget.rename_notebook();
1854 }}
1921 }}
1855 },
1922 },
1856 open : function (event, ui) {
1923 open : function (event, ui) {
1857 var that = $(this);
1924 var that = $(this);
1858 // Upon ENTER, click the OK button.
1925 // Upon ENTER, click the OK button.
1859 that.find('input[type="text"]').keydown(function (event, ui) {
1926 that.find('input[type="text"]').keydown(function (event, ui) {
1860 if (event.which === utils.keycodes.ENTER) {
1927 if (event.which === utils.keycodes.ENTER) {
1861 that.find('.btn-primary').first().click();
1928 that.find('.btn-primary').first().click();
1862 }
1929 }
1863 });
1930 });
1864 that.find('input[type="text"]').focus();
1931 that.find('input[type="text"]').focus();
1865 }
1932 }
1866 });
1933 });
1867 }
1934 }
1868
1935
1869 /**
1936 /**
1870 * Request a notebook's data from the server.
1937 * Request a notebook's data from the server.
1871 *
1938 *
1872 * @method load_notebook
1939 * @method load_notebook
1873 * @param {String} notebook_name and path A notebook to load
1940 * @param {String} notebook_name and path A notebook to load
1874 */
1941 */
1875 Notebook.prototype.load_notebook = function (notebook_name, notebook_path) {
1942 Notebook.prototype.load_notebook = function (notebook_name, notebook_path) {
1876 var that = this;
1943 var that = this;
1877 this.notebook_name = notebook_name;
1944 this.notebook_name = notebook_name;
1878 this.notebook_path = notebook_path;
1945 this.notebook_path = notebook_path;
1879 // We do the call with settings so we can set cache to false.
1946 // We do the call with settings so we can set cache to false.
1880 var settings = {
1947 var settings = {
1881 processData : false,
1948 processData : false,
1882 cache : false,
1949 cache : false,
1883 type : "GET",
1950 type : "GET",
1884 dataType : "json",
1951 dataType : "json",
1885 success : $.proxy(this.load_notebook_success,this),
1952 success : $.proxy(this.load_notebook_success,this),
1886 error : $.proxy(this.load_notebook_error,this),
1953 error : $.proxy(this.load_notebook_error,this),
1887 };
1954 };
1888 $([IPython.events]).trigger('notebook_loading.Notebook');
1955 $([IPython.events]).trigger('notebook_loading.Notebook');
1889 var url = utils.url_join_encode(
1956 var url = utils.url_join_encode(
1890 this._baseProjectUrl,
1957 this._baseProjectUrl,
1891 'api/notebooks',
1958 'api/notebooks',
1892 this.notebook_path,
1959 this.notebook_path,
1893 this.notebook_name
1960 this.notebook_name
1894 );
1961 );
1895 $.ajax(url, settings);
1962 $.ajax(url, settings);
1896 };
1963 };
1897
1964
1898 /**
1965 /**
1899 * Success callback for loading a notebook from the server.
1966 * Success callback for loading a notebook from the server.
1900 *
1967 *
1901 * Load notebook data from the JSON response.
1968 * Load notebook data from the JSON response.
1902 *
1969 *
1903 * @method load_notebook_success
1970 * @method load_notebook_success
1904 * @param {Object} data JSON representation of a notebook
1971 * @param {Object} data JSON representation of a notebook
1905 * @param {String} status Description of response status
1972 * @param {String} status Description of response status
1906 * @param {jqXHR} xhr jQuery Ajax object
1973 * @param {jqXHR} xhr jQuery Ajax object
1907 */
1974 */
1908 Notebook.prototype.load_notebook_success = function (data, status, xhr) {
1975 Notebook.prototype.load_notebook_success = function (data, status, xhr) {
1909 this.fromJSON(data);
1976 this.fromJSON(data);
1910 if (this.ncells() === 0) {
1977 if (this.ncells() === 0) {
1911 this.insert_cell_below('code');
1978 this.insert_cell_below('code');
1979 this.select(0);
1980 this.edit_mode();
1981 } else {
1982 this.select(0);
1983 this.command_mode();
1912 };
1984 };
1913 this.set_dirty(false);
1985 this.set_dirty(false);
1914 this.select(0);
1915 this.scroll_to_top();
1986 this.scroll_to_top();
1916 if (data.orig_nbformat !== undefined && data.nbformat !== data.orig_nbformat) {
1987 if (data.orig_nbformat !== undefined && data.nbformat !== data.orig_nbformat) {
1917 var msg = "This notebook has been converted from an older " +
1988 var msg = "This notebook has been converted from an older " +
1918 "notebook format (v"+data.orig_nbformat+") to the current notebook " +
1989 "notebook format (v"+data.orig_nbformat+") to the current notebook " +
1919 "format (v"+data.nbformat+"). The next time you save this notebook, the " +
1990 "format (v"+data.nbformat+"). The next time you save this notebook, the " +
1920 "newer notebook format will be used and older versions of IPython " +
1991 "newer notebook format will be used and older versions of IPython " +
1921 "may not be able to read it. To keep the older version, close the " +
1992 "may not be able to read it. To keep the older version, close the " +
1922 "notebook without saving it.";
1993 "notebook without saving it.";
1923 IPython.dialog.modal({
1994 IPython.dialog.modal({
1924 title : "Notebook converted",
1995 title : "Notebook converted",
1925 body : msg,
1996 body : msg,
1926 buttons : {
1997 buttons : {
1927 OK : {
1998 OK : {
1928 class : "btn-primary"
1999 class : "btn-primary"
1929 }
2000 }
1930 }
2001 }
1931 });
2002 });
1932 } else if (data.orig_nbformat_minor !== undefined && data.nbformat_minor !== data.orig_nbformat_minor) {
2003 } else if (data.orig_nbformat_minor !== undefined && data.nbformat_minor !== data.orig_nbformat_minor) {
1933 var that = this;
2004 var that = this;
1934 var orig_vs = 'v' + data.nbformat + '.' + data.orig_nbformat_minor;
2005 var orig_vs = 'v' + data.nbformat + '.' + data.orig_nbformat_minor;
1935 var this_vs = 'v' + data.nbformat + '.' + this.nbformat_minor;
2006 var this_vs = 'v' + data.nbformat + '.' + this.nbformat_minor;
1936 var msg = "This notebook is version " + orig_vs + ", but we only fully support up to " +
2007 var msg = "This notebook is version " + orig_vs + ", but we only fully support up to " +
1937 this_vs + ". You can still work with this notebook, but some features " +
2008 this_vs + ". You can still work with this notebook, but some features " +
1938 "introduced in later notebook versions may not be available."
2009 "introduced in later notebook versions may not be available."
1939
2010
1940 IPython.dialog.modal({
2011 IPython.dialog.modal({
1941 title : "Newer Notebook",
2012 title : "Newer Notebook",
1942 body : msg,
2013 body : msg,
1943 buttons : {
2014 buttons : {
1944 OK : {
2015 OK : {
1945 class : "btn-danger"
2016 class : "btn-danger"
1946 }
2017 }
1947 }
2018 }
1948 });
2019 });
1949
2020
1950 }
2021 }
1951
2022
1952 // Create the session after the notebook is completely loaded to prevent
2023 // Create the session after the notebook is completely loaded to prevent
1953 // code execution upon loading, which is a security risk.
2024 // code execution upon loading, which is a security risk.
1954 if (this.session == null) {
2025 if (this.session == null) {
1955 this.start_session();
2026 this.start_session();
1956 }
2027 }
1957 // load our checkpoint list
2028 // load our checkpoint list
1958 this.list_checkpoints();
2029 this.list_checkpoints();
1959
2030
1960 // load toolbar state
2031 // load toolbar state
1961 if (this.metadata.celltoolbar) {
2032 if (this.metadata.celltoolbar) {
1962 IPython.CellToolbar.global_show();
2033 IPython.CellToolbar.global_show();
1963 IPython.CellToolbar.activate_preset(this.metadata.celltoolbar);
2034 IPython.CellToolbar.activate_preset(this.metadata.celltoolbar);
1964 }
2035 }
1965
2036
1966 $([IPython.events]).trigger('notebook_loaded.Notebook');
2037 $([IPython.events]).trigger('notebook_loaded.Notebook');
1967 };
2038 };
1968
2039
1969 /**
2040 /**
1970 * Failure callback for loading a notebook from the server.
2041 * Failure callback for loading a notebook from the server.
1971 *
2042 *
1972 * @method load_notebook_error
2043 * @method load_notebook_error
1973 * @param {jqXHR} xhr jQuery Ajax object
2044 * @param {jqXHR} xhr jQuery Ajax object
1974 * @param {String} status Description of response status
2045 * @param {String} status Description of response status
1975 * @param {String} error HTTP error message
2046 * @param {String} error HTTP error message
1976 */
2047 */
1977 Notebook.prototype.load_notebook_error = function (xhr, status, error) {
2048 Notebook.prototype.load_notebook_error = function (xhr, status, error) {
1978 $([IPython.events]).trigger('notebook_load_failed.Notebook', [xhr, status, error]);
2049 $([IPython.events]).trigger('notebook_load_failed.Notebook', [xhr, status, error]);
1979 if (xhr.status === 400) {
2050 if (xhr.status === 400) {
1980 var msg = error;
2051 var msg = error;
1981 } else if (xhr.status === 500) {
2052 } else if (xhr.status === 500) {
1982 var msg = "An unknown error occurred while loading this notebook. " +
2053 var msg = "An unknown error occurred while loading this notebook. " +
1983 "This version can load notebook formats " +
2054 "This version can load notebook formats " +
1984 "v" + this.nbformat + " or earlier.";
2055 "v" + this.nbformat + " or earlier.";
1985 }
2056 }
1986 IPython.dialog.modal({
2057 IPython.dialog.modal({
1987 title: "Error loading notebook",
2058 title: "Error loading notebook",
1988 body : msg,
2059 body : msg,
1989 buttons : {
2060 buttons : {
1990 "OK": {}
2061 "OK": {}
1991 }
2062 }
1992 });
2063 });
1993 }
2064 }
1994
2065
1995 /********************* checkpoint-related *********************/
2066 /********************* checkpoint-related *********************/
1996
2067
1997 /**
2068 /**
1998 * Save the notebook then immediately create a checkpoint.
2069 * Save the notebook then immediately create a checkpoint.
1999 *
2070 *
2000 * @method save_checkpoint
2071 * @method save_checkpoint
2001 */
2072 */
2002 Notebook.prototype.save_checkpoint = function () {
2073 Notebook.prototype.save_checkpoint = function () {
2003 this._checkpoint_after_save = true;
2074 this._checkpoint_after_save = true;
2004 this.save_notebook();
2075 this.save_notebook();
2005 };
2076 };
2006
2077
2007 /**
2078 /**
2008 * Add a checkpoint for this notebook.
2079 * Add a checkpoint for this notebook.
2009 * for use as a callback from checkpoint creation.
2080 * for use as a callback from checkpoint creation.
2010 *
2081 *
2011 * @method add_checkpoint
2082 * @method add_checkpoint
2012 */
2083 */
2013 Notebook.prototype.add_checkpoint = function (checkpoint) {
2084 Notebook.prototype.add_checkpoint = function (checkpoint) {
2014 var found = false;
2085 var found = false;
2015 for (var i = 0; i < this.checkpoints.length; i++) {
2086 for (var i = 0; i < this.checkpoints.length; i++) {
2016 var existing = this.checkpoints[i];
2087 var existing = this.checkpoints[i];
2017 if (existing.id == checkpoint.id) {
2088 if (existing.id == checkpoint.id) {
2018 found = true;
2089 found = true;
2019 this.checkpoints[i] = checkpoint;
2090 this.checkpoints[i] = checkpoint;
2020 break;
2091 break;
2021 }
2092 }
2022 }
2093 }
2023 if (!found) {
2094 if (!found) {
2024 this.checkpoints.push(checkpoint);
2095 this.checkpoints.push(checkpoint);
2025 }
2096 }
2026 this.last_checkpoint = this.checkpoints[this.checkpoints.length - 1];
2097 this.last_checkpoint = this.checkpoints[this.checkpoints.length - 1];
2027 };
2098 };
2028
2099
2029 /**
2100 /**
2030 * List checkpoints for this notebook.
2101 * List checkpoints for this notebook.
2031 *
2102 *
2032 * @method list_checkpoints
2103 * @method list_checkpoints
2033 */
2104 */
2034 Notebook.prototype.list_checkpoints = function () {
2105 Notebook.prototype.list_checkpoints = function () {
2035 var url = utils.url_join_encode(
2106 var url = utils.url_join_encode(
2036 this._baseProjectUrl,
2107 this._baseProjectUrl,
2037 'api/notebooks',
2108 'api/notebooks',
2038 this.notebook_path,
2109 this.notebook_path,
2039 this.notebook_name,
2110 this.notebook_name,
2040 'checkpoints'
2111 'checkpoints'
2041 );
2112 );
2042 $.get(url).done(
2113 $.get(url).done(
2043 $.proxy(this.list_checkpoints_success, this)
2114 $.proxy(this.list_checkpoints_success, this)
2044 ).fail(
2115 ).fail(
2045 $.proxy(this.list_checkpoints_error, this)
2116 $.proxy(this.list_checkpoints_error, this)
2046 );
2117 );
2047 };
2118 };
2048
2119
2049 /**
2120 /**
2050 * Success callback for listing checkpoints.
2121 * Success callback for listing checkpoints.
2051 *
2122 *
2052 * @method list_checkpoint_success
2123 * @method list_checkpoint_success
2053 * @param {Object} data JSON representation of a checkpoint
2124 * @param {Object} data JSON representation of a checkpoint
2054 * @param {String} status Description of response status
2125 * @param {String} status Description of response status
2055 * @param {jqXHR} xhr jQuery Ajax object
2126 * @param {jqXHR} xhr jQuery Ajax object
2056 */
2127 */
2057 Notebook.prototype.list_checkpoints_success = function (data, status, xhr) {
2128 Notebook.prototype.list_checkpoints_success = function (data, status, xhr) {
2058 var data = $.parseJSON(data);
2129 var data = $.parseJSON(data);
2059 this.checkpoints = data;
2130 this.checkpoints = data;
2060 if (data.length) {
2131 if (data.length) {
2061 this.last_checkpoint = data[data.length - 1];
2132 this.last_checkpoint = data[data.length - 1];
2062 } else {
2133 } else {
2063 this.last_checkpoint = null;
2134 this.last_checkpoint = null;
2064 }
2135 }
2065 $([IPython.events]).trigger('checkpoints_listed.Notebook', [data]);
2136 $([IPython.events]).trigger('checkpoints_listed.Notebook', [data]);
2066 };
2137 };
2067
2138
2068 /**
2139 /**
2069 * Failure callback for listing a checkpoint.
2140 * Failure callback for listing a checkpoint.
2070 *
2141 *
2071 * @method list_checkpoint_error
2142 * @method list_checkpoint_error
2072 * @param {jqXHR} xhr jQuery Ajax object
2143 * @param {jqXHR} xhr jQuery Ajax object
2073 * @param {String} status Description of response status
2144 * @param {String} status Description of response status
2074 * @param {String} error_msg HTTP error message
2145 * @param {String} error_msg HTTP error message
2075 */
2146 */
2076 Notebook.prototype.list_checkpoints_error = function (xhr, status, error_msg) {
2147 Notebook.prototype.list_checkpoints_error = function (xhr, status, error_msg) {
2077 $([IPython.events]).trigger('list_checkpoints_failed.Notebook');
2148 $([IPython.events]).trigger('list_checkpoints_failed.Notebook');
2078 };
2149 };
2079
2150
2080 /**
2151 /**
2081 * Create a checkpoint of this notebook on the server from the most recent save.
2152 * Create a checkpoint of this notebook on the server from the most recent save.
2082 *
2153 *
2083 * @method create_checkpoint
2154 * @method create_checkpoint
2084 */
2155 */
2085 Notebook.prototype.create_checkpoint = function () {
2156 Notebook.prototype.create_checkpoint = function () {
2086 var url = utils.url_join_encode(
2157 var url = utils.url_join_encode(
2087 this._baseProjectUrl,
2158 this._baseProjectUrl,
2088 'api/notebooks',
2159 'api/notebooks',
2089 this.notebookPath(),
2160 this.notebookPath(),
2090 this.notebook_name,
2161 this.notebook_name,
2091 'checkpoints'
2162 'checkpoints'
2092 );
2163 );
2093 $.post(url).done(
2164 $.post(url).done(
2094 $.proxy(this.create_checkpoint_success, this)
2165 $.proxy(this.create_checkpoint_success, this)
2095 ).fail(
2166 ).fail(
2096 $.proxy(this.create_checkpoint_error, this)
2167 $.proxy(this.create_checkpoint_error, this)
2097 );
2168 );
2098 };
2169 };
2099
2170
2100 /**
2171 /**
2101 * Success callback for creating a checkpoint.
2172 * Success callback for creating a checkpoint.
2102 *
2173 *
2103 * @method create_checkpoint_success
2174 * @method create_checkpoint_success
2104 * @param {Object} data JSON representation of a checkpoint
2175 * @param {Object} data JSON representation of a checkpoint
2105 * @param {String} status Description of response status
2176 * @param {String} status Description of response status
2106 * @param {jqXHR} xhr jQuery Ajax object
2177 * @param {jqXHR} xhr jQuery Ajax object
2107 */
2178 */
2108 Notebook.prototype.create_checkpoint_success = function (data, status, xhr) {
2179 Notebook.prototype.create_checkpoint_success = function (data, status, xhr) {
2109 var data = $.parseJSON(data);
2180 var data = $.parseJSON(data);
2110 this.add_checkpoint(data);
2181 this.add_checkpoint(data);
2111 $([IPython.events]).trigger('checkpoint_created.Notebook', data);
2182 $([IPython.events]).trigger('checkpoint_created.Notebook', data);
2112 };
2183 };
2113
2184
2114 /**
2185 /**
2115 * Failure callback for creating a checkpoint.
2186 * Failure callback for creating a checkpoint.
2116 *
2187 *
2117 * @method create_checkpoint_error
2188 * @method create_checkpoint_error
2118 * @param {jqXHR} xhr jQuery Ajax object
2189 * @param {jqXHR} xhr jQuery Ajax object
2119 * @param {String} status Description of response status
2190 * @param {String} status Description of response status
2120 * @param {String} error_msg HTTP error message
2191 * @param {String} error_msg HTTP error message
2121 */
2192 */
2122 Notebook.prototype.create_checkpoint_error = function (xhr, status, error_msg) {
2193 Notebook.prototype.create_checkpoint_error = function (xhr, status, error_msg) {
2123 $([IPython.events]).trigger('checkpoint_failed.Notebook');
2194 $([IPython.events]).trigger('checkpoint_failed.Notebook');
2124 };
2195 };
2125
2196
2126 Notebook.prototype.restore_checkpoint_dialog = function (checkpoint) {
2197 Notebook.prototype.restore_checkpoint_dialog = function (checkpoint) {
2127 var that = this;
2198 var that = this;
2128 var checkpoint = checkpoint || this.last_checkpoint;
2199 var checkpoint = checkpoint || this.last_checkpoint;
2129 if ( ! checkpoint ) {
2200 if ( ! checkpoint ) {
2130 console.log("restore dialog, but no checkpoint to restore to!");
2201 console.log("restore dialog, but no checkpoint to restore to!");
2131 return;
2202 return;
2132 }
2203 }
2133 var body = $('<div/>').append(
2204 var body = $('<div/>').append(
2134 $('<p/>').addClass("p-space").text(
2205 $('<p/>').addClass("p-space").text(
2135 "Are you sure you want to revert the notebook to " +
2206 "Are you sure you want to revert the notebook to " +
2136 "the latest checkpoint?"
2207 "the latest checkpoint?"
2137 ).append(
2208 ).append(
2138 $("<strong/>").text(
2209 $("<strong/>").text(
2139 " This cannot be undone."
2210 " This cannot be undone."
2140 )
2211 )
2141 )
2212 )
2142 ).append(
2213 ).append(
2143 $('<p/>').addClass("p-space").text("The checkpoint was last updated at:")
2214 $('<p/>').addClass("p-space").text("The checkpoint was last updated at:")
2144 ).append(
2215 ).append(
2145 $('<p/>').addClass("p-space").text(
2216 $('<p/>').addClass("p-space").text(
2146 Date(checkpoint.last_modified)
2217 Date(checkpoint.last_modified)
2147 ).css("text-align", "center")
2218 ).css("text-align", "center")
2148 );
2219 );
2149
2220
2150 IPython.dialog.modal({
2221 IPython.dialog.modal({
2151 title : "Revert notebook to checkpoint",
2222 title : "Revert notebook to checkpoint",
2152 body : body,
2223 body : body,
2153 buttons : {
2224 buttons : {
2154 Revert : {
2225 Revert : {
2155 class : "btn-danger",
2226 class : "btn-danger",
2156 click : function () {
2227 click : function () {
2157 that.restore_checkpoint(checkpoint.id);
2228 that.restore_checkpoint(checkpoint.id);
2158 }
2229 }
2159 },
2230 },
2160 Cancel : {}
2231 Cancel : {}
2161 }
2232 }
2162 });
2233 });
2163 }
2234 }
2164
2235
2165 /**
2236 /**
2166 * Restore the notebook to a checkpoint state.
2237 * Restore the notebook to a checkpoint state.
2167 *
2238 *
2168 * @method restore_checkpoint
2239 * @method restore_checkpoint
2169 * @param {String} checkpoint ID
2240 * @param {String} checkpoint ID
2170 */
2241 */
2171 Notebook.prototype.restore_checkpoint = function (checkpoint) {
2242 Notebook.prototype.restore_checkpoint = function (checkpoint) {
2172 $([IPython.events]).trigger('notebook_restoring.Notebook', checkpoint);
2243 $([IPython.events]).trigger('notebook_restoring.Notebook', checkpoint);
2173 var url = utils.url_join_encode(
2244 var url = utils.url_join_encode(
2174 this._baseProjectUrl,
2245 this._baseProjectUrl,
2175 'api/notebooks',
2246 'api/notebooks',
2176 this.notebookPath(),
2247 this.notebookPath(),
2177 this.notebook_name,
2248 this.notebook_name,
2178 'checkpoints',
2249 'checkpoints',
2179 checkpoint
2250 checkpoint
2180 );
2251 );
2181 $.post(url).done(
2252 $.post(url).done(
2182 $.proxy(this.restore_checkpoint_success, this)
2253 $.proxy(this.restore_checkpoint_success, this)
2183 ).fail(
2254 ).fail(
2184 $.proxy(this.restore_checkpoint_error, this)
2255 $.proxy(this.restore_checkpoint_error, this)
2185 );
2256 );
2186 };
2257 };
2187
2258
2188 /**
2259 /**
2189 * Success callback for restoring a notebook to a checkpoint.
2260 * Success callback for restoring a notebook to a checkpoint.
2190 *
2261 *
2191 * @method restore_checkpoint_success
2262 * @method restore_checkpoint_success
2192 * @param {Object} data (ignored, should be empty)
2263 * @param {Object} data (ignored, should be empty)
2193 * @param {String} status Description of response status
2264 * @param {String} status Description of response status
2194 * @param {jqXHR} xhr jQuery Ajax object
2265 * @param {jqXHR} xhr jQuery Ajax object
2195 */
2266 */
2196 Notebook.prototype.restore_checkpoint_success = function (data, status, xhr) {
2267 Notebook.prototype.restore_checkpoint_success = function (data, status, xhr) {
2197 $([IPython.events]).trigger('checkpoint_restored.Notebook');
2268 $([IPython.events]).trigger('checkpoint_restored.Notebook');
2198 this.load_notebook(this.notebook_name, this.notebook_path);
2269 this.load_notebook(this.notebook_name, this.notebook_path);
2199 };
2270 };
2200
2271
2201 /**
2272 /**
2202 * Failure callback for restoring a notebook to a checkpoint.
2273 * Failure callback for restoring a notebook to a checkpoint.
2203 *
2274 *
2204 * @method restore_checkpoint_error
2275 * @method restore_checkpoint_error
2205 * @param {jqXHR} xhr jQuery Ajax object
2276 * @param {jqXHR} xhr jQuery Ajax object
2206 * @param {String} status Description of response status
2277 * @param {String} status Description of response status
2207 * @param {String} error_msg HTTP error message
2278 * @param {String} error_msg HTTP error message
2208 */
2279 */
2209 Notebook.prototype.restore_checkpoint_error = function (xhr, status, error_msg) {
2280 Notebook.prototype.restore_checkpoint_error = function (xhr, status, error_msg) {
2210 $([IPython.events]).trigger('checkpoint_restore_failed.Notebook');
2281 $([IPython.events]).trigger('checkpoint_restore_failed.Notebook');
2211 };
2282 };
2212
2283
2213 /**
2284 /**
2214 * Delete a notebook checkpoint.
2285 * Delete a notebook checkpoint.
2215 *
2286 *
2216 * @method delete_checkpoint
2287 * @method delete_checkpoint
2217 * @param {String} checkpoint ID
2288 * @param {String} checkpoint ID
2218 */
2289 */
2219 Notebook.prototype.delete_checkpoint = function (checkpoint) {
2290 Notebook.prototype.delete_checkpoint = function (checkpoint) {
2220 $([IPython.events]).trigger('notebook_restoring.Notebook', checkpoint);
2291 $([IPython.events]).trigger('notebook_restoring.Notebook', checkpoint);
2221 var url = utils.url_join_encode(
2292 var url = utils.url_join_encode(
2222 this._baseProjectUrl,
2293 this._baseProjectUrl,
2223 'api/notebooks',
2294 'api/notebooks',
2224 this.notebookPath(),
2295 this.notebookPath(),
2225 this.notebook_name,
2296 this.notebook_name,
2226 'checkpoints',
2297 'checkpoints',
2227 checkpoint
2298 checkpoint
2228 );
2299 );
2229 $.ajax(url, {
2300 $.ajax(url, {
2230 type: 'DELETE',
2301 type: 'DELETE',
2231 success: $.proxy(this.delete_checkpoint_success, this),
2302 success: $.proxy(this.delete_checkpoint_success, this),
2232 error: $.proxy(this.delete_notebook_error,this)
2303 error: $.proxy(this.delete_notebook_error,this)
2233 });
2304 });
2234 };
2305 };
2235
2306
2236 /**
2307 /**
2237 * Success callback for deleting a notebook checkpoint
2308 * Success callback for deleting a notebook checkpoint
2238 *
2309 *
2239 * @method delete_checkpoint_success
2310 * @method delete_checkpoint_success
2240 * @param {Object} data (ignored, should be empty)
2311 * @param {Object} data (ignored, should be empty)
2241 * @param {String} status Description of response status
2312 * @param {String} status Description of response status
2242 * @param {jqXHR} xhr jQuery Ajax object
2313 * @param {jqXHR} xhr jQuery Ajax object
2243 */
2314 */
2244 Notebook.prototype.delete_checkpoint_success = function (data, status, xhr) {
2315 Notebook.prototype.delete_checkpoint_success = function (data, status, xhr) {
2245 $([IPython.events]).trigger('checkpoint_deleted.Notebook', data);
2316 $([IPython.events]).trigger('checkpoint_deleted.Notebook', data);
2246 this.load_notebook(this.notebook_name, this.notebook_path);
2317 this.load_notebook(this.notebook_name, this.notebook_path);
2247 };
2318 };
2248
2319
2249 /**
2320 /**
2250 * Failure callback for deleting a notebook checkpoint.
2321 * Failure callback for deleting a notebook checkpoint.
2251 *
2322 *
2252 * @method delete_checkpoint_error
2323 * @method delete_checkpoint_error
2253 * @param {jqXHR} xhr jQuery Ajax object
2324 * @param {jqXHR} xhr jQuery Ajax object
2254 * @param {String} status Description of response status
2325 * @param {String} status Description of response status
2255 * @param {String} error_msg HTTP error message
2326 * @param {String} error_msg HTTP error message
2256 */
2327 */
2257 Notebook.prototype.delete_checkpoint_error = function (xhr, status, error_msg) {
2328 Notebook.prototype.delete_checkpoint_error = function (xhr, status, error_msg) {
2258 $([IPython.events]).trigger('checkpoint_delete_failed.Notebook');
2329 $([IPython.events]).trigger('checkpoint_delete_failed.Notebook');
2259 };
2330 };
2260
2331
2261
2332
2262 IPython.Notebook = Notebook;
2333 IPython.Notebook = Notebook;
2263
2334
2264
2335
2265 return IPython;
2336 return IPython;
2266
2337
2267 }(IPython));
2338 }(IPython));
@@ -1,583 +1,583 b''
1 //----------------------------------------------------------------------------
1 //----------------------------------------------------------------------------
2 // Copyright (C) 2008-2012 The IPython Development Team
2 // Copyright (C) 2008-2012 The IPython Development Team
3 //
3 //
4 // Distributed under the terms of the BSD License. The full license is in
4 // Distributed under the terms of the BSD License. The full license is in
5 // the file COPYING, distributed as part of this software.
5 // the file COPYING, distributed as part of this software.
6 //----------------------------------------------------------------------------
6 //----------------------------------------------------------------------------
7
7
8 //============================================================================
8 //============================================================================
9 // TextCell
9 // TextCell
10 //============================================================================
10 //============================================================================
11
11
12
12
13
13
14 /**
14 /**
15 A module that allow to create different type of Text Cell
15 A module that allow to create different type of Text Cell
16 @module IPython
16 @module IPython
17 @namespace IPython
17 @namespace IPython
18 */
18 */
19 var IPython = (function (IPython) {
19 var IPython = (function (IPython) {
20 "use strict";
20 "use strict";
21
21
22 // TextCell base class
22 // TextCell base class
23 var key = IPython.utils.keycodes;
23 var key = IPython.utils.keycodes;
24
24
25 /**
25 /**
26 * Construct a new TextCell, codemirror mode is by default 'htmlmixed', and cell type is 'text'
26 * Construct a new TextCell, codemirror mode is by default 'htmlmixed', and cell type is 'text'
27 * cell start as not redered.
27 * cell start as not redered.
28 *
28 *
29 * @class TextCell
29 * @class TextCell
30 * @constructor TextCell
30 * @constructor TextCell
31 * @extend IPython.Cell
31 * @extend IPython.Cell
32 * @param {object|undefined} [options]
32 * @param {object|undefined} [options]
33 * @param [options.cm_config] {object} config to pass to CodeMirror, will extend/overwrite default config
33 * @param [options.cm_config] {object} config to pass to CodeMirror, will extend/overwrite default config
34 * @param [options.placeholder] {string} default string to use when souce in empty for rendering (only use in some TextCell subclass)
34 * @param [options.placeholder] {string} default string to use when souce in empty for rendering (only use in some TextCell subclass)
35 */
35 */
36 var TextCell = function (options) {
36 var TextCell = function (options) {
37 // in all TextCell/Cell subclasses
37 // in all TextCell/Cell subclasses
38 // do not assign most of members here, just pass it down
38 // do not assign most of members here, just pass it down
39 // in the options dict potentially overwriting what you wish.
39 // in the options dict potentially overwriting what you wish.
40 // they will be assigned in the base class.
40 // they will be assigned in the base class.
41
41
42 // we cannot put this as a class key as it has handle to "this".
42 // we cannot put this as a class key as it has handle to "this".
43 var cm_overwrite_options = {
43 var cm_overwrite_options = {
44 onKeyEvent: $.proxy(this.handle_codemirror_keyevent,this)
44 onKeyEvent: $.proxy(this.handle_codemirror_keyevent,this)
45 };
45 };
46
46
47 options = this.mergeopt(TextCell,options,{cm_config:cm_overwrite_options});
47 options = this.mergeopt(TextCell,options,{cm_config:cm_overwrite_options});
48
48
49 this.cell_type = this.cell_type || 'text';
49 this.cell_type = this.cell_type || 'text';
50
50
51 IPython.Cell.apply(this, [options]);
51 IPython.Cell.apply(this, [options]);
52
52
53 this.rendered = false;
53 this.rendered = false;
54 };
54 };
55
55
56 TextCell.prototype = new IPython.Cell();
56 TextCell.prototype = new IPython.Cell();
57
57
58 TextCell.options_default = {
58 TextCell.options_default = {
59 cm_config : {
59 cm_config : {
60 extraKeys: {"Tab": "indentMore","Shift-Tab" : "indentLess"},
60 extraKeys: {"Tab": "indentMore","Shift-Tab" : "indentLess"},
61 mode: 'htmlmixed',
61 mode: 'htmlmixed',
62 lineWrapping : true,
62 lineWrapping : true,
63 }
63 }
64 };
64 };
65
65
66
66
67
68 /**
67 /**
69 * Create the DOM element of the TextCell
68 * Create the DOM element of the TextCell
70 * @method create_element
69 * @method create_element
71 * @private
70 * @private
72 */
71 */
73 TextCell.prototype.create_element = function () {
72 TextCell.prototype.create_element = function () {
74 IPython.Cell.prototype.create_element.apply(this, arguments);
73 IPython.Cell.prototype.create_element.apply(this, arguments);
75
74
76 var cell = $("<div>").addClass('cell text_cell border-box-sizing');
75 var cell = $("<div>").addClass('cell text_cell border-box-sizing');
77 cell.attr('tabindex','2');
76 cell.attr('tabindex','2');
78
77
79 var prompt = $('<div/>').addClass('prompt input_prompt');
78 var prompt = $('<div/>').addClass('prompt input_prompt');
80 cell.append(prompt);
79 cell.append(prompt);
81 var inner_cell = $('<div/>').addClass('inner_cell');
80 var inner_cell = $('<div/>').addClass('inner_cell');
82 this.celltoolbar = new IPython.CellToolbar(this);
81 this.celltoolbar = new IPython.CellToolbar(this);
83 inner_cell.append(this.celltoolbar.element);
82 inner_cell.append(this.celltoolbar.element);
84 var input_area = $('<div/>').addClass('text_cell_input border-box-sizing');
83 var input_area = $('<div/>').addClass('text_cell_input border-box-sizing');
85 this.code_mirror = CodeMirror(input_area.get(0), this.cm_config);
84 this.code_mirror = CodeMirror(input_area.get(0), this.cm_config);
86 // The tabindex=-1 makes this div focusable.
85 // The tabindex=-1 makes this div focusable.
87 var render_area = $('<div/>').addClass('text_cell_render border-box-sizing').
86 var render_area = $('<div/>').addClass('text_cell_render border-box-sizing').
88 addClass('rendered_html').attr('tabindex','-1');
87 addClass('rendered_html').attr('tabindex','-1');
89 inner_cell.append(input_area).append(render_area);
88 inner_cell.append(input_area).append(render_area);
90 cell.append(inner_cell);
89 cell.append(inner_cell);
91 this.element = cell;
90 this.element = cell;
92 };
91 };
93
92
94
93
95 /**
94 /**
96 * Bind the DOM evet to cell actions
95 * Bind the DOM evet to cell actions
97 * Need to be called after TextCell.create_element
96 * Need to be called after TextCell.create_element
98 * @private
97 * @private
99 * @method bind_event
98 * @method bind_event
100 */
99 */
101 TextCell.prototype.bind_events = function () {
100 TextCell.prototype.bind_events = function () {
102 IPython.Cell.prototype.bind_events.apply(this);
101 IPython.Cell.prototype.bind_events.apply(this);
103 var that = this;
102 var that = this;
103
104 // TODO: move this to the notebook event handler
104 this.element.keydown(function (event) {
105 this.element.keydown(function (event) {
105 if (event.which === 13 && !event.shiftKey) {
106 if (event.which === 13 && !event.shiftKey) {
106 if (that.rendered) {
107 if (that.rendered) {
107 that.unrender();
108 that.unrender();
108 return false;
109 return false;
109 };
110 };
110 };
111 };
111 });
112 });
113
112 this.element.dblclick(function () {
114 this.element.dblclick(function () {
113 that.unrender();
115 that.unrender();
114 });
116 });
115 };
117 };
116
118
119
117 /**
120 /**
118 * This method gets called in CodeMirror's onKeyDown/onKeyPress
121 * This method gets called in CodeMirror's onKeyDown/onKeyPress
119 * handlers and is used to provide custom key handling.
122 * handlers and is used to provide custom key handling.
120 *
123 *
121 * Subclass should override this method to have custom handeling
124 * Subclass should override this method to have custom handeling
122 *
125 *
123 * @method handle_codemirror_keyevent
126 * @method handle_codemirror_keyevent
124 * @param {CodeMirror} editor - The codemirror instance bound to the cell
127 * @param {CodeMirror} editor - The codemirror instance bound to the cell
125 * @param {event} event -
128 * @param {event} event -
126 * @return {Boolean} `true` if CodeMirror should ignore the event, `false` Otherwise
129 * @return {Boolean} `true` if CodeMirror should ignore the event, `false` Otherwise
127 */
130 */
128 TextCell.prototype.handle_codemirror_keyevent = function (editor, event) {
131 TextCell.prototype.handle_codemirror_keyevent = function (editor, event) {
129
132 if (this.mode === 'command') {
133 return false
134 } else if (this.mode === 'edit') {
130 if (event.keyCode === 13 && (event.shiftKey || event.ctrlKey)) {
135 if (event.keyCode === 13 && (event.shiftKey || event.ctrlKey)) {
131 // Always ignore shift-enter in CodeMirror as we handle it.
136 // Always ignore shift-enter in CodeMirror as we handle it.
132 return true;
137 return true;
133 }
138 };
139 return false;
140 };
134 return false;
141 return false;
135 };
142 };
136
143
137 // Cell level actions
144 // Cell level actions
138
145
139 TextCell.prototype.select = function () {
146 TextCell.prototype.select = function () {
140 var continue = IPython.Cell.prototype.select.apply(this);
147 var cont = IPython.Cell.prototype.select.apply(this);
141 if (continue) {
148 if (cont) {
142 if (this.mode === 'edit') {
149 if (this.mode === 'edit') {
143 this.code_mirror.refresh();
150 this.code_mirror.refresh();
144 }
151 }
145 };
152 };
146 return continue;
153 return cont;
147 };
148
149 TextCell.prototype.render = function () {
150 var continue = IPython.Cell.prototype.render.apply(this);
151 if (continue) {
152 this.execute();
153 };
154 return continue;
155 };
154 };
156
155
157 TextCell.prototype.unrender = function () {
156 TextCell.prototype.unrender = function () {
158 if (this.read_only) return;
157 if (this.read_only) return;
159 var continue = IPython.Cell.prototype.unrender.apply(this);
158 var cont = IPython.Cell.prototype.unrender.apply(this);
160 if (continue) {
159 if (cont) {
161 var text_cell = this.element;
160 var text_cell = this.element;
162 var output = text_cell.find("div.text_cell_render");
161 var output = text_cell.find("div.text_cell_render");
163 output.hide();
162 output.hide();
164 text_cell.find('div.text_cell_input').show();
163 text_cell.find('div.text_cell_input').show();
165 this.focus_editor();
164 this.focus_editor();
166 if (this.get_text() === this.placeholder) {
165 if (this.get_text() === this.placeholder) {
167 this.set_text('');
166 this.set_text('');
168 this.refresh();
167 this.refresh();
169 }
168 }
170
169
171 };
170 };
172 return continue;
171 return cont;
172 };
173
174 TextCell.prototype.execute = function () {
175 this.render();
173 };
176 };
174
177
175 TextCell.prototype.command_mode = function () {
178 TextCell.prototype.command_mode = function () {
176 var continue = IPython.Cell.prototype.command_mode.apply(this);
179 var cont = IPython.Cell.prototype.command_mode.apply(this);
177 if (continue) {
180 if (cont) {
178 this.focus_cell();
181 this.focus_cell();
179 };
182 };
180 return continue;
183 return cont;
181 }
184 }
182
185
183 TextCell.prototype.edit_mode = function () {
186 TextCell.prototype.edit_mode = function () {
184 var continue = IPython.Cell.prototype.edit_mode.apply(this);
187 var cont = IPython.Cell.prototype.edit_mode.apply(this);
185 if (continue) {
188 if (cont) {
186 this.focus_editor();
189 this.focus_editor();
187 };
190 };
188 return continue;
191 return cont;
189 }
192 }
190
193
191 /**
194 /**
192 * setter: {{#crossLink "TextCell/set_text"}}{{/crossLink}}
195 * setter: {{#crossLink "TextCell/set_text"}}{{/crossLink}}
193 * @method get_text
196 * @method get_text
194 * @retrun {string} CodeMirror current text value
197 * @retrun {string} CodeMirror current text value
195 */
198 */
196 TextCell.prototype.get_text = function() {
199 TextCell.prototype.get_text = function() {
197 return this.code_mirror.getValue();
200 return this.code_mirror.getValue();
198 };
201 };
199
202
200 /**
203 /**
201 * @param {string} text - Codemiror text value
204 * @param {string} text - Codemiror text value
202 * @see TextCell#get_text
205 * @see TextCell#get_text
203 * @method set_text
206 * @method set_text
204 * */
207 * */
205 TextCell.prototype.set_text = function(text) {
208 TextCell.prototype.set_text = function(text) {
206 this.code_mirror.setValue(text);
209 this.code_mirror.setValue(text);
207 this.code_mirror.refresh();
210 this.code_mirror.refresh();
208 };
211 };
209
212
210 /**
213 /**
211 * setter :{{#crossLink "TextCell/set_rendered"}}{{/crossLink}}
214 * setter :{{#crossLink "TextCell/set_rendered"}}{{/crossLink}}
212 * @method get_rendered
215 * @method get_rendered
213 * @return {html} html of rendered element
216 * @return {html} html of rendered element
214 * */
217 * */
215 TextCell.prototype.get_rendered = function() {
218 TextCell.prototype.get_rendered = function() {
216 return this.element.find('div.text_cell_render').html();
219 return this.element.find('div.text_cell_render').html();
217 };
220 };
218
221
219 /**
222 /**
220 * @method set_rendered
223 * @method set_rendered
221 */
224 */
222 TextCell.prototype.set_rendered = function(text) {
225 TextCell.prototype.set_rendered = function(text) {
223 this.element.find('div.text_cell_render').html(text);
226 this.element.find('div.text_cell_render').html(text);
224 };
227 };
225
228
226 /**
229 /**
227 * not deprecated, but implementation wrong
228 * @method at_top
230 * @method at_top
229 * @deprecated
231 * @return {Boolean}
230 * @return {Boolean} true is cell rendered, false otherwise
231 * I doubt this is what it is supposed to do
232 * this implementation is completly false
233 */
232 */
234 TextCell.prototype.at_top = function () {
233 TextCell.prototype.at_top = function () {
235 if (this.rendered) {
234 if (this.rendered) {
236 return true;
235 return true;
237 } else {
236 } else {
237 if (cursor.line === 0 && cursor.ch === 0) {
238 return true;
239 } else {
238 return false;
240 return false;
239 }
240 };
241 };
242 };
243 };
244
241
245
246 /** @method at_bottom **/
247 TextCell.prototype.at_bottom = function () {
248 if (this.rendered) {
249 return true
250 } else {
251 var cursor = this.code_mirror.getCursor();
252 if (cursor.line === (this.code_mirror.lineCount()-1) && cursor.ch === this.code_mirror.getLine(cursor.line).length) {
253 return true;
254 } else {
255 return false;
256 };
257 };
258 };
242
259
243 /**
260 /**
244 * not deprecated, but implementation wrong
245 * @method at_bottom
261 * @method at_bottom
246 * @deprecated
262 * @return {Boolean}
247 * @return {Boolean} true is cell rendered, false otherwise
248 * I doubt this is what it is supposed to do
249 * this implementation is completly false
250 * */
263 * */
251 TextCell.prototype.at_bottom = function () {
264 TextCell.prototype.at_bottom = function () {
252 if (this.rendered) {
265 if (this.rendered) {
253 return true;
266 return true;
254 } else {
267 } else {
268 var cursor = this.code_mirror.getCursor();
269 if (cursor.line === (this.code_mirror.lineCount()-1) && cursor.ch === this.code_mirror.getLine(cursor.line).length) {
270 return true;
271 } else {
255 return false;
272 return false;
256 }
273 };
274 };
257 };
275 };
258
276
259 /**
277 /**
260 * Create Text cell from JSON
278 * Create Text cell from JSON
261 * @param {json} data - JSON serialized text-cell
279 * @param {json} data - JSON serialized text-cell
262 * @method fromJSON
280 * @method fromJSON
263 */
281 */
264 TextCell.prototype.fromJSON = function (data) {
282 TextCell.prototype.fromJSON = function (data) {
265 IPython.Cell.prototype.fromJSON.apply(this, arguments);
283 IPython.Cell.prototype.fromJSON.apply(this, arguments);
266 if (data.cell_type === this.cell_type) {
284 if (data.cell_type === this.cell_type) {
267 if (data.source !== undefined) {
285 if (data.source !== undefined) {
268 this.set_text(data.source);
286 this.set_text(data.source);
269 // make this value the starting point, so that we can only undo
287 // make this value the starting point, so that we can only undo
270 // to this state, instead of a blank cell
288 // to this state, instead of a blank cell
271 this.code_mirror.clearHistory();
289 this.code_mirror.clearHistory();
272 this.set_rendered(data.rendered || '');
290 this.set_rendered(data.rendered || '');
273 this.rendered = false;
291 this.rendered = false;
274 this.render();
292 this.render();
275 }
293 }
276 }
294 }
277 };
295 };
278
296
279 /** Generate JSON from cell
297 /** Generate JSON from cell
280 * @return {object} cell data serialised to json
298 * @return {object} cell data serialised to json
281 */
299 */
282 TextCell.prototype.toJSON = function () {
300 TextCell.prototype.toJSON = function () {
283 var data = IPython.Cell.prototype.toJSON.apply(this);
301 var data = IPython.Cell.prototype.toJSON.apply(this);
284 data.source = this.get_text();
302 data.source = this.get_text();
285 if (data.source == this.placeholder) {
303 if (data.source == this.placeholder) {
286 data.source = "";
304 data.source = "";
287 }
305 }
288 return data;
306 return data;
289 };
307 };
290
308
291
309
292 /**
310 /**
293 * @class MarkdownCell
311 * @class MarkdownCell
294 * @constructor MarkdownCell
312 * @constructor MarkdownCell
295 * @extends IPython.HTMLCell
313 * @extends IPython.HTMLCell
296 */
314 */
297 var MarkdownCell = function (options) {
315 var MarkdownCell = function (options) {
298 options = this.mergeopt(MarkdownCell, options);
316 options = this.mergeopt(MarkdownCell, options);
299
317
300 this.cell_type = 'markdown';
318 this.cell_type = 'markdown';
301 TextCell.apply(this, [options]);
319 TextCell.apply(this, [options]);
302 };
320 };
303
321
304 MarkdownCell.options_default = {
322 MarkdownCell.options_default = {
305 cm_config: {
323 cm_config: {
306 mode: 'gfm'
324 mode: 'gfm'
307 },
325 },
308 placeholder: "Type *Markdown* and LaTeX: $\\alpha^2$"
326 placeholder: "Type *Markdown* and LaTeX: $\\alpha^2$"
309 }
327 }
310
328
311
312
313
314 MarkdownCell.prototype = new TextCell();
329 MarkdownCell.prototype = new TextCell();
315
330
316 /**
331 /**
317 * @method render
332 * @method render
318 */
333 */
319 MarkdownCell.prototype.render = function () {
334 MarkdownCell.prototype.render = function () {
320 if (this.rendered === false) {
335 var cont = IPython.TextCell.prototype.render.apply(this);
336 if (cont) {
321 var text = this.get_text();
337 var text = this.get_text();
322 var math = null;
338 var math = null;
323 if (text === "") { text = this.placeholder; }
339 if (text === "") { text = this.placeholder; }
324 var text_and_math = IPython.mathjaxutils.remove_math(text);
340 var text_and_math = IPython.mathjaxutils.remove_math(text);
325 text = text_and_math[0];
341 text = text_and_math[0];
326 math = text_and_math[1];
342 math = text_and_math[1];
327 var html = marked.parser(marked.lexer(text));
343 var html = marked.parser(marked.lexer(text));
328 html = $(IPython.mathjaxutils.replace_math(html, math));
344 html = $(IPython.mathjaxutils.replace_math(html, math));
329 // links in markdown cells should open in new tabs
345 // links in markdown cells should open in new tabs
330 html.find("a[href]").not('[href^="#"]').attr("target", "_blank");
346 html.find("a[href]").not('[href^="#"]').attr("target", "_blank");
331 try {
347 try {
332 this.set_rendered(html);
348 this.set_rendered(html);
333 } catch (e) {
349 } catch (e) {
334 console.log("Error running Javascript in Markdown:");
350 console.log("Error running Javascript in Markdown:");
335 console.log(e);
351 console.log(e);
336 this.set_rendered($("<div/>").addClass("js-error").html(
352 this.set_rendered($("<div/>").addClass("js-error").html(
337 "Error rendering Markdown!<br/>" + e.toString())
353 "Error rendering Markdown!<br/>" + e.toString())
338 );
354 );
339 }
355 }
340 this.element.find('div.text_cell_input').hide();
356 this.element.find('div.text_cell_input').hide();
341 this.element.find("div.text_cell_render").show();
357 this.element.find("div.text_cell_render").show();
342 this.typeset();
358 this.typeset()
343 this.rendered = true;
359 };
344 }
360 return cont;
345 };
361 };
346
362
347
363
348 // RawCell
364 // RawCell
349
365
350 /**
366 /**
351 * @class RawCell
367 * @class RawCell
352 * @constructor RawCell
368 * @constructor RawCell
353 * @extends IPython.TextCell
369 * @extends IPython.TextCell
354 */
370 */
355 var RawCell = function (options) {
371 var RawCell = function (options) {
356 options = this.mergeopt(RawCell, options);
372 options = this.mergeopt(RawCell, options);
357
373
358 this.cell_type = 'raw';
374 this.cell_type = 'raw';
359 TextCell.apply(this, [options]);
375 TextCell.apply(this, [options]);
360
361 var that = this;
362 this.element.focusout(
363 function() { that.auto_highlight(); }
364 );
365 };
376 };
366
377
367 RawCell.options_default = {
378 RawCell.options_default = {
368 placeholder : "Write raw LaTeX or other formats here, for use with nbconvert.\n" +
379 placeholder : "Write raw LaTeX or other formats here, for use with nbconvert.\n" +
369 "It will not be rendered in the notebook.\n" +
380 "It will not be rendered in the notebook.\n" +
370 "When passing through nbconvert, a Raw Cell's content is added to the output unmodified."
381 "When passing through nbconvert, a Raw Cell's content is added to the output unmodified."
371 };
382 };
372
383
373
374
375 RawCell.prototype = new TextCell();
384 RawCell.prototype = new TextCell();
376
385
386 /** @method bind_events **/
387 RawCell.prototype.bind_events = function () {
388 TextCell.prototype.bind_events.apply(this);
389 var that = this
390 this.element.focusout(function() {
391 that.auto_highlight();
392 });
393 };
394
377 /**
395 /**
378 * Trigger autodetection of highlight scheme for current cell
396 * Trigger autodetection of highlight scheme for current cell
379 * @method auto_highlight
397 * @method auto_highlight
380 */
398 */
381 RawCell.prototype.auto_highlight = function () {
399 RawCell.prototype.auto_highlight = function () {
382 this._auto_highlight(IPython.config.raw_cell_highlight);
400 this._auto_highlight(IPython.config.raw_cell_highlight);
383 };
401 };
384
402
385 /** @method render **/
403 /** @method render **/
386 RawCell.prototype.render = function () {
404 RawCell.prototype.render = function () {
387
405 // Make sure that this cell type can never be rendered
388 this.rendered = true;
406 if (this.rendered) {
407 this.unrender();
408 }
389 var text = this.get_text();
409 var text = this.get_text();
390 if (text === "") { text = this.placeholder; }
410 if (text === "") { text = this.placeholder; }
391 this.set_text(text);
411 this.set_text(text);
392 this.unrender();
393 };
412 };
394
413
395
414
396 /** @method handle_codemirror_keyevent **/
415 /** @method handle_codemirror_keyevent **/
397 RawCell.prototype.handle_codemirror_keyevent = function (editor, event) {
416 RawCell.prototype.handle_codemirror_keyevent = function (editor, event) {
398
417
399 var that = this;
418 var that = this;
419 if (this.mode === 'command') {
420 return false
421 } else if (this.mode === 'edit') {
422 // TODO: review these handlers...
400 if (event.which === key.UPARROW && event.type === 'keydown') {
423 if (event.which === key.UPARROW && event.type === 'keydown') {
401 // If we are not at the top, let CM handle the up arrow and
424 // If we are not at the top, let CM handle the up arrow and
402 // prevent the global keydown handler from handling it.
425 // prevent the global keydown handler from handling it.
403 if (!that.at_top()) {
426 if (!that.at_top()) {
404 event.stop();
427 event.stop();
405 return false;
428 return false;
406 } else {
429 } else {
407 return true;
430 return true;
408 };
431 };
409 } else if (event.which === key.DOWNARROW && event.type === 'keydown') {
432 } else if (event.which === key.DOWNARROW && event.type === 'keydown') {
410 // If we are not at the bottom, let CM handle the down arrow and
433 // If we are not at the bottom, let CM handle the down arrow and
411 // prevent the global keydown handler from handling it.
434 // prevent the global keydown handler from handling it.
412 if (!that.at_bottom()) {
435 if (!that.at_bottom()) {
413 event.stop();
436 event.stop();
414 return false;
437 return false;
415 } else {
438 } else {
416 return true;
439 return true;
417 };
440 };
418 };
441 };
419 return false;
442 return false;
420 };
443 };
421
422 /** @method select **/
423 RawCell.prototype.select = function () {
424 IPython.Cell.prototype.select.apply(this);
425 this.edit();
426 };
427
428 /** @method at_top **/
429 RawCell.prototype.at_top = function () {
430 var cursor = this.code_mirror.getCursor();
431 if (cursor.line === 0 && cursor.ch === 0) {
432 return true;
433 } else {
434 return false;
444 return false;
435 }
436 };
437
438
439 /** @method at_bottom **/
440 RawCell.prototype.at_bottom = function () {
441 var cursor = this.code_mirror.getCursor();
442 if (cursor.line === (this.code_mirror.lineCount()-1) && cursor.ch === this.code_mirror.getLine(cursor.line).length) {
443 return true;
444 } else {
445 return false;
446 }
447 };
445 };
448
446
449
447
450 /**
448 /**
451 * @class HeadingCell
449 * @class HeadingCell
452 * @extends IPython.TextCell
450 * @extends IPython.TextCell
453 */
451 */
454
452
455 /**
453 /**
456 * @constructor HeadingCell
454 * @constructor HeadingCell
457 * @extends IPython.TextCell
455 * @extends IPython.TextCell
458 */
456 */
459 var HeadingCell = function (options) {
457 var HeadingCell = function (options) {
460 options = this.mergeopt(HeadingCell, options);
458 options = this.mergeopt(HeadingCell, options);
461
459
462 this.level = 1;
460 this.level = 1;
463 this.cell_type = 'heading';
461 this.cell_type = 'heading';
464 TextCell.apply(this, [options]);
462 TextCell.apply(this, [options]);
465
463
466 /**
464 /**
467 * heading level of the cell, use getter and setter to access
465 * heading level of the cell, use getter and setter to access
468 * @property level
466 * @property level
469 */
467 */
470 };
468 };
471
469
472 HeadingCell.options_default = {
470 HeadingCell.options_default = {
473 placeholder: "Type Heading Here"
471 placeholder: "Type Heading Here"
474 };
472 };
475
473
476 HeadingCell.prototype = new TextCell();
474 HeadingCell.prototype = new TextCell();
477
475
478 /** @method fromJSON */
476 /** @method fromJSON */
479 HeadingCell.prototype.fromJSON = function (data) {
477 HeadingCell.prototype.fromJSON = function (data) {
480 if (data.level != undefined){
478 if (data.level != undefined){
481 this.level = data.level;
479 this.level = data.level;
482 }
480 }
483 TextCell.prototype.fromJSON.apply(this, arguments);
481 TextCell.prototype.fromJSON.apply(this, arguments);
484 };
482 };
485
483
486
484
487 /** @method toJSON */
485 /** @method toJSON */
488 HeadingCell.prototype.toJSON = function () {
486 HeadingCell.prototype.toJSON = function () {
489 var data = TextCell.prototype.toJSON.apply(this);
487 var data = TextCell.prototype.toJSON.apply(this);
490 data.level = this.get_level();
488 data.level = this.get_level();
491 return data;
489 return data;
492 };
490 };
493
491
494 /**
492 /**
495 * can the cell be split into two cells
493 * can the cell be split into two cells
496 * @method is_splittable
494 * @method is_splittable
497 **/
495 **/
498 HeadingCell.prototype.is_splittable = function () {
496 HeadingCell.prototype.is_splittable = function () {
499 return false;
497 return false;
500 };
498 };
501
499
502
500
503 /**
501 /**
504 * can the cell be merged with other cells
502 * can the cell be merged with other cells
505 * @method is_mergeable
503 * @method is_mergeable
506 **/
504 **/
507 HeadingCell.prototype.is_mergeable = function () {
505 HeadingCell.prototype.is_mergeable = function () {
508 return false;
506 return false;
509 };
507 };
510
508
511 /**
509 /**
512 * Change heading level of cell, and re-render
510 * Change heading level of cell, and re-render
513 * @method set_level
511 * @method set_level
514 */
512 */
515 HeadingCell.prototype.set_level = function (level) {
513 HeadingCell.prototype.set_level = function (level) {
516 this.level = level;
514 this.level = level;
517 if (this.rendered) {
515 if (this.rendered) {
518 this.rendered = false;
516 this.rendered = false;
519 this.render();
517 this.render();
520 };
518 };
521 };
519 };
522
520
523 /** The depth of header cell, based on html (h1 to h6)
521 /** The depth of header cell, based on html (h1 to h6)
524 * @method get_level
522 * @method get_level
525 * @return {integer} level - for 1 to 6
523 * @return {integer} level - for 1 to 6
526 */
524 */
527 HeadingCell.prototype.get_level = function () {
525 HeadingCell.prototype.get_level = function () {
528 return this.level;
526 return this.level;
529 };
527 };
530
528
531
529
532 HeadingCell.prototype.set_rendered = function (html) {
530 HeadingCell.prototype.set_rendered = function (html) {
533 this.element.find("div.text_cell_render").html(html);
531 this.element.find("div.text_cell_render").html(html);
534 };
532 };
535
533
536
534
537 HeadingCell.prototype.get_rendered = function () {
535 HeadingCell.prototype.get_rendered = function () {
538 var r = this.element.find("div.text_cell_render");
536 var r = this.element.find("div.text_cell_render");
539 return r.children().first().html();
537 return r.children().first().html();
540 };
538 };
541
539
542
540
543 HeadingCell.prototype.render = function () {
541 HeadingCell.prototype.render = function () {
544 if (this.rendered === false) {
542 var cont = IPython.TextCell.prototype.render.apply(this);
543 if (cont) {
545 var text = this.get_text();
544 var text = this.get_text();
546 var math = null;
545 var math = null;
547 // Markdown headings must be a single line
546 // Markdown headings must be a single line
548 text = text.replace(/\n/g, ' ');
547 text = text.replace(/\n/g, ' ');
549 if (text === "") { text = this.placeholder; }
548 if (text === "") { text = this.placeholder; }
550 text = Array(this.level + 1).join("#") + " " + text;
549 text = Array(this.level + 1).join("#") + " " + text;
551 var text_and_math = IPython.mathjaxutils.remove_math(text);
550 var text_and_math = IPython.mathjaxutils.remove_math(text);
552 text = text_and_math[0];
551 text = text_and_math[0];
553 math = text_and_math[1];
552 math = text_and_math[1];
554 var html = marked.parser(marked.lexer(text));
553 var html = marked.parser(marked.lexer(text));
555 var h = $(IPython.mathjaxutils.replace_math(html, math));
554 var h = $(IPython.mathjaxutils.replace_math(html, math));
556 // add id and linkback anchor
555 // add id and linkback anchor
557 var hash = h.text().replace(/ /g, '-');
556 var hash = h.text().replace(/ /g, '-');
558 h.attr('id', hash);
557 h.attr('id', hash);
559 h.append(
558 h.append(
560 $('<a/>')
559 $('<a/>')
561 .addClass('anchor-link')
560 .addClass('anchor-link')
562 .attr('href', '#' + hash)
561 .attr('href', '#' + hash)
563 .text('ΒΆ')
562 .text('ΒΆ')
564 );
563 );
565
564
566 this.set_rendered(h);
565 this.set_rendered(h);
567 this.typeset();
566 this.typeset();
568 this.element.find('div.text_cell_input').hide();
567 this.element.find('div.text_cell_input').hide();
569 this.element.find("div.text_cell_render").show();
568 this.element.find("div.text_cell_render").show();
570 this.rendered = true;
569
571 };
570 };
571 return cont;
572 };
572 };
573
573
574 IPython.TextCell = TextCell;
574 IPython.TextCell = TextCell;
575 IPython.MarkdownCell = MarkdownCell;
575 IPython.MarkdownCell = MarkdownCell;
576 IPython.RawCell = RawCell;
576 IPython.RawCell = RawCell;
577 IPython.HeadingCell = HeadingCell;
577 IPython.HeadingCell = HeadingCell;
578
578
579
579
580 return IPython;
580 return IPython;
581
581
582 }(IPython));
582 }(IPython));
583
583
@@ -1,39 +1,47 b''
1 div.cell {
1 div.cell {
2 border: 1px solid transparent;
2 border: 1px solid transparent;
3 .vbox();
3 .vbox();
4
4
5 &.selected {
5 &.selected {
6 .corner-all;
6 .corner-all;
7 border : thin @border_color solid;
7 border : thin @border_color solid;
8 }
8 }
9
10 &.edit_mode {
11 .corner-all;
12 border : thin green solid;
13 }
14 }
15
16 div.cell {
9 width: 100%;
17 width: 100%;
10 padding: 5px 5px 5px 0px;
18 padding: 5px 5px 5px 0px;
11 /* This acts as a spacer between cells, that is outside the border */
19 /* This acts as a spacer between cells, that is outside the border */
12 margin: 0px;
20 margin: 0px;
13 outline: none;
21 outline: none;
14 }
22 }
15
23
16 div.prompt {
24 div.prompt {
17 /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
25 /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
18 min-width: 11ex;
26 min-width: 11ex;
19 /* This padding is tuned to match the padding on the CodeMirror editor. */
27 /* This padding is tuned to match the padding on the CodeMirror editor. */
20 padding: @code_padding;
28 padding: @code_padding;
21 margin: 0px;
29 margin: 0px;
22 font-family: @monoFontFamily;
30 font-family: @monoFontFamily;
23 text-align: right;
31 text-align: right;
24 /* This has to match that of the the CodeMirror class line-height below */
32 /* This has to match that of the the CodeMirror class line-height below */
25 line-height: @code_line_height;
33 line-height: @code_line_height;
26 }
34 }
27
35
28 div.inner_cell {
36 div.inner_cell {
29 .vbox();
37 .vbox();
30 .box-flex1();
38 .box-flex1();
31 }
39 }
32
40
33 /* This is needed so that empty prompt areas can collapse to zero height when there
41 /* This is needed so that empty prompt areas can collapse to zero height when there
34 is no content in the output_subarea and the prompt. The main purpose of this is
42 is no content in the output_subarea and the prompt. The main purpose of this is
35 to make sure that empty JavaScript output_subareas have no height. */
43 to make sure that empty JavaScript output_subareas have no height. */
36 div.prompt:empty {
44 div.prompt:empty {
37 padding-top: 0;
45 padding-top: 0;
38 padding-bottom: 0;
46 padding-bottom: 0;
39 }
47 }
@@ -1,148 +1,150 b''
1 .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}
1 .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}
2 .clearfix:after{clear:both;}
2 .clearfix:after{clear:both;}
3 .hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
3 .hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
4 .input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
4 .input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
5 .border-box-sizing{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;}
5 .border-box-sizing{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;}
6 .corner-all{border-radius:4px;}
6 .corner-all{border-radius:4px;}
7 .hbox{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
7 .hbox{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
8 .hbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
8 .hbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
9 .vbox{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
9 .vbox{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
10 .vbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
10 .vbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
11 .reverse{-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse;}
11 .reverse{-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse;}
12 .box-flex0{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
12 .box-flex0{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
13 .box-flex1{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
13 .box-flex1{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
14 .box-flex{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
14 .box-flex{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
15 .box-flex2{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;}
15 .box-flex2{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;}
16 .box-group1{-webkit-box-flex-group:1;-moz-box-flex-group:1;box-flex-group:1;}
16 .box-group1{-webkit-box-flex-group:1;-moz-box-flex-group:1;box-flex-group:1;}
17 .box-group2{-webkit-box-flex-group:2;-moz-box-flex-group:2;box-flex-group:2;}
17 .box-group2{-webkit-box-flex-group:2;-moz-box-flex-group:2;box-flex-group:2;}
18 .start{-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;}
18 .start{-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;}
19 .end{-webkit-box-pack:end;-moz-box-pack:end;box-pack:end;}
19 .end{-webkit-box-pack:end;-moz-box-pack:end;box-pack:end;}
20 .center{-webkit-box-pack:center;-moz-box-pack:center;box-pack:center;}
20 .center{-webkit-box-pack:center;-moz-box-pack:center;box-pack:center;}
21 .center-nav{display:inline-block;margin-bottom:-4px;}
21 .center-nav{display:inline-block;margin-bottom:-4px;}
22 .alternate_upload{background-color:none;display:inline;}
22 .alternate_upload{background-color:none;display:inline;}
23 .alternate_upload.form{padding:0;margin:0;}
23 .alternate_upload.form{padding:0;margin:0;}
24 .alternate_upload input.fileinput{background-color:red;position:relative;opacity:0;z-index:2;width:295px;margin-left:163px;cursor:pointer;}
24 .alternate_upload input.fileinput{background-color:red;position:relative;opacity:0;z-index:2;width:295px;margin-left:163px;cursor:pointer;}
25 .list_toolbar{padding:5px;height:25px;line-height:25px;}
25 .list_toolbar{padding:5px;height:25px;line-height:25px;}
26 .toolbar_info{float:left;}
26 .toolbar_info{float:left;}
27 .toolbar_buttons{float:right;}
27 .toolbar_buttons{float:right;}
28 .list_header{font-weight:bold;}
28 .list_header{font-weight:bold;}
29 .list_container{margin-top:16px;margin-bottom:16px;border:1px solid #ababab;border-radius:4px;}
29 .list_container{margin-top:16px;margin-bottom:16px;border:1px solid #ababab;border-radius:4px;}
30 .list_container>div{border-bottom:1px solid #ababab;}.list_container>div:hover .list-item{background-color:red;}
30 .list_container>div{border-bottom:1px solid #ababab;}.list_container>div:hover .list-item{background-color:red;}
31 .list_container>div:last-child{border:none;}
31 .list_container>div:last-child{border:none;}
32 .list_item:hover .list_item{background-color:#ddd;}
32 .list_item:hover .list_item{background-color:#ddd;}
33 .item_name{line-height:24px;}
33 .item_name{line-height:24px;}
34 .list_container>div>span,.list_container>div>div{padding:8px;}
34 .list_container>div>span,.list_container>div>div{padding:8px;}
35 .list_item a{text-decoration:none;}
35 .list_item a{text-decoration:none;}
36 input.nbname_input{height:15px;}
36 input.nbname_input{height:15px;}
37 .highlight_text{color:blue;}
37 .highlight_text{color:blue;}
38 #project_name>.breadcrumb{padding:0px;margin-bottom:0px;background-color:transparent;font-weight:bold;}
38 #project_name>.breadcrumb{padding:0px;margin-bottom:0px;background-color:transparent;font-weight:bold;}
39 input.engine_num_input{height:20px;margin-bottom:2px;padding-top:0;padding-bottom:0;width:60px;}
39 input.engine_num_input{height:20px;margin-bottom:2px;padding-top:0;padding-bottom:0;width:60px;}
40 .ansibold{font-weight:bold;}
40 .ansibold{font-weight:bold;}
41 .ansiblack{color:black;}
41 .ansiblack{color:black;}
42 .ansired{color:darkred;}
42 .ansired{color:darkred;}
43 .ansigreen{color:darkgreen;}
43 .ansigreen{color:darkgreen;}
44 .ansiyellow{color:brown;}
44 .ansiyellow{color:brown;}
45 .ansiblue{color:darkblue;}
45 .ansiblue{color:darkblue;}
46 .ansipurple{color:darkviolet;}
46 .ansipurple{color:darkviolet;}
47 .ansicyan{color:steelblue;}
47 .ansicyan{color:steelblue;}
48 .ansigray{color:gray;}
48 .ansigray{color:gray;}
49 .ansibgblack{background-color:black;}
49 .ansibgblack{background-color:black;}
50 .ansibgred{background-color:red;}
50 .ansibgred{background-color:red;}
51 .ansibggreen{background-color:green;}
51 .ansibggreen{background-color:green;}
52 .ansibgyellow{background-color:yellow;}
52 .ansibgyellow{background-color:yellow;}
53 .ansibgblue{background-color:blue;}
53 .ansibgblue{background-color:blue;}
54 .ansibgpurple{background-color:magenta;}
54 .ansibgpurple{background-color:magenta;}
55 .ansibgcyan{background-color:cyan;}
55 .ansibgcyan{background-color:cyan;}
56 .ansibggray{background-color:gray;}
56 .ansibggray{background-color:gray;}
57 div.cell{border:1px solid transparent;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;padding:5px 5px 5px 0px;margin:0px;outline:none;}div.cell.selected{border-radius:4px;border:thin #ababab solid;}
57 div.cell{border:1px solid transparent;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}div.cell.selected{border-radius:4px;border:thin #ababab solid;}
58 div.cell.edit_mode{border-radius:4px;border:thin green solid;}
59 div.cell{width:100%;padding:5px 5px 5px 0px;margin:0px;outline:none;}
58 div.prompt{min-width:11ex;padding:0.4em;margin:0px;font-family:monospace;text-align:right;line-height:1.231em;}
60 div.prompt{min-width:11ex;padding:0.4em;margin:0px;font-family:monospace;text-align:right;line-height:1.231em;}
59 div.inner_cell{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
61 div.inner_cell{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
60 div.prompt:empty{padding-top:0;padding-bottom:0;}
62 div.prompt:empty{padding-top:0;padding-bottom:0;}
61 div.input{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
63 div.input{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
62 div.input_area{border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7;}
64 div.input_area{border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7;}
63 div.input_prompt{color:navy;border-top:1px solid transparent;}
65 div.input_prompt{color:navy;border-top:1px solid transparent;}
64 .CodeMirror{line-height:1.231em;height:auto;background:none;}
66 .CodeMirror{line-height:1.231em;height:auto;background:none;}
65 .CodeMirror-scroll{overflow-y:hidden;overflow-x:auto;}
67 .CodeMirror-scroll{overflow-y:hidden;overflow-x:auto;}
66 @-moz-document url-prefix(){.CodeMirror-scroll{overflow-x:hidden;}}.CodeMirror-lines{padding:0.4em;}
68 @-moz-document url-prefix(){.CodeMirror-scroll{overflow-x:hidden;}}.CodeMirror-lines{padding:0.4em;}
67 .CodeMirror-linenumber{padding:0 8px 0 4px;}
69 .CodeMirror-linenumber{padding:0 8px 0 4px;}
68 .CodeMirror-gutters{border-bottom-left-radius:4px;border-top-left-radius:4px;}
70 .CodeMirror-gutters{border-bottom-left-radius:4px;border-top-left-radius:4px;}
69 .CodeMirror pre{padding:0;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
71 .CodeMirror pre{padding:0;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
70 pre code{display:block;padding:0.5em;}
72 pre code{display:block;padding:0.5em;}
71 .highlight-base,pre code,pre .subst,pre .tag .title,pre .lisp .title,pre .clojure .built_in,pre .nginx .title{color:black;}
73 .highlight-base,pre code,pre .subst,pre .tag .title,pre .lisp .title,pre .clojure .built_in,pre .nginx .title{color:black;}
72 .highlight-string,pre .string,pre .constant,pre .parent,pre .tag .value,pre .rules .value,pre .rules .value .number,pre .preprocessor,pre .ruby .symbol,pre .ruby .symbol .string,pre .aggregate,pre .template_tag,pre .django .variable,pre .smalltalk .class,pre .addition,pre .flow,pre .stream,pre .bash .variable,pre .apache .tag,pre .apache .cbracket,pre .tex .command,pre .tex .special,pre .erlang_repl .function_or_atom,pre .markdown .header{color:#BA2121;}
74 .highlight-string,pre .string,pre .constant,pre .parent,pre .tag .value,pre .rules .value,pre .rules .value .number,pre .preprocessor,pre .ruby .symbol,pre .ruby .symbol .string,pre .aggregate,pre .template_tag,pre .django .variable,pre .smalltalk .class,pre .addition,pre .flow,pre .stream,pre .bash .variable,pre .apache .tag,pre .apache .cbracket,pre .tex .command,pre .tex .special,pre .erlang_repl .function_or_atom,pre .markdown .header{color:#BA2121;}
73 .highlight-comment,pre .comment,pre .annotation,pre .template_comment,pre .diff .header,pre .chunk,pre .markdown .blockquote{color:#408080;font-style:italic;}
75 .highlight-comment,pre .comment,pre .annotation,pre .template_comment,pre .diff .header,pre .chunk,pre .markdown .blockquote{color:#408080;font-style:italic;}
74 .highlight-number,pre .number,pre .date,pre .regexp,pre .literal,pre .smalltalk .symbol,pre .smalltalk .char,pre .go .constant,pre .change,pre .markdown .bullet,pre .markdown .link_url{color:#080;}
76 .highlight-number,pre .number,pre .date,pre .regexp,pre .literal,pre .smalltalk .symbol,pre .smalltalk .char,pre .go .constant,pre .change,pre .markdown .bullet,pre .markdown .link_url{color:#080;}
75 pre .label,pre .javadoc,pre .ruby .string,pre .decorator,pre .filter .argument,pre .localvars,pre .array,pre .attr_selector,pre .important,pre .pseudo,pre .pi,pre .doctype,pre .deletion,pre .envvar,pre .shebang,pre .apache .sqbracket,pre .nginx .built_in,pre .tex .formula,pre .erlang_repl .reserved,pre .prompt,pre .markdown .link_label,pre .vhdl .attribute,pre .clojure .attribute,pre .coffeescript .property{color:#8888ff;}
77 pre .label,pre .javadoc,pre .ruby .string,pre .decorator,pre .filter .argument,pre .localvars,pre .array,pre .attr_selector,pre .important,pre .pseudo,pre .pi,pre .doctype,pre .deletion,pre .envvar,pre .shebang,pre .apache .sqbracket,pre .nginx .built_in,pre .tex .formula,pre .erlang_repl .reserved,pre .prompt,pre .markdown .link_label,pre .vhdl .attribute,pre .clojure .attribute,pre .coffeescript .property{color:#8888ff;}
76 .highlight-keyword,pre .keyword,pre .id,pre .phpdoc,pre .aggregate,pre .css .tag,pre .javadoctag,pre .phpdoc,pre .yardoctag,pre .smalltalk .class,pre .winutils,pre .bash .variable,pre .apache .tag,pre .go .typename,pre .tex .command,pre .markdown .strong,pre .request,pre .status{color:#008000;font-weight:bold;}
78 .highlight-keyword,pre .keyword,pre .id,pre .phpdoc,pre .aggregate,pre .css .tag,pre .javadoctag,pre .phpdoc,pre .yardoctag,pre .smalltalk .class,pre .winutils,pre .bash .variable,pre .apache .tag,pre .go .typename,pre .tex .command,pre .markdown .strong,pre .request,pre .status{color:#008000;font-weight:bold;}
77 .highlight-builtin,pre .built_in{color:#008000;}
79 .highlight-builtin,pre .built_in{color:#008000;}
78 pre .markdown .emphasis{font-style:italic;}
80 pre .markdown .emphasis{font-style:italic;}
79 pre .nginx .built_in{font-weight:normal;}
81 pre .nginx .built_in{font-weight:normal;}
80 pre .coffeescript .javascript,pre .javascript .xml,pre .tex .formula,pre .xml .javascript,pre .xml .vbscript,pre .xml .css,pre .xml .cdata{opacity:0.5;}
82 pre .coffeescript .javascript,pre .javascript .xml,pre .tex .formula,pre .xml .javascript,pre .xml .vbscript,pre .xml .css,pre .xml .cdata{opacity:0.5;}
81 .cm-s-ipython span.cm-variable{color:black;}
83 .cm-s-ipython span.cm-variable{color:black;}
82 .cm-s-ipython span.cm-keyword{color:#008000;font-weight:bold;}
84 .cm-s-ipython span.cm-keyword{color:#008000;font-weight:bold;}
83 .cm-s-ipython span.cm-number{color:#080;}
85 .cm-s-ipython span.cm-number{color:#080;}
84 .cm-s-ipython span.cm-comment{color:#408080;font-style:italic;}
86 .cm-s-ipython span.cm-comment{color:#408080;font-style:italic;}
85 .cm-s-ipython span.cm-string{color:#BA2121;}
87 .cm-s-ipython span.cm-string{color:#BA2121;}
86 .cm-s-ipython span.cm-builtin{color:#008000;}
88 .cm-s-ipython span.cm-builtin{color:#008000;}
87 .cm-s-ipython span.cm-error{color:#f00;}
89 .cm-s-ipython span.cm-error{color:#f00;}
88 .cm-s-ipython span.cm-operator{color:#AA22FF;font-weight:bold;}
90 .cm-s-ipython span.cm-operator{color:#AA22FF;font-weight:bold;}
89 .cm-s-ipython span.cm-meta{color:#AA22FF;}
91 .cm-s-ipython span.cm-meta{color:#AA22FF;}
90 .cm-s-ipython span.cm-tab{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);background-position:right;background-repeat:no-repeat;}
92 .cm-s-ipython span.cm-tab{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);background-position:right;background-repeat:no-repeat;}
91 div.output_wrapper{position:relative;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
93 div.output_wrapper{position:relative;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
92 div.output_scroll{height:24em;width:100%;overflow:auto;border-radius:4px;-webkit-box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);-moz-box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);}
94 div.output_scroll{height:24em;width:100%;overflow:auto;border-radius:4px;-webkit-box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);-moz-box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);}
93 div.output_collapsed{margin:0px;padding:0px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
95 div.output_collapsed{margin:0px;padding:0px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
94 div.out_prompt_overlay{height:100%;padding:0px 0.4em;position:absolute;border-radius:4px;}
96 div.out_prompt_overlay{height:100%;padding:0px 0.4em;position:absolute;border-radius:4px;}
95 div.out_prompt_overlay:hover{-webkit-box-shadow:inset 0 0 1px #000000;-moz-box-shadow:inset 0 0 1px #000000;box-shadow:inset 0 0 1px #000000;background:rgba(240, 240, 240, 0.5);}
97 div.out_prompt_overlay:hover{-webkit-box-shadow:inset 0 0 1px #000000;-moz-box-shadow:inset 0 0 1px #000000;box-shadow:inset 0 0 1px #000000;background:rgba(240, 240, 240, 0.5);}
96 div.output_prompt{color:darkred;}
98 div.output_prompt{color:darkred;}
97 div.output_area{padding:0px;page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}div.output_area .MathJax_Display{text-align:left !important;}
99 div.output_area{padding:0px;page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}div.output_area .MathJax_Display{text-align:left !important;}
98 div.output_area .rendered_html table{margin-left:0;margin-right:0;}
100 div.output_area .rendered_html table{margin-left:0;margin-right:0;}
99 div.output_area .rendered_html img{margin-left:0;margin-right:0;}
101 div.output_area .rendered_html img{margin-left:0;margin-right:0;}
100 .output{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
102 .output{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
101 div.output_area pre{font-family:monospace;margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;color:black;background-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;line-height:inherit;}
103 div.output_area pre{font-family:monospace;margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;color:black;background-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;line-height:inherit;}
102 div.output_subarea{padding:0.4em 0.4em 0em 0.4em;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
104 div.output_subarea{padding:0.4em 0.4em 0em 0.4em;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
103 div.output_text{text-align:left;color:#000000;font-family:monospace;line-height:1.231em;}
105 div.output_text{text-align:left;color:#000000;font-family:monospace;line-height:1.231em;}
104 div.output_stderr{background:#fdd;}
106 div.output_stderr{background:#fdd;}
105 div.output_latex{text-align:left;}
107 div.output_latex{text-align:left;}
106 div.output_javascript:empty{padding:0;}
108 div.output_javascript:empty{padding:0;}
107 .js-error{color:darkred;}
109 .js-error{color:darkred;}
108 div.raw_input{padding-top:0px;padding-bottom:0px;height:1em;line-height:1em;font-family:monospace;}
110 div.raw_input{padding-top:0px;padding-bottom:0px;height:1em;line-height:1em;font-family:monospace;}
109 span.input_prompt{font-family:inherit;}
111 span.input_prompt{font-family:inherit;}
110 input.raw_input{font-family:inherit;font-size:inherit;color:inherit;width:auto;margin:-2px 0px 0px 1px;padding-left:1px;padding-top:2px;height:1em;}
112 input.raw_input{font-family:inherit;font-size:inherit;color:inherit;width:auto;margin:-2px 0px 0px 1px;padding-left:1px;padding-top:2px;height:1em;}
111 p.p-space{margin-bottom:10px;}
113 p.p-space{margin-bottom:10px;}
112 .rendered_html{color:black;}.rendered_html em{font-style:italic;}
114 .rendered_html{color:black;}.rendered_html em{font-style:italic;}
113 .rendered_html strong{font-weight:bold;}
115 .rendered_html strong{font-weight:bold;}
114 .rendered_html u{text-decoration:underline;}
116 .rendered_html u{text-decoration:underline;}
115 .rendered_html :link{text-decoration:underline;}
117 .rendered_html :link{text-decoration:underline;}
116 .rendered_html :visited{text-decoration:underline;}
118 .rendered_html :visited{text-decoration:underline;}
117 .rendered_html h1{font-size:197%;margin:.65em 0;font-weight:bold;}
119 .rendered_html h1{font-size:197%;margin:.65em 0;font-weight:bold;}
118 .rendered_html h2{font-size:153.9%;margin:.75em 0;font-weight:bold;}
120 .rendered_html h2{font-size:153.9%;margin:.75em 0;font-weight:bold;}
119 .rendered_html h3{font-size:123.1%;margin:.85em 0;font-weight:bold;}
121 .rendered_html h3{font-size:123.1%;margin:.85em 0;font-weight:bold;}
120 .rendered_html h4{font-size:100%;margin:0.95em 0;font-weight:bold;}
122 .rendered_html h4{font-size:100%;margin:0.95em 0;font-weight:bold;}
121 .rendered_html h5{font-size:85%;margin:1.5em 0;font-weight:bold;}
123 .rendered_html h5{font-size:85%;margin:1.5em 0;font-weight:bold;}
122 .rendered_html h6{font-size:77%;margin:1.65em 0;font-weight:bold;}
124 .rendered_html h6{font-size:77%;margin:1.65em 0;font-weight:bold;}
123 .rendered_html ul{list-style:disc;margin:1em 2em;}
125 .rendered_html ul{list-style:disc;margin:1em 2em;}
124 .rendered_html ul ul{list-style:square;margin:0em 2em;}
126 .rendered_html ul ul{list-style:square;margin:0em 2em;}
125 .rendered_html ul ul ul{list-style:circle;margin:0em 2em;}
127 .rendered_html ul ul ul{list-style:circle;margin:0em 2em;}
126 .rendered_html ol{list-style:decimal;margin:1em 2em;}
128 .rendered_html ol{list-style:decimal;margin:1em 2em;}
127 .rendered_html ol ol{list-style:upper-alpha;margin:0em 2em;}
129 .rendered_html ol ol{list-style:upper-alpha;margin:0em 2em;}
128 .rendered_html ol ol ol{list-style:lower-alpha;margin:0em 2em;}
130 .rendered_html ol ol ol{list-style:lower-alpha;margin:0em 2em;}
129 .rendered_html ol ol ol ol{list-style:lower-roman;margin:0em 2em;}
131 .rendered_html ol ol ol ol{list-style:lower-roman;margin:0em 2em;}
130 .rendered_html ol ol ol ol ol{list-style:decimal;margin:0em 2em;}
132 .rendered_html ol ol ol ol ol{list-style:decimal;margin:0em 2em;}
131 .rendered_html hr{color:black;background-color:black;}
133 .rendered_html hr{color:black;background-color:black;}
132 .rendered_html pre{margin:1em 2em;}
134 .rendered_html pre{margin:1em 2em;}
133 .rendered_html pre,.rendered_html code{border:0;background-color:#ffffff;color:#000000;font-size:100%;padding:0px;}
135 .rendered_html pre,.rendered_html code{border:0;background-color:#ffffff;color:#000000;font-size:100%;padding:0px;}
134 .rendered_html blockquote{margin:1em 2em;}
136 .rendered_html blockquote{margin:1em 2em;}
135 .rendered_html table{margin-left:auto;margin-right:auto;border:1px solid black;border-collapse:collapse;}
137 .rendered_html table{margin-left:auto;margin-right:auto;border:1px solid black;border-collapse:collapse;}
136 .rendered_html tr,.rendered_html th,.rendered_html td{border:1px solid black;border-collapse:collapse;margin:1em 2em;}
138 .rendered_html tr,.rendered_html th,.rendered_html td{border:1px solid black;border-collapse:collapse;margin:1em 2em;}
137 .rendered_html td,.rendered_html th{text-align:left;vertical-align:middle;padding:4px;}
139 .rendered_html td,.rendered_html th{text-align:left;vertical-align:middle;padding:4px;}
138 .rendered_html th{font-weight:bold;}
140 .rendered_html th{font-weight:bold;}
139 .rendered_html p{text-align:justify;}
141 .rendered_html p{text-align:justify;}
140 .rendered_html img{display:block;margin-left:auto;margin-right:auto;}
142 .rendered_html img{display:block;margin-left:auto;margin-right:auto;}
141 .rendered_html *+p{margin-top:1em;}
143 .rendered_html *+p{margin-top:1em;}
142 .rendered_html *+table{margin-top:1em;}
144 .rendered_html *+table{margin-top:1em;}
143 .rendered_html *+img{margin-top:1em;}
145 .rendered_html *+img{margin-top:1em;}
144 div.text_cell{padding:5px 5px 5px 0px;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
146 div.text_cell{padding:5px 5px 5px 0px;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
145 div.text_cell_input{color:#000000;border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7;}
147 div.text_cell_input{color:#000000;border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7;}
146 div.text_cell_render{outline:none;resize:none;width:inherit;border-style:none;padding:5px;color:#000000;}
148 div.text_cell_render{outline:none;resize:none;width:inherit;border-style:none;padding:5px;color:#000000;}
147 a.anchor-link:link{text-decoration:none;padding:0px 20px;visibility:hidden;}
149 a.anchor-link:link{text-decoration:none;padding:0px 20px;visibility:hidden;}
148 h1:hover .anchor-link,h2:hover .anchor-link,h3:hover .anchor-link,h4:hover .anchor-link,h5:hover .anchor-link,h6:hover .anchor-link{visibility:visible;}
150 h1:hover .anchor-link,h2:hover .anchor-link,h3:hover .anchor-link,h4:hover .anchor-link,h5:hover .anchor-link,h6:hover .anchor-link{visibility:visible;}
@@ -1,1581 +1,1583 b''
1 .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}
1 .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}
2 .clearfix:after{clear:both;}
2 .clearfix:after{clear:both;}
3 .hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
3 .hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
4 .input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
4 .input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
5 article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
5 article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
6 audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
6 audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
7 audio:not([controls]){display:none;}
7 audio:not([controls]){display:none;}
8 html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
8 html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
9 a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
9 a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
10 a:hover,a:active{outline:0;}
10 a:hover,a:active{outline:0;}
11 sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}
11 sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}
12 sup{top:-0.5em;}
12 sup{top:-0.5em;}
13 sub{bottom:-0.25em;}
13 sub{bottom:-0.25em;}
14 img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;}
14 img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;}
15 #map_canvas img,.google-maps img{max-width:none;}
15 #map_canvas img,.google-maps img{max-width:none;}
16 button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}
16 button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}
17 button,input{*overflow:visible;line-height:normal;}
17 button,input{*overflow:visible;line-height:normal;}
18 button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}
18 button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}
19 button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}
19 button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}
20 label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer;}
20 label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer;}
21 input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;}
21 input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;}
22 input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}
22 input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}
23 textarea{overflow:auto;vertical-align:top;}
23 textarea{overflow:auto;vertical-align:top;}
24 @media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important;} a,a:visited{text-decoration:underline;} a[href]:after{content:" (" attr(href) ")";} abbr[title]:after{content:" (" attr(title) ")";} .ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:"";} pre,blockquote{border:1px solid #999;page-break-inside:avoid;} thead{display:table-header-group;} tr,img{page-break-inside:avoid;} img{max-width:100% !important;} @page {margin:0.5cm;}p,h2,h3{orphans:3;widows:3;} h2,h3{page-break-after:avoid;}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:20px;color:#000000;background-color:#ffffff;}
24 @media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important;} a,a:visited{text-decoration:underline;} a[href]:after{content:" (" attr(href) ")";} abbr[title]:after{content:" (" attr(title) ")";} .ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:"";} pre,blockquote{border:1px solid #999;page-break-inside:avoid;} thead{display:table-header-group;} tr,img{page-break-inside:avoid;} img{max-width:100% !important;} @page {margin:0.5cm;}p,h2,h3{orphans:3;widows:3;} h2,h3{page-break-after:avoid;}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:20px;color:#000000;background-color:#ffffff;}
25 a{color:#0088cc;text-decoration:none;}
25 a{color:#0088cc;text-decoration:none;}
26 a:hover,a:focus{color:#005580;text-decoration:underline;}
26 a:hover,a:focus{color:#005580;text-decoration:underline;}
27 .img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
27 .img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
28 .img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);}
28 .img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);}
29 .img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px;}
29 .img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px;}
30 .row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;}
30 .row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;}
31 .row:after{clear:both;}
31 .row:after{clear:both;}
32 .row:before,.row:after{display:table;content:"";line-height:0;}
32 .row:before,.row:after{display:table;content:"";line-height:0;}
33 .row:after{clear:both;}
33 .row:after{clear:both;}
34 [class*="span"]{float:left;min-height:1px;margin-left:20px;}
34 [class*="span"]{float:left;min-height:1px;margin-left:20px;}
35 .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
35 .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
36 .span12{width:940px;}
36 .span12{width:940px;}
37 .span11{width:860px;}
37 .span11{width:860px;}
38 .span10{width:780px;}
38 .span10{width:780px;}
39 .span9{width:700px;}
39 .span9{width:700px;}
40 .span8{width:620px;}
40 .span8{width:620px;}
41 .span7{width:540px;}
41 .span7{width:540px;}
42 .span6{width:460px;}
42 .span6{width:460px;}
43 .span5{width:380px;}
43 .span5{width:380px;}
44 .span4{width:300px;}
44 .span4{width:300px;}
45 .span3{width:220px;}
45 .span3{width:220px;}
46 .span2{width:140px;}
46 .span2{width:140px;}
47 .span1{width:60px;}
47 .span1{width:60px;}
48 .offset12{margin-left:980px;}
48 .offset12{margin-left:980px;}
49 .offset11{margin-left:900px;}
49 .offset11{margin-left:900px;}
50 .offset10{margin-left:820px;}
50 .offset10{margin-left:820px;}
51 .offset9{margin-left:740px;}
51 .offset9{margin-left:740px;}
52 .offset8{margin-left:660px;}
52 .offset8{margin-left:660px;}
53 .offset7{margin-left:580px;}
53 .offset7{margin-left:580px;}
54 .offset6{margin-left:500px;}
54 .offset6{margin-left:500px;}
55 .offset5{margin-left:420px;}
55 .offset5{margin-left:420px;}
56 .offset4{margin-left:340px;}
56 .offset4{margin-left:340px;}
57 .offset3{margin-left:260px;}
57 .offset3{margin-left:260px;}
58 .offset2{margin-left:180px;}
58 .offset2{margin-left:180px;}
59 .offset1{margin-left:100px;}
59 .offset1{margin-left:100px;}
60 .row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;}
60 .row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;}
61 .row:after{clear:both;}
61 .row:after{clear:both;}
62 .row:before,.row:after{display:table;content:"";line-height:0;}
62 .row:before,.row:after{display:table;content:"";line-height:0;}
63 .row:after{clear:both;}
63 .row:after{clear:both;}
64 [class*="span"]{float:left;min-height:1px;margin-left:20px;}
64 [class*="span"]{float:left;min-height:1px;margin-left:20px;}
65 .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
65 .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
66 .span12{width:940px;}
66 .span12{width:940px;}
67 .span11{width:860px;}
67 .span11{width:860px;}
68 .span10{width:780px;}
68 .span10{width:780px;}
69 .span9{width:700px;}
69 .span9{width:700px;}
70 .span8{width:620px;}
70 .span8{width:620px;}
71 .span7{width:540px;}
71 .span7{width:540px;}
72 .span6{width:460px;}
72 .span6{width:460px;}
73 .span5{width:380px;}
73 .span5{width:380px;}
74 .span4{width:300px;}
74 .span4{width:300px;}
75 .span3{width:220px;}
75 .span3{width:220px;}
76 .span2{width:140px;}
76 .span2{width:140px;}
77 .span1{width:60px;}
77 .span1{width:60px;}
78 .offset12{margin-left:980px;}
78 .offset12{margin-left:980px;}
79 .offset11{margin-left:900px;}
79 .offset11{margin-left:900px;}
80 .offset10{margin-left:820px;}
80 .offset10{margin-left:820px;}
81 .offset9{margin-left:740px;}
81 .offset9{margin-left:740px;}
82 .offset8{margin-left:660px;}
82 .offset8{margin-left:660px;}
83 .offset7{margin-left:580px;}
83 .offset7{margin-left:580px;}
84 .offset6{margin-left:500px;}
84 .offset6{margin-left:500px;}
85 .offset5{margin-left:420px;}
85 .offset5{margin-left:420px;}
86 .offset4{margin-left:340px;}
86 .offset4{margin-left:340px;}
87 .offset3{margin-left:260px;}
87 .offset3{margin-left:260px;}
88 .offset2{margin-left:180px;}
88 .offset2{margin-left:180px;}
89 .offset1{margin-left:100px;}
89 .offset1{margin-left:100px;}
90 .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
90 .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
91 .row-fluid:after{clear:both;}
91 .row-fluid:after{clear:both;}
92 .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
92 .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
93 .row-fluid:after{clear:both;}
93 .row-fluid:after{clear:both;}
94 .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;}
94 .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;}
95 .row-fluid [class*="span"]:first-child{margin-left:0;}
95 .row-fluid [class*="span"]:first-child{margin-left:0;}
96 .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;}
96 .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;}
97 .row-fluid .span12{width:100%;*width:99.94680851063829%;}
97 .row-fluid .span12{width:100%;*width:99.94680851063829%;}
98 .row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;}
98 .row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;}
99 .row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;}
99 .row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;}
100 .row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;}
100 .row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;}
101 .row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;}
101 .row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;}
102 .row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;}
102 .row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;}
103 .row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;}
103 .row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;}
104 .row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;}
104 .row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;}
105 .row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;}
105 .row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;}
106 .row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;}
106 .row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;}
107 .row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;}
107 .row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;}
108 .row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;}
108 .row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;}
109 .row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;}
109 .row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;}
110 .row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;}
110 .row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;}
111 .row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;}
111 .row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;}
112 .row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;}
112 .row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;}
113 .row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;}
113 .row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;}
114 .row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;}
114 .row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;}
115 .row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;}
115 .row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;}
116 .row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;}
116 .row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;}
117 .row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;}
117 .row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;}
118 .row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;}
118 .row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;}
119 .row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;}
119 .row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;}
120 .row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;}
120 .row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;}
121 .row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;}
121 .row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;}
122 .row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;}
122 .row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;}
123 .row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;}
123 .row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;}
124 .row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;}
124 .row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;}
125 .row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;}
125 .row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;}
126 .row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;}
126 .row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;}
127 .row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;}
127 .row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;}
128 .row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;}
128 .row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;}
129 .row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;}
129 .row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;}
130 .row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;}
130 .row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;}
131 .row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;}
131 .row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;}
132 .row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;}
132 .row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;}
133 .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
133 .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
134 .row-fluid:after{clear:both;}
134 .row-fluid:after{clear:both;}
135 .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
135 .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;}
136 .row-fluid:after{clear:both;}
136 .row-fluid:after{clear:both;}
137 .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;}
137 .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;}
138 .row-fluid [class*="span"]:first-child{margin-left:0;}
138 .row-fluid [class*="span"]:first-child{margin-left:0;}
139 .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;}
139 .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%;}
140 .row-fluid .span12{width:100%;*width:99.94680851063829%;}
140 .row-fluid .span12{width:100%;*width:99.94680851063829%;}
141 .row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;}
141 .row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%;}
142 .row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;}
142 .row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%;}
143 .row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;}
143 .row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%;}
144 .row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;}
144 .row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%;}
145 .row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;}
145 .row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%;}
146 .row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;}
146 .row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%;}
147 .row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;}
147 .row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%;}
148 .row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;}
148 .row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%;}
149 .row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;}
149 .row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%;}
150 .row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;}
150 .row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%;}
151 .row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;}
151 .row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%;}
152 .row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;}
152 .row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;}
153 .row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;}
153 .row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;}
154 .row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;}
154 .row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;}
155 .row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;}
155 .row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;}
156 .row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;}
156 .row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;}
157 .row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;}
157 .row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;}
158 .row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;}
158 .row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;}
159 .row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;}
159 .row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;}
160 .row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;}
160 .row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;}
161 .row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;}
161 .row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;}
162 .row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;}
162 .row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;}
163 .row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;}
163 .row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;}
164 .row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;}
164 .row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;}
165 .row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;}
165 .row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;}
166 .row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;}
166 .row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;}
167 .row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;}
167 .row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;}
168 .row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;}
168 .row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;}
169 .row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;}
169 .row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;}
170 .row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;}
170 .row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;}
171 .row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;}
171 .row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;}
172 .row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;}
172 .row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;}
173 .row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;}
173 .row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;}
174 .row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;}
174 .row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;}
175 .row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;}
175 .row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;}
176 [class*="span"].hide,.row-fluid [class*="span"].hide{display:none;}
176 [class*="span"].hide,.row-fluid [class*="span"].hide{display:none;}
177 [class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right;}
177 [class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right;}
178 .container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";line-height:0;}
178 .container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";line-height:0;}
179 .container:after{clear:both;}
179 .container:after{clear:both;}
180 .container:before,.container:after{display:table;content:"";line-height:0;}
180 .container:before,.container:after{display:table;content:"";line-height:0;}
181 .container:after{clear:both;}
181 .container:after{clear:both;}
182 .container:before,.container:after{display:table;content:"";line-height:0;}
182 .container:before,.container:after{display:table;content:"";line-height:0;}
183 .container:after{clear:both;}
183 .container:after{clear:both;}
184 .container:before,.container:after{display:table;content:"";line-height:0;}
184 .container:before,.container:after{display:table;content:"";line-height:0;}
185 .container:after{clear:both;}
185 .container:after{clear:both;}
186 .container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;}
186 .container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;}
187 .container-fluid:after{clear:both;}
187 .container-fluid:after{clear:both;}
188 .container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;}
188 .container-fluid:before,.container-fluid:after{display:table;content:"";line-height:0;}
189 .container-fluid:after{clear:both;}
189 .container-fluid:after{clear:both;}
190 p{margin:0 0 10px;}
190 p{margin:0 0 10px;}
191 .lead{margin-bottom:20px;font-size:19.5px;font-weight:200;line-height:30px;}
191 .lead{margin-bottom:20px;font-size:19.5px;font-weight:200;line-height:30px;}
192 small{font-size:85%;}
192 small{font-size:85%;}
193 strong{font-weight:bold;}
193 strong{font-weight:bold;}
194 em{font-style:italic;}
194 em{font-style:italic;}
195 cite{font-style:normal;}
195 cite{font-style:normal;}
196 .muted{color:#999999;}
196 .muted{color:#999999;}
197 a.muted:hover,a.muted:focus{color:#808080;}
197 a.muted:hover,a.muted:focus{color:#808080;}
198 .text-warning{color:#c09853;}
198 .text-warning{color:#c09853;}
199 a.text-warning:hover,a.text-warning:focus{color:#a47e3c;}
199 a.text-warning:hover,a.text-warning:focus{color:#a47e3c;}
200 .text-error{color:#b94a48;}
200 .text-error{color:#b94a48;}
201 a.text-error:hover,a.text-error:focus{color:#953b39;}
201 a.text-error:hover,a.text-error:focus{color:#953b39;}
202 .text-info{color:#3a87ad;}
202 .text-info{color:#3a87ad;}
203 a.text-info:hover,a.text-info:focus{color:#2d6987;}
203 a.text-info:hover,a.text-info:focus{color:#2d6987;}
204 .text-success{color:#468847;}
204 .text-success{color:#468847;}
205 a.text-success:hover,a.text-success:focus{color:#356635;}
205 a.text-success:hover,a.text-success:focus{color:#356635;}
206 .text-left{text-align:left;}
206 .text-left{text-align:left;}
207 .text-right{text-align:right;}
207 .text-right{text-align:right;}
208 .text-center{text-align:center;}
208 .text-center{text-align:center;}
209 h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999999;}
209 h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999999;}
210 h1,h2,h3{line-height:40px;}
210 h1,h2,h3{line-height:40px;}
211 h1{font-size:35.75px;}
211 h1{font-size:35.75px;}
212 h2{font-size:29.25px;}
212 h2{font-size:29.25px;}
213 h3{font-size:22.75px;}
213 h3{font-size:22.75px;}
214 h4{font-size:16.25px;}
214 h4{font-size:16.25px;}
215 h5{font-size:13px;}
215 h5{font-size:13px;}
216 h6{font-size:11.049999999999999px;}
216 h6{font-size:11.049999999999999px;}
217 h1 small{font-size:22.75px;}
217 h1 small{font-size:22.75px;}
218 h2 small{font-size:16.25px;}
218 h2 small{font-size:16.25px;}
219 h3 small{font-size:13px;}
219 h3 small{font-size:13px;}
220 h4 small{font-size:13px;}
220 h4 small{font-size:13px;}
221 .page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eeeeee;}
221 .page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eeeeee;}
222 ul,ol{padding:0;margin:0 0 10px 25px;}
222 ul,ol{padding:0;margin:0 0 10px 25px;}
223 ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
223 ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
224 li{line-height:20px;}
224 li{line-height:20px;}
225 ul.unstyled,ol.unstyled{margin-left:0;list-style:none;}
225 ul.unstyled,ol.unstyled{margin-left:0;list-style:none;}
226 ul.inline,ol.inline{margin-left:0;list-style:none;}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;*zoom:1;padding-left:5px;padding-right:5px;}
226 ul.inline,ol.inline{margin-left:0;list-style:none;}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;*zoom:1;padding-left:5px;padding-right:5px;}
227 dl{margin-bottom:20px;}
227 dl{margin-bottom:20px;}
228 dt,dd{line-height:20px;}
228 dt,dd{line-height:20px;}
229 dt{font-weight:bold;}
229 dt{font-weight:bold;}
230 dd{margin-left:10px;}
230 dd{margin-left:10px;}
231 .dl-horizontal{*zoom:1;}.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;}
231 .dl-horizontal{*zoom:1;}.dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;}
232 .dl-horizontal:after{clear:both;}
232 .dl-horizontal:after{clear:both;}
233 .dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;}
233 .dl-horizontal:before,.dl-horizontal:after{display:table;content:"";line-height:0;}
234 .dl-horizontal:after{clear:both;}
234 .dl-horizontal:after{clear:both;}
235 .dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
235 .dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
236 .dl-horizontal dd{margin-left:180px;}
236 .dl-horizontal dd{margin-left:180px;}
237 hr{margin:20px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;}
237 hr{margin:20px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;}
238 abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999;}
238 abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999;}
239 abbr.initialism{font-size:90%;text-transform:uppercase;}
239 abbr.initialism{font-size:90%;text-transform:uppercase;}
240 blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16.25px;font-weight:300;line-height:1.25;}
240 blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16.25px;font-weight:300;line-height:1.25;}
241 blockquote small{display:block;line-height:20px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
241 blockquote small{display:block;line-height:20px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
242 blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
242 blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
243 blockquote.pull-right small:before{content:'';}
243 blockquote.pull-right small:before{content:'';}
244 blockquote.pull-right small:after{content:'\00A0 \2014';}
244 blockquote.pull-right small:after{content:'\00A0 \2014';}
245 q:before,q:after,blockquote:before,blockquote:after{content:"";}
245 q:before,q:after,blockquote:before,blockquote:after{content:"";}
246 address{display:block;margin-bottom:20px;font-style:normal;line-height:20px;}
246 address{display:block;margin-bottom:20px;font-style:normal;line-height:20px;}
247 code,pre{padding:0 3px 2px;font-family:monospace;font-size:11px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
247 code,pre{padding:0 3px 2px;font-family:monospace;font-size:11px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
248 code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;white-space:nowrap;}
248 code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;white-space:nowrap;}
249 pre{display:block;padding:9.5px;margin:0 0 10px;font-size:12px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}pre.prettyprint{margin-bottom:20px;}
249 pre{display:block;padding:9.5px;margin:0 0 10px;font-size:12px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}pre.prettyprint{margin-bottom:20px;}
250 pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0;}
250 pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0;}
251 .pre-scrollable{max-height:340px;overflow-y:scroll;}
251 .pre-scrollable{max-height:340px;overflow-y:scroll;}
252 form{margin:0 0 20px;}
252 form{margin:0 0 20px;}
253 fieldset{padding:0;margin:0;border:0;}
253 fieldset{padding:0;margin:0;border:0;}
254 legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:19.5px;line-height:40px;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}legend small{font-size:15px;color:#999999;}
254 legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:19.5px;line-height:40px;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}legend small{font-size:15px;color:#999999;}
255 label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:20px;}
255 label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:20px;}
256 input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;}
256 input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;}
257 label{display:block;margin-bottom:5px;}
257 label{display:block;margin-bottom:5px;}
258 select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:13px;line-height:20px;color:#555555;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;vertical-align:middle;}
258 select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:13px;line-height:20px;color:#555555;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;vertical-align:middle;}
259 input,textarea,.uneditable-input{width:206px;}
259 input,textarea,.uneditable-input{width:206px;}
260 textarea{height:auto;}
260 textarea{height:auto;}
261 textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#ffffff;border:1px solid #cccccc;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear .2s, box-shadow linear .2s;-moz-transition:border linear .2s, box-shadow linear .2s;-o-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);}
261 textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#ffffff;border:1px solid #cccccc;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear .2s, box-shadow linear .2s;-moz-transition:border linear .2s, box-shadow linear .2s;-o-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);}
262 input[type="radio"],input[type="checkbox"]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal;}
262 input[type="radio"],input[type="checkbox"]{margin:4px 0 0;*margin-top:0;margin-top:1px \9;line-height:normal;}
263 input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto;}
263 input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto;}
264 select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px;}
264 select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px;}
265 select{width:220px;border:1px solid #cccccc;background-color:#ffffff;}
265 select{width:220px;border:1px solid #cccccc;background-color:#ffffff;}
266 select[multiple],select[size]{height:auto;}
266 select[multiple],select[size]{height:auto;}
267 select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
267 select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
268 .uneditable-input,.uneditable-textarea{color:#999999;background-color:#fcfcfc;border-color:#cccccc;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
268 .uneditable-input,.uneditable-textarea{color:#999999;background-color:#fcfcfc;border-color:#cccccc;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
269 .uneditable-input{overflow:hidden;white-space:nowrap;}
269 .uneditable-input{overflow:hidden;white-space:nowrap;}
270 .uneditable-textarea{width:auto;height:auto;}
270 .uneditable-textarea{width:auto;height:auto;}
271 input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;}
271 input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;}
272 input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;}
272 input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;}
273 input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;}
273 input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;}
274 input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;}
274 input:-moz-placeholder,textarea:-moz-placeholder{color:#999999;}
275 input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;}
275 input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999999;}
276 input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;}
276 input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999999;}
277 .radio,.checkbox{min-height:20px;padding-left:20px;}
277 .radio,.checkbox{min-height:20px;padding-left:20px;}
278 .radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px;}
278 .radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px;}
279 .controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}
279 .controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}
280 .radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;}
280 .radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;}
281 .radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}
281 .radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}
282 .input-mini{width:60px;}
282 .input-mini{width:60px;}
283 .input-small{width:90px;}
283 .input-small{width:90px;}
284 .input-medium{width:150px;}
284 .input-medium{width:150px;}
285 .input-large{width:210px;}
285 .input-large{width:210px;}
286 .input-xlarge{width:270px;}
286 .input-xlarge{width:270px;}
287 .input-xxlarge{width:530px;}
287 .input-xxlarge{width:530px;}
288 input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0;}
288 input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0;}
289 .input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block;}
289 .input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block;}
290 input,textarea,.uneditable-input{margin-left:0;}
290 input,textarea,.uneditable-input{margin-left:0;}
291 .controls-row [class*="span"]+[class*="span"]{margin-left:20px;}
291 .controls-row [class*="span"]+[class*="span"]{margin-left:20px;}
292 input.span12,textarea.span12,.uneditable-input.span12{width:926px;}
292 input.span12,textarea.span12,.uneditable-input.span12{width:926px;}
293 input.span11,textarea.span11,.uneditable-input.span11{width:846px;}
293 input.span11,textarea.span11,.uneditable-input.span11{width:846px;}
294 input.span10,textarea.span10,.uneditable-input.span10{width:766px;}
294 input.span10,textarea.span10,.uneditable-input.span10{width:766px;}
295 input.span9,textarea.span9,.uneditable-input.span9{width:686px;}
295 input.span9,textarea.span9,.uneditable-input.span9{width:686px;}
296 input.span8,textarea.span8,.uneditable-input.span8{width:606px;}
296 input.span8,textarea.span8,.uneditable-input.span8{width:606px;}
297 input.span7,textarea.span7,.uneditable-input.span7{width:526px;}
297 input.span7,textarea.span7,.uneditable-input.span7{width:526px;}
298 input.span6,textarea.span6,.uneditable-input.span6{width:446px;}
298 input.span6,textarea.span6,.uneditable-input.span6{width:446px;}
299 input.span5,textarea.span5,.uneditable-input.span5{width:366px;}
299 input.span5,textarea.span5,.uneditable-input.span5{width:366px;}
300 input.span4,textarea.span4,.uneditable-input.span4{width:286px;}
300 input.span4,textarea.span4,.uneditable-input.span4{width:286px;}
301 input.span3,textarea.span3,.uneditable-input.span3{width:206px;}
301 input.span3,textarea.span3,.uneditable-input.span3{width:206px;}
302 input.span2,textarea.span2,.uneditable-input.span2{width:126px;}
302 input.span2,textarea.span2,.uneditable-input.span2{width:126px;}
303 input.span1,textarea.span1,.uneditable-input.span1{width:46px;}
303 input.span1,textarea.span1,.uneditable-input.span1{width:46px;}
304 input,textarea,.uneditable-input{margin-left:0;}
304 input,textarea,.uneditable-input{margin-left:0;}
305 .controls-row [class*="span"]+[class*="span"]{margin-left:20px;}
305 .controls-row [class*="span"]+[class*="span"]{margin-left:20px;}
306 input.span12,textarea.span12,.uneditable-input.span12{width:926px;}
306 input.span12,textarea.span12,.uneditable-input.span12{width:926px;}
307 input.span11,textarea.span11,.uneditable-input.span11{width:846px;}
307 input.span11,textarea.span11,.uneditable-input.span11{width:846px;}
308 input.span10,textarea.span10,.uneditable-input.span10{width:766px;}
308 input.span10,textarea.span10,.uneditable-input.span10{width:766px;}
309 input.span9,textarea.span9,.uneditable-input.span9{width:686px;}
309 input.span9,textarea.span9,.uneditable-input.span9{width:686px;}
310 input.span8,textarea.span8,.uneditable-input.span8{width:606px;}
310 input.span8,textarea.span8,.uneditable-input.span8{width:606px;}
311 input.span7,textarea.span7,.uneditable-input.span7{width:526px;}
311 input.span7,textarea.span7,.uneditable-input.span7{width:526px;}
312 input.span6,textarea.span6,.uneditable-input.span6{width:446px;}
312 input.span6,textarea.span6,.uneditable-input.span6{width:446px;}
313 input.span5,textarea.span5,.uneditable-input.span5{width:366px;}
313 input.span5,textarea.span5,.uneditable-input.span5{width:366px;}
314 input.span4,textarea.span4,.uneditable-input.span4{width:286px;}
314 input.span4,textarea.span4,.uneditable-input.span4{width:286px;}
315 input.span3,textarea.span3,.uneditable-input.span3{width:206px;}
315 input.span3,textarea.span3,.uneditable-input.span3{width:206px;}
316 input.span2,textarea.span2,.uneditable-input.span2{width:126px;}
316 input.span2,textarea.span2,.uneditable-input.span2{width:126px;}
317 input.span1,textarea.span1,.uneditable-input.span1{width:46px;}
317 input.span1,textarea.span1,.uneditable-input.span1{width:46px;}
318 .controls-row{*zoom:1;}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;}
318 .controls-row{*zoom:1;}.controls-row:before,.controls-row:after{display:table;content:"";line-height:0;}
319 .controls-row:after{clear:both;}
319 .controls-row:after{clear:both;}
320 .controls-row:before,.controls-row:after{display:table;content:"";line-height:0;}
320 .controls-row:before,.controls-row:after{display:table;content:"";line-height:0;}
321 .controls-row:after{clear:both;}
321 .controls-row:after{clear:both;}
322 .controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left;}
322 .controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left;}
323 .controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px;}
323 .controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px;}
324 input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eeeeee;}
324 input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eeeeee;}
325 input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent;}
325 input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent;}
326 .control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
326 .control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
327 .control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;}
327 .control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;}
328 .control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;}
328 .control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;}
329 .control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
329 .control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
330 .control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
330 .control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
331 .control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;}
331 .control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;}
332 .control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;}
332 .control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #dbc59e;}
333 .control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
333 .control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
334 .control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
334 .control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
335 .control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;}
335 .control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;}
336 .control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;}
336 .control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;}
337 .control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
337 .control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
338 .control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
338 .control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
339 .control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;}
339 .control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;}
340 .control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;}
340 .control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #d59392;}
341 .control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
341 .control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
342 .control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
342 .control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
343 .control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;}
343 .control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;}
344 .control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;}
344 .control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;}
345 .control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
345 .control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
346 .control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
346 .control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
347 .control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;}
347 .control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;}
348 .control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;}
348 .control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7aba7b;}
349 .control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
349 .control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
350 .control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;}
350 .control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;}
351 .control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;}
351 .control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;}
352 .control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;}
352 .control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;}
353 .control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;}
353 .control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;}
354 .control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;}
354 .control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad;}
355 .control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;}
355 .control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad;}
356 .control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;}
356 .control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 6px #7ab5d3;}
357 .control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;}
357 .control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad;}
358 input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
358 input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
359 .form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;}
359 .form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";line-height:0;}
360 .form-actions:after{clear:both;}
360 .form-actions:after{clear:both;}
361 .form-actions:before,.form-actions:after{display:table;content:"";line-height:0;}
361 .form-actions:before,.form-actions:after{display:table;content:"";line-height:0;}
362 .form-actions:after{clear:both;}
362 .form-actions:after{clear:both;}
363 .help-block,.help-inline{color:#262626;}
363 .help-block,.help-inline{color:#262626;}
364 .help-block{display:block;margin-bottom:10px;}
364 .help-block{display:block;margin-bottom:10px;}
365 .help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;}
365 .help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;}
366 .input-append,.input-prepend{display:inline-block;margin-bottom:10px;vertical-align:middle;font-size:0;white-space:nowrap;}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:13px;}
366 .input-append,.input-prepend{display:inline-block;margin-bottom:10px;vertical-align:middle;font-size:0;white-space:nowrap;}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:13px;}
367 .input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2;}
367 .input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2;}
368 .input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:13px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#eeeeee;border:1px solid #ccc;}
368 .input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:13px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#eeeeee;border:1px solid #ccc;}
369 .input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
369 .input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
370 .input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546;}
370 .input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546;}
371 .input-prepend .add-on,.input-prepend .btn{margin-right:-1px;}
371 .input-prepend .add-on,.input-prepend .btn{margin-right:-1px;}
372 .input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
372 .input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
373 .input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
373 .input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
374 .input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px;}
374 .input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px;}
375 .input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
375 .input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
376 .input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
376 .input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
377 .input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
377 .input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
378 .input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
378 .input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
379 .input-prepend.input-append .btn-group:first-child{margin-left:0;}
379 .input-prepend.input-append .btn-group:first-child{margin-left:0;}
380 input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
380 input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
381 .form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
381 .form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
382 .form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;}
382 .form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;}
383 .form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;}
383 .form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;}
384 .form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;}
384 .form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0;}
385 .form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;}
385 .form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px;}
386 .form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle;}
386 .form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;*zoom:1;margin-bottom:0;vertical-align:middle;}
387 .form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;}
387 .form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;}
388 .form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block;}
388 .form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block;}
389 .form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;}
389 .form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;}
390 .form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;}
390 .form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;}
391 .form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0;}
391 .form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0;}
392 .control-group{margin-bottom:10px;}
392 .control-group{margin-bottom:10px;}
393 legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate;}
393 legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate;}
394 .form-horizontal .control-group{margin-bottom:20px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;}
394 .form-horizontal .control-group{margin-bottom:20px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;}
395 .form-horizontal .control-group:after{clear:both;}
395 .form-horizontal .control-group:after{clear:both;}
396 .form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;}
396 .form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";line-height:0;}
397 .form-horizontal .control-group:after{clear:both;}
397 .form-horizontal .control-group:after{clear:both;}
398 .form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right;}
398 .form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right;}
399 .form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0;}.form-horizontal .controls:first-child{*padding-left:180px;}
399 .form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0;}.form-horizontal .controls:first-child{*padding-left:180px;}
400 .form-horizontal .help-block{margin-bottom:0;}
400 .form-horizontal .help-block{margin-bottom:0;}
401 .form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px;}
401 .form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px;}
402 .form-horizontal .form-actions{padding-left:180px;}
402 .form-horizontal .form-actions{padding-left:180px;}
403 table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;}
403 table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;}
404 .table{width:100%;margin-bottom:20px;}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;}
404 .table{width:100%;margin-bottom:20px;}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;}
405 .table th{font-weight:bold;}
405 .table th{font-weight:bold;}
406 .table thead th{vertical-align:bottom;}
406 .table thead th{vertical-align:bottom;}
407 .table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;}
407 .table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;}
408 .table tbody+tbody{border-top:2px solid #dddddd;}
408 .table tbody+tbody{border-top:2px solid #dddddd;}
409 .table .table{background-color:#ffffff;}
409 .table .table{background-color:#ffffff;}
410 .table-condensed th,.table-condensed td{padding:4px 5px;}
410 .table-condensed th,.table-condensed td{padding:4px 5px;}
411 .table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;}
411 .table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;}
412 .table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}
412 .table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}
413 .table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
413 .table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
414 .table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;}
414 .table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;}
415 .table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
415 .table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
416 .table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
416 .table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
417 .table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;}
417 .table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;}
418 .table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;}
418 .table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;}
419 .table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
419 .table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
420 .table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;}
420 .table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;}
421 .table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9;}
421 .table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9;}
422 .table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5;}
422 .table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5;}
423 table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0;}
423 table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0;}
424 .table td.span1,.table th.span1{float:none;width:44px;margin-left:0;}
424 .table td.span1,.table th.span1{float:none;width:44px;margin-left:0;}
425 .table td.span2,.table th.span2{float:none;width:124px;margin-left:0;}
425 .table td.span2,.table th.span2{float:none;width:124px;margin-left:0;}
426 .table td.span3,.table th.span3{float:none;width:204px;margin-left:0;}
426 .table td.span3,.table th.span3{float:none;width:204px;margin-left:0;}
427 .table td.span4,.table th.span4{float:none;width:284px;margin-left:0;}
427 .table td.span4,.table th.span4{float:none;width:284px;margin-left:0;}
428 .table td.span5,.table th.span5{float:none;width:364px;margin-left:0;}
428 .table td.span5,.table th.span5{float:none;width:364px;margin-left:0;}
429 .table td.span6,.table th.span6{float:none;width:444px;margin-left:0;}
429 .table td.span6,.table th.span6{float:none;width:444px;margin-left:0;}
430 .table td.span7,.table th.span7{float:none;width:524px;margin-left:0;}
430 .table td.span7,.table th.span7{float:none;width:524px;margin-left:0;}
431 .table td.span8,.table th.span8{float:none;width:604px;margin-left:0;}
431 .table td.span8,.table th.span8{float:none;width:604px;margin-left:0;}
432 .table td.span9,.table th.span9{float:none;width:684px;margin-left:0;}
432 .table td.span9,.table th.span9{float:none;width:684px;margin-left:0;}
433 .table td.span10,.table th.span10{float:none;width:764px;margin-left:0;}
433 .table td.span10,.table th.span10{float:none;width:764px;margin-left:0;}
434 .table td.span11,.table th.span11{float:none;width:844px;margin-left:0;}
434 .table td.span11,.table th.span11{float:none;width:844px;margin-left:0;}
435 .table td.span12,.table th.span12{float:none;width:924px;margin-left:0;}
435 .table td.span12,.table th.span12{float:none;width:924px;margin-left:0;}
436 .table tbody tr.success>td{background-color:#dff0d8;}
436 .table tbody tr.success>td{background-color:#dff0d8;}
437 .table tbody tr.error>td{background-color:#f2dede;}
437 .table tbody tr.error>td{background-color:#f2dede;}
438 .table tbody tr.warning>td{background-color:#fcf8e3;}
438 .table tbody tr.warning>td{background-color:#fcf8e3;}
439 .table tbody tr.info>td{background-color:#d9edf7;}
439 .table tbody tr.info>td{background-color:#d9edf7;}
440 .table-hover tbody tr.success:hover>td{background-color:#d0e9c6;}
440 .table-hover tbody tr.success:hover>td{background-color:#d0e9c6;}
441 .table-hover tbody tr.error:hover>td{background-color:#ebcccc;}
441 .table-hover tbody tr.error:hover>td{background-color:#ebcccc;}
442 .table-hover tbody tr.warning:hover>td{background-color:#faf2cc;}
442 .table-hover tbody tr.warning:hover>td{background-color:#faf2cc;}
443 .table-hover tbody tr.info:hover>td{background-color:#c4e3f3;}
443 .table-hover tbody tr.info:hover>td{background-color:#c4e3f3;}
444 [class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;margin-top:1px;}
444 [class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;margin-top:1px;}
445 .icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png");}
445 .icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png");}
446 .icon-glass{background-position:0 0;}
446 .icon-glass{background-position:0 0;}
447 .icon-music{background-position:-24px 0;}
447 .icon-music{background-position:-24px 0;}
448 .icon-search{background-position:-48px 0;}
448 .icon-search{background-position:-48px 0;}
449 .icon-envelope{background-position:-72px 0;}
449 .icon-envelope{background-position:-72px 0;}
450 .icon-heart{background-position:-96px 0;}
450 .icon-heart{background-position:-96px 0;}
451 .icon-star{background-position:-120px 0;}
451 .icon-star{background-position:-120px 0;}
452 .icon-star-empty{background-position:-144px 0;}
452 .icon-star-empty{background-position:-144px 0;}
453 .icon-user{background-position:-168px 0;}
453 .icon-user{background-position:-168px 0;}
454 .icon-film{background-position:-192px 0;}
454 .icon-film{background-position:-192px 0;}
455 .icon-th-large{background-position:-216px 0;}
455 .icon-th-large{background-position:-216px 0;}
456 .icon-th{background-position:-240px 0;}
456 .icon-th{background-position:-240px 0;}
457 .icon-th-list{background-position:-264px 0;}
457 .icon-th-list{background-position:-264px 0;}
458 .icon-ok{background-position:-288px 0;}
458 .icon-ok{background-position:-288px 0;}
459 .icon-remove{background-position:-312px 0;}
459 .icon-remove{background-position:-312px 0;}
460 .icon-zoom-in{background-position:-336px 0;}
460 .icon-zoom-in{background-position:-336px 0;}
461 .icon-zoom-out{background-position:-360px 0;}
461 .icon-zoom-out{background-position:-360px 0;}
462 .icon-off{background-position:-384px 0;}
462 .icon-off{background-position:-384px 0;}
463 .icon-signal{background-position:-408px 0;}
463 .icon-signal{background-position:-408px 0;}
464 .icon-cog{background-position:-432px 0;}
464 .icon-cog{background-position:-432px 0;}
465 .icon-trash{background-position:-456px 0;}
465 .icon-trash{background-position:-456px 0;}
466 .icon-home{background-position:0 -24px;}
466 .icon-home{background-position:0 -24px;}
467 .icon-file{background-position:-24px -24px;}
467 .icon-file{background-position:-24px -24px;}
468 .icon-time{background-position:-48px -24px;}
468 .icon-time{background-position:-48px -24px;}
469 .icon-road{background-position:-72px -24px;}
469 .icon-road{background-position:-72px -24px;}
470 .icon-download-alt{background-position:-96px -24px;}
470 .icon-download-alt{background-position:-96px -24px;}
471 .icon-download{background-position:-120px -24px;}
471 .icon-download{background-position:-120px -24px;}
472 .icon-upload{background-position:-144px -24px;}
472 .icon-upload{background-position:-144px -24px;}
473 .icon-inbox{background-position:-168px -24px;}
473 .icon-inbox{background-position:-168px -24px;}
474 .icon-play-circle{background-position:-192px -24px;}
474 .icon-play-circle{background-position:-192px -24px;}
475 .icon-repeat{background-position:-216px -24px;}
475 .icon-repeat{background-position:-216px -24px;}
476 .icon-refresh{background-position:-240px -24px;}
476 .icon-refresh{background-position:-240px -24px;}
477 .icon-list-alt{background-position:-264px -24px;}
477 .icon-list-alt{background-position:-264px -24px;}
478 .icon-lock{background-position:-287px -24px;}
478 .icon-lock{background-position:-287px -24px;}
479 .icon-flag{background-position:-312px -24px;}
479 .icon-flag{background-position:-312px -24px;}
480 .icon-headphones{background-position:-336px -24px;}
480 .icon-headphones{background-position:-336px -24px;}
481 .icon-volume-off{background-position:-360px -24px;}
481 .icon-volume-off{background-position:-360px -24px;}
482 .icon-volume-down{background-position:-384px -24px;}
482 .icon-volume-down{background-position:-384px -24px;}
483 .icon-volume-up{background-position:-408px -24px;}
483 .icon-volume-up{background-position:-408px -24px;}
484 .icon-qrcode{background-position:-432px -24px;}
484 .icon-qrcode{background-position:-432px -24px;}
485 .icon-barcode{background-position:-456px -24px;}
485 .icon-barcode{background-position:-456px -24px;}
486 .icon-tag{background-position:0 -48px;}
486 .icon-tag{background-position:0 -48px;}
487 .icon-tags{background-position:-25px -48px;}
487 .icon-tags{background-position:-25px -48px;}
488 .icon-book{background-position:-48px -48px;}
488 .icon-book{background-position:-48px -48px;}
489 .icon-bookmark{background-position:-72px -48px;}
489 .icon-bookmark{background-position:-72px -48px;}
490 .icon-print{background-position:-96px -48px;}
490 .icon-print{background-position:-96px -48px;}
491 .icon-camera{background-position:-120px -48px;}
491 .icon-camera{background-position:-120px -48px;}
492 .icon-font{background-position:-144px -48px;}
492 .icon-font{background-position:-144px -48px;}
493 .icon-bold{background-position:-167px -48px;}
493 .icon-bold{background-position:-167px -48px;}
494 .icon-italic{background-position:-192px -48px;}
494 .icon-italic{background-position:-192px -48px;}
495 .icon-text-height{background-position:-216px -48px;}
495 .icon-text-height{background-position:-216px -48px;}
496 .icon-text-width{background-position:-240px -48px;}
496 .icon-text-width{background-position:-240px -48px;}
497 .icon-align-left{background-position:-264px -48px;}
497 .icon-align-left{background-position:-264px -48px;}
498 .icon-align-center{background-position:-288px -48px;}
498 .icon-align-center{background-position:-288px -48px;}
499 .icon-align-right{background-position:-312px -48px;}
499 .icon-align-right{background-position:-312px -48px;}
500 .icon-align-justify{background-position:-336px -48px;}
500 .icon-align-justify{background-position:-336px -48px;}
501 .icon-list{background-position:-360px -48px;}
501 .icon-list{background-position:-360px -48px;}
502 .icon-indent-left{background-position:-384px -48px;}
502 .icon-indent-left{background-position:-384px -48px;}
503 .icon-indent-right{background-position:-408px -48px;}
503 .icon-indent-right{background-position:-408px -48px;}
504 .icon-facetime-video{background-position:-432px -48px;}
504 .icon-facetime-video{background-position:-432px -48px;}
505 .icon-picture{background-position:-456px -48px;}
505 .icon-picture{background-position:-456px -48px;}
506 .icon-pencil{background-position:0 -72px;}
506 .icon-pencil{background-position:0 -72px;}
507 .icon-map-marker{background-position:-24px -72px;}
507 .icon-map-marker{background-position:-24px -72px;}
508 .icon-adjust{background-position:-48px -72px;}
508 .icon-adjust{background-position:-48px -72px;}
509 .icon-tint{background-position:-72px -72px;}
509 .icon-tint{background-position:-72px -72px;}
510 .icon-edit{background-position:-96px -72px;}
510 .icon-edit{background-position:-96px -72px;}
511 .icon-share{background-position:-120px -72px;}
511 .icon-share{background-position:-120px -72px;}
512 .icon-check{background-position:-144px -72px;}
512 .icon-check{background-position:-144px -72px;}
513 .icon-move{background-position:-168px -72px;}
513 .icon-move{background-position:-168px -72px;}
514 .icon-step-backward{background-position:-192px -72px;}
514 .icon-step-backward{background-position:-192px -72px;}
515 .icon-fast-backward{background-position:-216px -72px;}
515 .icon-fast-backward{background-position:-216px -72px;}
516 .icon-backward{background-position:-240px -72px;}
516 .icon-backward{background-position:-240px -72px;}
517 .icon-play{background-position:-264px -72px;}
517 .icon-play{background-position:-264px -72px;}
518 .icon-pause{background-position:-288px -72px;}
518 .icon-pause{background-position:-288px -72px;}
519 .icon-stop{background-position:-312px -72px;}
519 .icon-stop{background-position:-312px -72px;}
520 .icon-forward{background-position:-336px -72px;}
520 .icon-forward{background-position:-336px -72px;}
521 .icon-fast-forward{background-position:-360px -72px;}
521 .icon-fast-forward{background-position:-360px -72px;}
522 .icon-step-forward{background-position:-384px -72px;}
522 .icon-step-forward{background-position:-384px -72px;}
523 .icon-eject{background-position:-408px -72px;}
523 .icon-eject{background-position:-408px -72px;}
524 .icon-chevron-left{background-position:-432px -72px;}
524 .icon-chevron-left{background-position:-432px -72px;}
525 .icon-chevron-right{background-position:-456px -72px;}
525 .icon-chevron-right{background-position:-456px -72px;}
526 .icon-plus-sign{background-position:0 -96px;}
526 .icon-plus-sign{background-position:0 -96px;}
527 .icon-minus-sign{background-position:-24px -96px;}
527 .icon-minus-sign{background-position:-24px -96px;}
528 .icon-remove-sign{background-position:-48px -96px;}
528 .icon-remove-sign{background-position:-48px -96px;}
529 .icon-ok-sign{background-position:-72px -96px;}
529 .icon-ok-sign{background-position:-72px -96px;}
530 .icon-question-sign{background-position:-96px -96px;}
530 .icon-question-sign{background-position:-96px -96px;}
531 .icon-info-sign{background-position:-120px -96px;}
531 .icon-info-sign{background-position:-120px -96px;}
532 .icon-screenshot{background-position:-144px -96px;}
532 .icon-screenshot{background-position:-144px -96px;}
533 .icon-remove-circle{background-position:-168px -96px;}
533 .icon-remove-circle{background-position:-168px -96px;}
534 .icon-ok-circle{background-position:-192px -96px;}
534 .icon-ok-circle{background-position:-192px -96px;}
535 .icon-ban-circle{background-position:-216px -96px;}
535 .icon-ban-circle{background-position:-216px -96px;}
536 .icon-arrow-left{background-position:-240px -96px;}
536 .icon-arrow-left{background-position:-240px -96px;}
537 .icon-arrow-right{background-position:-264px -96px;}
537 .icon-arrow-right{background-position:-264px -96px;}
538 .icon-arrow-up{background-position:-289px -96px;}
538 .icon-arrow-up{background-position:-289px -96px;}
539 .icon-arrow-down{background-position:-312px -96px;}
539 .icon-arrow-down{background-position:-312px -96px;}
540 .icon-share-alt{background-position:-336px -96px;}
540 .icon-share-alt{background-position:-336px -96px;}
541 .icon-resize-full{background-position:-360px -96px;}
541 .icon-resize-full{background-position:-360px -96px;}
542 .icon-resize-small{background-position:-384px -96px;}
542 .icon-resize-small{background-position:-384px -96px;}
543 .icon-plus{background-position:-408px -96px;}
543 .icon-plus{background-position:-408px -96px;}
544 .icon-minus{background-position:-433px -96px;}
544 .icon-minus{background-position:-433px -96px;}
545 .icon-asterisk{background-position:-456px -96px;}
545 .icon-asterisk{background-position:-456px -96px;}
546 .icon-exclamation-sign{background-position:0 -120px;}
546 .icon-exclamation-sign{background-position:0 -120px;}
547 .icon-gift{background-position:-24px -120px;}
547 .icon-gift{background-position:-24px -120px;}
548 .icon-leaf{background-position:-48px -120px;}
548 .icon-leaf{background-position:-48px -120px;}
549 .icon-fire{background-position:-72px -120px;}
549 .icon-fire{background-position:-72px -120px;}
550 .icon-eye-open{background-position:-96px -120px;}
550 .icon-eye-open{background-position:-96px -120px;}
551 .icon-eye-close{background-position:-120px -120px;}
551 .icon-eye-close{background-position:-120px -120px;}
552 .icon-warning-sign{background-position:-144px -120px;}
552 .icon-warning-sign{background-position:-144px -120px;}
553 .icon-plane{background-position:-168px -120px;}
553 .icon-plane{background-position:-168px -120px;}
554 .icon-calendar{background-position:-192px -120px;}
554 .icon-calendar{background-position:-192px -120px;}
555 .icon-random{background-position:-216px -120px;width:16px;}
555 .icon-random{background-position:-216px -120px;width:16px;}
556 .icon-comment{background-position:-240px -120px;}
556 .icon-comment{background-position:-240px -120px;}
557 .icon-magnet{background-position:-264px -120px;}
557 .icon-magnet{background-position:-264px -120px;}
558 .icon-chevron-up{background-position:-288px -120px;}
558 .icon-chevron-up{background-position:-288px -120px;}
559 .icon-chevron-down{background-position:-313px -119px;}
559 .icon-chevron-down{background-position:-313px -119px;}
560 .icon-retweet{background-position:-336px -120px;}
560 .icon-retweet{background-position:-336px -120px;}
561 .icon-shopping-cart{background-position:-360px -120px;}
561 .icon-shopping-cart{background-position:-360px -120px;}
562 .icon-folder-close{background-position:-384px -120px;width:16px;}
562 .icon-folder-close{background-position:-384px -120px;width:16px;}
563 .icon-folder-open{background-position:-408px -120px;width:16px;}
563 .icon-folder-open{background-position:-408px -120px;width:16px;}
564 .icon-resize-vertical{background-position:-432px -119px;}
564 .icon-resize-vertical{background-position:-432px -119px;}
565 .icon-resize-horizontal{background-position:-456px -118px;}
565 .icon-resize-horizontal{background-position:-456px -118px;}
566 .icon-hdd{background-position:0 -144px;}
566 .icon-hdd{background-position:0 -144px;}
567 .icon-bullhorn{background-position:-24px -144px;}
567 .icon-bullhorn{background-position:-24px -144px;}
568 .icon-bell{background-position:-48px -144px;}
568 .icon-bell{background-position:-48px -144px;}
569 .icon-certificate{background-position:-72px -144px;}
569 .icon-certificate{background-position:-72px -144px;}
570 .icon-thumbs-up{background-position:-96px -144px;}
570 .icon-thumbs-up{background-position:-96px -144px;}
571 .icon-thumbs-down{background-position:-120px -144px;}
571 .icon-thumbs-down{background-position:-120px -144px;}
572 .icon-hand-right{background-position:-144px -144px;}
572 .icon-hand-right{background-position:-144px -144px;}
573 .icon-hand-left{background-position:-168px -144px;}
573 .icon-hand-left{background-position:-168px -144px;}
574 .icon-hand-up{background-position:-192px -144px;}
574 .icon-hand-up{background-position:-192px -144px;}
575 .icon-hand-down{background-position:-216px -144px;}
575 .icon-hand-down{background-position:-216px -144px;}
576 .icon-circle-arrow-right{background-position:-240px -144px;}
576 .icon-circle-arrow-right{background-position:-240px -144px;}
577 .icon-circle-arrow-left{background-position:-264px -144px;}
577 .icon-circle-arrow-left{background-position:-264px -144px;}
578 .icon-circle-arrow-up{background-position:-288px -144px;}
578 .icon-circle-arrow-up{background-position:-288px -144px;}
579 .icon-circle-arrow-down{background-position:-312px -144px;}
579 .icon-circle-arrow-down{background-position:-312px -144px;}
580 .icon-globe{background-position:-336px -144px;}
580 .icon-globe{background-position:-336px -144px;}
581 .icon-wrench{background-position:-360px -144px;}
581 .icon-wrench{background-position:-360px -144px;}
582 .icon-tasks{background-position:-384px -144px;}
582 .icon-tasks{background-position:-384px -144px;}
583 .icon-filter{background-position:-408px -144px;}
583 .icon-filter{background-position:-408px -144px;}
584 .icon-briefcase{background-position:-432px -144px;}
584 .icon-briefcase{background-position:-432px -144px;}
585 .icon-fullscreen{background-position:-456px -144px;}
585 .icon-fullscreen{background-position:-456px -144px;}
586 .dropup,.dropdown{position:relative;}
586 .dropup,.dropdown{position:relative;}
587 .dropdown-toggle{*margin-bottom:-3px;}
587 .dropdown-toggle{*margin-bottom:-3px;}
588 .dropdown-toggle:active,.open .dropdown-toggle{outline:0;}
588 .dropdown-toggle:active,.open .dropdown-toggle{outline:0;}
589 .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}
589 .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000000;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}
590 .dropdown .caret{margin-top:8px;margin-left:2px;}
590 .dropdown .caret{margin-top:8px;margin-left:2px;}
591 .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;}
591 .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;}
592 .dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;}
592 .dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;}
593 .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333333;white-space:nowrap;}
593 .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333333;white-space:nowrap;}
594 .dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{text-decoration:none;color:#ffffff;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);}
594 .dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{text-decoration:none;color:#ffffff;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);}
595 .dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);}
595 .dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);}
596 .dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999;}
596 .dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999;}
597 .dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:default;}
597 .dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:default;}
598 .open{*z-index:1000;}.open>.dropdown-menu{display:block;}
598 .open{*z-index:1000;}.open>.dropdown-menu{display:block;}
599 .dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990;}
599 .dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990;}
600 .pull-right>.dropdown-menu{right:0;left:auto;}
600 .pull-right>.dropdown-menu{right:0;left:auto;}
601 .dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000000;content:"";}
601 .dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000000;content:"";}
602 .dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px;}
602 .dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px;}
603 .dropdown-submenu{position:relative;}
603 .dropdown-submenu{position:relative;}
604 .dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;}
604 .dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;}
605 .dropdown-submenu:hover>.dropdown-menu{display:block;}
605 .dropdown-submenu:hover>.dropdown-menu{display:block;}
606 .dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0;}
606 .dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0;}
607 .dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#cccccc;margin-top:5px;margin-right:-10px;}
607 .dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#cccccc;margin-top:5px;margin-right:-10px;}
608 .dropdown-submenu:hover>a:after{border-left-color:#ffffff;}
608 .dropdown-submenu:hover>a:after{border-left-color:#ffffff;}
609 .dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;}
609 .dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;}
610 .dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px;}
610 .dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px;}
611 .typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
611 .typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
612 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}
612 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}
613 .well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
613 .well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
614 .well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
614 .well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
615 .fade{opacity:0;-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;}
615 .fade{opacity:0;-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;}
616 .collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;}.collapse.in{height:auto;}
616 .collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;}.collapse.in{height:auto;}
617 .close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40);}
617 .close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40);}
618 button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}
618 button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}
619 .btn{display:inline-block;*display:inline;*zoom:1;padding:4px 12px;margin-bottom:0;font-size:13px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333333;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(to bottom, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #cccccc;*border:0;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;}
619 .btn{display:inline-block;*display:inline;*zoom:1;padding:4px 12px;margin-bottom:0;font-size:13px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333333;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(to bottom, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #cccccc;*border:0;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;}
620 .btn:active,.btn.active{background-color:#cccccc \9;}
620 .btn:active,.btn.active{background-color:#cccccc \9;}
621 .btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;}
621 .btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;}
622 .btn:active,.btn.active{background-color:#cccccc \9;}
622 .btn:active,.btn.active{background-color:#cccccc \9;}
623 .btn:first-child{*margin-left:0;}
623 .btn:first-child{*margin-left:0;}
624 .btn:first-child{*margin-left:0;}
624 .btn:first-child{*margin-left:0;}
625 .btn:hover,.btn:focus{color:#333333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}
625 .btn:hover,.btn:focus{color:#333333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}
626 .btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
626 .btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
627 .btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}
627 .btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}
628 .btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
628 .btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
629 .btn-large{padding:11px 19px;font-size:16.25px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
629 .btn-large{padding:11px 19px;font-size:16.25px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
630 .btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px;}
630 .btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px;}
631 .btn-small{padding:2px 10px;font-size:11.049999999999999px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
631 .btn-small{padding:2px 10px;font-size:11.049999999999999px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
632 .btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0;}
632 .btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0;}
633 .btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px;}
633 .btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px;}
634 .btn-mini{padding:0 6px;font-size:9.75px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
634 .btn-mini{padding:0 6px;font-size:9.75px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
635 .btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
635 .btn-block{display:block;width:100%;padding-left:0;padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
636 .btn-block+.btn-block{margin-top:5px;}
636 .btn-block+.btn-block{margin-top:5px;}
637 input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;}
637 input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;}
638 .btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);}
638 .btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);}
639 .btn-primary{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#006dcc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(to bottom, #0088cc, #0044cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);border-color:#0044cc #0044cc #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#0044cc;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0044cc;*background-color:#003bb3;}
639 .btn-primary{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#006dcc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(to bottom, #0088cc, #0044cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);border-color:#0044cc #0044cc #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#0044cc;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0044cc;*background-color:#003bb3;}
640 .btn-primary:active,.btn-primary.active{background-color:#003399 \9;}
640 .btn-primary:active,.btn-primary.active{background-color:#003399 \9;}
641 .btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0044cc;*background-color:#003bb3;}
641 .btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#ffffff;background-color:#0044cc;*background-color:#003bb3;}
642 .btn-primary:active,.btn-primary.active{background-color:#003399 \9;}
642 .btn-primary:active,.btn-primary.active{background-color:#003399 \9;}
643 .btn-warning{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#f89406;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;}
643 .btn-warning{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#f89406;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;}
644 .btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}
644 .btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}
645 .btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;}
645 .btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505;}
646 .btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}
646 .btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}
647 .btn-danger{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(to bottom, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#bd362f;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;}
647 .btn-danger{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(to bottom, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#bd362f;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;}
648 .btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}
648 .btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}
649 .btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;}
649 .btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a;}
650 .btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}
650 .btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}
651 .btn-success{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(to bottom, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#51a351;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;}
651 .btn-success{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(to bottom, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#51a351;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;}
652 .btn-success:active,.btn-success.active{background-color:#408140 \9;}
652 .btn-success:active,.btn-success.active{background-color:#408140 \9;}
653 .btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;}
653 .btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249;}
654 .btn-success:active,.btn-success.active{background-color:#408140 \9;}
654 .btn-success:active,.btn-success.active{background-color:#408140 \9;}
655 .btn-info{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(to bottom, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#2f96b4;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;}
655 .btn-info{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(to bottom, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#2f96b4;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;}
656 .btn-info:active,.btn-info.active{background-color:#24748c \9;}
656 .btn-info:active,.btn-info.active{background-color:#24748c \9;}
657 .btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;}
657 .btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0;}
658 .btn-info:active,.btn-info.active{background-color:#24748c \9;}
658 .btn-info:active,.btn-info.active{background-color:#24748c \9;}
659 .btn-inverse{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#363636;background-image:-moz-linear-gradient(top, #444444, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));background-image:-webkit-linear-gradient(top, #444444, #222222);background-image:-o-linear-gradient(top, #444444, #222222);background-image:linear-gradient(to bottom, #444444, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#222222;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;}
659 .btn-inverse{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#363636;background-image:-moz-linear-gradient(top, #444444, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));background-image:-webkit-linear-gradient(top, #444444, #222222);background-image:-o-linear-gradient(top, #444444, #222222);background-image:linear-gradient(to bottom, #444444, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#222222;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;}
660 .btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;}
660 .btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;}
661 .btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;}
661 .btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515;}
662 .btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;}
662 .btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;}
663 button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;}
663 button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;}
664 button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;}
664 button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;}
665 button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;}
665 button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;}
666 button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;}
666 button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;}
667 .btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
667 .btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
668 .btn-link{border-color:transparent;cursor:pointer;color:#0088cc;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
668 .btn-link{border-color:transparent;cursor:pointer;color:#0088cc;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
669 .btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent;}
669 .btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent;}
670 .btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333333;text-decoration:none;}
670 .btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333333;text-decoration:none;}
671 .btn-group{position:relative;display:inline-block;*display:inline;*zoom:1;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em;}.btn-group:first-child{*margin-left:0;}
671 .btn-group{position:relative;display:inline-block;*display:inline;*zoom:1;font-size:0;vertical-align:middle;white-space:nowrap;*margin-left:.3em;}.btn-group:first-child{*margin-left:0;}
672 .btn-group:first-child{*margin-left:0;}
672 .btn-group:first-child{*margin-left:0;}
673 .btn-group+.btn-group{margin-left:5px;}
673 .btn-group+.btn-group{margin-left:5px;}
674 .btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px;}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px;}
674 .btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px;}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px;}
675 .btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
675 .btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
676 .btn-group>.btn+.btn{margin-left:-1px;}
676 .btn-group>.btn+.btn{margin-left:-1px;}
677 .btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:13px;}
677 .btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:13px;}
678 .btn-group>.btn-mini{font-size:9.75px;}
678 .btn-group>.btn-mini{font-size:9.75px;}
679 .btn-group>.btn-small{font-size:11.049999999999999px;}
679 .btn-group>.btn-small{font-size:11.049999999999999px;}
680 .btn-group>.btn-large{font-size:16.25px;}
680 .btn-group>.btn-large{font-size:16.25px;}
681 .btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
681 .btn-group>.btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
682 .btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
682 .btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
683 .btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
683 .btn-group>.btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
684 .btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
684 .btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
685 .btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2;}
685 .btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2;}
686 .btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}
686 .btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}
687 .btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);*padding-top:5px;*padding-bottom:5px;}
687 .btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);*padding-top:5px;*padding-bottom:5px;}
688 .btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px;}
688 .btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:2px;*padding-bottom:2px;}
689 .btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px;}
689 .btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px;}
690 .btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px;}
690 .btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px;*padding-top:7px;*padding-bottom:7px;}
691 .btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}
691 .btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);}
692 .btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6;}
692 .btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6;}
693 .btn-group.open .btn-primary.dropdown-toggle{background-color:#0044cc;}
693 .btn-group.open .btn-primary.dropdown-toggle{background-color:#0044cc;}
694 .btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406;}
694 .btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406;}
695 .btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f;}
695 .btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f;}
696 .btn-group.open .btn-success.dropdown-toggle{background-color:#51a351;}
696 .btn-group.open .btn-success.dropdown-toggle{background-color:#51a351;}
697 .btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4;}
697 .btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4;}
698 .btn-group.open .btn-inverse.dropdown-toggle{background-color:#222222;}
698 .btn-group.open .btn-inverse.dropdown-toggle{background-color:#222222;}
699 .btn .caret{margin-top:8px;margin-left:0;}
699 .btn .caret{margin-top:8px;margin-left:0;}
700 .btn-large .caret{margin-top:6px;}
700 .btn-large .caret{margin-top:6px;}
701 .btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px;}
701 .btn-large .caret{border-left-width:5px;border-right-width:5px;border-top-width:5px;}
702 .btn-mini .caret,.btn-small .caret{margin-top:8px;}
702 .btn-mini .caret,.btn-small .caret{margin-top:8px;}
703 .dropup .btn-large .caret{border-bottom-width:5px;}
703 .dropup .btn-large .caret{border-bottom-width:5px;}
704 .btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
704 .btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
705 .btn-group-vertical{display:inline-block;*display:inline;*zoom:1;}
705 .btn-group-vertical{display:inline-block;*display:inline;*zoom:1;}
706 .btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
706 .btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
707 .btn-group-vertical>.btn+.btn{margin-left:0;margin-top:-1px;}
707 .btn-group-vertical>.btn+.btn{margin-left:0;margin-top:-1px;}
708 .btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}
708 .btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}
709 .btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}
709 .btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}
710 .btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;}
710 .btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;}
711 .btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}
711 .btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}
712 .alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
712 .alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
713 .alert,.alert h4{color:#c09853;}
713 .alert,.alert h4{color:#c09853;}
714 .alert h4{margin:0;}
714 .alert h4{margin:0;}
715 .alert .close{position:relative;top:-2px;right:-21px;line-height:20px;}
715 .alert .close{position:relative;top:-2px;right:-21px;line-height:20px;}
716 .alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;}
716 .alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;}
717 .alert-success h4{color:#468847;}
717 .alert-success h4{color:#468847;}
718 .alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;}
718 .alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;}
719 .alert-danger h4,.alert-error h4{color:#b94a48;}
719 .alert-danger h4,.alert-error h4{color:#b94a48;}
720 .alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;}
720 .alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;}
721 .alert-info h4{color:#3a87ad;}
721 .alert-info h4{color:#3a87ad;}
722 .alert-block{padding-top:14px;padding-bottom:14px;}
722 .alert-block{padding-top:14px;padding-bottom:14px;}
723 .alert-block>p,.alert-block>ul{margin-bottom:0;}
723 .alert-block>p,.alert-block>ul{margin-bottom:0;}
724 .alert-block p+p{margin-top:5px;}
724 .alert-block p+p{margin-top:5px;}
725 .nav{margin-left:0;margin-bottom:20px;list-style:none;}
725 .nav{margin-left:0;margin-bottom:20px;list-style:none;}
726 .nav>li>a{display:block;}
726 .nav>li>a{display:block;}
727 .nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee;}
727 .nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee;}
728 .nav>li>a>img{max-width:none;}
728 .nav>li>a>img{max-width:none;}
729 .nav>.pull-right{float:right;}
729 .nav>.pull-right{float:right;}
730 .nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;}
730 .nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;}
731 .nav li+.nav-header{margin-top:9px;}
731 .nav li+.nav-header{margin-top:9px;}
732 .nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;}
732 .nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;}
733 .nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}
733 .nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}
734 .nav-list>li>a{padding:3px 15px;}
734 .nav-list>li>a{padding:3px 15px;}
735 .nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;}
735 .nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;}
736 .nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px;}
736 .nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px;}
737 .nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;}
737 .nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;}
738 .nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;}
738 .nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;}
739 .nav-tabs:after,.nav-pills:after{clear:both;}
739 .nav-tabs:after,.nav-pills:after{clear:both;}
740 .nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;}
740 .nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";line-height:0;}
741 .nav-tabs:after,.nav-pills:after{clear:both;}
741 .nav-tabs:after,.nav-pills:after{clear:both;}
742 .nav-tabs>li,.nav-pills>li{float:left;}
742 .nav-tabs>li,.nav-pills>li{float:left;}
743 .nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;}
743 .nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;}
744 .nav-tabs{border-bottom:1px solid #ddd;}
744 .nav-tabs{border-bottom:1px solid #ddd;}
745 .nav-tabs>li{margin-bottom:-1px;}
745 .nav-tabs>li{margin-bottom:-1px;}
746 .nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eeeeee #eeeeee #dddddd;}
746 .nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eeeeee #eeeeee #dddddd;}
747 .nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}
747 .nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}
748 .nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
748 .nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
749 .nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#ffffff;background-color:#0088cc;}
749 .nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#ffffff;background-color:#0088cc;}
750 .nav-stacked>li{float:none;}
750 .nav-stacked>li{float:none;}
751 .nav-stacked>li>a{margin-right:0;}
751 .nav-stacked>li>a{margin-right:0;}
752 .nav-tabs.nav-stacked{border-bottom:0;}
752 .nav-tabs.nav-stacked{border-bottom:0;}
753 .nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
753 .nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
754 .nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
754 .nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;}
755 .nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
755 .nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
756 .nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{border-color:#ddd;z-index:2;}
756 .nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{border-color:#ddd;z-index:2;}
757 .nav-pills.nav-stacked>li>a{margin-bottom:3px;}
757 .nav-pills.nav-stacked>li>a{margin-bottom:3px;}
758 .nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;}
758 .nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;}
759 .nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}
759 .nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}
760 .nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
760 .nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
761 .nav .dropdown-toggle .caret{border-top-color:#0088cc;border-bottom-color:#0088cc;margin-top:6px;}
761 .nav .dropdown-toggle .caret{border-top-color:#0088cc;border-bottom-color:#0088cc;margin-top:6px;}
762 .nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580;}
762 .nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580;}
763 .nav-tabs .dropdown-toggle .caret{margin-top:8px;}
763 .nav-tabs .dropdown-toggle .caret{margin-top:8px;}
764 .nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff;}
764 .nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff;}
765 .nav-tabs .active .dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;}
765 .nav-tabs .active .dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;}
766 .nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer;}
766 .nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer;}
767 .nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#ffffff;background-color:#999999;border-color:#999999;}
767 .nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#ffffff;background-color:#999999;border-color:#999999;}
768 .nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);}
768 .nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);}
769 .tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999999;}
769 .tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999999;}
770 .tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;}
770 .tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";line-height:0;}
771 .tabbable:after{clear:both;}
771 .tabbable:after{clear:both;}
772 .tabbable:before,.tabbable:after{display:table;content:"";line-height:0;}
772 .tabbable:before,.tabbable:after{display:table;content:"";line-height:0;}
773 .tabbable:after{clear:both;}
773 .tabbable:after{clear:both;}
774 .tab-content{overflow:auto;}
774 .tab-content{overflow:auto;}
775 .tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0;}
775 .tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0;}
776 .tab-content>.tab-pane,.pill-content>.pill-pane{display:none;}
776 .tab-content>.tab-pane,.pill-content>.pill-pane{display:none;}
777 .tab-content>.active,.pill-content>.active{display:block;}
777 .tab-content>.active,.pill-content>.active{display:block;}
778 .tabs-below>.nav-tabs{border-top:1px solid #ddd;}
778 .tabs-below>.nav-tabs{border-top:1px solid #ddd;}
779 .tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0;}
779 .tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0;}
780 .tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-bottom-color:transparent;border-top-color:#ddd;}
780 .tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-bottom-color:transparent;border-top-color:#ddd;}
781 .tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd;}
781 .tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd;}
782 .tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none;}
782 .tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none;}
783 .tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;}
783 .tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;}
784 .tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;}
784 .tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;}
785 .tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
785 .tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
786 .tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eeeeee #dddddd #eeeeee #eeeeee;}
786 .tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eeeeee #dddddd #eeeeee #eeeeee;}
787 .tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;}
787 .tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;}
788 .tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;}
788 .tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;}
789 .tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
789 .tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
790 .tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eeeeee #eeeeee #eeeeee #dddddd;}
790 .tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eeeeee #eeeeee #eeeeee #dddddd;}
791 .tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;}
791 .tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;}
792 .nav>.disabled>a{color:#999999;}
792 .nav>.disabled>a{color:#999999;}
793 .nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;background-color:transparent;cursor:default;}
793 .nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;background-color:transparent;cursor:default;}
794 .navbar{overflow:visible;margin-bottom:20px;*position:relative;*z-index:2;}
794 .navbar{overflow:visible;margin-bottom:20px;*position:relative;*z-index:2;}
795 .navbar-inner{min-height:36px;padding-left:20px;padding-right:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top, #ffffff, #f2f2f2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));background-image:-webkit-linear-gradient(top, #ffffff, #f2f2f2);background-image:-o-linear-gradient(top, #ffffff, #f2f2f2);background-image:linear-gradient(to bottom, #ffffff, #f2f2f2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);-moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);*zoom:1;}.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;}
795 .navbar-inner{min-height:36px;padding-left:20px;padding-right:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top, #ffffff, #f2f2f2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));background-image:-webkit-linear-gradient(top, #ffffff, #f2f2f2);background-image:-o-linear-gradient(top, #ffffff, #f2f2f2);background-image:linear-gradient(to bottom, #ffffff, #f2f2f2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);-moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);*zoom:1;}.navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;}
796 .navbar-inner:after{clear:both;}
796 .navbar-inner:after{clear:both;}
797 .navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;}
797 .navbar-inner:before,.navbar-inner:after{display:table;content:"";line-height:0;}
798 .navbar-inner:after{clear:both;}
798 .navbar-inner:after{clear:both;}
799 .navbar .container{width:auto;}
799 .navbar .container{width:auto;}
800 .nav-collapse.collapse{height:auto;overflow:visible;}
800 .nav-collapse.collapse{height:auto;overflow:visible;}
801 .navbar .brand{float:left;display:block;padding:8px 20px 8px;margin-left:-20px;font-size:20px;font-weight:200;color:#777777;text-shadow:0 1px 0 #ffffff;}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none;}
801 .navbar .brand{float:left;display:block;padding:8px 20px 8px;margin-left:-20px;font-size:20px;font-weight:200;color:#777777;text-shadow:0 1px 0 #ffffff;}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none;}
802 .navbar-text{margin-bottom:0;line-height:36px;color:#777777;}
802 .navbar-text{margin-bottom:0;line-height:36px;color:#777777;}
803 .navbar-link{color:#777777;}.navbar-link:hover,.navbar-link:focus{color:#333333;}
803 .navbar-link{color:#777777;}.navbar-link:hover,.navbar-link:focus{color:#333333;}
804 .navbar .divider-vertical{height:36px;margin:0 9px;border-left:1px solid #f2f2f2;border-right:1px solid #ffffff;}
804 .navbar .divider-vertical{height:36px;margin:0 9px;border-left:1px solid #f2f2f2;border-right:1px solid #ffffff;}
805 .navbar .btn,.navbar .btn-group{margin-top:3px;}
805 .navbar .btn,.navbar .btn-group{margin-top:3px;}
806 .navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0;}
806 .navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0;}
807 .navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;}
807 .navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;}
808 .navbar-form:after{clear:both;}
808 .navbar-form:after{clear:both;}
809 .navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;}
809 .navbar-form:before,.navbar-form:after{display:table;content:"";line-height:0;}
810 .navbar-form:after{clear:both;}
810 .navbar-form:after{clear:both;}
811 .navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:3px;}
811 .navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:3px;}
812 .navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0;}
812 .navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0;}
813 .navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;}
813 .navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;}
814 .navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;}
814 .navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;}
815 .navbar-search{position:relative;float:left;margin-top:3px;margin-bottom:0;}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
815 .navbar-search{position:relative;float:left;margin-top:3px;margin-bottom:0;}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
816 .navbar-static-top{position:static;margin-bottom:0;}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
816 .navbar-static-top{position:static;margin-bottom:0;}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
817 .navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;}
817 .navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;}
818 .navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px;}
818 .navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px;}
819 .navbar-fixed-bottom .navbar-inner{border-width:1px 0 0;}
819 .navbar-fixed-bottom .navbar-inner{border-width:1px 0 0;}
820 .navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
820 .navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
821 .navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
821 .navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
822 .navbar-fixed-top{top:0;}
822 .navbar-fixed-top{top:0;}
823 .navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,.1);box-shadow:0 1px 10px rgba(0,0,0,.1);}
823 .navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,.1);box-shadow:0 1px 10px rgba(0,0,0,.1);}
824 .navbar-fixed-bottom{bottom:0;}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,.1);box-shadow:0 -1px 10px rgba(0,0,0,.1);}
824 .navbar-fixed-bottom{bottom:0;}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,.1);box-shadow:0 -1px 10px rgba(0,0,0,.1);}
825 .navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;}
825 .navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;}
826 .navbar .nav.pull-right{float:right;margin-right:0;}
826 .navbar .nav.pull-right{float:right;margin-right:0;}
827 .navbar .nav>li{float:left;}
827 .navbar .nav>li{float:left;}
828 .navbar .nav>li>a{float:none;padding:8px 15px 8px;color:#777777;text-decoration:none;text-shadow:0 1px 0 #ffffff;}
828 .navbar .nav>li>a{float:none;padding:8px 15px 8px;color:#777777;text-decoration:none;text-shadow:0 1px 0 #ffffff;}
829 .navbar .nav .dropdown-toggle .caret{margin-top:8px;}
829 .navbar .nav .dropdown-toggle .caret{margin-top:8px;}
830 .navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333333;text-decoration:none;}
830 .navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333333;text-decoration:none;}
831 .navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);-moz-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);}
831 .navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);-moz-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);}
832 .navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#ededed;background-image:-moz-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));background-image:-webkit-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-o-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:linear-gradient(to bottom, #f2f2f2, #e5e5e5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e5e5e5;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#ffffff;background-color:#e5e5e5;*background-color:#d9d9d9;}
832 .navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#ededed;background-image:-moz-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));background-image:-webkit-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-o-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:linear-gradient(to bottom, #f2f2f2, #e5e5e5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e5e5e5;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#ffffff;background-color:#e5e5e5;*background-color:#d9d9d9;}
833 .navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#cccccc \9;}
833 .navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#cccccc \9;}
834 .navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#ffffff;background-color:#e5e5e5;*background-color:#d9d9d9;}
834 .navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#ffffff;background-color:#e5e5e5;*background-color:#d9d9d9;}
835 .navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#cccccc \9;}
835 .navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#cccccc \9;}
836 .navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);}
836 .navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);}
837 .btn-navbar .icon-bar+.icon-bar{margin-top:3px;}
837 .btn-navbar .icon-bar+.icon-bar{margin-top:3px;}
838 .navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;}
838 .navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;}
839 .navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;}
839 .navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;}
840 .navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;}
840 .navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;}
841 .navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;}
841 .navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;}
842 .navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333333;border-bottom-color:#333333;}
842 .navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333333;border-bottom-color:#333333;}
843 .navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e5e5e5;color:#555555;}
843 .navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{background-color:#e5e5e5;color:#555555;}
844 .navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777777;border-bottom-color:#777777;}
844 .navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777777;border-bottom-color:#777777;}
845 .navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;}
845 .navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555555;border-bottom-color:#555555;}
846 .navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{left:auto;right:0;}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px;}
846 .navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{left:auto;right:0;}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{left:auto;right:12px;}
847 .navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px;}
847 .navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{left:auto;right:13px;}
848 .navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;}
848 .navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px;}
849 .navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top, #222222, #111111);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));background-image:-webkit-linear-gradient(top, #222222, #111111);background-image:-o-linear-gradient(top, #222222, #111111);background-image:linear-gradient(to bottom, #222222, #111111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525;}
849 .navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top, #222222, #111111);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));background-image:-webkit-linear-gradient(top, #222222, #111111);background-image:-o-linear-gradient(top, #222222, #111111);background-image:linear-gradient(to bottom, #222222, #111111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);border-color:#252525;}
850 .navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999999;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#ffffff;}
850 .navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999999;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#ffffff;}
851 .navbar-inverse .brand{color:#999999;}
851 .navbar-inverse .brand{color:#999999;}
852 .navbar-inverse .navbar-text{color:#999999;}
852 .navbar-inverse .navbar-text{color:#999999;}
853 .navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#ffffff;}
853 .navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#ffffff;}
854 .navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#ffffff;background-color:#111111;}
854 .navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#ffffff;background-color:#111111;}
855 .navbar-inverse .navbar-link{color:#999999;}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#ffffff;}
855 .navbar-inverse .navbar-link{color:#999999;}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#ffffff;}
856 .navbar-inverse .divider-vertical{border-left-color:#111111;border-right-color:#222222;}
856 .navbar-inverse .divider-vertical{border-left-color:#111111;border-right-color:#222222;}
857 .navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111111;color:#ffffff;}
857 .navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{background-color:#111111;color:#ffffff;}
858 .navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
858 .navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
859 .navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999999;border-bottom-color:#999999;}
859 .navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999999;border-bottom-color:#999999;}
860 .navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
860 .navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
861 .navbar-inverse .navbar-search .search-query{color:#ffffff;background-color:#515151;border-color:#111111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;}
861 .navbar-inverse .navbar-search .search-query{color:#ffffff;background-color:#515151;border-color:#111111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;}
862 .navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;}
862 .navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;}
863 .navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;}
863 .navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;}
864 .navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;}
864 .navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#cccccc;}
865 .navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;}
865 .navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;}
866 .navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;}
866 .navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;}
867 .navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;}
867 .navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;}
868 .navbar-inverse .btn-navbar{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top, #151515, #040404);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));background-image:-webkit-linear-gradient(top, #151515, #040404);background-image:-o-linear-gradient(top, #151515, #040404);background-image:linear-gradient(to bottom, #151515, #040404);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);border-color:#040404 #040404 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;}
868 .navbar-inverse .btn-navbar{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e0e0e;background-image:-moz-linear-gradient(top, #151515, #040404);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));background-image:-webkit-linear-gradient(top, #151515, #040404);background-image:-o-linear-gradient(top, #151515, #040404);background-image:linear-gradient(to bottom, #151515, #040404);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);border-color:#040404 #040404 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#040404;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;}
869 .navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;}
869 .navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;}
870 .navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;}
870 .navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000;}
871 .navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;}
871 .navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000000 \9;}
872 .breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.breadcrumb>li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #ffffff;}.breadcrumb>li>.divider{padding:0 5px;color:#ccc;}
872 .breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.breadcrumb>li{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 0 #ffffff;}.breadcrumb>li>.divider{padding:0 5px;color:#ccc;}
873 .breadcrumb>.active{color:#999999;}
873 .breadcrumb>.active{color:#999999;}
874 .pagination{margin:20px 0;}
874 .pagination{margin:20px 0;}
875 .pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);}
875 .pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);}
876 .pagination ul>li{display:inline;}
876 .pagination ul>li{display:inline;}
877 .pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#ffffff;border:1px solid #dddddd;border-left-width:0;}
877 .pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#ffffff;border:1px solid #dddddd;border-left-width:0;}
878 .pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5;}
878 .pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5;}
879 .pagination ul>.active>a,.pagination ul>.active>span{color:#999999;cursor:default;}
879 .pagination ul>.active>a,.pagination ul>.active>span{color:#999999;cursor:default;}
880 .pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999999;background-color:transparent;cursor:default;}
880 .pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999999;background-color:transparent;cursor:default;}
881 .pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
881 .pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
882 .pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
882 .pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
883 .pagination-centered{text-align:center;}
883 .pagination-centered{text-align:center;}
884 .pagination-right{text-align:right;}
884 .pagination-right{text-align:right;}
885 .pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:16.25px;}
885 .pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:16.25px;}
886 .pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
886 .pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
887 .pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
887 .pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
888 .pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px;}
888 .pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-top-left-radius:3px;-moz-border-radius-topleft:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-moz-border-radius-bottomleft:3px;border-bottom-left-radius:3px;}
889 .pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px;}
889 .pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;-moz-border-radius-topright:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-bottomright:3px;border-bottom-right-radius:3px;}
890 .pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.049999999999999px;}
890 .pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.049999999999999px;}
891 .pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:9.75px;}
891 .pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:9.75px;}
892 .pager{margin:20px 0;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";line-height:0;}
892 .pager{margin:20px 0;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";line-height:0;}
893 .pager:after{clear:both;}
893 .pager:after{clear:both;}
894 .pager:before,.pager:after{display:table;content:"";line-height:0;}
894 .pager:before,.pager:after{display:table;content:"";line-height:0;}
895 .pager:after{clear:both;}
895 .pager:after{clear:both;}
896 .pager li{display:inline;}
896 .pager li{display:inline;}
897 .pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
897 .pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
898 .pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5;}
898 .pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5;}
899 .pager .next>a,.pager .next>span{float:right;}
899 .pager .next>a,.pager .next>span{float:right;}
900 .pager .previous>a,.pager .previous>span{float:left;}
900 .pager .previous>a,.pager .previous>span{float:left;}
901 .pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:#fff;cursor:default;}
901 .pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:#fff;cursor:default;}
902 .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;}
902 .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;}
903 .modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);}
903 .modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);}
904 .modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:none;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;}
904 .modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:none;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;}
905 .modal.fade.in{top:10%;}
905 .modal.fade.in{top:10%;}
906 .modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;}
906 .modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;}
907 .modal-header h3{margin:0;line-height:30px;}
907 .modal-header h3{margin:0;line-height:30px;}
908 .modal-body{position:relative;overflow-y:auto;max-height:400px;padding:15px;}
908 .modal-body{position:relative;overflow-y:auto;max-height:400px;padding:15px;}
909 .modal-form{margin-bottom:0;}
909 .modal-form{margin-bottom:0;}
910 .modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;}
910 .modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;}
911 .modal-footer:after{clear:both;}
911 .modal-footer:after{clear:both;}
912 .modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;}
912 .modal-footer:before,.modal-footer:after{display:table;content:"";line-height:0;}
913 .modal-footer:after{clear:both;}
913 .modal-footer:after{clear:both;}
914 .modal-footer .btn+.btn{margin-left:5px;margin-bottom:0;}
914 .modal-footer .btn+.btn{margin-left:5px;margin-bottom:0;}
915 .modal-footer .btn-group .btn+.btn{margin-left:-1px;}
915 .modal-footer .btn-group .btn+.btn{margin-left:-1px;}
916 .modal-footer .btn-block+.btn-block{margin-left:0;}
916 .modal-footer .btn-block+.btn-block{margin-left:0;}
917 .tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);}
917 .tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);}
918 .tooltip.top{margin-top:-3px;padding:5px 0;}
918 .tooltip.top{margin-top:-3px;padding:5px 0;}
919 .tooltip.right{margin-left:3px;padding:0 5px;}
919 .tooltip.right{margin-left:3px;padding:0 5px;}
920 .tooltip.bottom{margin-top:3px;padding:5px 0;}
920 .tooltip.bottom{margin-top:3px;padding:5px 0;}
921 .tooltip.left{margin-left:-3px;padding:0 5px;}
921 .tooltip.left{margin-left:-3px;padding:0 5px;}
922 .tooltip-inner{max-width:200px;padding:8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
922 .tooltip-inner{max-width:200px;padding:8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
923 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;}
923 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;}
924 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;}
924 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;}
925 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;}
925 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;}
926 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;}
926 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;}
927 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;}
927 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;}
928 .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);white-space:normal;}.popover.top{margin-top:-10px;}
928 .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);white-space:normal;}.popover.top{margin-top:-10px;}
929 .popover.right{margin-left:10px;}
929 .popover.right{margin-left:10px;}
930 .popover.bottom{margin-top:10px;}
930 .popover.bottom{margin-top:10px;}
931 .popover.left{margin-left:-10px;}
931 .popover.left{margin-left:-10px;}
932 .popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}.popover-title:empty{display:none;}
932 .popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}.popover-title:empty{display:none;}
933 .popover-content{padding:9px 14px;}
933 .popover-content{padding:9px 14px;}
934 .popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;}
934 .popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;}
935 .popover .arrow{border-width:11px;}
935 .popover .arrow{border-width:11px;}
936 .popover .arrow:after{border-width:10px;content:"";}
936 .popover .arrow:after{border-width:10px;content:"";}
937 .popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0, 0, 0, 0.25);bottom:-11px;}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff;}
937 .popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0, 0, 0, 0.25);bottom:-11px;}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff;}
938 .popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0, 0, 0, 0.25);}.popover.right .arrow:after{left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff;}
938 .popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0, 0, 0, 0.25);}.popover.right .arrow:after{left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff;}
939 .popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0, 0, 0, 0.25);top:-11px;}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff;}
939 .popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0, 0, 0, 0.25);top:-11px;}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff;}
940 .popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0, 0, 0, 0.25);}.popover.left .arrow:after{right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px;}
940 .popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0, 0, 0, 0.25);}.popover.left .arrow:after{right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px;}
941 .thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;}
941 .thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;}
942 .thumbnails:after{clear:both;}
942 .thumbnails:after{clear:both;}
943 .thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;}
943 .thumbnails:before,.thumbnails:after{display:table;content:"";line-height:0;}
944 .thumbnails:after{clear:both;}
944 .thumbnails:after{clear:both;}
945 .row-fluid .thumbnails{margin-left:0;}
945 .row-fluid .thumbnails{margin-left:0;}
946 .thumbnails>li{float:left;margin-bottom:20px;margin-left:20px;}
946 .thumbnails>li{float:left;margin-bottom:20px;margin-left:20px;}
947 .thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;}
947 .thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;}
948 a.thumbnail:hover,a.thumbnail:focus{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);}
948 a.thumbnail:hover,a.thumbnail:focus{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);}
949 .thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;}
949 .thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;}
950 .thumbnail .caption{padding:9px;color:#555555;}
950 .thumbnail .caption{padding:9px;color:#555555;}
951 .media,.media-body{overflow:hidden;*overflow:visible;zoom:1;}
951 .media,.media-body{overflow:hidden;*overflow:visible;zoom:1;}
952 .media,.media .media{margin-top:15px;}
952 .media,.media .media{margin-top:15px;}
953 .media:first-child{margin-top:0;}
953 .media:first-child{margin-top:0;}
954 .media-object{display:block;}
954 .media-object{display:block;}
955 .media-heading{margin:0 0 5px;}
955 .media-heading{margin:0 0 5px;}
956 .media>.pull-left{margin-right:10px;}
956 .media>.pull-left{margin-right:10px;}
957 .media>.pull-right{margin-left:10px;}
957 .media>.pull-right{margin-left:10px;}
958 .media-list{margin-left:0;list-style:none;}
958 .media-list{margin-left:0;list-style:none;}
959 .label,.badge{display:inline-block;padding:2px 4px;font-size:10.998px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;}
959 .label,.badge{display:inline-block;padding:2px 4px;font-size:10.998px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;}
960 .label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
960 .label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
961 .badge{padding-left:9px;padding-right:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;}
961 .badge{padding-left:9px;padding-right:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;}
962 .label:empty,.badge:empty{display:none;}
962 .label:empty,.badge:empty{display:none;}
963 a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer;}
963 a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer;}
964 .label-important,.badge-important{background-color:#b94a48;}
964 .label-important,.badge-important{background-color:#b94a48;}
965 .label-important[href],.badge-important[href]{background-color:#953b39;}
965 .label-important[href],.badge-important[href]{background-color:#953b39;}
966 .label-warning,.badge-warning{background-color:#f89406;}
966 .label-warning,.badge-warning{background-color:#f89406;}
967 .label-warning[href],.badge-warning[href]{background-color:#c67605;}
967 .label-warning[href],.badge-warning[href]{background-color:#c67605;}
968 .label-success,.badge-success{background-color:#468847;}
968 .label-success,.badge-success{background-color:#468847;}
969 .label-success[href],.badge-success[href]{background-color:#356635;}
969 .label-success[href],.badge-success[href]{background-color:#356635;}
970 .label-info,.badge-info{background-color:#3a87ad;}
970 .label-info,.badge-info{background-color:#3a87ad;}
971 .label-info[href],.badge-info[href]{background-color:#2d6987;}
971 .label-info[href],.badge-info[href]{background-color:#2d6987;}
972 .label-inverse,.badge-inverse{background-color:#333333;}
972 .label-inverse,.badge-inverse{background-color:#333333;}
973 .label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;}
973 .label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;}
974 .btn .label,.btn .badge{position:relative;top:-1px;}
974 .btn .label,.btn .badge{position:relative;top:-1px;}
975 .btn-mini .label,.btn-mini .badge{top:0;}
975 .btn-mini .label,.btn-mini .badge{top:0;}
976 @-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-o-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(to bottom, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
976 @-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-o-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(to bottom, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
977 .progress .bar{width:0%;height:100%;color:#ffffff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(to bottom, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}
977 .progress .bar{width:0%;height:100%;color:#ffffff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(to bottom, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}
978 .progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);}
978 .progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);}
979 .progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;}
979 .progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;}
980 .progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;}
980 .progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;}
981 .progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);}
981 .progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);}
982 .progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
982 .progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
983 .progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);}
983 .progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);}
984 .progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
984 .progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
985 .progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);}
985 .progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);}
986 .progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
986 .progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
987 .progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);}
987 .progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);}
988 .progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
988 .progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
989 .accordion{margin-bottom:20px;}
989 .accordion{margin-bottom:20px;}
990 .accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
990 .accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
991 .accordion-heading{border-bottom:0;}
991 .accordion-heading{border-bottom:0;}
992 .accordion-heading .accordion-toggle{display:block;padding:8px 15px;}
992 .accordion-heading .accordion-toggle{display:block;padding:8px 15px;}
993 .accordion-toggle{cursor:pointer;}
993 .accordion-toggle{cursor:pointer;}
994 .accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;}
994 .accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;}
995 .carousel{position:relative;margin-bottom:20px;line-height:1;}
995 .carousel{position:relative;margin-bottom:20px;line-height:1;}
996 .carousel-inner{overflow:hidden;width:100%;position:relative;}
996 .carousel-inner{overflow:hidden;width:100%;position:relative;}
997 .carousel-inner>.item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1;}
997 .carousel-inner>.item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1;}
998 .carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block;}
998 .carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block;}
999 .carousel-inner>.active{left:0;}
999 .carousel-inner>.active{left:0;}
1000 .carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%;}
1000 .carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%;}
1001 .carousel-inner>.next{left:100%;}
1001 .carousel-inner>.next{left:100%;}
1002 .carousel-inner>.prev{left:-100%;}
1002 .carousel-inner>.prev{left:-100%;}
1003 .carousel-inner>.next.left,.carousel-inner>.prev.right{left:0;}
1003 .carousel-inner>.next.left,.carousel-inner>.prev.right{left:0;}
1004 .carousel-inner>.active.left{left:-100%;}
1004 .carousel-inner>.active.left{left:-100%;}
1005 .carousel-inner>.active.right{left:100%;}
1005 .carousel-inner>.active.right{left:100%;}
1006 .carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;}
1006 .carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;}
1007 .carousel-control:hover,.carousel-control:focus{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);}
1007 .carousel-control:hover,.carousel-control:focus{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);}
1008 .carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none;}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255, 255, 255, 0.25);border-radius:5px;}
1008 .carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none;}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255, 255, 255, 0.25);border-radius:5px;}
1009 .carousel-indicators .active{background-color:#fff;}
1009 .carousel-indicators .active{background-color:#fff;}
1010 .carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333333;background:rgba(0, 0, 0, 0.75);}
1010 .carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333333;background:rgba(0, 0, 0, 0.75);}
1011 .carousel-caption h4,.carousel-caption p{color:#ffffff;line-height:20px;}
1011 .carousel-caption h4,.carousel-caption p{color:#ffffff;line-height:20px;}
1012 .carousel-caption h4{margin:0 0 5px;}
1012 .carousel-caption h4{margin:0 0 5px;}
1013 .carousel-caption p{margin-bottom:0;}
1013 .carousel-caption p{margin-bottom:0;}
1014 .hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;}
1014 .hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px;}
1015 .hero-unit li{line-height:30px;}
1015 .hero-unit li{line-height:30px;}
1016 .pull-right{float:right;}
1016 .pull-right{float:right;}
1017 .pull-left{float:left;}
1017 .pull-left{float:left;}
1018 .hide{display:none;}
1018 .hide{display:none;}
1019 .show{display:block;}
1019 .show{display:block;}
1020 .invisible{visibility:hidden;}
1020 .invisible{visibility:hidden;}
1021 .affix{position:fixed;}
1021 .affix{position:fixed;}
1022 .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}
1022 .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}
1023 .clearfix:after{clear:both;}
1023 .clearfix:after{clear:both;}
1024 .hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
1024 .hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
1025 .input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
1025 .input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
1026 @-ms-viewport{width:device-width;}.hidden{display:none;visibility:hidden;}
1026 @-ms-viewport{width:device-width;}.hidden{display:none;visibility:hidden;}
1027 .visible-phone{display:none !important;}
1027 .visible-phone{display:none !important;}
1028 .visible-tablet{display:none !important;}
1028 .visible-tablet{display:none !important;}
1029 .hidden-desktop{display:none !important;}
1029 .hidden-desktop{display:none !important;}
1030 .visible-desktop{display:inherit !important;}
1030 .visible-desktop{display:inherit !important;}
1031 @media (min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important ;} .visible-tablet{display:inherit !important;} .hidden-tablet{display:none !important;}}@media (max-width:767px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important;} .visible-phone{display:inherit !important;} .hidden-phone{display:none !important;}}.visible-print{display:none !important;}
1031 @media (min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important ;} .visible-tablet{display:inherit !important;} .hidden-tablet{display:none !important;}}@media (max-width:767px){.hidden-desktop{display:inherit !important;} .visible-desktop{display:none !important;} .visible-phone{display:inherit !important;} .hidden-phone{display:none !important;}}.visible-print{display:none !important;}
1032 @media print{.visible-print{display:inherit !important;} .hidden-print{display:none !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:30px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:30px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:30px;} input.span12,textarea.span12,.uneditable-input.span12{width:1156px;} input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} input.span10,textarea.span10,.uneditable-input.span10{width:956px;} input.span9,textarea.span9,.uneditable-input.span9{width:856px;} input.span8,textarea.span8,.uneditable-input.span8{width:756px;} input.span7,textarea.span7,.uneditable-input.span7{width:656px;} input.span6,textarea.span6,.uneditable-input.span6{width:556px;} input.span5,textarea.span5,.uneditable-input.span5{width:456px;} input.span4,textarea.span4,.uneditable-input.span4{width:356px;} input.span3,textarea.span3,.uneditable-input.span3{width:256px;} input.span2,textarea.span2,.uneditable-input.span2{width:156px;} input.span1,textarea.span1,.uneditable-input.span1{width:56px;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:30px;} input.span12,textarea.span12,.uneditable-input.span12{width:1156px;} input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} input.span10,textarea.span10,.uneditable-input.span10{width:956px;} input.span9,textarea.span9,.uneditable-input.span9{width:856px;} input.span8,textarea.span8,.uneditable-input.span8{width:756px;} input.span7,textarea.span7,.uneditable-input.span7{width:656px;} input.span6,textarea.span6,.uneditable-input.span6{width:556px;} input.span5,textarea.span5,.uneditable-input.span5{width:456px;} input.span4,textarea.span4,.uneditable-input.span4{width:356px;} input.span3,textarea.span3,.uneditable-input.span3{width:256px;} input.span2,textarea.span2,.uneditable-input.span2{width:156px;} input.span1,textarea.span1,.uneditable-input.span1{width:56px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;} .row-fluid .thumbnails{margin-left:0;}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:20px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:20px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:20px;} input.span12,textarea.span12,.uneditable-input.span12{width:710px;} input.span11,textarea.span11,.uneditable-input.span11{width:648px;} input.span10,textarea.span10,.uneditable-input.span10{width:586px;} input.span9,textarea.span9,.uneditable-input.span9{width:524px;} input.span8,textarea.span8,.uneditable-input.span8{width:462px;} input.span7,textarea.span7,.uneditable-input.span7{width:400px;} input.span6,textarea.span6,.uneditable-input.span6{width:338px;} input.span5,textarea.span5,.uneditable-input.span5{width:276px;} input.span4,textarea.span4,.uneditable-input.span4{width:214px;} input.span3,textarea.span3,.uneditable-input.span3{width:152px;} input.span2,textarea.span2,.uneditable-input.span2{width:90px;} input.span1,textarea.span1,.uneditable-input.span1{width:28px;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:20px;} input.span12,textarea.span12,.uneditable-input.span12{width:710px;} input.span11,textarea.span11,.uneditable-input.span11{width:648px;} input.span10,textarea.span10,.uneditable-input.span10{width:586px;} input.span9,textarea.span9,.uneditable-input.span9{width:524px;} input.span8,textarea.span8,.uneditable-input.span8{width:462px;} input.span7,textarea.span7,.uneditable-input.span7{width:400px;} input.span6,textarea.span6,.uneditable-input.span6{width:338px;} input.span5,textarea.span5,.uneditable-input.span5{width:276px;} input.span4,textarea.span4,.uneditable-input.span4{width:214px;} input.span3,textarea.span3,.uneditable-input.span3{width:152px;} input.span2,textarea.span2,.uneditable-input.span2{width:90px;} input.span1,textarea.span1,.uneditable-input.span1{width:28px;}}@media (max-width:767px){body{padding-left:20px;padding-right:20px;} .navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-left:-20px;margin-right:-20px;} .container-fluid{padding:0;} .dl-horizontal dt{float:none;clear:none;width:auto;text-align:left;} .dl-horizontal dd{margin-left:0;} .container{width:auto;} .row-fluid{width:100%;} .row,.thumbnails{margin-left:0;} .thumbnails>li{float:none;margin-left:0;} [class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{float:none;display:block;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .row-fluid [class*="offset"]:first-child{margin-left:0;} .input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto;} .controls-row [class*="span"]+[class*="span"]{margin-left:0;} .modal{position:fixed;top:20px;left:20px;right:20px;width:auto;margin:0;}.modal.fade{top:-100px;} .modal.fade.in{top:20px;}}@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:20px;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .media .pull-left,.media .pull-right{float:none;display:block;margin-bottom:10px;} .media-object{margin-right:0;margin-left:0;} .modal{top:10px;left:10px;right:10px;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:979px){body{padding-top:0;} .navbar-fixed-top,.navbar-fixed-bottom{position:static;} .navbar-fixed-top{margin-bottom:20px;} .navbar-fixed-bottom{margin-top:20px;} .navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .nav-collapse{clear:both;} .nav-collapse .nav{float:none;margin:0 0 10px;} .nav-collapse .nav>li{float:none;} .nav-collapse .nav>li>a{margin-bottom:2px;} .nav-collapse .nav>.divider-vertical{display:none;} .nav-collapse .nav .nav-header{color:#777777;text-shadow:none;} .nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} .nav-collapse .dropdown-menu li+li a{margin-bottom:2px;} .nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2;} .navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999999;} .navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111111;} .nav-collapse.in .btn-group{margin-top:5px;padding:0;} .nav-collapse .dropdown-menu{position:static;top:auto;left:auto;float:none;display:none;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .nav-collapse .open>.dropdown-menu{display:block;} .nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none;} .nav-collapse .dropdown-menu .divider{display:none;} .nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none;} .nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);} .navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111111;border-bottom-color:#111111;} .navbar .nav-collapse .nav.pull-right{float:none;margin-left:0;} .nav-collapse,.nav-collapse.collapse{overflow:hidden;height:0;} .navbar .btn-navbar{display:block;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important;}}@font-face{font-family:'FontAwesome';src:url('../components/font-awesome/build/assets/font-awesome/font/fontawesome-webfont.eot?v=3.1.0');src:url('../components/font-awesome/build/assets/font-awesome/font/fontawesome-webfont.eot?#iefix&v=3.1.0') format('embedded-opentype'),url('../components/font-awesome/build/assets/font-awesome/font/fontawesome-webfont.woff?v=3.1.0') format('woff'),url('../components/font-awesome/build/assets/font-awesome/font/fontawesome-webfont.ttf?v=3.1.0') format('truetype'),url('../components/font-awesome/build/assets/font-awesome/font/fontawesome-webfont.svg#fontawesomeregular?v=3.1.0') format('svg');font-weight:normal;font-style:normal;}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;}
1032 @media print{.visible-print{display:inherit !important;} .hidden-print{display:none !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:30px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:30px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%;} .row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%;} .row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%;} .row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%;} .row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%;} .row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%;} .row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%;} .row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%;} .row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%;} .row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%;} .row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%;} .row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%;} .row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%;} .row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%;} .row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%;} .row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%;} .row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%;} .row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%;} .row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%;} .row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%;} .row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%;} .row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%;} .row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%;} .row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%;} .row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%;} .row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%;} .row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%;} .row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%;} .row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%;} .row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%;} .row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%;} .row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%;} .row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%;} .row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%;} .row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:30px;} input.span12,textarea.span12,.uneditable-input.span12{width:1156px;} input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} input.span10,textarea.span10,.uneditable-input.span10{width:956px;} input.span9,textarea.span9,.uneditable-input.span9{width:856px;} input.span8,textarea.span8,.uneditable-input.span8{width:756px;} input.span7,textarea.span7,.uneditable-input.span7{width:656px;} input.span6,textarea.span6,.uneditable-input.span6{width:556px;} input.span5,textarea.span5,.uneditable-input.span5{width:456px;} input.span4,textarea.span4,.uneditable-input.span4{width:356px;} input.span3,textarea.span3,.uneditable-input.span3{width:256px;} input.span2,textarea.span2,.uneditable-input.span2{width:156px;} input.span1,textarea.span1,.uneditable-input.span1{width:56px;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:30px;} input.span12,textarea.span12,.uneditable-input.span12{width:1156px;} input.span11,textarea.span11,.uneditable-input.span11{width:1056px;} input.span10,textarea.span10,.uneditable-input.span10{width:956px;} input.span9,textarea.span9,.uneditable-input.span9{width:856px;} input.span8,textarea.span8,.uneditable-input.span8{width:756px;} input.span7,textarea.span7,.uneditable-input.span7{width:656px;} input.span6,textarea.span6,.uneditable-input.span6{width:556px;} input.span5,textarea.span5,.uneditable-input.span5{width:456px;} input.span4,textarea.span4,.uneditable-input.span4{width:356px;} input.span3,textarea.span3,.uneditable-input.span3{width:256px;} input.span2,textarea.span2,.uneditable-input.span2{width:156px;} input.span1,textarea.span1,.uneditable-input.span1{width:56px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;} .row-fluid .thumbnails{margin-left:0;}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:20px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} .row:before,.row:after{display:table;content:"";line-height:0;} .row:after{clear:both;} [class*="span"]{float:left;min-height:1px;margin-left:20px;} .container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid:before,.row-fluid:after{display:table;content:"";line-height:0;} .row-fluid:after{clear:both;} .row-fluid [class*="span"]{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;} .row-fluid [class*="span"]:first-child{margin-left:0;} .row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%;} .row-fluid .span12{width:100%;*width:99.94680851063829%;} .row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%;} .row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%;} .row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%;} .row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%;} .row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%;} .row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%;} .row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%;} .row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%;} .row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%;} .row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%;} .row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%;} .row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%;} .row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%;} .row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%;} .row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%;} .row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%;} .row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%;} .row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%;} .row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%;} .row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%;} .row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%;} .row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%;} .row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%;} .row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%;} .row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%;} .row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%;} .row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%;} .row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%;} .row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%;} .row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%;} .row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%;} .row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%;} .row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%;} .row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%;} .row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:20px;} input.span12,textarea.span12,.uneditable-input.span12{width:710px;} input.span11,textarea.span11,.uneditable-input.span11{width:648px;} input.span10,textarea.span10,.uneditable-input.span10{width:586px;} input.span9,textarea.span9,.uneditable-input.span9{width:524px;} input.span8,textarea.span8,.uneditable-input.span8{width:462px;} input.span7,textarea.span7,.uneditable-input.span7{width:400px;} input.span6,textarea.span6,.uneditable-input.span6{width:338px;} input.span5,textarea.span5,.uneditable-input.span5{width:276px;} input.span4,textarea.span4,.uneditable-input.span4{width:214px;} input.span3,textarea.span3,.uneditable-input.span3{width:152px;} input.span2,textarea.span2,.uneditable-input.span2{width:90px;} input.span1,textarea.span1,.uneditable-input.span1{width:28px;} input,textarea,.uneditable-input{margin-left:0;} .controls-row [class*="span"]+[class*="span"]{margin-left:20px;} input.span12,textarea.span12,.uneditable-input.span12{width:710px;} input.span11,textarea.span11,.uneditable-input.span11{width:648px;} input.span10,textarea.span10,.uneditable-input.span10{width:586px;} input.span9,textarea.span9,.uneditable-input.span9{width:524px;} input.span8,textarea.span8,.uneditable-input.span8{width:462px;} input.span7,textarea.span7,.uneditable-input.span7{width:400px;} input.span6,textarea.span6,.uneditable-input.span6{width:338px;} input.span5,textarea.span5,.uneditable-input.span5{width:276px;} input.span4,textarea.span4,.uneditable-input.span4{width:214px;} input.span3,textarea.span3,.uneditable-input.span3{width:152px;} input.span2,textarea.span2,.uneditable-input.span2{width:90px;} input.span1,textarea.span1,.uneditable-input.span1{width:28px;}}@media (max-width:767px){body{padding-left:20px;padding-right:20px;} .navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-left:-20px;margin-right:-20px;} .container-fluid{padding:0;} .dl-horizontal dt{float:none;clear:none;width:auto;text-align:left;} .dl-horizontal dd{margin-left:0;} .container{width:auto;} .row-fluid{width:100%;} .row,.thumbnails{margin-left:0;} .thumbnails>li{float:none;margin-left:0;} [class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{float:none;display:block;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .row-fluid [class*="offset"]:first-child{margin-left:0;} .input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} .input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto;} .controls-row [class*="span"]+[class*="span"]{margin-left:0;} .modal{position:fixed;top:20px;left:20px;right:20px;width:auto;margin:0;}.modal.fade{top:-100px;} .modal.fade.in{top:20px;}}@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:20px;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .media .pull-left,.media .pull-right{float:none;display:block;margin-bottom:10px;} .media-object{margin-right:0;margin-left:0;} .modal{top:10px;left:10px;right:10px;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:979px){body{padding-top:0;} .navbar-fixed-top,.navbar-fixed-bottom{position:static;} .navbar-fixed-top{margin-bottom:20px;} .navbar-fixed-bottom{margin-top:20px;} .navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .nav-collapse{clear:both;} .nav-collapse .nav{float:none;margin:0 0 10px;} .nav-collapse .nav>li{float:none;} .nav-collapse .nav>li>a{margin-bottom:2px;} .nav-collapse .nav>.divider-vertical{display:none;} .nav-collapse .nav .nav-header{color:#777777;text-shadow:none;} .nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} .nav-collapse .dropdown-menu li+li a{margin-bottom:2px;} .nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2;} .navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999999;} .navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111111;} .nav-collapse.in .btn-group{margin-top:5px;padding:0;} .nav-collapse .dropdown-menu{position:static;top:auto;left:auto;float:none;display:none;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .nav-collapse .open>.dropdown-menu{display:block;} .nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none;} .nav-collapse .dropdown-menu .divider{display:none;} .nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none;} .nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);} .navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111111;border-bottom-color:#111111;} .navbar .nav-collapse .nav.pull-right{float:none;margin-left:0;} .nav-collapse,.nav-collapse.collapse{overflow:hidden;height:0;} .navbar .btn-navbar{display:block;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important;}}@font-face{font-family:'FontAwesome';src:url('../components/font-awesome/build/assets/font-awesome/font/fontawesome-webfont.eot?v=3.1.0');src:url('../components/font-awesome/build/assets/font-awesome/font/fontawesome-webfont.eot?#iefix&v=3.1.0') format('embedded-opentype'),url('../components/font-awesome/build/assets/font-awesome/font/fontawesome-webfont.woff?v=3.1.0') format('woff'),url('../components/font-awesome/build/assets/font-awesome/font/fontawesome-webfont.ttf?v=3.1.0') format('truetype'),url('../components/font-awesome/build/assets/font-awesome/font/fontawesome-webfont.svg#fontawesomeregular?v=3.1.0') format('svg');font-weight:normal;font-style:normal;}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;}
1033 [class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none;}
1033 [class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none;}
1034 .icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em;}
1034 .icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em;}
1035 a [class^="icon-"],a [class*=" icon-"],a [class^="icon-"]:before,a [class*=" icon-"]:before{display:inline;}
1035 a [class^="icon-"],a [class*=" icon-"],a [class^="icon-"]:before,a [class*=" icon-"]:before{display:inline;}
1036 [class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.2857142857142858em;text-align:center;}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.5714285714285714em;}
1036 [class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.2857142857142858em;text-align:center;}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.5714285714285714em;}
1037 ul.icons-ul{list-style-type:none;text-indent:-0.7142857142857143em;margin-left:2.142857142857143em;}ul.icons-ul>li .icon-li{width:0.7142857142857143em;display:inline-block;text-align:center;}
1037 ul.icons-ul{list-style-type:none;text-indent:-0.7142857142857143em;margin-left:2.142857142857143em;}ul.icons-ul>li .icon-li{width:0.7142857142857143em;display:inline-block;text-align:center;}
1038 [class^="icon-"].hide,[class*=" icon-"].hide{display:none;}
1038 [class^="icon-"].hide,[class*=" icon-"].hide{display:none;}
1039 .icon-muted{color:#eeeeee;}
1039 .icon-muted{color:#eeeeee;}
1040 .icon-light{color:#ffffff;}
1040 .icon-light{color:#ffffff;}
1041 .icon-dark{color:#333333;}
1041 .icon-dark{color:#333333;}
1042 .icon-border{border:solid 1px #eeeeee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
1042 .icon-border{border:solid 1px #eeeeee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
1043 .icon-2x{font-size:2em;}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
1043 .icon-2x{font-size:2em;}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
1044 .icon-3x{font-size:3em;}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
1044 .icon-3x{font-size:3em;}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
1045 .icon-4x{font-size:4em;}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
1045 .icon-4x{font-size:4em;}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
1046 .icon-5x{font-size:5em;}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;}
1046 .icon-5x{font-size:5em;}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;}
1047 .pull-right{float:right;}
1047 .pull-right{float:right;}
1048 .pull-left{float:left;}
1048 .pull-left{float:left;}
1049 [class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em;}
1049 [class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em;}
1050 [class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em;}
1050 [class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em;}
1051 [class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0% 0%;background-repeat:repeat;margin-top:0;}
1051 [class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0% 0%;background-repeat:repeat;margin-top:0;}
1052 .icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none;}
1052 .icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none;}
1053 .btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em;}
1053 .btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em;}
1054 .btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block;}
1054 .btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block;}
1055 .nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em;}
1055 .nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em;}
1056 .btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em;}
1056 .btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em;}
1057 .btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em;}
1057 .btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em;}
1058 .btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em;}
1058 .btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em;}
1059 .btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0;}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em;}
1059 .btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0;}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em;}
1060 .btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em;}
1060 .btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em;}
1061 .btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em;}
1061 .btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em;}
1062 .icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%;}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em;}
1062 .icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%;}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em;}
1063 .icon-stack .icon-stack-base{font-size:2em;*line-height:1em;}
1063 .icon-stack .icon-stack-base{font-size:2em;*line-height:1em;}
1064 .icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;}
1064 .icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;}
1065 @-moz-keyframes spin{0%{-moz-transform:rotate(0deg);} 100%{-moz-transform:rotate(359deg);}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);} 100%{-webkit-transform:rotate(359deg);}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);} 100%{-o-transform:rotate(359deg);}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg);} 100%{-ms-transform:rotate(359deg);}}@keyframes spin{0%{transform:rotate(0deg);} 100%{transform:rotate(359deg);}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);}
1065 @-moz-keyframes spin{0%{-moz-transform:rotate(0deg);} 100%{-moz-transform:rotate(359deg);}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);} 100%{-webkit-transform:rotate(359deg);}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);} 100%{-o-transform:rotate(359deg);}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg);} 100%{-ms-transform:rotate(359deg);}}@keyframes spin{0%{transform:rotate(0deg);} 100%{transform:rotate(359deg);}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);}
1066 .icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);}
1066 .icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);}
1067 .icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}
1067 .icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}
1068 .icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1);}
1068 .icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1);}
1069 .icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1);}
1069 .icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1);}
1070 .icon-glass:before{content:"\f000";}
1070 .icon-glass:before{content:"\f000";}
1071 .icon-music:before{content:"\f001";}
1071 .icon-music:before{content:"\f001";}
1072 .icon-search:before{content:"\f002";}
1072 .icon-search:before{content:"\f002";}
1073 .icon-envelope:before{content:"\f003";}
1073 .icon-envelope:before{content:"\f003";}
1074 .icon-heart:before{content:"\f004";}
1074 .icon-heart:before{content:"\f004";}
1075 .icon-star:before{content:"\f005";}
1075 .icon-star:before{content:"\f005";}
1076 .icon-star-empty:before{content:"\f006";}
1076 .icon-star-empty:before{content:"\f006";}
1077 .icon-user:before{content:"\f007";}
1077 .icon-user:before{content:"\f007";}
1078 .icon-film:before{content:"\f008";}
1078 .icon-film:before{content:"\f008";}
1079 .icon-th-large:before{content:"\f009";}
1079 .icon-th-large:before{content:"\f009";}
1080 .icon-th:before{content:"\f00a";}
1080 .icon-th:before{content:"\f00a";}
1081 .icon-th-list:before{content:"\f00b";}
1081 .icon-th-list:before{content:"\f00b";}
1082 .icon-ok:before{content:"\f00c";}
1082 .icon-ok:before{content:"\f00c";}
1083 .icon-remove:before{content:"\f00d";}
1083 .icon-remove:before{content:"\f00d";}
1084 .icon-zoom-in:before{content:"\f00e";}
1084 .icon-zoom-in:before{content:"\f00e";}
1085 .icon-zoom-out:before{content:"\f010";}
1085 .icon-zoom-out:before{content:"\f010";}
1086 .icon-off:before{content:"\f011";}
1086 .icon-off:before{content:"\f011";}
1087 .icon-signal:before{content:"\f012";}
1087 .icon-signal:before{content:"\f012";}
1088 .icon-cog:before{content:"\f013";}
1088 .icon-cog:before{content:"\f013";}
1089 .icon-trash:before{content:"\f014";}
1089 .icon-trash:before{content:"\f014";}
1090 .icon-home:before{content:"\f015";}
1090 .icon-home:before{content:"\f015";}
1091 .icon-file:before{content:"\f016";}
1091 .icon-file:before{content:"\f016";}
1092 .icon-time:before{content:"\f017";}
1092 .icon-time:before{content:"\f017";}
1093 .icon-road:before{content:"\f018";}
1093 .icon-road:before{content:"\f018";}
1094 .icon-download-alt:before{content:"\f019";}
1094 .icon-download-alt:before{content:"\f019";}
1095 .icon-download:before{content:"\f01a";}
1095 .icon-download:before{content:"\f01a";}
1096 .icon-upload:before{content:"\f01b";}
1096 .icon-upload:before{content:"\f01b";}
1097 .icon-inbox:before{content:"\f01c";}
1097 .icon-inbox:before{content:"\f01c";}
1098 .icon-play-circle:before{content:"\f01d";}
1098 .icon-play-circle:before{content:"\f01d";}
1099 .icon-repeat:before,.icon-rotate-right:before{content:"\f01e";}
1099 .icon-repeat:before,.icon-rotate-right:before{content:"\f01e";}
1100 .icon-refresh:before{content:"\f021";}
1100 .icon-refresh:before{content:"\f021";}
1101 .icon-list-alt:before{content:"\f022";}
1101 .icon-list-alt:before{content:"\f022";}
1102 .icon-lock:before{content:"\f023";}
1102 .icon-lock:before{content:"\f023";}
1103 .icon-flag:before{content:"\f024";}
1103 .icon-flag:before{content:"\f024";}
1104 .icon-headphones:before{content:"\f025";}
1104 .icon-headphones:before{content:"\f025";}
1105 .icon-volume-off:before{content:"\f026";}
1105 .icon-volume-off:before{content:"\f026";}
1106 .icon-volume-down:before{content:"\f027";}
1106 .icon-volume-down:before{content:"\f027";}
1107 .icon-volume-up:before{content:"\f028";}
1107 .icon-volume-up:before{content:"\f028";}
1108 .icon-qrcode:before{content:"\f029";}
1108 .icon-qrcode:before{content:"\f029";}
1109 .icon-barcode:before{content:"\f02a";}
1109 .icon-barcode:before{content:"\f02a";}
1110 .icon-tag:before{content:"\f02b";}
1110 .icon-tag:before{content:"\f02b";}
1111 .icon-tags:before{content:"\f02c";}
1111 .icon-tags:before{content:"\f02c";}
1112 .icon-book:before{content:"\f02d";}
1112 .icon-book:before{content:"\f02d";}
1113 .icon-bookmark:before{content:"\f02e";}
1113 .icon-bookmark:before{content:"\f02e";}
1114 .icon-print:before{content:"\f02f";}
1114 .icon-print:before{content:"\f02f";}
1115 .icon-camera:before{content:"\f030";}
1115 .icon-camera:before{content:"\f030";}
1116 .icon-font:before{content:"\f031";}
1116 .icon-font:before{content:"\f031";}
1117 .icon-bold:before{content:"\f032";}
1117 .icon-bold:before{content:"\f032";}
1118 .icon-italic:before{content:"\f033";}
1118 .icon-italic:before{content:"\f033";}
1119 .icon-text-height:before{content:"\f034";}
1119 .icon-text-height:before{content:"\f034";}
1120 .icon-text-width:before{content:"\f035";}
1120 .icon-text-width:before{content:"\f035";}
1121 .icon-align-left:before{content:"\f036";}
1121 .icon-align-left:before{content:"\f036";}
1122 .icon-align-center:before{content:"\f037";}
1122 .icon-align-center:before{content:"\f037";}
1123 .icon-align-right:before{content:"\f038";}
1123 .icon-align-right:before{content:"\f038";}
1124 .icon-align-justify:before{content:"\f039";}
1124 .icon-align-justify:before{content:"\f039";}
1125 .icon-list:before{content:"\f03a";}
1125 .icon-list:before{content:"\f03a";}
1126 .icon-indent-left:before{content:"\f03b";}
1126 .icon-indent-left:before{content:"\f03b";}
1127 .icon-indent-right:before{content:"\f03c";}
1127 .icon-indent-right:before{content:"\f03c";}
1128 .icon-facetime-video:before{content:"\f03d";}
1128 .icon-facetime-video:before{content:"\f03d";}
1129 .icon-picture:before{content:"\f03e";}
1129 .icon-picture:before{content:"\f03e";}
1130 .icon-pencil:before{content:"\f040";}
1130 .icon-pencil:before{content:"\f040";}
1131 .icon-map-marker:before{content:"\f041";}
1131 .icon-map-marker:before{content:"\f041";}
1132 .icon-adjust:before{content:"\f042";}
1132 .icon-adjust:before{content:"\f042";}
1133 .icon-tint:before{content:"\f043";}
1133 .icon-tint:before{content:"\f043";}
1134 .icon-edit:before{content:"\f044";}
1134 .icon-edit:before{content:"\f044";}
1135 .icon-share:before{content:"\f045";}
1135 .icon-share:before{content:"\f045";}
1136 .icon-check:before{content:"\f046";}
1136 .icon-check:before{content:"\f046";}
1137 .icon-move:before{content:"\f047";}
1137 .icon-move:before{content:"\f047";}
1138 .icon-step-backward:before{content:"\f048";}
1138 .icon-step-backward:before{content:"\f048";}
1139 .icon-fast-backward:before{content:"\f049";}
1139 .icon-fast-backward:before{content:"\f049";}
1140 .icon-backward:before{content:"\f04a";}
1140 .icon-backward:before{content:"\f04a";}
1141 .icon-play:before{content:"\f04b";}
1141 .icon-play:before{content:"\f04b";}
1142 .icon-pause:before{content:"\f04c";}
1142 .icon-pause:before{content:"\f04c";}
1143 .icon-stop:before{content:"\f04d";}
1143 .icon-stop:before{content:"\f04d";}
1144 .icon-forward:before{content:"\f04e";}
1144 .icon-forward:before{content:"\f04e";}
1145 .icon-fast-forward:before{content:"\f050";}
1145 .icon-fast-forward:before{content:"\f050";}
1146 .icon-step-forward:before{content:"\f051";}
1146 .icon-step-forward:before{content:"\f051";}
1147 .icon-eject:before{content:"\f052";}
1147 .icon-eject:before{content:"\f052";}
1148 .icon-chevron-left:before{content:"\f053";}
1148 .icon-chevron-left:before{content:"\f053";}
1149 .icon-chevron-right:before{content:"\f054";}
1149 .icon-chevron-right:before{content:"\f054";}
1150 .icon-plus-sign:before{content:"\f055";}
1150 .icon-plus-sign:before{content:"\f055";}
1151 .icon-minus-sign:before{content:"\f056";}
1151 .icon-minus-sign:before{content:"\f056";}
1152 .icon-remove-sign:before{content:"\f057";}
1152 .icon-remove-sign:before{content:"\f057";}
1153 .icon-ok-sign:before{content:"\f058";}
1153 .icon-ok-sign:before{content:"\f058";}
1154 .icon-question-sign:before{content:"\f059";}
1154 .icon-question-sign:before{content:"\f059";}
1155 .icon-info-sign:before{content:"\f05a";}
1155 .icon-info-sign:before{content:"\f05a";}
1156 .icon-screenshot:before{content:"\f05b";}
1156 .icon-screenshot:before{content:"\f05b";}
1157 .icon-remove-circle:before{content:"\f05c";}
1157 .icon-remove-circle:before{content:"\f05c";}
1158 .icon-ok-circle:before{content:"\f05d";}
1158 .icon-ok-circle:before{content:"\f05d";}
1159 .icon-ban-circle:before{content:"\f05e";}
1159 .icon-ban-circle:before{content:"\f05e";}
1160 .icon-arrow-left:before{content:"\f060";}
1160 .icon-arrow-left:before{content:"\f060";}
1161 .icon-arrow-right:before{content:"\f061";}
1161 .icon-arrow-right:before{content:"\f061";}
1162 .icon-arrow-up:before{content:"\f062";}
1162 .icon-arrow-up:before{content:"\f062";}
1163 .icon-arrow-down:before{content:"\f063";}
1163 .icon-arrow-down:before{content:"\f063";}
1164 .icon-share-alt:before,.icon-mail-forward:before{content:"\f064";}
1164 .icon-share-alt:before,.icon-mail-forward:before{content:"\f064";}
1165 .icon-resize-full:before{content:"\f065";}
1165 .icon-resize-full:before{content:"\f065";}
1166 .icon-resize-small:before{content:"\f066";}
1166 .icon-resize-small:before{content:"\f066";}
1167 .icon-plus:before{content:"\f067";}
1167 .icon-plus:before{content:"\f067";}
1168 .icon-minus:before{content:"\f068";}
1168 .icon-minus:before{content:"\f068";}
1169 .icon-asterisk:before{content:"\f069";}
1169 .icon-asterisk:before{content:"\f069";}
1170 .icon-exclamation-sign:before{content:"\f06a";}
1170 .icon-exclamation-sign:before{content:"\f06a";}
1171 .icon-gift:before{content:"\f06b";}
1171 .icon-gift:before{content:"\f06b";}
1172 .icon-leaf:before{content:"\f06c";}
1172 .icon-leaf:before{content:"\f06c";}
1173 .icon-fire:before{content:"\f06d";}
1173 .icon-fire:before{content:"\f06d";}
1174 .icon-eye-open:before{content:"\f06e";}
1174 .icon-eye-open:before{content:"\f06e";}
1175 .icon-eye-close:before{content:"\f070";}
1175 .icon-eye-close:before{content:"\f070";}
1176 .icon-warning-sign:before{content:"\f071";}
1176 .icon-warning-sign:before{content:"\f071";}
1177 .icon-plane:before{content:"\f072";}
1177 .icon-plane:before{content:"\f072";}
1178 .icon-calendar:before{content:"\f073";}
1178 .icon-calendar:before{content:"\f073";}
1179 .icon-random:before{content:"\f074";}
1179 .icon-random:before{content:"\f074";}
1180 .icon-comment:before{content:"\f075";}
1180 .icon-comment:before{content:"\f075";}
1181 .icon-magnet:before{content:"\f076";}
1181 .icon-magnet:before{content:"\f076";}
1182 .icon-chevron-up:before{content:"\f077";}
1182 .icon-chevron-up:before{content:"\f077";}
1183 .icon-chevron-down:before{content:"\f078";}
1183 .icon-chevron-down:before{content:"\f078";}
1184 .icon-retweet:before{content:"\f079";}
1184 .icon-retweet:before{content:"\f079";}
1185 .icon-shopping-cart:before{content:"\f07a";}
1185 .icon-shopping-cart:before{content:"\f07a";}
1186 .icon-folder-close:before{content:"\f07b";}
1186 .icon-folder-close:before{content:"\f07b";}
1187 .icon-folder-open:before{content:"\f07c";}
1187 .icon-folder-open:before{content:"\f07c";}
1188 .icon-resize-vertical:before{content:"\f07d";}
1188 .icon-resize-vertical:before{content:"\f07d";}
1189 .icon-resize-horizontal:before{content:"\f07e";}
1189 .icon-resize-horizontal:before{content:"\f07e";}
1190 .icon-bar-chart:before{content:"\f080";}
1190 .icon-bar-chart:before{content:"\f080";}
1191 .icon-twitter-sign:before{content:"\f081";}
1191 .icon-twitter-sign:before{content:"\f081";}
1192 .icon-facebook-sign:before{content:"\f082";}
1192 .icon-facebook-sign:before{content:"\f082";}
1193 .icon-camera-retro:before{content:"\f083";}
1193 .icon-camera-retro:before{content:"\f083";}
1194 .icon-key:before{content:"\f084";}
1194 .icon-key:before{content:"\f084";}
1195 .icon-cogs:before{content:"\f085";}
1195 .icon-cogs:before{content:"\f085";}
1196 .icon-comments:before{content:"\f086";}
1196 .icon-comments:before{content:"\f086";}
1197 .icon-thumbs-up:before{content:"\f087";}
1197 .icon-thumbs-up:before{content:"\f087";}
1198 .icon-thumbs-down:before{content:"\f088";}
1198 .icon-thumbs-down:before{content:"\f088";}
1199 .icon-star-half:before{content:"\f089";}
1199 .icon-star-half:before{content:"\f089";}
1200 .icon-heart-empty:before{content:"\f08a";}
1200 .icon-heart-empty:before{content:"\f08a";}
1201 .icon-signout:before{content:"\f08b";}
1201 .icon-signout:before{content:"\f08b";}
1202 .icon-linkedin-sign:before{content:"\f08c";}
1202 .icon-linkedin-sign:before{content:"\f08c";}
1203 .icon-pushpin:before{content:"\f08d";}
1203 .icon-pushpin:before{content:"\f08d";}
1204 .icon-external-link:before{content:"\f08e";}
1204 .icon-external-link:before{content:"\f08e";}
1205 .icon-signin:before{content:"\f090";}
1205 .icon-signin:before{content:"\f090";}
1206 .icon-trophy:before{content:"\f091";}
1206 .icon-trophy:before{content:"\f091";}
1207 .icon-github-sign:before{content:"\f092";}
1207 .icon-github-sign:before{content:"\f092";}
1208 .icon-upload-alt:before{content:"\f093";}
1208 .icon-upload-alt:before{content:"\f093";}
1209 .icon-lemon:before{content:"\f094";}
1209 .icon-lemon:before{content:"\f094";}
1210 .icon-phone:before{content:"\f095";}
1210 .icon-phone:before{content:"\f095";}
1211 .icon-check-empty:before{content:"\f096";}
1211 .icon-check-empty:before{content:"\f096";}
1212 .icon-bookmark-empty:before{content:"\f097";}
1212 .icon-bookmark-empty:before{content:"\f097";}
1213 .icon-phone-sign:before{content:"\f098";}
1213 .icon-phone-sign:before{content:"\f098";}
1214 .icon-twitter:before{content:"\f099";}
1214 .icon-twitter:before{content:"\f099";}
1215 .icon-facebook:before{content:"\f09a";}
1215 .icon-facebook:before{content:"\f09a";}
1216 .icon-github:before{content:"\f09b";}
1216 .icon-github:before{content:"\f09b";}
1217 .icon-unlock:before{content:"\f09c";}
1217 .icon-unlock:before{content:"\f09c";}
1218 .icon-credit-card:before{content:"\f09d";}
1218 .icon-credit-card:before{content:"\f09d";}
1219 .icon-rss:before{content:"\f09e";}
1219 .icon-rss:before{content:"\f09e";}
1220 .icon-hdd:before{content:"\f0a0";}
1220 .icon-hdd:before{content:"\f0a0";}
1221 .icon-bullhorn:before{content:"\f0a1";}
1221 .icon-bullhorn:before{content:"\f0a1";}
1222 .icon-bell:before{content:"\f0a2";}
1222 .icon-bell:before{content:"\f0a2";}
1223 .icon-certificate:before{content:"\f0a3";}
1223 .icon-certificate:before{content:"\f0a3";}
1224 .icon-hand-right:before{content:"\f0a4";}
1224 .icon-hand-right:before{content:"\f0a4";}
1225 .icon-hand-left:before{content:"\f0a5";}
1225 .icon-hand-left:before{content:"\f0a5";}
1226 .icon-hand-up:before{content:"\f0a6";}
1226 .icon-hand-up:before{content:"\f0a6";}
1227 .icon-hand-down:before{content:"\f0a7";}
1227 .icon-hand-down:before{content:"\f0a7";}
1228 .icon-circle-arrow-left:before{content:"\f0a8";}
1228 .icon-circle-arrow-left:before{content:"\f0a8";}
1229 .icon-circle-arrow-right:before{content:"\f0a9";}
1229 .icon-circle-arrow-right:before{content:"\f0a9";}
1230 .icon-circle-arrow-up:before{content:"\f0aa";}
1230 .icon-circle-arrow-up:before{content:"\f0aa";}
1231 .icon-circle-arrow-down:before{content:"\f0ab";}
1231 .icon-circle-arrow-down:before{content:"\f0ab";}
1232 .icon-globe:before{content:"\f0ac";}
1232 .icon-globe:before{content:"\f0ac";}
1233 .icon-wrench:before{content:"\f0ad";}
1233 .icon-wrench:before{content:"\f0ad";}
1234 .icon-tasks:before{content:"\f0ae";}
1234 .icon-tasks:before{content:"\f0ae";}
1235 .icon-filter:before{content:"\f0b0";}
1235 .icon-filter:before{content:"\f0b0";}
1236 .icon-briefcase:before{content:"\f0b1";}
1236 .icon-briefcase:before{content:"\f0b1";}
1237 .icon-fullscreen:before{content:"\f0b2";}
1237 .icon-fullscreen:before{content:"\f0b2";}
1238 .icon-group:before{content:"\f0c0";}
1238 .icon-group:before{content:"\f0c0";}
1239 .icon-link:before{content:"\f0c1";}
1239 .icon-link:before{content:"\f0c1";}
1240 .icon-cloud:before{content:"\f0c2";}
1240 .icon-cloud:before{content:"\f0c2";}
1241 .icon-beaker:before{content:"\f0c3";}
1241 .icon-beaker:before{content:"\f0c3";}
1242 .icon-cut:before{content:"\f0c4";}
1242 .icon-cut:before{content:"\f0c4";}
1243 .icon-copy:before{content:"\f0c5";}
1243 .icon-copy:before{content:"\f0c5";}
1244 .icon-paper-clip:before{content:"\f0c6";}
1244 .icon-paper-clip:before{content:"\f0c6";}
1245 .icon-save:before{content:"\f0c7";}
1245 .icon-save:before{content:"\f0c7";}
1246 .icon-sign-blank:before{content:"\f0c8";}
1246 .icon-sign-blank:before{content:"\f0c8";}
1247 .icon-reorder:before{content:"\f0c9";}
1247 .icon-reorder:before{content:"\f0c9";}
1248 .icon-list-ul:before{content:"\f0ca";}
1248 .icon-list-ul:before{content:"\f0ca";}
1249 .icon-list-ol:before{content:"\f0cb";}
1249 .icon-list-ol:before{content:"\f0cb";}
1250 .icon-strikethrough:before{content:"\f0cc";}
1250 .icon-strikethrough:before{content:"\f0cc";}
1251 .icon-underline:before{content:"\f0cd";}
1251 .icon-underline:before{content:"\f0cd";}
1252 .icon-table:before{content:"\f0ce";}
1252 .icon-table:before{content:"\f0ce";}
1253 .icon-magic:before{content:"\f0d0";}
1253 .icon-magic:before{content:"\f0d0";}
1254 .icon-truck:before{content:"\f0d1";}
1254 .icon-truck:before{content:"\f0d1";}
1255 .icon-pinterest:before{content:"\f0d2";}
1255 .icon-pinterest:before{content:"\f0d2";}
1256 .icon-pinterest-sign:before{content:"\f0d3";}
1256 .icon-pinterest-sign:before{content:"\f0d3";}
1257 .icon-google-plus-sign:before{content:"\f0d4";}
1257 .icon-google-plus-sign:before{content:"\f0d4";}
1258 .icon-google-plus:before{content:"\f0d5";}
1258 .icon-google-plus:before{content:"\f0d5";}
1259 .icon-money:before{content:"\f0d6";}
1259 .icon-money:before{content:"\f0d6";}
1260 .icon-caret-down:before{content:"\f0d7";}
1260 .icon-caret-down:before{content:"\f0d7";}
1261 .icon-caret-up:before{content:"\f0d8";}
1261 .icon-caret-up:before{content:"\f0d8";}
1262 .icon-caret-left:before{content:"\f0d9";}
1262 .icon-caret-left:before{content:"\f0d9";}
1263 .icon-caret-right:before{content:"\f0da";}
1263 .icon-caret-right:before{content:"\f0da";}
1264 .icon-columns:before{content:"\f0db";}
1264 .icon-columns:before{content:"\f0db";}
1265 .icon-sort:before{content:"\f0dc";}
1265 .icon-sort:before{content:"\f0dc";}
1266 .icon-sort-down:before{content:"\f0dd";}
1266 .icon-sort-down:before{content:"\f0dd";}
1267 .icon-sort-up:before{content:"\f0de";}
1267 .icon-sort-up:before{content:"\f0de";}
1268 .icon-envelope-alt:before{content:"\f0e0";}
1268 .icon-envelope-alt:before{content:"\f0e0";}
1269 .icon-linkedin:before{content:"\f0e1";}
1269 .icon-linkedin:before{content:"\f0e1";}
1270 .icon-undo:before,.icon-rotate-left:before{content:"\f0e2";}
1270 .icon-undo:before,.icon-rotate-left:before{content:"\f0e2";}
1271 .icon-legal:before{content:"\f0e3";}
1271 .icon-legal:before{content:"\f0e3";}
1272 .icon-dashboard:before{content:"\f0e4";}
1272 .icon-dashboard:before{content:"\f0e4";}
1273 .icon-comment-alt:before{content:"\f0e5";}
1273 .icon-comment-alt:before{content:"\f0e5";}
1274 .icon-comments-alt:before{content:"\f0e6";}
1274 .icon-comments-alt:before{content:"\f0e6";}
1275 .icon-bolt:before{content:"\f0e7";}
1275 .icon-bolt:before{content:"\f0e7";}
1276 .icon-sitemap:before{content:"\f0e8";}
1276 .icon-sitemap:before{content:"\f0e8";}
1277 .icon-umbrella:before{content:"\f0e9";}
1277 .icon-umbrella:before{content:"\f0e9";}
1278 .icon-paste:before{content:"\f0ea";}
1278 .icon-paste:before{content:"\f0ea";}
1279 .icon-lightbulb:before{content:"\f0eb";}
1279 .icon-lightbulb:before{content:"\f0eb";}
1280 .icon-exchange:before{content:"\f0ec";}
1280 .icon-exchange:before{content:"\f0ec";}
1281 .icon-cloud-download:before{content:"\f0ed";}
1281 .icon-cloud-download:before{content:"\f0ed";}
1282 .icon-cloud-upload:before{content:"\f0ee";}
1282 .icon-cloud-upload:before{content:"\f0ee";}
1283 .icon-user-md:before{content:"\f0f0";}
1283 .icon-user-md:before{content:"\f0f0";}
1284 .icon-stethoscope:before{content:"\f0f1";}
1284 .icon-stethoscope:before{content:"\f0f1";}
1285 .icon-suitcase:before{content:"\f0f2";}
1285 .icon-suitcase:before{content:"\f0f2";}
1286 .icon-bell-alt:before{content:"\f0f3";}
1286 .icon-bell-alt:before{content:"\f0f3";}
1287 .icon-coffee:before{content:"\f0f4";}
1287 .icon-coffee:before{content:"\f0f4";}
1288 .icon-food:before{content:"\f0f5";}
1288 .icon-food:before{content:"\f0f5";}
1289 .icon-file-alt:before{content:"\f0f6";}
1289 .icon-file-alt:before{content:"\f0f6";}
1290 .icon-building:before{content:"\f0f7";}
1290 .icon-building:before{content:"\f0f7";}
1291 .icon-hospital:before{content:"\f0f8";}
1291 .icon-hospital:before{content:"\f0f8";}
1292 .icon-ambulance:before{content:"\f0f9";}
1292 .icon-ambulance:before{content:"\f0f9";}
1293 .icon-medkit:before{content:"\f0fa";}
1293 .icon-medkit:before{content:"\f0fa";}
1294 .icon-fighter-jet:before{content:"\f0fb";}
1294 .icon-fighter-jet:before{content:"\f0fb";}
1295 .icon-beer:before{content:"\f0fc";}
1295 .icon-beer:before{content:"\f0fc";}
1296 .icon-h-sign:before{content:"\f0fd";}
1296 .icon-h-sign:before{content:"\f0fd";}
1297 .icon-plus-sign-alt:before{content:"\f0fe";}
1297 .icon-plus-sign-alt:before{content:"\f0fe";}
1298 .icon-double-angle-left:before{content:"\f100";}
1298 .icon-double-angle-left:before{content:"\f100";}
1299 .icon-double-angle-right:before{content:"\f101";}
1299 .icon-double-angle-right:before{content:"\f101";}
1300 .icon-double-angle-up:before{content:"\f102";}
1300 .icon-double-angle-up:before{content:"\f102";}
1301 .icon-double-angle-down:before{content:"\f103";}
1301 .icon-double-angle-down:before{content:"\f103";}
1302 .icon-angle-left:before{content:"\f104";}
1302 .icon-angle-left:before{content:"\f104";}
1303 .icon-angle-right:before{content:"\f105";}
1303 .icon-angle-right:before{content:"\f105";}
1304 .icon-angle-up:before{content:"\f106";}
1304 .icon-angle-up:before{content:"\f106";}
1305 .icon-angle-down:before{content:"\f107";}
1305 .icon-angle-down:before{content:"\f107";}
1306 .icon-desktop:before{content:"\f108";}
1306 .icon-desktop:before{content:"\f108";}
1307 .icon-laptop:before{content:"\f109";}
1307 .icon-laptop:before{content:"\f109";}
1308 .icon-tablet:before{content:"\f10a";}
1308 .icon-tablet:before{content:"\f10a";}
1309 .icon-mobile-phone:before{content:"\f10b";}
1309 .icon-mobile-phone:before{content:"\f10b";}
1310 .icon-circle-blank:before{content:"\f10c";}
1310 .icon-circle-blank:before{content:"\f10c";}
1311 .icon-quote-left:before{content:"\f10d";}
1311 .icon-quote-left:before{content:"\f10d";}
1312 .icon-quote-right:before{content:"\f10e";}
1312 .icon-quote-right:before{content:"\f10e";}
1313 .icon-spinner:before{content:"\f110";}
1313 .icon-spinner:before{content:"\f110";}
1314 .icon-circle:before{content:"\f111";}
1314 .icon-circle:before{content:"\f111";}
1315 .icon-reply:before,.icon-mail-reply:before{content:"\f112";}
1315 .icon-reply:before,.icon-mail-reply:before{content:"\f112";}
1316 .icon-folder-close-alt:before{content:"\f114";}
1316 .icon-folder-close-alt:before{content:"\f114";}
1317 .icon-folder-open-alt:before{content:"\f115";}
1317 .icon-folder-open-alt:before{content:"\f115";}
1318 .icon-expand-alt:before{content:"\f116";}
1318 .icon-expand-alt:before{content:"\f116";}
1319 .icon-collapse-alt:before{content:"\f117";}
1319 .icon-collapse-alt:before{content:"\f117";}
1320 .icon-smile:before{content:"\f118";}
1320 .icon-smile:before{content:"\f118";}
1321 .icon-frown:before{content:"\f119";}
1321 .icon-frown:before{content:"\f119";}
1322 .icon-meh:before{content:"\f11a";}
1322 .icon-meh:before{content:"\f11a";}
1323 .icon-gamepad:before{content:"\f11b";}
1323 .icon-gamepad:before{content:"\f11b";}
1324 .icon-keyboard:before{content:"\f11c";}
1324 .icon-keyboard:before{content:"\f11c";}
1325 .icon-flag-alt:before{content:"\f11d";}
1325 .icon-flag-alt:before{content:"\f11d";}
1326 .icon-flag-checkered:before{content:"\f11e";}
1326 .icon-flag-checkered:before{content:"\f11e";}
1327 .icon-terminal:before{content:"\f120";}
1327 .icon-terminal:before{content:"\f120";}
1328 .icon-code:before{content:"\f121";}
1328 .icon-code:before{content:"\f121";}
1329 .icon-reply-all:before{content:"\f122";}
1329 .icon-reply-all:before{content:"\f122";}
1330 .icon-mail-reply-all:before{content:"\f122";}
1330 .icon-mail-reply-all:before{content:"\f122";}
1331 .icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123";}
1331 .icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123";}
1332 .icon-location-arrow:before{content:"\f124";}
1332 .icon-location-arrow:before{content:"\f124";}
1333 .icon-crop:before{content:"\f125";}
1333 .icon-crop:before{content:"\f125";}
1334 .icon-code-fork:before{content:"\f126";}
1334 .icon-code-fork:before{content:"\f126";}
1335 .icon-unlink:before{content:"\f127";}
1335 .icon-unlink:before{content:"\f127";}
1336 .icon-question:before{content:"\f128";}
1336 .icon-question:before{content:"\f128";}
1337 .icon-info:before{content:"\f129";}
1337 .icon-info:before{content:"\f129";}
1338 .icon-exclamation:before{content:"\f12a";}
1338 .icon-exclamation:before{content:"\f12a";}
1339 .icon-superscript:before{content:"\f12b";}
1339 .icon-superscript:before{content:"\f12b";}
1340 .icon-subscript:before{content:"\f12c";}
1340 .icon-subscript:before{content:"\f12c";}
1341 .icon-eraser:before{content:"\f12d";}
1341 .icon-eraser:before{content:"\f12d";}
1342 .icon-puzzle-piece:before{content:"\f12e";}
1342 .icon-puzzle-piece:before{content:"\f12e";}
1343 .icon-microphone:before{content:"\f130";}
1343 .icon-microphone:before{content:"\f130";}
1344 .icon-microphone-off:before{content:"\f131";}
1344 .icon-microphone-off:before{content:"\f131";}
1345 .icon-shield:before{content:"\f132";}
1345 .icon-shield:before{content:"\f132";}
1346 .icon-calendar-empty:before{content:"\f133";}
1346 .icon-calendar-empty:before{content:"\f133";}
1347 .icon-fire-extinguisher:before{content:"\f134";}
1347 .icon-fire-extinguisher:before{content:"\f134";}
1348 .icon-rocket:before{content:"\f135";}
1348 .icon-rocket:before{content:"\f135";}
1349 .icon-maxcdn:before{content:"\f136";}
1349 .icon-maxcdn:before{content:"\f136";}
1350 .icon-chevron-sign-left:before{content:"\f137";}
1350 .icon-chevron-sign-left:before{content:"\f137";}
1351 .icon-chevron-sign-right:before{content:"\f138";}
1351 .icon-chevron-sign-right:before{content:"\f138";}
1352 .icon-chevron-sign-up:before{content:"\f139";}
1352 .icon-chevron-sign-up:before{content:"\f139";}
1353 .icon-chevron-sign-down:before{content:"\f13a";}
1353 .icon-chevron-sign-down:before{content:"\f13a";}
1354 .icon-html5:before{content:"\f13b";}
1354 .icon-html5:before{content:"\f13b";}
1355 .icon-css3:before{content:"\f13c";}
1355 .icon-css3:before{content:"\f13c";}
1356 .icon-anchor:before{content:"\f13d";}
1356 .icon-anchor:before{content:"\f13d";}
1357 .icon-unlock-alt:before{content:"\f13e";}
1357 .icon-unlock-alt:before{content:"\f13e";}
1358 .icon-bullseye:before{content:"\f140";}
1358 .icon-bullseye:before{content:"\f140";}
1359 .icon-ellipsis-horizontal:before{content:"\f141";}
1359 .icon-ellipsis-horizontal:before{content:"\f141";}
1360 .icon-ellipsis-vertical:before{content:"\f142";}
1360 .icon-ellipsis-vertical:before{content:"\f142";}
1361 .icon-rss-sign:before{content:"\f143";}
1361 .icon-rss-sign:before{content:"\f143";}
1362 .icon-play-sign:before{content:"\f144";}
1362 .icon-play-sign:before{content:"\f144";}
1363 .icon-ticket:before{content:"\f145";}
1363 .icon-ticket:before{content:"\f145";}
1364 .icon-minus-sign-alt:before{content:"\f146";}
1364 .icon-minus-sign-alt:before{content:"\f146";}
1365 .icon-check-minus:before{content:"\f147";}
1365 .icon-check-minus:before{content:"\f147";}
1366 .icon-level-up:before{content:"\f148";}
1366 .icon-level-up:before{content:"\f148";}
1367 .icon-level-down:before{content:"\f149";}
1367 .icon-level-down:before{content:"\f149";}
1368 .icon-check-sign:before{content:"\f14a";}
1368 .icon-check-sign:before{content:"\f14a";}
1369 .icon-edit-sign:before{content:"\f14b";}
1369 .icon-edit-sign:before{content:"\f14b";}
1370 .icon-external-link-sign:before{content:"\f14c";}
1370 .icon-external-link-sign:before{content:"\f14c";}
1371 .icon-share-sign:before{content:"\f14d";}
1371 .icon-share-sign:before{content:"\f14d";}
1372 .border-box-sizing{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;}
1372 .border-box-sizing{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;}
1373 .corner-all{border-radius:4px;}
1373 .corner-all{border-radius:4px;}
1374 .hbox{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
1374 .hbox{display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
1375 .hbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
1375 .hbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
1376 .vbox{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
1376 .vbox{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
1377 .vbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
1377 .vbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
1378 .reverse{-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse;}
1378 .reverse{-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse;}
1379 .box-flex0{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
1379 .box-flex0{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;}
1380 .box-flex1{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
1380 .box-flex1{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
1381 .box-flex{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
1381 .box-flex{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
1382 .box-flex2{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;}
1382 .box-flex2{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;}
1383 .box-group1{-webkit-box-flex-group:1;-moz-box-flex-group:1;box-flex-group:1;}
1383 .box-group1{-webkit-box-flex-group:1;-moz-box-flex-group:1;box-flex-group:1;}
1384 .box-group2{-webkit-box-flex-group:2;-moz-box-flex-group:2;box-flex-group:2;}
1384 .box-group2{-webkit-box-flex-group:2;-moz-box-flex-group:2;box-flex-group:2;}
1385 .start{-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;}
1385 .start{-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;}
1386 .end{-webkit-box-pack:end;-moz-box-pack:end;box-pack:end;}
1386 .end{-webkit-box-pack:end;-moz-box-pack:end;box-pack:end;}
1387 .center{-webkit-box-pack:center;-moz-box-pack:center;box-pack:center;}
1387 .center{-webkit-box-pack:center;-moz-box-pack:center;box-pack:center;}
1388 body{background-color:white;position:absolute;left:0px;right:0px;top:0px;bottom:0px;overflow:visible;}
1388 body{background-color:white;position:absolute;left:0px;right:0px;top:0px;bottom:0px;overflow:visible;}
1389 div#header{display:none;}
1389 div#header{display:none;}
1390 #ipython_notebook{padding-left:16px;}
1390 #ipython_notebook{padding-left:16px;}
1391 #noscript{width:auto;padding-top:16px;padding-bottom:16px;text-align:center;font-size:22px;color:red;font-weight:bold;}
1391 #noscript{width:auto;padding-top:16px;padding-bottom:16px;text-align:center;font-size:22px;color:red;font-weight:bold;}
1392 #ipython_notebook img{font-family:Verdana,"Helvetica Neue",Arial,Helvetica,Geneva,sans-serif;height:24px;text-decoration:none;color:black;}
1392 #ipython_notebook img{font-family:Verdana,"Helvetica Neue",Arial,Helvetica,Geneva,sans-serif;height:24px;text-decoration:none;color:black;}
1393 #site{width:100%;display:none;}
1393 #site{width:100%;display:none;}
1394 .ui-button .ui-button-text{padding:0.2em 0.8em;font-size:77%;}
1394 .ui-button .ui-button-text{padding:0.2em 0.8em;font-size:77%;}
1395 input.ui-button{padding:0.3em 0.9em;}
1395 input.ui-button{padding:0.3em 0.9em;}
1396 .navbar span{margin-top:3px;}
1396 .navbar span{margin-top:3px;}
1397 span#login_widget{float:right;}
1397 span#login_widget{float:right;}
1398 .nav-header{text-transform:none;}
1398 .nav-header{text-transform:none;}
1399 .navbar-nobg{background-color:transparent;background-image:none;}
1399 .navbar-nobg{background-color:transparent;background-image:none;}
1400 #header>span{margin-top:10px;}
1400 #header>span{margin-top:10px;}
1401 .modal-body{max-height:500px;}
1401 .modal-body{max-height:500px;}
1402 .center-nav{display:inline-block;margin-bottom:-4px;}
1402 .center-nav{display:inline-block;margin-bottom:-4px;}
1403 .alternate_upload{background-color:none;display:inline;}
1403 .alternate_upload{background-color:none;display:inline;}
1404 .alternate_upload.form{padding:0;margin:0;}
1404 .alternate_upload.form{padding:0;margin:0;}
1405 .alternate_upload input.fileinput{background-color:red;position:relative;opacity:0;z-index:2;width:295px;margin-left:163px;cursor:pointer;}
1405 .alternate_upload input.fileinput{background-color:red;position:relative;opacity:0;z-index:2;width:295px;margin-left:163px;cursor:pointer;}
1406 .list_toolbar{padding:5px;height:25px;line-height:25px;}
1406 .list_toolbar{padding:5px;height:25px;line-height:25px;}
1407 .toolbar_info{float:left;}
1407 .toolbar_info{float:left;}
1408 .toolbar_buttons{float:right;}
1408 .toolbar_buttons{float:right;}
1409 .list_header{font-weight:bold;}
1409 .list_header{font-weight:bold;}
1410 .list_container{margin-top:16px;margin-bottom:16px;border:1px solid #ababab;border-radius:4px;}
1410 .list_container{margin-top:16px;margin-bottom:16px;border:1px solid #ababab;border-radius:4px;}
1411 .list_container>div{border-bottom:1px solid #ababab;}.list_container>div:hover .list-item{background-color:red;}
1411 .list_container>div{border-bottom:1px solid #ababab;}.list_container>div:hover .list-item{background-color:red;}
1412 .list_container>div:last-child{border:none;}
1412 .list_container>div:last-child{border:none;}
1413 .list_item:hover .list_item{background-color:#ddd;}
1413 .list_item:hover .list_item{background-color:#ddd;}
1414 .item_name{line-height:24px;}
1414 .item_name{line-height:24px;}
1415 .list_container>div>span,.list_container>div>div{padding:8px;}
1415 .list_container>div>span,.list_container>div>div{padding:8px;}
1416 .list_item a{text-decoration:none;}
1416 .list_item a{text-decoration:none;}
1417 input.nbname_input{height:15px;}
1417 input.nbname_input{height:15px;}
1418 .highlight_text{color:blue;}
1418 .highlight_text{color:blue;}
1419 #project_name>.breadcrumb{padding:0px;margin-bottom:0px;background-color:transparent;font-weight:bold;}
1419 #project_name>.breadcrumb{padding:0px;margin-bottom:0px;background-color:transparent;font-weight:bold;}
1420 input.engine_num_input{height:20px;margin-bottom:2px;padding-top:0;padding-bottom:0;width:60px;}
1420 input.engine_num_input{height:20px;margin-bottom:2px;padding-top:0;padding-bottom:0;width:60px;}
1421 .ansibold{font-weight:bold;}
1421 .ansibold{font-weight:bold;}
1422 .ansiblack{color:black;}
1422 .ansiblack{color:black;}
1423 .ansired{color:darkred;}
1423 .ansired{color:darkred;}
1424 .ansigreen{color:darkgreen;}
1424 .ansigreen{color:darkgreen;}
1425 .ansiyellow{color:brown;}
1425 .ansiyellow{color:brown;}
1426 .ansiblue{color:darkblue;}
1426 .ansiblue{color:darkblue;}
1427 .ansipurple{color:darkviolet;}
1427 .ansipurple{color:darkviolet;}
1428 .ansicyan{color:steelblue;}
1428 .ansicyan{color:steelblue;}
1429 .ansigray{color:gray;}
1429 .ansigray{color:gray;}
1430 .ansibgblack{background-color:black;}
1430 .ansibgblack{background-color:black;}
1431 .ansibgred{background-color:red;}
1431 .ansibgred{background-color:red;}
1432 .ansibggreen{background-color:green;}
1432 .ansibggreen{background-color:green;}
1433 .ansibgyellow{background-color:yellow;}
1433 .ansibgyellow{background-color:yellow;}
1434 .ansibgblue{background-color:blue;}
1434 .ansibgblue{background-color:blue;}
1435 .ansibgpurple{background-color:magenta;}
1435 .ansibgpurple{background-color:magenta;}
1436 .ansibgcyan{background-color:cyan;}
1436 .ansibgcyan{background-color:cyan;}
1437 .ansibggray{background-color:gray;}
1437 .ansibggray{background-color:gray;}
1438 div.cell{border:1px solid transparent;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;padding:5px 5px 5px 0px;margin:0px;outline:none;}div.cell.selected{border-radius:4px;border:thin #ababab solid;}
1438 div.cell{border:1px solid transparent;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}div.cell.selected{border-radius:4px;border:thin #ababab solid;}
1439 div.cell.edit_mode{border-radius:4px;border:thin green solid;}
1440 div.cell{width:100%;padding:5px 5px 5px 0px;margin:0px;outline:none;}
1439 div.prompt{min-width:11ex;padding:0.4em;margin:0px;font-family:monospace;text-align:right;line-height:1.231em;}
1441 div.prompt{min-width:11ex;padding:0.4em;margin:0px;font-family:monospace;text-align:right;line-height:1.231em;}
1440 div.inner_cell{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
1442 div.inner_cell{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
1441 div.prompt:empty{padding-top:0;padding-bottom:0;}
1443 div.prompt:empty{padding-top:0;padding-bottom:0;}
1442 div.input{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
1444 div.input{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
1443 div.input_area{border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7;}
1445 div.input_area{border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7;}
1444 div.input_prompt{color:navy;border-top:1px solid transparent;}
1446 div.input_prompt{color:navy;border-top:1px solid transparent;}
1445 .CodeMirror{line-height:1.231em;height:auto;background:none;}
1447 .CodeMirror{line-height:1.231em;height:auto;background:none;}
1446 .CodeMirror-scroll{overflow-y:hidden;overflow-x:auto;}
1448 .CodeMirror-scroll{overflow-y:hidden;overflow-x:auto;}
1447 @-moz-document url-prefix(){.CodeMirror-scroll{overflow-x:hidden;}}.CodeMirror-lines{padding:0.4em;}
1449 @-moz-document url-prefix(){.CodeMirror-scroll{overflow-x:hidden;}}.CodeMirror-lines{padding:0.4em;}
1448 .CodeMirror-linenumber{padding:0 8px 0 4px;}
1450 .CodeMirror-linenumber{padding:0 8px 0 4px;}
1449 .CodeMirror-gutters{border-bottom-left-radius:4px;border-top-left-radius:4px;}
1451 .CodeMirror-gutters{border-bottom-left-radius:4px;border-top-left-radius:4px;}
1450 .CodeMirror pre{padding:0;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
1452 .CodeMirror pre{padding:0;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
1451 pre code{display:block;padding:0.5em;}
1453 pre code{display:block;padding:0.5em;}
1452 .highlight-base,pre code,pre .subst,pre .tag .title,pre .lisp .title,pre .clojure .built_in,pre .nginx .title{color:black;}
1454 .highlight-base,pre code,pre .subst,pre .tag .title,pre .lisp .title,pre .clojure .built_in,pre .nginx .title{color:black;}
1453 .highlight-string,pre .string,pre .constant,pre .parent,pre .tag .value,pre .rules .value,pre .rules .value .number,pre .preprocessor,pre .ruby .symbol,pre .ruby .symbol .string,pre .aggregate,pre .template_tag,pre .django .variable,pre .smalltalk .class,pre .addition,pre .flow,pre .stream,pre .bash .variable,pre .apache .tag,pre .apache .cbracket,pre .tex .command,pre .tex .special,pre .erlang_repl .function_or_atom,pre .markdown .header{color:#BA2121;}
1455 .highlight-string,pre .string,pre .constant,pre .parent,pre .tag .value,pre .rules .value,pre .rules .value .number,pre .preprocessor,pre .ruby .symbol,pre .ruby .symbol .string,pre .aggregate,pre .template_tag,pre .django .variable,pre .smalltalk .class,pre .addition,pre .flow,pre .stream,pre .bash .variable,pre .apache .tag,pre .apache .cbracket,pre .tex .command,pre .tex .special,pre .erlang_repl .function_or_atom,pre .markdown .header{color:#BA2121;}
1454 .highlight-comment,pre .comment,pre .annotation,pre .template_comment,pre .diff .header,pre .chunk,pre .markdown .blockquote{color:#408080;font-style:italic;}
1456 .highlight-comment,pre .comment,pre .annotation,pre .template_comment,pre .diff .header,pre .chunk,pre .markdown .blockquote{color:#408080;font-style:italic;}
1455 .highlight-number,pre .number,pre .date,pre .regexp,pre .literal,pre .smalltalk .symbol,pre .smalltalk .char,pre .go .constant,pre .change,pre .markdown .bullet,pre .markdown .link_url{color:#080;}
1457 .highlight-number,pre .number,pre .date,pre .regexp,pre .literal,pre .smalltalk .symbol,pre .smalltalk .char,pre .go .constant,pre .change,pre .markdown .bullet,pre .markdown .link_url{color:#080;}
1456 pre .label,pre .javadoc,pre .ruby .string,pre .decorator,pre .filter .argument,pre .localvars,pre .array,pre .attr_selector,pre .important,pre .pseudo,pre .pi,pre .doctype,pre .deletion,pre .envvar,pre .shebang,pre .apache .sqbracket,pre .nginx .built_in,pre .tex .formula,pre .erlang_repl .reserved,pre .prompt,pre .markdown .link_label,pre .vhdl .attribute,pre .clojure .attribute,pre .coffeescript .property{color:#8888ff;}
1458 pre .label,pre .javadoc,pre .ruby .string,pre .decorator,pre .filter .argument,pre .localvars,pre .array,pre .attr_selector,pre .important,pre .pseudo,pre .pi,pre .doctype,pre .deletion,pre .envvar,pre .shebang,pre .apache .sqbracket,pre .nginx .built_in,pre .tex .formula,pre .erlang_repl .reserved,pre .prompt,pre .markdown .link_label,pre .vhdl .attribute,pre .clojure .attribute,pre .coffeescript .property{color:#8888ff;}
1457 .highlight-keyword,pre .keyword,pre .id,pre .phpdoc,pre .aggregate,pre .css .tag,pre .javadoctag,pre .phpdoc,pre .yardoctag,pre .smalltalk .class,pre .winutils,pre .bash .variable,pre .apache .tag,pre .go .typename,pre .tex .command,pre .markdown .strong,pre .request,pre .status{color:#008000;font-weight:bold;}
1459 .highlight-keyword,pre .keyword,pre .id,pre .phpdoc,pre .aggregate,pre .css .tag,pre .javadoctag,pre .phpdoc,pre .yardoctag,pre .smalltalk .class,pre .winutils,pre .bash .variable,pre .apache .tag,pre .go .typename,pre .tex .command,pre .markdown .strong,pre .request,pre .status{color:#008000;font-weight:bold;}
1458 .highlight-builtin,pre .built_in{color:#008000;}
1460 .highlight-builtin,pre .built_in{color:#008000;}
1459 pre .markdown .emphasis{font-style:italic;}
1461 pre .markdown .emphasis{font-style:italic;}
1460 pre .nginx .built_in{font-weight:normal;}
1462 pre .nginx .built_in{font-weight:normal;}
1461 pre .coffeescript .javascript,pre .javascript .xml,pre .tex .formula,pre .xml .javascript,pre .xml .vbscript,pre .xml .css,pre .xml .cdata{opacity:0.5;}
1463 pre .coffeescript .javascript,pre .javascript .xml,pre .tex .formula,pre .xml .javascript,pre .xml .vbscript,pre .xml .css,pre .xml .cdata{opacity:0.5;}
1462 .cm-s-ipython span.cm-variable{color:black;}
1464 .cm-s-ipython span.cm-variable{color:black;}
1463 .cm-s-ipython span.cm-keyword{color:#008000;font-weight:bold;}
1465 .cm-s-ipython span.cm-keyword{color:#008000;font-weight:bold;}
1464 .cm-s-ipython span.cm-number{color:#080;}
1466 .cm-s-ipython span.cm-number{color:#080;}
1465 .cm-s-ipython span.cm-comment{color:#408080;font-style:italic;}
1467 .cm-s-ipython span.cm-comment{color:#408080;font-style:italic;}
1466 .cm-s-ipython span.cm-string{color:#BA2121;}
1468 .cm-s-ipython span.cm-string{color:#BA2121;}
1467 .cm-s-ipython span.cm-builtin{color:#008000;}
1469 .cm-s-ipython span.cm-builtin{color:#008000;}
1468 .cm-s-ipython span.cm-error{color:#f00;}
1470 .cm-s-ipython span.cm-error{color:#f00;}
1469 .cm-s-ipython span.cm-operator{color:#AA22FF;font-weight:bold;}
1471 .cm-s-ipython span.cm-operator{color:#AA22FF;font-weight:bold;}
1470 .cm-s-ipython span.cm-meta{color:#AA22FF;}
1472 .cm-s-ipython span.cm-meta{color:#AA22FF;}
1471 .cm-s-ipython span.cm-tab{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);background-position:right;background-repeat:no-repeat;}
1473 .cm-s-ipython span.cm-tab{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);background-position:right;background-repeat:no-repeat;}
1472 div.output_wrapper{position:relative;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
1474 div.output_wrapper{position:relative;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
1473 div.output_scroll{height:24em;width:100%;overflow:auto;border-radius:4px;-webkit-box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);-moz-box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);}
1475 div.output_scroll{height:24em;width:100%;overflow:auto;border-radius:4px;-webkit-box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);-moz-box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.8);}
1474 div.output_collapsed{margin:0px;padding:0px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
1476 div.output_collapsed{margin:0px;padding:0px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
1475 div.out_prompt_overlay{height:100%;padding:0px 0.4em;position:absolute;border-radius:4px;}
1477 div.out_prompt_overlay{height:100%;padding:0px 0.4em;position:absolute;border-radius:4px;}
1476 div.out_prompt_overlay:hover{-webkit-box-shadow:inset 0 0 1px #000000;-moz-box-shadow:inset 0 0 1px #000000;box-shadow:inset 0 0 1px #000000;background:rgba(240, 240, 240, 0.5);}
1478 div.out_prompt_overlay:hover{-webkit-box-shadow:inset 0 0 1px #000000;-moz-box-shadow:inset 0 0 1px #000000;box-shadow:inset 0 0 1px #000000;background:rgba(240, 240, 240, 0.5);}
1477 div.output_prompt{color:darkred;}
1479 div.output_prompt{color:darkred;}
1478 div.output_area{padding:0px;page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}div.output_area .MathJax_Display{text-align:left !important;}
1480 div.output_area{padding:0px;page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}div.output_area .MathJax_Display{text-align:left !important;}
1479 div.output_area .rendered_html table{margin-left:0;margin-right:0;}
1481 div.output_area .rendered_html table{margin-left:0;margin-right:0;}
1480 div.output_area .rendered_html img{margin-left:0;margin-right:0;}
1482 div.output_area .rendered_html img{margin-left:0;margin-right:0;}
1481 .output{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
1483 .output{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;}
1482 div.output_area pre{font-family:monospace;margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;color:black;background-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;line-height:inherit;}
1484 div.output_area pre{font-family:monospace;margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;color:black;background-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;line-height:inherit;}
1483 div.output_subarea{padding:0.4em 0.4em 0em 0.4em;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
1485 div.output_subarea{padding:0.4em 0.4em 0em 0.4em;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;}
1484 div.output_text{text-align:left;color:#000000;font-family:monospace;line-height:1.231em;}
1486 div.output_text{text-align:left;color:#000000;font-family:monospace;line-height:1.231em;}
1485 div.output_stderr{background:#fdd;}
1487 div.output_stderr{background:#fdd;}
1486 div.output_latex{text-align:left;}
1488 div.output_latex{text-align:left;}
1487 div.output_javascript:empty{padding:0;}
1489 div.output_javascript:empty{padding:0;}
1488 .js-error{color:darkred;}
1490 .js-error{color:darkred;}
1489 div.raw_input{padding-top:0px;padding-bottom:0px;height:1em;line-height:1em;font-family:monospace;}
1491 div.raw_input{padding-top:0px;padding-bottom:0px;height:1em;line-height:1em;font-family:monospace;}
1490 span.input_prompt{font-family:inherit;}
1492 span.input_prompt{font-family:inherit;}
1491 input.raw_input{font-family:inherit;font-size:inherit;color:inherit;width:auto;margin:-2px 0px 0px 1px;padding-left:1px;padding-top:2px;height:1em;}
1493 input.raw_input{font-family:inherit;font-size:inherit;color:inherit;width:auto;margin:-2px 0px 0px 1px;padding-left:1px;padding-top:2px;height:1em;}
1492 p.p-space{margin-bottom:10px;}
1494 p.p-space{margin-bottom:10px;}
1493 .rendered_html{color:black;}.rendered_html em{font-style:italic;}
1495 .rendered_html{color:black;}.rendered_html em{font-style:italic;}
1494 .rendered_html strong{font-weight:bold;}
1496 .rendered_html strong{font-weight:bold;}
1495 .rendered_html u{text-decoration:underline;}
1497 .rendered_html u{text-decoration:underline;}
1496 .rendered_html :link{text-decoration:underline;}
1498 .rendered_html :link{text-decoration:underline;}
1497 .rendered_html :visited{text-decoration:underline;}
1499 .rendered_html :visited{text-decoration:underline;}
1498 .rendered_html h1{font-size:197%;margin:.65em 0;font-weight:bold;}
1500 .rendered_html h1{font-size:197%;margin:.65em 0;font-weight:bold;}
1499 .rendered_html h2{font-size:153.9%;margin:.75em 0;font-weight:bold;}
1501 .rendered_html h2{font-size:153.9%;margin:.75em 0;font-weight:bold;}
1500 .rendered_html h3{font-size:123.1%;margin:.85em 0;font-weight:bold;}
1502 .rendered_html h3{font-size:123.1%;margin:.85em 0;font-weight:bold;}
1501 .rendered_html h4{font-size:100%;margin:0.95em 0;font-weight:bold;}
1503 .rendered_html h4{font-size:100%;margin:0.95em 0;font-weight:bold;}
1502 .rendered_html h5{font-size:85%;margin:1.5em 0;font-weight:bold;}
1504 .rendered_html h5{font-size:85%;margin:1.5em 0;font-weight:bold;}
1503 .rendered_html h6{font-size:77%;margin:1.65em 0;font-weight:bold;}
1505 .rendered_html h6{font-size:77%;margin:1.65em 0;font-weight:bold;}
1504 .rendered_html ul{list-style:disc;margin:1em 2em;}
1506 .rendered_html ul{list-style:disc;margin:1em 2em;}
1505 .rendered_html ul ul{list-style:square;margin:0em 2em;}
1507 .rendered_html ul ul{list-style:square;margin:0em 2em;}
1506 .rendered_html ul ul ul{list-style:circle;margin:0em 2em;}
1508 .rendered_html ul ul ul{list-style:circle;margin:0em 2em;}
1507 .rendered_html ol{list-style:decimal;margin:1em 2em;}
1509 .rendered_html ol{list-style:decimal;margin:1em 2em;}
1508 .rendered_html ol ol{list-style:upper-alpha;margin:0em 2em;}
1510 .rendered_html ol ol{list-style:upper-alpha;margin:0em 2em;}
1509 .rendered_html ol ol ol{list-style:lower-alpha;margin:0em 2em;}
1511 .rendered_html ol ol ol{list-style:lower-alpha;margin:0em 2em;}
1510 .rendered_html ol ol ol ol{list-style:lower-roman;margin:0em 2em;}
1512 .rendered_html ol ol ol ol{list-style:lower-roman;margin:0em 2em;}
1511 .rendered_html ol ol ol ol ol{list-style:decimal;margin:0em 2em;}
1513 .rendered_html ol ol ol ol ol{list-style:decimal;margin:0em 2em;}
1512 .rendered_html hr{color:black;background-color:black;}
1514 .rendered_html hr{color:black;background-color:black;}
1513 .rendered_html pre{margin:1em 2em;}
1515 .rendered_html pre{margin:1em 2em;}
1514 .rendered_html pre,.rendered_html code{border:0;background-color:#ffffff;color:#000000;font-size:100%;padding:0px;}
1516 .rendered_html pre,.rendered_html code{border:0;background-color:#ffffff;color:#000000;font-size:100%;padding:0px;}
1515 .rendered_html blockquote{margin:1em 2em;}
1517 .rendered_html blockquote{margin:1em 2em;}
1516 .rendered_html table{margin-left:auto;margin-right:auto;border:1px solid black;border-collapse:collapse;}
1518 .rendered_html table{margin-left:auto;margin-right:auto;border:1px solid black;border-collapse:collapse;}
1517 .rendered_html tr,.rendered_html th,.rendered_html td{border:1px solid black;border-collapse:collapse;margin:1em 2em;}
1519 .rendered_html tr,.rendered_html th,.rendered_html td{border:1px solid black;border-collapse:collapse;margin:1em 2em;}
1518 .rendered_html td,.rendered_html th{text-align:left;vertical-align:middle;padding:4px;}
1520 .rendered_html td,.rendered_html th{text-align:left;vertical-align:middle;padding:4px;}
1519 .rendered_html th{font-weight:bold;}
1521 .rendered_html th{font-weight:bold;}
1520 .rendered_html p{text-align:justify;}
1522 .rendered_html p{text-align:justify;}
1521 .rendered_html img{display:block;margin-left:auto;margin-right:auto;}
1523 .rendered_html img{display:block;margin-left:auto;margin-right:auto;}
1522 .rendered_html *+p{margin-top:1em;}
1524 .rendered_html *+p{margin-top:1em;}
1523 .rendered_html *+table{margin-top:1em;}
1525 .rendered_html *+table{margin-top:1em;}
1524 .rendered_html *+img{margin-top:1em;}
1526 .rendered_html *+img{margin-top:1em;}
1525 div.text_cell{padding:5px 5px 5px 0px;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
1527 div.text_cell{padding:5px 5px 5px 0px;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;}
1526 div.text_cell_input{color:#000000;border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7;}
1528 div.text_cell_input{color:#000000;border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7;}
1527 div.text_cell_render{outline:none;resize:none;width:inherit;border-style:none;padding:5px;color:#000000;}
1529 div.text_cell_render{outline:none;resize:none;width:inherit;border-style:none;padding:5px;color:#000000;}
1528 a.anchor-link:link{text-decoration:none;padding:0px 20px;visibility:hidden;}
1530 a.anchor-link:link{text-decoration:none;padding:0px 20px;visibility:hidden;}
1529 h1:hover .anchor-link,h2:hover .anchor-link,h3:hover .anchor-link,h4:hover .anchor-link,h5:hover .anchor-link,h6:hover .anchor-link{visibility:visible;}
1531 h1:hover .anchor-link,h2:hover .anchor-link,h3:hover .anchor-link,h4:hover .anchor-link,h5:hover .anchor-link,h6:hover .anchor-link{visibility:visible;}
1530 body{background-color:#ffffff;}
1532 body{background-color:#ffffff;}
1531 body.notebook_app{overflow:hidden;}
1533 body.notebook_app{overflow:hidden;}
1532 span#notebook_name{height:1em;line-height:1em;padding:3px;border:none;font-size:146.5%;}
1534 span#notebook_name{height:1em;line-height:1em;padding:3px;border:none;font-size:146.5%;}
1533 div#notebook_panel{margin:0px 0px 0px 0px;padding:0px;-webkit-box-shadow:0 -1px 10px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 -1px 10px rgba(0, 0, 0, 0.1);box-shadow:0 -1px 10px rgba(0, 0, 0, 0.1);}
1535 div#notebook_panel{margin:0px 0px 0px 0px;padding:0px;-webkit-box-shadow:0 -1px 10px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 -1px 10px rgba(0, 0, 0, 0.1);box-shadow:0 -1px 10px rgba(0, 0, 0, 0.1);}
1534 div#notebook{overflow-y:scroll;overflow-x:auto;width:100%;padding:5px 5px 15px 5px;margin:0px;border-top:1px solid #ababab;}
1536 div#notebook{overflow-y:scroll;overflow-x:auto;width:100%;padding:5px 5px 15px 5px;margin:0px;border-top:1px solid #ababab;}
1535 div.ui-widget-content{border:1px solid #ababab;outline:none;}
1537 div.ui-widget-content{border:1px solid #ababab;outline:none;}
1536 pre.dialog{background-color:#f7f7f7;border:1px solid #ddd;border-radius:4px;padding:0.4em;padding-left:2em;}
1538 pre.dialog{background-color:#f7f7f7;border:1px solid #ddd;border-radius:4px;padding:0.4em;padding-left:2em;}
1537 p.dialog{padding:0.2em;}
1539 p.dialog{padding:0.2em;}
1538 pre,code,kbd,samp{white-space:pre-wrap;}
1540 pre,code,kbd,samp{white-space:pre-wrap;}
1539 #fonttest{font-family:monospace;}
1541 #fonttest{font-family:monospace;}
1540 p{margin-bottom:0;}
1542 p{margin-bottom:0;}
1541 .end_space{height:200px;}
1543 .end_space{height:200px;}
1542 .celltoolbar{border:thin solid #CFCFCF;border-bottom:none;background:#EEE;border-radius:3px 3px 0px 0px;width:100%;-webkit-box-pack:end;height:22px;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse;}
1544 .celltoolbar{border:thin solid #CFCFCF;border-bottom:none;background:#EEE;border-radius:3px 3px 0px 0px;width:100%;-webkit-box-pack:end;height:22px;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse;}
1543 .ctb_hideshow{display:none;vertical-align:bottom;padding-right:2px;}
1545 .ctb_hideshow{display:none;vertical-align:bottom;padding-right:2px;}
1544 .celltoolbar>div{padding-top:0px;}
1546 .celltoolbar>div{padding-top:0px;}
1545 .ctb_global_show .ctb_show.ctb_hideshow{display:block;}
1547 .ctb_global_show .ctb_show.ctb_hideshow{display:block;}
1546 .ctb_global_show .ctb_show+.input_area,.ctb_global_show .ctb_show+div.text_cell_input{border-top-right-radius:0px;border-top-left-radius:0px;}
1548 .ctb_global_show .ctb_show+.input_area,.ctb_global_show .ctb_show+div.text_cell_input{border-top-right-radius:0px;border-top-left-radius:0px;}
1547 .celltoolbar .button_container select{margin:10px;margin-top:1px;margin-bottom:0px;padding:0;font-size:87%;width:auto;display:inline-block;height:18px;line-height:18px;vertical-align:top;}
1549 .celltoolbar .button_container select{margin:10px;margin-top:1px;margin-bottom:0px;padding:0;font-size:87%;width:auto;display:inline-block;height:18px;line-height:18px;vertical-align:top;}
1548 .celltoolbar label{display:inline-block;height:15px;line-height:15px;vertical-align:top;}
1550 .celltoolbar label{display:inline-block;height:15px;line-height:15px;vertical-align:top;}
1549 .celltoolbar label span{font-size:85%;}
1551 .celltoolbar label span{font-size:85%;}
1550 .celltoolbar input[type=checkbox]{margin:0px;margin-left:4px;margin-right:4px;}
1552 .celltoolbar input[type=checkbox]{margin:0px;margin-left:4px;margin-right:4px;}
1551 .celltoolbar .ui-button{border:none;vertical-align:top;height:20px;min-width:30px;}
1553 .celltoolbar .ui-button{border:none;vertical-align:top;height:20px;min-width:30px;}
1552 .completions{position:absolute;z-index:10;overflow:hidden;border:1px solid #ababab;border-radius:4px;-webkit-box-shadow:0px 6px 10px -1px #adadad;-moz-box-shadow:0px 6px 10px -1px #adadad;box-shadow:0px 6px 10px -1px #adadad;}
1554 .completions{position:absolute;z-index:10;overflow:hidden;border:1px solid #ababab;border-radius:4px;-webkit-box-shadow:0px 6px 10px -1px #adadad;-moz-box-shadow:0px 6px 10px -1px #adadad;box-shadow:0px 6px 10px -1px #adadad;}
1553 .completions select{background:white;outline:none;border:none;padding:0px;margin:0px;overflow:auto;font-family:monospace;font-size:110%;color:#000000;}
1555 .completions select{background:white;outline:none;border:none;padding:0px;margin:0px;overflow:auto;font-family:monospace;font-size:110%;color:#000000;}
1554 .completions select option.context{color:#0064cd;}
1556 .completions select option.context{color:#0064cd;}
1555 #menubar .navbar-inner{min-height:28px;border-top:1px;border-radius:0px 0px 4px 4px;}
1557 #menubar .navbar-inner{min-height:28px;border-top:1px;border-radius:0px 0px 4px 4px;}
1556 #menubar .navbar{margin-bottom:8px;}
1558 #menubar .navbar{margin-bottom:8px;}
1557 .nav-wrapper{border-bottom:1px solid #d4d4d4;}
1559 .nav-wrapper{border-bottom:1px solid #d4d4d4;}
1558 #menubar li.dropdown{line-height:12px;}
1560 #menubar li.dropdown{line-height:12px;}
1559 #notification_area{z-index:10;}
1561 #notification_area{z-index:10;}
1560 .notification_widget{color:#777777;padding:1px 12px;margin:2px 4px;z-index:10;border:1px solid #ccc;border-radius:4px;background:rgba(240, 240, 240, 0.5);}
1562 .notification_widget{color:#777777;padding:1px 12px;margin:2px 4px;z-index:10;border:1px solid #ccc;border-radius:4px;background:rgba(240, 240, 240, 0.5);}
1561 div#pager_splitter{height:8px;}
1563 div#pager_splitter{height:8px;}
1562 #pager-container{position:relative;padding:15px 0px;}
1564 #pager-container{position:relative;padding:15px 0px;}
1563 div#pager{overflow:auto;display:none;}div#pager pre{font-size:13px;line-height:1.231em;color:#000000;background-color:#f7f7f7;padding:0.4em;}
1565 div#pager{overflow:auto;display:none;}div#pager pre{font-size:13px;line-height:1.231em;color:#000000;background-color:#f7f7f7;padding:0.4em;}
1564 .shortcut_key{display:inline-block;width:15ex;text-align:right;font-family:monospace;}
1566 .shortcut_key{display:inline-block;width:15ex;text-align:right;font-family:monospace;}
1565 .shortcut_descr{display:inline-block;}
1567 .shortcut_descr{display:inline-block;}
1566 div.quickhelp{float:left;width:50%;}
1568 div.quickhelp{float:left;width:50%;}
1567 span#save_widget{padding:0px 5px;margin-top:12px;}
1569 span#save_widget{padding:0px 5px;margin-top:12px;}
1568 span#checkpoint_status,span#autosave_status{font-size:small;}
1570 span#checkpoint_status,span#autosave_status{font-size:small;}
1569 @media (max-width:767px){span#save_widget{font-size:small;} span#checkpoint_status,span#autosave_status{font-size:x-small;}}@media (max-width:767px){span#checkpoint_status,span#autosave_status{display:none;}}@media (min-width:768px) and (max-width:979px){span#checkpoint_status{display:none;} span#autosave_status{font-size:x-small;}}.toolbar{padding:0px 10px;margin-top:-5px;}.toolbar select,.toolbar label{width:auto;height:26px;vertical-align:middle;margin-right:2px;margin-bottom:0px;display:inline;font-size:92%;margin-left:0.3em;margin-right:0.3em;padding:0px;padding-top:3px;}
1571 @media (max-width:767px){span#save_widget{font-size:small;} span#checkpoint_status,span#autosave_status{font-size:x-small;}}@media (max-width:767px){span#checkpoint_status,span#autosave_status{display:none;}}@media (min-width:768px) and (max-width:979px){span#checkpoint_status{display:none;} span#autosave_status{font-size:x-small;}}.toolbar{padding:0px 10px;margin-top:-5px;}.toolbar select,.toolbar label{width:auto;height:26px;vertical-align:middle;margin-right:2px;margin-bottom:0px;display:inline;font-size:92%;margin-left:0.3em;margin-right:0.3em;padding:0px;padding-top:3px;}
1570 .toolbar .btn{padding:2px 8px;}
1572 .toolbar .btn{padding:2px 8px;}
1571 .toolbar .btn-group{margin-top:0px;}
1573 .toolbar .btn-group{margin-top:0px;}
1572 .toolbar-inner{border:none !important;-webkit-box-shadow:none !important;-moz-box-shadow:none !important;box-shadow:none !important;}
1574 .toolbar-inner{border:none !important;-webkit-box-shadow:none !important;-moz-box-shadow:none !important;box-shadow:none !important;}
1573 #maintoolbar{margin-bottom:0px;}
1575 #maintoolbar{margin-bottom:0px;}
1574 @-moz-keyframes fadeOut{from{opacity:1;} to{opacity:0;}}@-webkit-keyframes fadeOut{from{opacity:1;} to{opacity:0;}}@-moz-keyframes fadeIn{from{opacity:0;} to{opacity:1;}}@-webkit-keyframes fadeIn{from{opacity:0;} to{opacity:1;}}.bigtooltip{overflow:auto;height:200px;-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms;}
1576 @-moz-keyframes fadeOut{from{opacity:1;} to{opacity:0;}}@-webkit-keyframes fadeOut{from{opacity:1;} to{opacity:0;}}@-moz-keyframes fadeIn{from{opacity:0;} to{opacity:1;}}@-webkit-keyframes fadeIn{from{opacity:0;} to{opacity:1;}}.bigtooltip{overflow:auto;height:200px;-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms;}
1575 .smalltooltip{-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms;text-overflow:ellipsis;overflow:hidden;height:80px;}
1577 .smalltooltip{-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms;text-overflow:ellipsis;overflow:hidden;height:80px;}
1576 .tooltipbuttons{position:absolute;padding-right:15px;top:0px;right:0px;}
1578 .tooltipbuttons{position:absolute;padding-right:15px;top:0px;right:0px;}
1577 .tooltiptext{padding-right:30px;}
1579 .tooltiptext{padding-right:30px;}
1578 .ipython_tooltip{max-width:700px;-webkit-animation:fadeOut 400ms;-moz-animation:fadeOut 400ms;animation:fadeOut 400ms;-webkit-animation:fadeIn 400ms;-moz-animation:fadeIn 400ms;animation:fadeIn 400ms;vertical-align:middle;background-color:#f7f7f7;overflow:visible;border:#ababab 1px solid;outline:none;padding:3px;margin:0px;padding-left:7px;font-family:monospace;min-height:50px;-moz-box-shadow:0px 6px 10px -1px #adadad;-webkit-box-shadow:0px 6px 10px -1px #adadad;box-shadow:0px 6px 10px -1px #adadad;border-radius:4px;position:absolute;z-index:2;}.ipython_tooltip a{float:right;}
1580 .ipython_tooltip{max-width:700px;-webkit-animation:fadeOut 400ms;-moz-animation:fadeOut 400ms;animation:fadeOut 400ms;-webkit-animation:fadeIn 400ms;-moz-animation:fadeIn 400ms;animation:fadeIn 400ms;vertical-align:middle;background-color:#f7f7f7;overflow:visible;border:#ababab 1px solid;outline:none;padding:3px;margin:0px;padding-left:7px;font-family:monospace;min-height:50px;-moz-box-shadow:0px 6px 10px -1px #adadad;-webkit-box-shadow:0px 6px 10px -1px #adadad;box-shadow:0px 6px 10px -1px #adadad;border-radius:4px;position:absolute;z-index:2;}.ipython_tooltip a{float:right;}
1579 .ipython_tooltip .tooltiptext pre{border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;font-size:100%;background-color:#f7f7f7;}
1581 .ipython_tooltip .tooltiptext pre{border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;font-size:100%;background-color:#f7f7f7;}
1580 .pretooltiparrow{left:0px;margin:0px;top:-16px;width:40px;height:16px;overflow:hidden;position:absolute;}
1582 .pretooltiparrow{left:0px;margin:0px;top:-16px;width:40px;height:16px;overflow:hidden;position:absolute;}
1581 .pretooltiparrow:before{background-color:#f7f7f7;border:1px #ababab solid;z-index:11;content:"";position:absolute;left:15px;top:10px;width:25px;height:25px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);}
1583 .pretooltiparrow:before{background-color:#f7f7f7;border:1px #ababab solid;z-index:11;content:"";position:absolute;left:15px;top:10px;width:25px;height:25px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);}
General Comments 0
You need to be logged in to leave comments. Login now