Merge lp:~cjohnston/ubuntu/trusty/horizon/1396318-icehouse into lp:ubuntu/trusty/horizon

Proposed by Chris Johnston
Status: Superseded
Proposed branch: lp:~cjohnston/ubuntu/trusty/horizon/1396318-icehouse
Merge into: lp:ubuntu/trusty/horizon
Diff against target: 18863 lines (+18649/-0) (has conflicts)
38 files modified
debian/README.compression (+6/-0)
debian/changelog (+764/-0)
debian/compat (+1/-0)
debian/control (+83/-0)
debian/copyright (+55/-0)
debian/openstack-dashboard-ubuntu-theme.dirs (+4/-0)
debian/openstack-dashboard-ubuntu-theme.install (+4/-0)
debian/openstack-dashboard-ubuntu-theme.links (+2/-0)
debian/openstack-dashboard-ubuntu-theme.postinst (+11/-0)
debian/openstack-dashboard-ubuntu-theme.postrm (+9/-0)
debian/openstack-dashboard.conf (+8/-0)
debian/openstack-dashboard.dirs (+6/-0)
debian/openstack-dashboard.install (+6/-0)
debian/openstack-dashboard.links (+2/-0)
debian/openstack-dashboard.postinst (+63/-0)
debian/openstack-dashboard.postrm (+44/-0)
debian/openstack-dashboard.preinst (+17/-0)
debian/patches/add_juju_settings_panel.patch (+309/-0)
debian/patches/fix-dashboard-django-wsgi.patch (+11/-0)
debian/patches/fix-dashboard-manage.patch (+11/-0)
debian/patches/fix-requirements.patch (+13/-0)
debian/patches/fix-ubuntu-tests.patch (+40/-0)
debian/patches/series (+9/-0)
debian/patches/ubuntu_settings.patch (+79/-0)
debian/pydist-overrides (+2/-0)
debian/python-django-horizon.install (+1/-0)
debian/python-django-horizon.lintian-overrides (+2/-0)
debian/rules (+47/-0)
debian/source/format (+1/-0)
debian/source/include-binaries (+5/-0)
debian/static/openstack-dashboard/css/6bd71a04f0c0.css (+6567/-0)
debian/static/openstack-dashboard/js/0272dc9e5c21.js (+1325/-0)
debian/static/openstack-dashboard/js/b28ee7422312.js (+2339/-0)
debian/static/openstack-dashboard/manifest.json (+5/-0)
debian/theme/css/ubuntu.css (+6778/-0)
debian/theme/templates/_stylesheets.html (+12/-0)
debian/theme/ubuntu_theme.py (+5/-0)
debian/watch (+3/-0)
Conflict adding file debian.  Moved existing file to debian.moved.
To merge this branch: bzr merge lp:~cjohnston/ubuntu/trusty/horizon/1396318-icehouse
Reviewer Review Type Date Requested Status
Ubuntu branches Pending
Review via email: mp+243582@code.launchpad.net

Commit message

Fix Ubuntu theme region switcher dropdown

To post a comment you must log in.

Unmerged revisions

200. By Chris Johnston

Fix Ubuntu theme region switcher dropdown

199. By Chuck Short

releasing package horizon version 1:2014.1.3-0ubuntu1

198. By James Page

Fix Ubuntu theme dropdown and confirmation button (LP: #1308651).

197. By James Page

* Resynchronize with stable/icehouse (4a70f4c) (LP: #1354159):
  - [2b9c566] Import translations for Icehouse stable update
  - [015f24c] Fix security group modal header overflow
  - [785a526] Disable broken unit test (related to "Change Password")
  - [eb3a40a] Replace UserManager with None in tests
  - [e66fbc3] Sort security group rules by protocol and port
  - [a855b0c] Avoid AttributeError: SecurityGroup error handle
  - [937436f] adapt to python-novaclient-2.18.0
  - [32a7b71] Fix multiple Cross-Site Scripting (XSS) vulnerabilities.
  - [43ac907] add httplib2 explicitly to requirements.txt
  - [0b2352e] Prevent error message when creating a user
  - [765e6d3] Fix issues with importing the Login form
  - [a29cdbc] Fix formatting of heat exceptions
  - [b527f22] Image uploads should always happen in the background
  - [4a70f4c] Fix the dot overlaps with the table border in Availability Zones table
* d/watch: Point to tarballs.openstack.org for release artifacts.

196. By James Page

releasing package horizon version 1:2014.1.1-0ubuntu1

195. By James Page

releasing package horizon version 1:2014.1-0ubuntu1

194. By Chuck Short

releasing package horizon version 1:2014.1~rc2-0ubuntu1

193. By Chuck Short

Add missing file

192. By Chuck Short

* New upstream release candidate (LP: #1288245).
  - d/static/*: Refreshed assets for new upstream release.

191. By James Page

* New upstream release candidate (LP: #1288245).
  - d/static/*: Refreshed assets for new upstream release.
* d/theme/*: Refresh Ubuntu theme against Icehouse templates (LP: #1291653).

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added directory 'debian'
2=== renamed directory 'debian' => 'debian.moved'
3=== added file 'debian/README.compression'
4--- debian/README.compression 1970-01-01 00:00:00 +0000
5+++ debian/README.compression 2014-12-03 19:02:16 +0000
6@@ -0,0 +1,6 @@
7+Until this can be scripted and integrated into package build, updating the
8+pre-compressed static CSS and JS requires a some manual steps:
9+
10+ sudo apt-get install python-lesscpy python-openstack-auth python-compressor
11+ quilt pop top
12+ ./debian/rules refresh-static-assets
13
14=== added file 'debian/changelog'
15--- debian/changelog 1970-01-01 00:00:00 +0000
16+++ debian/changelog 2014-12-03 19:02:16 +0000
17@@ -0,0 +1,764 @@
18+horizon (1:2014.1.3-0ubuntu2) trusty; urgency=medium
19+
20+ * Fix Ubuntu theme region switcher dropdown (LP: #1396318)
21+
22+ -- Chris Johnston <chrisjohnston@ubuntu.com> Wed, 03 Dec 2014 14:00:30 -0500
23+
24+horizon (1:2014.1.3-0ubuntu1) trusty; urgency=medium
25+
26+ [ Chris Johnston ]
27+ * Fix Ubuntu theme dropdown and confirmation button (LP: #1308651).
28+
29+ [ Corey Bryant ]
30+ * Resynchronize with stable/icehouse (dc8e46f) (LP: #1377136):
31+ - [ba524b0] template to rely on the the "id" attribute
32+ - [ad2d428] Rename add_error methods: Django 1.7 conflict
33+ - [8dfe113] Replace Ceilometer ClientException with HTTPException
34+ - [f5e1ff4] Add missing "load url from future" in a container template
35+ - [839c53d] Add OS_REGION_NAME to openrc
36+ - [737fe40] Set the correct min_disk size when creating volume from image
37+ - [a8eeed9] Allow forms to disable autofill in all browsers
38+ - [e32a00d] Fix endpoint error when running keystone on apache
39+ - [faac9e7] Not able to delete a pseudo-folder via horizon
40+ - [b6d6e15] Set python hash seed to 0 in tox.ini
41+ - [ba908ae] Fix XSS issue with the unordered_list filter
42+ - [9a5894b] Long container names no longer break the page
43+ - [c9cb128] TEMPLATE_DIRS must be a tuple
44+ - [95dcdae] Proper port for LBaaS members
45+ - [dc8e46f] Use default_project_id as user project for keystone v3
46+
47+ -- Chuck Short <zulcss@ubuntu.com> Mon, 06 Oct 2014 09:00:21 -0400
48+
49+horizon (1:2014.1.2-0ubuntu1) trusty; urgency=medium
50+
51+ [ Corey Bryant ]
52+ * Resynchronize with stable/icehouse (4a70f4c) (LP: #1354159):
53+ - [2b9c566] Import translations for Icehouse stable update
54+ - [015f24c] Fix security group modal header overflow
55+ - [785a526] Disable broken unit test (related to "Change Password")
56+ - [eb3a40a] Replace UserManager with None in tests
57+ - [e66fbc3] Sort security group rules by protocol and port
58+ - [a855b0c] Avoid AttributeError: SecurityGroup error handle
59+ - [937436f] adapt to python-novaclient-2.18.0
60+ - [32a7b71] Fix multiple Cross-Site Scripting (XSS) vulnerabilities.
61+ - [43ac907] add httplib2 explicitly to requirements.txt
62+ - [0b2352e] Prevent error message when creating a user
63+ - [765e6d3] Fix issues with importing the Login form
64+ - [a29cdbc] Fix formatting of heat exceptions
65+ - [b527f22] Image uploads should always happen in the background
66+ - [4a70f4c] Fix the dot overlaps with the table border in Availability Zones table
67+
68+ [ James Page ]
69+ * d/watch: Point to tarballs.openstack.org for release artifacts.
70+
71+ -- Corey Bryant <corey.bryant@canonical.com> Fri, 08 Aug 2014 09:50:22 -0400
72+
73+horizon (1:2014.1.1-0ubuntu1) trusty; urgency=medium
74+
75+ * Resynchronize with stable/icehouse (fbd5b2e) (LP: #1328134):
76+ - [e492c7e] Updated from global requirements
77+ - [e5f04c2] Fix pseudo-folder content listing
78+ - [cd2f7dc] add missing references to policy files
79+ - [232b712] Use escapejs filter on JavaScript strings
80+ - [0c3b710] Add missing mock for cinder.default_quota_get
81+ - [7c47ec5] Add logging handler for openstack_auth in the tests
82+ - [306c5ca] Check host is not none in host aggregate page
83+ - [fbd5b2e] Add missing comma in Volume ResourceWrapper class
84+ * d/p/fix-requirements.patch: Drop minimum version of six to align to version
85+ in Ubuntu 14.04.
86+
87+ -- Corey Bryant <corey.bryant@canonical.com> Mon, 09 Jun 2014 15:20:18 -0400
88+
89+horizon (1:2014.1-0ubuntu1) trusty; urgency=medium
90+
91+ * New upstream release (LP: #1288245).
92+
93+ -- James Page <james.page@ubuntu.com> Thu, 17 Apr 2014 12:21:21 +0100
94+
95+horizon (1:2014.1~rc2-0ubuntu1) trusty; urgency=medium
96+
97+ * New upstream release candidate (LP: #1288245).
98+ - d/static/*: Refreshed assets for new upstream release.
99+
100+ -- Chuck Short <zulcss@ubuntu.com> Wed, 09 Apr 2014 07:39:58 -0400
101+
102+horizon (1:2014.1~rc1-0ubuntu1) trusty; urgency=medium
103+
104+ * New upstream release candidate (LP: #1288245).
105+ - d/static/*: Refreshed assets for new upstream release.
106+ * d/theme/*: Refresh Ubuntu theme against Icehouse templates (LP: #1291653).
107+
108+ -- James Page <james.page@ubuntu.com> Mon, 31 Mar 2014 17:31:49 +0100
109+
110+horizon (1:2014.1~b3-0ubuntu2) trusty; urgency=medium
111+
112+ * Ensure correct URL is used for logout/timeout (LP: #1243187):
113+ - d/p/ubuntu_settings.patch: Update LOGOUT_URL for /horizon prefix.
114+ * Ensure Apache configuration is backwards compatible with Apache 2.2
115+ (LP: #1292577):
116+ - d/openstack-dashboard.conf: Revert changes from 1:2014.1~b2-0ubuntu2.
117+
118+ -- James Page <james.page@ubuntu.com> Fri, 14 Mar 2014 16:21:00 +0000
119+
120+horizon (1:2014.1~b3-0ubuntu1) trusty; urgency=medium
121+
122+ * New upstream milestone release.
123+ * d/static/*: Refreshed assets for new upstream release.
124+
125+ -- James Page <james.page@ubuntu.com> Thu, 06 Mar 2014 16:53:28 +0000
126+
127+horizon (1:2014.1~b2-0ubuntu2) trusty; urgency=medium
128+
129+ * d/rules: Drop override of dh_auto_clean, not required.
130+ * d/rules,openstack-dashboard.install: Detect and use default python
131+ version when creating symlink from openstack-dashboard -> horizon.
132+ * d/*: Tidy surplus execute bits on numerous files.
133+ * d/openstack-dashboard.conf: Update for Apache 2.4 stanza's.
134+ * d/rules: Skip tests as they don't run and results where being ignored.
135+ * d/control: python-django-openstack - update description, move to section
136+ oldlibs for transitional packages.
137+ * d/*: Wrap-and-sort.
138+ * d/control: Drop BD on python-d2to1, merged into python-pbr.
139+
140+ -- James Page <james.page@ubuntu.com> Tue, 25 Feb 2014 14:34:33 +0000
141+
142+horizon (1:2014.1~b2-0ubuntu1) trusty; urgency=medium
143+
144+ [ Chuck Short ]
145+ * New upstream release.
146+ * debian/patches/fix-ubuntu-tests.patch: Dropped.
147+ * deban/patches/ubuntu-settings.patch: Refreshed
148+
149+ [ James Page ]
150+ * debian/static: Refresh assets.
151+
152+ -- James Page <james.page@ubuntu.com> Fri, 24 Jan 2014 15:12:31 +0000
153+
154+horizon (1:2014.1~b1-0ubuntu1) trusty; urgency=low
155+
156+ * New upstream release.
157+ * debian/control: open icehouse release.
158+ * debian/static/openstack-dashboard: Refreshed static assets.
159+
160+ -- Chuck Short <zulcss@ubuntu.com> Thu, 05 Dec 2013 14:39:15 -0500
161+
162+horizon (1:2013.2-0ubuntu1) saucy; urgency=low
163+
164+ * New upstream release (LP: #1236462).
165+
166+ -- Chuck Short <zulcss@ubuntu.com> Thu, 17 Oct 2013 09:43:46 -0400
167+
168+horizon (1:2013.2~rc3-0ubuntu1) saucy; urgency=low
169+
170+ * New upstream release candidate (LP: #1240665).
171+
172+ -- Chuck Short <zulcss@ubuntu.com> Wed, 16 Oct 2013 20:10:52 -0400
173+
174+horizon (1:2013.2~rc2-0ubuntu1) saucy; urgency=low
175+
176+ * New upstream release candidate. (#1239156)
177+ * debian/README.compression: Updated documenation on how to
178+ refresh the static assets.
179+
180+ -- Chuck Short <zulcss@ubuntu.com> Tue, 15 Oct 2013 10:20:05 -0400
181+
182+horizon (1:2013.2~rc1-0ubuntu2) saucy; urgency=low
183+
184+ * d/theme/css/ubuntu.css: Refresh Ubuntu theme against new Havana
185+ stylesheets, fixing network and chart layouts (LP: #1235249).
186+ * d/openstack-dashboard.postinst: Allow horizon user to read and
187+ write data in /var/lib/openstack-dashboard inline with user and
188+ group permissions set in Apache configuration.
189+
190+ -- James Page <james.page@ubuntu.com> Fri, 04 Oct 2013 14:17:43 +0100
191+
192+horizon (1:2013.2~rc1-0ubuntu1) saucy; urgency=low
193+
194+ [ James Page ]
195+ * New upstream release candidate:
196+ - d/static: Refreshed static assets for 2013.2~rc1.
197+ - d/patches: Refreshed patches.
198+
199+ [ Chuck Short ]
200+ * debian/control: Add python-lesscpy as a suggests to optionally
201+ support online compression of static assets (LP: #1226674).
202+
203+ -- James Page <james.page@ubuntu.com> Thu, 03 Oct 2013 13:48:12 +0100
204+
205+horizon (1:2013.2~b3-0ubuntu2) saucy; urgency=low
206+
207+ * Don't use /etc/openstack-dashboard for in-process generated data
208+ (LP: #1233752):
209+ - d/openstack-dashboard.{dirs,postinst}:
210+ + Create /var/lib/openstack-dashboard with restricted permissions,
211+ allowing www-data user to write a secret_key if need be.
212+ + Move /etc/openstack-dashboard/secret_key to correct location if
213+ it already exists.
214+ - d/p/ubuntu_settings.patch: Use /var/lib/openstack-dashboard for
215+ secret key storage instead of /etc/openstack-dashboard.
216+
217+ -- James Page <james.page@ubuntu.com> Wed, 02 Oct 2013 10:31:15 +0100
218+
219+horizon (1:2013.2~b3-0ubuntu1) saucy; urgency=low
220+
221+ * New upstream release.
222+ * debian/control: Minimum python-openstack-auth version >= 1.1.1.
223+ * debian/control: Add python-troveclient.
224+ * debian/static: Refresh static assets for 2013.2~b3.
225+ * debian/patches: ubuntu_local_settings.patch -> ubuntu_settings.patch, also
226+ patch location of secret key in openstack_dashboard/settings.py
227+
228+ -- Adam Gandelman <adamg@ubuntu.com> Fri, 06 Sep 2013 11:59:43 -0700
229+
230+horizon (1:2013.2~b2-0ubuntu6) saucy; urgency=low
231+
232+ * debian/patches/ubuntu_local_settings.py: Set flexible
233+ default for ALLOWED_HOSTS that should be changed for production
234+ deployments (LP: #1214982).
235+ * Fix (LP: #1216019):
236+ - debian/openstack-dashboard.{postinst, postrm}: Add/remove horizon
237+ user. Ensure /etc/openstack-dashbard ownership.
238+ - debian/openstack-dashboard.conf: Run WSGIDaemonProcess as user
239+ horizon, set WSGIProcessGroup to horizon.
240+ - debian/patches/ubuntu_local_settings.py: Generate and load secret
241+ key from /etc/openstack-dashboard/secret_key.
242+
243+ -- Adam Gandelman <adamg@ubuntu.com> Fri, 06 Sep 2013 10:33:18 -0700
244+
245+horizon (1:2013.2~b2-0ubuntu5) saucy; urgency=low
246+
247+ * d/static/*: Refresh static assets for 2013.2~b2.
248+ * d/rules: Tweak helper for refreshing static assets to link
249+ local_settings.py correctly.
250+ * d/openstack-dashboard.p*: Fix typo in configuration file name,
251+ ensure consistent use of tabs/spaces.
252+
253+ -- James Page <james.page@ubuntu.com> Mon, 02 Sep 2013 16:43:56 +0100
254+
255+horizon (1:2013.2~b2-0ubuntu4) saucy; urgency=low
256+
257+ * Update for apache 2.4, preserve 2.2 compatability. (LP: #1218535)
258+
259+ -- Adam Gandelman <adamg@ubuntu.com> Fri, 30 Aug 2013 15:31:49 -0700
260+
261+horizon (1:2013.2~b2-0ubuntu3) saucy; urgency=low
262+
263+ * debian/rules: Don't remove egg information while cleaning.
264+ (LP: #1210253)
265+
266+ -- Chuck Short <zulcss@ubuntu.com> Wed, 21 Aug 2013 10:08:35 -0400
267+
268+horizon (1:2013.2~b2-0ubuntu2) saucy; urgency=low
269+
270+ * debian/control: Fix typo in depends.
271+
272+ -- Chuck Short <zulcss@ubuntu.com> Mon, 22 Jul 2013 14:36:30 -0400
273+
274+horizon (1:2013.2~b2-0ubuntu1) saucy; urgency=low
275+
276+ [ James Page ]
277+ * d/control: Update VCS fields for new branch locations.
278+ * Automate refresh of static assets:
279+ - d/rules: Added refresh-static-assets helper target.
280+ - d/README.compression: Updated for new process.
281+ * d/static/*: Refreshed static assets.
282+
283+ [ Chuck Short ]
284+ * New upstream release
285+ * debian/control:
286+ - Add python-ceilometerclient
287+ - Add python-heatclient
288+ - Renamed python-quantumclient to python-neturonclient.
289+ * debian/curles: Removed instances of quantum since its cruft
290+ that we dont need anymore.
291+
292+ -- Chuck Short <zulcss@ubuntu.com> Mon, 22 Jul 2013 11:45:28 -0400
293+
294+horizon (1:2013.2~b1-0ubuntu1) saucy; urgency=low
295+
296+ * New upstream release.
297+ * debian/patches/ubuntu_local_settings.patch: Refreshed
298+ * debian/control: Add python-pbr and python-d2to1.
299+
300+ -- Chuck Short <zulcss@ubuntu.com> Fri, 31 May 2013 08:59:58 -0500
301+
302+horizon (1:2013.1-0ubuntu3) raring; urgency=low
303+
304+ * Re-sync Ubuntu theme with upstream changes, fixing instance network
305+ selection dialog and network topology screens (LP: #1157918).
306+
307+ -- James Page <james.page@ubuntu.com> Mon, 22 Apr 2013 14:09:04 +0100
308+
309+horizon (1:2013.1-0ubuntu2) raring; urgency=low
310+
311+ * Recompress static JS and CSS and generate new manifest.json for
312+ offline compression.
313+
314+ -- Chuck Short <zulcss@ubuntu.com> Wed, 10 Apr 2013 12:24:24 -0500
315+
316+horizon (1:2013.1-0ubuntu1) raring; urgency=low
317+
318+ * New upstream release.
319+
320+ -- Chuck Short <zulcss@ubuntu.com> Fri, 05 Apr 2013 14:20:44 -0500
321+
322+horizon (1:2013.1~rc2-0ubuntu1) raring; urgency=low
323+
324+ * New upstream release.
325+
326+ -- Chuck Short <zulcss@ubuntu.com> Tue, 02 Apr 2013 08:40:42 -0500
327+
328+horizon (1:2013.1~rc1-0ubuntu1) raring; urgency=low
329+
330+ [ James Page ]
331+ * New upstream release candidate for Grizzly:
332+ - Recompress static JS and CSS and generate new manifest.json for
333+ offline compression.
334+ * d/watch: Update uversionmangle to deal with upstream versioning
335+ changes, remove tarballs.openstack.org.
336+ * d/control: Version python-compressor >= 1.2 (LP: #1130610).
337+
338+ [ Adam Gandelman ]
339+ * debian/patches/ubuntu_local_settings.py: Refresh, specify memcache
340+ location as part of CACHES, as per upstream changes to example config.
341+
342+ -- James Page <james.page@ubuntu.com> Wed, 20 Mar 2013 11:20:17 +0000
343+
344+horizon (2013.1.g3-0ubuntu2) raring; urgency=low
345+
346+ * Recompress static JS and CSS and generate new manifest.json for offline
347+ compression.
348+
349+ -- James Page <james.page@ubuntu.com> Tue, 26 Feb 2013 07:35:51 +0000
350+
351+horizon (2013.1.g3-0ubuntu1) raring; urgency=low
352+
353+ [ James Page ]
354+ * Recompress static JS and CSS and generate new manifest.json for offline
355+ compression in preparation for Grizzly-3.
356+
357+ [ Chuck Short ]
358+ * New usptream release.
359+
360+ -- Chuck Short <zulcss@ubuntu.com> Fri, 22 Feb 2013 09:43:22 -0600
361+
362+horizon (2013.1~g2-0ubuntu1) raring; urgency=low
363+
364+ [ Adam Gandelman ]
365+ * Recompress static JS and CSS and generate new manifest.json for offline
366+ compression in preparation for Grizzly-2.
367+
368+ [ Chuck Short ]
369+ * New upstream release.
370+
371+ -- Chuck Short <zulcss@ubuntu.com> Fri, 11 Jan 2013 08:26:40 -0600
372+
373+horizon (2013.1~g1-0ubuntu1) raring; urgency=low
374+
375+ [ Adam Gandelman ]
376+ * debian/patches/add_juju_settings_pannel.patch: Disable during
377+ Grizzly dev. cycle.
378+
379+ [ Chuck Short ]
380+ * New upstream relase.
381+ * Refreshed patches.
382+
383+ -- Chuck Short <zulcss@ubuntu.com> Fri, 23 Nov 2012 08:49:14 -0600
384+
385+horizon (2012.2-0ubuntu2) quantal; urgency=low
386+
387+ * debian/control: Set strict version requirements between python-django-horizon,
388+ openstack-dashboard, and openstack-ubuntu-theme. (LP: #1061961)
389+ * debian/theme/css/ubuntu.css: Refreshed against Folsom. (LP: #1064420)
390+ * debian/patches/add_juju_panel.patch: Update and refresh for Folsom
391+ compatability. (LP: #1064605)
392+ * debian/patches/allow_alternate_css.patch: Remove unapplied, obsolete
393+ patch.
394+
395+ -- Adam Gandelman <adamg@canonical.com> Tue, 09 Oct 2012 09:59:55 -0700
396+
397+horizon (2012.2-0ubuntu1) quantal; urgency=low
398+
399+ * New upstream release.
400+
401+ -- Chuck Short <zulcss@ubuntu.com> Thu, 27 Sep 2012 11:56:26 -0500
402+
403+horizon (2012.2~rc2-0ubuntu1) quantal; urgency=low
404+
405+ [ Adam Gandelman ]
406+ * Re-enable openstack-dashboard-ubuntu-theme.
407+
408+ [ Chuck Short ]
409+ * New upstream release
410+
411+ -- Chuck Short <zulcss@ubuntu.com> Fri, 21 Sep 2012 08:03:36 -0500
412+
413+horizon (2012.2~rc1-0ubuntu1) quantal; urgency=low
414+
415+ [ Adam Gandelman ]
416+ * debian/patches/ubuntu_local_settings.patch: Squash all patches that
417+ touch local_settings.py.example into one.
418+ * Drop node-less dependency (LP: #1024326).
419+ - debian/static/openstack-dashboard: Pre-compressed and compiled JS, CSS
420+ and compressor manifest.json.
421+ - debian/patches/ubuntu_local_settings.patch: Set COMPRESS_OFFLINE=True
422+ to enable offline compression and pre-compressed static files by
423+ default.
424+
425+ [ Chuck Short ]
426+ * New upstream release
427+
428+ -- Chuck Short <zulcss@ubuntu.com> Wed, 12 Sep 2012 12:21:33 -0500
429+
430+horizon (2012.2~rc1~20120904.2043-0ubuntu1) quantal; urgency=low
431+
432+ [ Adam Gandelman ]
433+ * debian/patches/fix-coverage-binary-name.patch: Drop, merge into
434+ fix-ubuntu-tests.patch.
435+ * debian/patches/set_login_redirects.patch: Configure login URLs in
436+ local_settings.py according to the default apache configuration
437+ installed. (LP: #1037349)
438+ * debian/patches/fix-dashboard-manage.patch: Refresh.
439+
440+ [ Soren Hansen ]
441+ * Update debian/watch to account for symbolically named tarballs and
442+ use newer URL.
443+ * Fix Launchpad URLs in debian/watch.
444+
445+ [ Chuck Short ]
446+ * New upstream version
447+
448+ -- Chuck Short <zulcss@ubuntu.com> Fri, 07 Sep 2012 12:35:36 -0500
449+
450+horizon (2012.2~f3-0ubuntu2) quantal; urgency=low
451+
452+ * Depend on python-openstack-auth rather than on the removed
453+ python-django-openstack-auth.
454+
455+ -- Colin Watson <cjwatson@ubuntu.com> Wed, 22 Aug 2012 10:34:11 +0100
456+
457+horizon (2012.2~f3-0ubuntu1) quantal; urgency=low
458+
459+ [ Chuck Short ]
460+ * New upstream release.
461+ * debian/patches/fix-ubuntu-tests.patch: Fix test suites again to
462+ run during the builds.
463+ * debian/watch: Update.
464+ * debian/control: Add python-glanceclient. (LP: #1030911)
465+ * debian/openstack-dashboard.conf: Don't hijack apache's webroot. (LP:
466+ #1020313)
467+ * debian/control: Update horizon deps to reflect reality.
468+
469+ [ Adam Gandelman ]
470+ * debian/control: Bump required python-django version to 1.4.
471+ * wrap-and-sort.
472+ * Fix (LP: #1036571):
473+ - debian/rules, openstack-dashboard.{links, dirs, postinst}: Add required
474+ symlinks and directories to allow Horizon to function with the packaged
475+ lessc.
476+ - debian/control: Add python-{cinder, swift, quantum}client,
477+ python-django-openstack-auth, python-netaddr, python-compressor, lessc.
478+ * debian/rules: Improve dh_auto_clean.
479+
480+ -- Chuck Short <zulcss@ubuntu.com> Thu, 16 Aug 2012 14:01:33 -0500
481+
482+horizon (2012.2~f2-0ubuntu1) quantal; urgency=low
483+
484+ * New usptream version.
485+
486+ -- Chuck Short <zulcss@ubuntu.com> Fri, 06 Jul 2012 11:38:55 -0400
487+
488+horizon (2012.2~f2~20120622.1833-0ubuntu2) quantal; urgency=low
489+
490+ * debian/patches/{use-memcache.patch, turn-off-debug.patch}: Refresh.
491+
492+ -- Adam Gandelman <adamg@canonical.com> Tue, 03 Jul 2012 14:09:15 -0700
493+
494+horizon (2012.2~f2~20120622.1833-0ubuntu1) quantal; urgency=low
495+
496+ [ Chuck Short ]
497+ * New upstream version.
498+ * debian/copyright: Fix lintian warnings.
499+
500+ [ Adam Gandelman ]
501+ * Disabled during Folsom dev cycle, to be refreshed against first Folsom RC:
502+ - debian/patches/add_juju_settings_panel.patch
503+ - debian/patches/allow_alternate_css.patch
504+ * debian/patches/fix-coverage-binary-name.patch: Refreshed.
505+ * debian/patches/turn-off-debug.patch: Refreshed.
506+
507+ -- Chuck Short <zulcss@ubuntu.com> Fri, 22 Jun 2012 11:31:06 -0400
508+
509+horizon (2012.2~f2~20120530.1777-0ubuntu1) quantal; urgency=low
510+
511+ * New upstream release.
512+ * debian/patches/add_juju_settings_panel.patch: Refreshed
513+ * debian/patches/turn-off-debug.patch: Refreshed
514+
515+ -- Chuck Short <zulcss@ubuntu.com> Fri, 01 Jun 2012 10:57:56 -0400
516+
517+horizon (2012.2~f1-0ubuntu1) quantal; urgency=low
518+
519+ * New usptream release.
520+ * Prepare for quantal:
521+ - debian/patches/fix-coverage-binary-name.patch: Refreshed.
522+ * Temporarily pass the testsuite.
523+
524+ -- Chuck Short <zulcss@ubuntu.com> Thu, 24 May 2012 14:33:20 -0400
525+
526+horizon (2012.1-0ubuntu8) precise-proposed; urgency=low
527+
528+ * debian/control: Added memcached as a Recommends of python-django-horizon,
529+ to ensure a memcached is running and can be used via default install.
530+ - LP: #988435
531+
532+ -- Dave Walker (Daviey) <DaveWalker@ubuntu.com> Wed, 25 Apr 2012 18:30:00 +0100
533+
534+horizon (2012.1-0ubuntu7) precise; urgency=low
535+
536+ * debian/patches/use-memcache.patch: Use memcache for session engine by
537+ default to avoid frequent logouts, as sessions are not shared across
538+ workers. LP: #968850
539+
540+ -- Dave Walker (Daviey) <DaveWalker@ubuntu.com> Wed, 25 Apr 2012 10:55:18 +0100
541+
542+horizon (2012.1-0ubuntu6) precise; urgency=low
543+
544+ [ Adam Gandelman ]
545+ * debian/openstack-dashboard.links: Create symlink to horizon's static js
546+ files. (LP: #987535)
547+
548+ [ Jamie Strandboge ]
549+ * debian/control: don't Build-Depends on python-cherrypy3. It is used by
550+ only the dashboard tests and they are disabled in Ubuntu builds
551+
552+ -- Adam Gandelman <adamg@canonical.com> Tue, 24 Apr 2012 10:43:12 -0700
553+
554+horizon (2012.1-0ubuntu5) precise; urgency=low
555+
556+ [ Adam Gandelman ]
557+ * debian/patches/turn-off-debug.patch: Enable again
558+ * debian/openstack-dashboard.conf: Add an Alias mapping '/static'
559+ to '/usr/share/opensack-dashboard/openstack_dashboard/static/'
560+ (LP: #980787)
561+ * debian/patches/allow_alternate_css.patch: Allow loading of ubuntu.css
562+ and favicon if they exists
563+ * debian/control: Drop libjs-jquery dependencies
564+
565+ [ Dave Walker (Daviey) ]
566+ * debian/control: Drop duplicate depends python-cloudfiles.
567+
568+ -- Dave Walker (Daviey) <DaveWalker@ubuntu.com> Mon, 23 Apr 2012 10:04:39 +0100
569+
570+horizon (2012.1-0ubuntu4) precise; urgency=low
571+
572+ * debian/patches/turn-off-debug.patch; Reverted, breaks CSS templates.
573+ (LP: #980787)
574+
575+ -- Chuck Short <zulcss@ubuntu.com> Fri, 13 Apr 2012 09:58:54 -0400
576+
577+horizon (2012.1-0ubuntu3) precise; urgency=low
578+
579+ [ Adam Gandelman ]
580+ * debian/patches/add_juju_settings_panel.patch, debian/rules,
581+ debian/juju.png: Add an Ubuntu-specific panel to easily generate
582+ Juju environments.yaml
583+
584+ [ Chuck Short ]
585+ * debian/patches/turn-off-debug.patch: Turn off debugging.
586+
587+ -- Chuck Short <zulcss@ubuntu.com> Thu, 12 Apr 2012 12:42:04 -0400
588+
589+horizon (2012.1-0ubuntu2) precise; urgency=low
590+
591+ * Make openstack-dashboard Pre-Depends: dpkg (>= 1.15.7.2) for
592+ dpkg-maintscript-helper.
593+
594+ -- Colin Watson <cjwatson@ubuntu.com> Tue, 10 Apr 2012 17:58:25 +0100
595+
596+horizon (2012.1-0ubuntu1) precise; urgency=low
597+
598+ * New upstream release.
599+ * debian/patches/turn-off-debug.patch: Turn off debugging.
600+
601+ -- Chuck Short <zulcss@ubuntu.com> Thu, 12 Apr 2012 10:46:00 -0400
602+
603+horizon (2012.1~rc2-0ubuntu1) precise; urgency=low
604+
605+ [ Chuck Short ]
606+ * New usptream release.
607+ * debian/control: Use python-cherrypy3
608+ * debian/rules: Update pythonpath in order to run tests.
609+ * debian/patches/fix-coverage-binary-name.patch: Make the testsuite
610+ run.
611+ * debian/rules: Fail build if tests fail.
612+
613+ [ A Gandelman ]
614+ * debian/control: Add python-memcache
615+ * debain/dashboard.conf: Update to match current upstream documentation
616+ (LP: #966069)
617+
618+ [ Adrien Cunin ]
619+ * Renamed Apache config file from dashboard.conf to openstack-dashboard.conf
620+ (LP: #965410)
621+ - Updated post{inst,rm} and added preinst to handle correctly the rename
622+
623+ -- Chuck Short <zulcss@ubuntu.com> Wed, 04 Apr 2012 07:21:15 -0400
624+
625+horizon (2012.1~rc1-0ubuntu1) precise; urgency=low
626+
627+ * New upstream release.
628+
629+ -- Chuck Short <zulcss@ubuntu.com> Tue, 20 Mar 2012 14:49:24 -0400
630+
631+horizon (2012.1~rc1~20120315.1545-0ubuntu1) precise; urgency=low
632+
633+ [Adam Gandelman]
634+ * New upstream release.
635+
636+ [Chuck Short]
637+ * debian/control: Update run-time depends
638+
639+ -- Adam Gandelman <adamg@canonical.com> Fri, 16 Mar 2012 12:29:27 -0700
640+
641+horizon (2012.1~rc1~20120308.1479-0ubuntu1) precise; urgency=low
642+
643+ * New upstream version.
644+ * debian/rules: Fix symlink when installing horizon.
645+ (LP: #947118)
646+ * debian/control: Add python-django-nose as a dep. (LP: #944235)
647+ * debian/control: Fix broken depends.
648+
649+ -- Chuck Short <zulcss@ubuntu.com> Fri, 09 Mar 2012 11:50:22 -0500
650+
651+horizon (2012.1~e4-0ubuntu1) precise; urgency=low
652+
653+ * New upstream version.
654+ * debian/rules: Update due to upstream build changes.
655+ * debian/control: Update standards-version.
656+ * debian/patches/openstack-config-settings.patch: Dropped
657+ * debian/patches/fix-dashboard-django-wsgi.patch: Refreshed
658+ * debian/patches/fix-dashboard-manage.patch: Refreshed
659+ * debian/openstack-dashboard.install: Update due to upstream build changes.
660+ * debian/dashboard: Update to upstream build changes.
661+ * debian/pydist-overrides: Dont try to install python-django-nose-selenium.
662+ * debian/openstack-dashboard.install: Add missing config files.
663+ * debian/rules: Fix broken settings.py
664+ * debian/patches/pkg-setup.patch: Copy missing templates, shameously
665+ taken from debian
666+ * debian/patches/fix-broken-tarbll.patch: Add missing files.
667+
668+ -- Chuck Short <zulcss@ubuntu.com> Fri, 02 Mar 2012 12:11:59 -0500
669+
670+horizon (2012.1~e4~20120224.1386-0ubuntu1) precise; urgency=low
671+
672+ * New upstream version.
673+
674+ -- Chuck Short <zulcss@ubuntu.com> Fri, 24 Feb 2012 10:49:27 -0500
675+
676+horizon (2012.1~e4~20120217.1354-0ubuntu1) precise; urgency=low
677+
678+ * debian/patches/openstack-config-settings.patch: Refreshed.
679+ * debian/copyright: Updated copyright.
680+ * debian/rules: Diable tests since it doesnt work without a
681+ virtualenv.
682+ * New upstream release.
683+
684+ -- Chuck Short <zulcss@ubuntu.com> Fri, 17 Feb 2012 10:12:25 -0500
685+
686+horizon (2012.1~e4~20120210.1331-0ubuntu1) precise; urgency=low
687+
688+ * New Upstream version
689+ * debian/control:
690+ - Add python-coverage as a build dependency.
691+ - Add python-novaclient as a build dependency.
692+
693+ -- Chuck Short <zulcss@ubuntu.com> Fri, 10 Feb 2012 11:09:58 -0500
694+
695+horizon (2012.1~e4~20120202.1300-0ubuntu2) precise; urgency=low
696+
697+ * debian/control: Add python-keystoneclient as a build
698+ dependency.
699+
700+ -- Chuck Short <zulcss@ubuntu.com> Fri, 03 Feb 2012 13:29:27 -0500
701+
702+horizon (2012.1~e4~20120202.1300-0ubuntu1) precise; urgency=low
703+
704+ * New upstream version.
705+ * debian/control: Drop dependencies we dont need.
706+
707+ -- Chuck Short <zulcss@ubuntu.com> Fri, 03 Feb 2012 09:55:54 -0500
708+
709+horizon (2012.1~e3-0ubuntu1) precise; urgency=low
710+
711+ * New upstream version.
712+ * debian/conffiles: Don't wipe out local_settings.py on upgrade.
713+ (LP: #914257)
714+
715+ -- Chuck Short <zulcss@ubuntu.com> Thu, 26 Jan 2012 09:52:53 -0500
716+
717+horizon (2012.1~e3~20120120.1235-0ubuntu1) precise; urgency=low
718+
719+ * New upstream release.
720+
721+ -- Chuck Short <zulcss@ubuntu.com> Fri, 20 Jan 2012 14:51:21 -0500
722+
723+horizon (2012.1~e3~20120113.1213-0ubuntu1) precise; urgency=low
724+
725+ [Chuck Short]
726+ * Removed python-django-horizon.postinst, let dh_python2 generate instead
727+ since python-support is not a dependency.
728+ * Dropped python-openstack-compute from debian/control.
729+ * Clean up debian/control.
730+ * Restart apache when installing the openstack dashboard.
731+ (LP: #905527)
732+ * Dropped python-coverage not needed.
733+ * Added transitional package for people updating from oneiric.
734+ * Rediffed patches.
735+ * More linitian fixes.
736+
737+ [Robie Basak]
738+ * debian/control: put python-django-horizon in Python section.
739+ * debian/control: lintian fixes (LP: #899427):
740+ - Put python-django-horizon in Python section
741+ - Remove definite article from Description
742+ * debian/copyright: fix dep5 syntax.
743+ * debian/python-django-horizon.lintian-overrides: override for template shell
744+ script.
745+
746+ -- Chuck Short <zulcss@ubuntu.com> Fri, 13 Jan 2012 10:59:49 +0100
747+
748+horizon (2012.1~e2-0ubuntu2) precise; urgency=low
749+
750+ * Rebuild to drop dependencies on python2.6.
751+
752+ -- Matthias Klose <doko@ubuntu.com> Mon, 02 Jan 2012 10:58:49 +0100
753+
754+horizon (2012.1~e2-0ubuntu1) precise; urgency=low
755+
756+ * New upstream release (LP: #904039)
757+ * debian/control: Update build-depends.
758+ * debian/watch: Fix to fetch from Launchpad ad well.
759+
760+ -- Chuck Short <zulcss@ubuntu.com> Fri, 16 Dec 2011 16:34:56 -0500
761+
762+horizon (2012.1~e2~20111209.1104-0ubuntu1) precise; urgency=low
763+
764+ * New upstream release.
765+ * Refreshed patches.
766+ * debian/docs: Removed README
767+
768+ -- Chuck Short <zulcss@ubuntu.com> Fri, 09 Dec 2011 16:18:55 -0500
769+
770+horizon (2012.1~e1-0ubuntu~e2.20111201.1077.1) precise; urgency=low
771+
772+ [ Chuck Short ]
773+ * Initial release.
774+
775+ [ Jamie Strandboge ]
776+ * debian/patches/git-2012.1~e2~20111201.1077.patch: use 2012.1~e1 release
777+ tarball and apply all git commits up to 2012.1~e2~20111201.1077. This
778+ can be dropped in 2012.1~e2.
779+ * rename python-djanog-horizon.postinst to python-django-horizon.postinst
780+
781+ -- Jamie Strandboge <jamie@ubuntu.com> Fri, 02 Dec 2011 16:21:52 -0600
782
783=== added file 'debian/compat'
784--- debian/compat 1970-01-01 00:00:00 +0000
785+++ debian/compat 2014-12-03 19:02:16 +0000
786@@ -0,0 +1,1 @@
787+8
788
789=== added file 'debian/control'
790--- debian/control 1970-01-01 00:00:00 +0000
791+++ debian/control 2014-12-03 19:02:16 +0000
792@@ -0,0 +1,83 @@
793+Source: horizon
794+Section: net
795+Priority: extra
796+Maintainer: Chuck Short <zulcss@ubuntu.com>
797+Build-Depends:
798+ debhelper (>= 8.0.0),
799+ pylint,
800+ python-all (>= 2.6.6-3~),
801+ python-django-nose,
802+ python-mox,
803+ python-netaddr,
804+ python-nose,
805+ python-pbr,
806+ python-setuptools,
807+ python-sphinx
808+Standards-Version: 3.9.3
809+Homepage: http://launchpad.net/horizon
810+Vcs-Browser: http://bazaar.launchpad.net/~ubuntu-server-dev/horizon/icehouse/files
811+Vcs-Bzr: https://code.launchpad.net/~ubuntu-server-dev/horizon/icehouse
812+
813+Package: python-django-horizon
814+Section: python
815+Architecture: all
816+Depends:
817+ python-ceilometerclient,
818+ python-cinderclient,
819+ python-cloudfiles,
820+ python-compressor (>= 1.2),
821+ python-django (>= 1.4),
822+ python-glanceclient,
823+ python-heatclient,
824+ python-keystoneclient,
825+ python-lockfile,
826+ python-memcache,
827+ python-netaddr,
828+ python-neutronclient,
829+ python-novaclient,
830+ python-openstack-auth (>= 1.1.1),
831+ python-swiftclient,
832+ python-troveclient,
833+ python-tz,
834+ ${misc:Depends},
835+ ${python:Depends}
836+Recommends: memcached
837+Suggests: python-lesscpy
838+Description: Django module providing web based interaction with OpenStack
839+ The Django-Nova project is a Django module that is used to provide web based
840+ interactions with the OpenStack Nova cloud controller.
841+
842+Package: openstack-dashboard
843+Architecture: all
844+Pre-Depends: dpkg (>= 1.15.7.2)
845+Depends:
846+ adduser,
847+ apache2 | httpd,
848+ libapache2-mod-wsgi (>= 2.3),
849+ python-django-horizon (= ${source:Version}),
850+ ${misc:Depends},
851+ ${python:Depends}
852+Recommends: openstack-dashboard-ubuntu-theme
853+Description: django web interface to Openstack
854+ The OpenStack Dashboard is a reference implementation of a Django site that
855+ uses the Django-Nova project to provide web based interactions with the
856+ OpenStack Nova cloud controller.
857+
858+Package: python-django-openstack
859+Section: oldlibs
860+Architecture: all
861+Depends: python-django-horizon (= ${source:Version}), ${misc:Depends}
862+Description: dummy transitonal package
863+ This transitional package from the python-django-openstack to the
864+ python-django-horizon package. Once this package and its dependencies are
865+ installed you can remove it.
866+
867+Package: openstack-dashboard-ubuntu-theme
868+Architecture: all
869+Depends:
870+ openstack-dashboard (= ${source:Version}),
871+ ${misc:Depends},
872+ ${python:Depends}
873+Description: Ubuntu theme for the Openstack dashboard
874+ A custom Ubuntu theme for Horizon. This package is optional and overrides the
875+ default theme and branding.
876
877=== added file 'debian/copyright'
878--- debian/copyright 1970-01-01 00:00:00 +0000
879+++ debian/copyright 2014-12-03 19:02:16 +0000
880@@ -0,0 +1,55 @@
881+Format: http://dep.debian.net/deps/dep5
882+Upstream-Name: horizon
883+Source: http://github.com/openstack/horizon
884+
885+Files: *
886+Copyright: 2010 United States Government as represented by the Administrator of the National Aeronautics and Space Administration.
887+ 2011 Nebula, Inc.
888+ 2011 OpenStack LLC
889+ 2011 Midokura KK
890+License: Apache-2
891+ Licensed under the Apache License, Version 2.0 (the "License");
892+ you may not use this file except in compliance with the License.
893+ You may obtain a copy of the License at
894+ .
895+ http://www.apache.org/licenses/LICENSE-2.0
896+ .
897+ Unless required by applicable law or agreed to in writing, software
898+ distributed under the License is distributed on an "AS IS" BASIS,
899+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
900+ See the License for the specific language governing permissions and
901+ limitations under the License.
902+ .
903+ On Debian-based systems the full text of the Apache version 2.0 license
904+ can be found in `/usr/share/common-licenses/Apache-2.0'.
905+
906+Files: tools/rfc.sh
907+Copyright: Copyright (c) 2010-2011 Gluster, Inc
908+License: GPL-v3
909+ GNU GENERAL PUBLIC LICENSE
910+ Version 3, 29 June 2007
911+ .
912+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
913+ Everyone is permitted to copy and distribute verbatim copies
914+ of this license document, but changing it is not allowed.
915+ .
916+ On Debian-based systems the full text of the Apache version 2.0 license
917+ can be found in `/usr/share/common-licenses/GPL-3'
918+
919+Files: debian/*
920+Copyright: (c) 2012 Chuck Short <chuck.short@canonical.com>
921+License: Apache-2
922+ Licensed under the Apache License, Version 2.0 (the "License");
923+ you may not use this file except in compliance with the License.
924+ You may obtain a copy of the License at
925+ .
926+ http://www.apache.org/licenses/LICENSE-2.0
927+ .
928+ Unless required by applicable law or agreed to in writing, software
929+ distributed under the License is distributed on an "AS IS" BASIS,
930+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
931+ See the License for the specific language governing permissions and
932+ limitations under the License.
933+ .
934+ On Debian-based systems the full text of the Apache version 2.0 license
935+ can be found in `/usr/share/common-licenses/Apache-2.0'.
936
937=== added file 'debian/openstack-dashboard-ubuntu-theme.dirs'
938--- debian/openstack-dashboard-ubuntu-theme.dirs 1970-01-01 00:00:00 +0000
939+++ debian/openstack-dashboard-ubuntu-theme.dirs 2014-12-03 19:02:16 +0000
940@@ -0,0 +1,4 @@
941+/usr/share/openstack-dashboard-ubuntu-theme/static/ubuntu
942+/usr/share/openstack-dashboard-ubuntu-theme/static/ubuntu/img
943+/usr/share/openstack-dashboard-ubuntu-theme/static/ubuntu/css
944+/usr/share/openstack-dashboard-ubuntu-theme/templates
945
946=== added file 'debian/openstack-dashboard-ubuntu-theme.install'
947--- debian/openstack-dashboard-ubuntu-theme.install 1970-01-01 00:00:00 +0000
948+++ debian/openstack-dashboard-ubuntu-theme.install 2014-12-03 19:02:16 +0000
949@@ -0,0 +1,4 @@
950+debian/theme/css/* /usr/share/openstack-dashboard-ubuntu-theme/static/ubuntu/css
951+debian/theme/img/* /usr/share/openstack-dashboard-ubuntu-theme/static/ubuntu/img
952+debian/theme/templates/* /usr/share/openstack-dashboard-ubuntu-theme/templates
953+debian/theme/ubuntu_theme.py /etc/openstack-dashboard
954
955=== added file 'debian/openstack-dashboard-ubuntu-theme.links'
956--- debian/openstack-dashboard-ubuntu-theme.links 1970-01-01 00:00:00 +0000
957+++ debian/openstack-dashboard-ubuntu-theme.links 2014-12-03 19:02:16 +0000
958@@ -0,0 +1,2 @@
959+/etc/openstack-dashboard/ubuntu_theme.py /usr/share/openstack-dashboard/openstack_dashboard/local/ubuntu_theme.py
960+/usr/share/openstack-dashboard-ubuntu-theme/static/ubuntu /usr/share/openstack-dashboard/openstack_dashboard/static/ubuntu
961
962=== added file 'debian/openstack-dashboard-ubuntu-theme.postinst'
963--- debian/openstack-dashboard-ubuntu-theme.postinst 1970-01-01 00:00:00 +0000
964+++ debian/openstack-dashboard-ubuntu-theme.postinst 2014-12-03 19:02:16 +0000
965@@ -0,0 +1,11 @@
966+#!/bin/sh
967+
968+set -e
969+
970+if [ "$1" = "configure" ]; then
971+ if [ -x "`which invoke-rc.d 2>/dev/null`" -a -x "/etc/init.d/apache2" ] ; then
972+ invoke-rc.d --quiet apache2 reload
973+ fi
974+fi
975+
976+#DEBHELPER#
977
978=== added file 'debian/openstack-dashboard-ubuntu-theme.postrm'
979--- debian/openstack-dashboard-ubuntu-theme.postrm 1970-01-01 00:00:00 +0000
980+++ debian/openstack-dashboard-ubuntu-theme.postrm 2014-12-03 19:02:16 +0000
981@@ -0,0 +1,9 @@
982+#!/bin/sh
983+
984+set -e
985+
986+if [ -x "`which invoke-rc.d 2>/dev/null`" -a -x "/etc/init.d/apache2" ] ; then
987+ invoke-rc.d --quiet apache2 reload
988+fi
989+
990+#DEBHELPER#
991
992=== added file 'debian/openstack-dashboard.conf'
993--- debian/openstack-dashboard.conf 1970-01-01 00:00:00 +0000
994+++ debian/openstack-dashboard.conf 2014-12-03 19:02:16 +0000
995@@ -0,0 +1,8 @@
996+WSGIScriptAlias /horizon /usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi
997+WSGIDaemonProcess horizon user=horizon group=horizon processes=3 threads=10
998+WSGIProcessGroup horizon
999+Alias /static /usr/share/openstack-dashboard/openstack_dashboard/static/
1000+<Directory /usr/share/openstack-dashboard/openstack_dashboard/wsgi>
1001+ Order allow,deny
1002+ Allow from all
1003+</Directory>
1004
1005=== added file 'debian/openstack-dashboard.dirs'
1006--- debian/openstack-dashboard.dirs 1970-01-01 00:00:00 +0000
1007+++ debian/openstack-dashboard.dirs 2014-12-03 19:02:16 +0000
1008@@ -0,0 +1,6 @@
1009+/etc/openstack-dashboard
1010+/usr/share/openstack-dashboard
1011+/usr/share/openstack-dashboard/bin/less/
1012+/usr/share/openstack-dashboard/openstack_dashboard/static/dashboard/js
1013+/usr/share/openstack-dashboard/openstack_dashboard/static/dashboard/css
1014+/var/lib/openstack-dashboard
1015
1016=== added file 'debian/openstack-dashboard.install'
1017--- debian/openstack-dashboard.install 1970-01-01 00:00:00 +0000
1018+++ debian/openstack-dashboard.install 2014-12-03 19:02:16 +0000
1019@@ -0,0 +1,6 @@
1020+debian/openstack-dashboard.conf etc/apache2/conf-available
1021+debian/static/openstack-dashboard/css/* usr/share/openstack-dashboard/openstack_dashboard/static/dashboard/css
1022+debian/static/openstack-dashboard/js/* usr/share/openstack-dashboard/openstack_dashboard/static/dashboard/js
1023+debian/static/openstack-dashboard/manifest.json usr/share/openstack-dashboard/openstack_dashboard/static/dashboard
1024+etc/openstack-dashboard
1025+usr/share/openstack-dashboard
1026
1027=== added file 'debian/openstack-dashboard.links'
1028--- debian/openstack-dashboard.links 1970-01-01 00:00:00 +0000
1029+++ debian/openstack-dashboard.links 2014-12-03 19:02:16 +0000
1030@@ -0,0 +1,2 @@
1031+/usr/share/openstack-dashboard/openstack_dashboard/static /usr/share/openstack-dashboard/static
1032+/usr/bin/lessc /usr/share/openstack-dashboard/bin/less/lessc
1033
1034=== added file 'debian/openstack-dashboard.postinst'
1035--- debian/openstack-dashboard.postinst 1970-01-01 00:00:00 +0000
1036+++ debian/openstack-dashboard.postinst 2014-12-03 19:02:16 +0000
1037@@ -0,0 +1,63 @@
1038+#!/bin/sh
1039+# vim: set ts=2 et:
1040+
1041+set -e
1042+
1043+CONF="openstack-dashboard.conf"
1044+
1045+if [ "$1" = "configure" ]; then
1046+ # /etc/apache2/conf.d/dashboard.conf -> /etc/apache2/conf-available/openstack-dashboard.conf
1047+ dpkg-maintscript-helper mv_conffile \
1048+ /etc/apache2/conf.d/dashboard.conf /etc/apache2/conf-available/$CONF \
1049+ 2012.1~rc1-0ubuntu1 -- "$@"
1050+
1051+ # Transition config to apache 2.4 compatable location.
1052+ dpkg-maintscript-helper mv_conffile \
1053+ /etc/apache2/conf.d/$CONF \
1054+ /etc/apache2/conf-available/$CONF \
1055+ 1:2013.2~b2-0ubuntu3 -- "$@"
1056+
1057+ if ! getent group horizon > /dev/null 2>&1
1058+ then
1059+ addgroup --system horizon >/dev/null
1060+ fi
1061+ if ! getent passwd horizon > /dev/null 2>&1
1062+ then
1063+ adduser --system --home /usr/share/openstack-dashboard/ --ingroup horizon \
1064+ --no-create-home --shell /bin/false horizon
1065+ fi
1066+
1067+ if [ -e /usr/share/openstack-dashboard/openstack_dashboard/static ] ; then
1068+ chown -R horizon:horizon \
1069+ /usr/share/openstack-dashboard/openstack_dashboard/static
1070+ fi
1071+
1072+ if [ -d /etc/openstack-dashboard/ ] ; then
1073+ chown horizon:horizon /etc/openstack-dashboard/
1074+ fi
1075+
1076+ A22_STATE=$(dpkg-query -f '${Status}' -W 'apache2.2-common' 2>/dev/null | awk '{print $3}' || true)
1077+
1078+ if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then
1079+ # apache 2.4
1080+ . /usr/share/apache2/apache2-maintscript-helper
1081+ apache2_invoke enconf $CONF || exit $?
1082+ elif [ "$A22_STATE" = "installed" ] || [ "$A22_STATE" = "unpacked" ] ; then
1083+ # apache 2.2
1084+ [ -d /etc/apache2/conf.d/ ] && [ ! -L /etc/apache2/conf.d/$CONF ] &&
1085+ ln -s ../conf-available/$CONF /etc/apache2/conf.d/$CONF
1086+ [ -x /etc/init.d/apache2 ] && invoke-rc.d --quiet apache2 reload
1087+ fi
1088+
1089+ if [ -d /var/lib/openstack-dashboard ] ; then
1090+ # Generated secret storage for single node use - see local_settings.py
1091+ # for more details of SECRET_KEY
1092+ chmod 0700 /var/lib/openstack-dashboard
1093+ if [ -f /etc/openstack-dashboard/secret_key ]; then
1094+ mv /etc/openstack-dashboard/secret_key /var/lib/openstack-dashboard
1095+ fi
1096+ chown -R horizon:horizon /var/lib/openstack-dashboard
1097+ fi
1098+fi
1099+
1100+#DEBHELPER#
1101
1102=== added file 'debian/openstack-dashboard.postrm'
1103--- debian/openstack-dashboard.postrm 1970-01-01 00:00:00 +0000
1104+++ debian/openstack-dashboard.postrm 2014-12-03 19:02:16 +0000
1105@@ -0,0 +1,44 @@
1106+#!/bin/sh
1107+# vim: set ts=2 et:
1108+
1109+set -e
1110+
1111+CONF="openstack-dashboard.conf"
1112+
1113+# /etc/apache2/conf.d/dashboard.conf -> /etc/apache2/conf-available/openstack-dashboard.conf
1114+dpkg-maintscript-helper mv_conffile \
1115+ /etc/apache2/conf.d/dashboard.conf /etc/apache2/conf-available/$CONF \
1116+ 2012.1~rc1-0ubuntu1 -- "$@"
1117+
1118+# Transition config to apache 2.4 compatable location.
1119+dpkg-maintscript-helper mv_conffile \
1120+ /etc/apache2/conf.d/openstack-dashboard.conf \
1121+ /etc/apache2/conf-available/openstack-dashboard.conf \
1122+ 1:2013.2~b2-0ubuntu3 -- "$@"
1123+
1124+if [ "$1" = "remove" ] || [ "$1" = "purge" ] ; then
1125+ A22_STATE=$(dpkg-query -f '${Status}' -W 'apache2.2-common' 2>/dev/null | awk '{print $3}' || true)
1126+
1127+ if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then
1128+ # apache 2.4
1129+ . /usr/share/apache2/apache2-maintscript-helper
1130+ apache2_invoke disconf $CONF || exit $?
1131+ elif [ "$A22_STATE" = "installed" ] || [ "$A22_STATE" = "unpacked" ] ; then
1132+ # apache 2.2
1133+ [ -d /etc/apache2/conf.d/ ] && [ -L /etc/apache2/conf.d/$CONF ] &&
1134+ rm /etc/apache2/conf.d/$CONF
1135+ [ -x /etc/init.d/apache2 ] && invoke-rc.d --quiet apache2 reload
1136+ fi
1137+
1138+fi
1139+
1140+if [ "$1" = "purge" ] ; then
1141+ if (which deluser && getent passwd horizon) > /dev/null 2>&1; then
1142+ deluser --system --quiet --backup-to /var/lib horizon
1143+ fi
1144+ if (which delgroup && getent group horizon) > /dev/null 2>&1; then
1145+ delgroup --system --quiet horizon
1146+ fi
1147+fi
1148+
1149+#DEBHELPER#
1150
1151=== added file 'debian/openstack-dashboard.preinst'
1152--- debian/openstack-dashboard.preinst 1970-01-01 00:00:00 +0000
1153+++ debian/openstack-dashboard.preinst 2014-12-03 19:02:16 +0000
1154@@ -0,0 +1,17 @@
1155+#!/bin/sh
1156+# vim: set ts=2 et:
1157+
1158+set -e
1159+
1160+# /etc/apache2/conf.d/dashboard.conf -> /etc/apache2/conf.d/openstack-dashboard.conf
1161+dpkg-maintscript-helper mv_conffile \
1162+ /etc/apache2/conf.d/dashboard.conf /etc/apache2/conf.d/openstack-dashboard.conf \
1163+ 2012.1~rc1-0ubuntu1 -- "$@"
1164+
1165+# Transition config to apache 2.4 compatable location.
1166+dpkg-maintscript-helper mv_conffile \
1167+ /etc/apache2/conf.d/openstack-dashboard.conf \
1168+ /etc/apache2/conf-available/openstack-dashboard.conf \
1169+ 1:2013.2~b2-0ubuntu3 -- "$@"
1170+
1171+#DEBHELPER#
1172
1173=== added directory 'debian/patches'
1174=== added file 'debian/patches/add_juju_settings_panel.patch'
1175--- debian/patches/add_juju_settings_panel.patch 1970-01-01 00:00:00 +0000
1176+++ debian/patches/add_juju_settings_panel.patch 2014-12-03 19:02:16 +0000
1177@@ -0,0 +1,309 @@
1178+Index: horizon-2012.2/horizon/dashboards/settings/dashboard.py
1179+===================================================================
1180+--- horizon-2012.2.orig/horizon/dashboards/settings/dashboard.py 2012-10-09 11:54:50.986004892 -0700
1181++++ horizon-2012.2/horizon/dashboards/settings/dashboard.py 2012-10-09 11:54:57.058004668 -0700
1182+@@ -16,6 +16,7 @@
1183+ # under the License.
1184+
1185+ from django.utils.translation import ugettext_lazy as _
1186++from django.conf import settings
1187+
1188+ import horizon
1189+
1190+@@ -23,7 +24,15 @@
1191+ class Settings(horizon.Dashboard):
1192+ name = _("Settings")
1193+ slug = "settings"
1194+- panels = ('user', 'project', 'ec2')
1195++ try:
1196++ juju_panel = getattr(settings, 'ENABLE_JUJU_PANEL')
1197++ if juju_panel == True:
1198++ panels = ('user', 'project', 'ec2', 'juju')
1199++ else:
1200++ panels = ('user', 'project', 'ec2')
1201++ except AttributeError:
1202++ panels = ('user', 'project', 'ec2')
1203++
1204+ default_panel = 'user'
1205+ nav = False
1206+
1207+Index: horizon-2012.2/horizon/dashboards/settings/juju/forms.py
1208+===================================================================
1209+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
1210++++ horizon-2012.2/horizon/dashboards/settings/juju/forms.py 2012-10-09 11:58:55.169995921 -0700
1211+@@ -0,0 +1,100 @@
1212++# vim: tabstop=4 shiftwidth=4 softtabstop=4
1213++
1214++# Copyright 2012 Openstack, LLC
1215++# Copyright 2012 Canonical Ltd.
1216++#
1217++# Licensed under the Apache License, Version 2.0 (the "License"); you may
1218++# not use this file except in compliance with the License. You may obtain
1219++# a copy of the License at
1220++#
1221++# http://www.apache.org/licenses/LICENSE-2.0
1222++#
1223++# Unless required by applicable law or agreed to in writing, software
1224++# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
1225++# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
1226++# License for the specific language governing permissions and limitations
1227++# under the License.
1228++
1229++import logging
1230++import tempfile
1231++import zipfile
1232++from contextlib import closing
1233++
1234++from django import http, shortcuts
1235++from django.template.loader import render_to_string
1236++from django.utils.translation import ugettext_lazy as _
1237++
1238++from horizon import api
1239++from horizon import exceptions
1240++from horizon import forms
1241++from horizon import messages
1242++
1243++import boto
1244++import uuid
1245++
1246++LOG = logging.getLogger(__name__)
1247++
1248++
1249++class DownloadJujuEnvironment(forms.SelfHandlingForm):
1250++ # This is heavily based off the ec2 credentials form
1251++ tenant = forms.ChoiceField(label=_("Select a Project"))
1252++ @classmethod
1253++ def _instantiate(cls, request, *args, **kwargs):
1254++ return cls(request, *args, **kwargs)
1255++
1256++ def __init__(self, request, *args, **kwargs):
1257++ super(DownloadJujuEnvironment, self).__init__(request, *args, **kwargs)
1258++ tenant_choices = []
1259++ try:
1260++ tenant_list = api.keystone.tenant_list(request)
1261++ except:
1262++ tenant_list = []
1263++ exceptions.handle(request, _("Unable to retrieve tenant list."))
1264++
1265++ for tenant in tenant_list:
1266++ if tenant.enabled:
1267++ tenant_choices.append((tenant.id, tenant.name))
1268++ if not tenant_choices:
1269++ self.fields['tenant'].choices = ('', 'No Available Tenants')
1270++ else:
1271++ self.fields['tenant'].choices = tenant_choices
1272++
1273++ def handle(self, request, data):
1274++ def find_or_create_access_keys(request, tenant_id):
1275++ keys = api.keystone.list_ec2_credentials(request, request.user.id)
1276++ if keys:
1277++ return keys[0]
1278++ else:
1279++ return api.keystone.create_ec2_credentials(request,
1280++ request.user.id,
1281++ tenant_id)
1282++ try:
1283++ api.keystone.token_create_scoped(request,
1284++ data.get('tenant'),
1285++ request.user.token.id)
1286++ keys = find_or_create_access_keys(request, data.get('tenant'))
1287++ tenant_id = data['tenant']
1288++ tenant_name = dict(self.fields['tenant'].choices)[tenant_id]
1289++ control_bucket = "juju-openstack-%s-%s" % (tenant_name, str(uuid.uuid4())[19:])
1290++ context = {'ec2_access_key': keys.access,
1291++ 'ec2_secret_key': keys.secret,
1292++ 'ec2_url': api.url_for(request, 'ec2'),
1293++ 's3_url': api.url_for(request, 's3'),
1294++ 'juju_admin_secret': uuid.uuid4().hex,
1295++ 'control_bucket': control_bucket
1296++ }
1297++ except Exception, e:
1298++ # This will fail if there is not an S3 endpoint configured in the
1299++ # service catalog.
1300++ msg = "Could not generate Juju environment config: %s" % e
1301++ messages.error(request, msg)
1302++ redirect = request.build_absolute_uri()
1303++ raise exceptions.Http302(redirect)
1304++
1305++ response = shortcuts.render(request,
1306++ 'settings/juju/environments.yaml.template',
1307++ context,
1308++ content_type='text/plain')
1309++ response['Content-Disposition'] = 'attachment; filename=environments.yaml'
1310++ response['Content-Length'] = str(len(response.content))
1311++ return response
1312+Index: horizon-2012.2/horizon/dashboards/settings/juju/__init__.py
1313+===================================================================
1314+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
1315++++ horizon-2012.2/horizon/dashboards/settings/juju/__init__.py 2012-10-09 11:54:57.058004668 -0700
1316+@@ -0,0 +1 @@
1317++# Horizon Juju settings panel
1318+Index: horizon-2012.2/horizon/dashboards/settings/juju/panel.py
1319+===================================================================
1320+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
1321++++ horizon-2012.2/horizon/dashboards/settings/juju/panel.py 2012-10-09 11:54:57.058004668 -0700
1322+@@ -0,0 +1,28 @@
1323++# vim: tabstop=4 shiftwidth=4 softtabstop=4
1324++# Copyright 2012 Openstack, LLC
1325++# Copyright 2012 Canonical Ltd.
1326++#
1327++# Licensed under the Apache License, Version 2.0 (the "License"); you may
1328++# not use this file except in compliance with the License. You may obtain
1329++# a copy of the License at
1330++#
1331++# http://www.apache.org/licenses/LICENSE-2.0
1332++#
1333++# Unless required by applicable law or agreed to in writing, software
1334++# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
1335++# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
1336++# License for the specific language governing permissions and limitations
1337++# under the License.
1338++
1339++from django.utils.translation import ugettext_lazy as _
1340++
1341++import horizon
1342++from horizon.dashboards.settings import dashboard
1343++
1344++
1345++class JujuPanel(horizon.Panel):
1346++ name = _("Juju Environment Config")
1347++ slug = 'juju'
1348++
1349++
1350++dashboard.Settings.register(JujuPanel)
1351+Index: horizon-2012.2/horizon/dashboards/settings/juju/urls.py
1352+===================================================================
1353+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
1354++++ horizon-2012.2/horizon/dashboards/settings/juju/urls.py 2012-10-09 11:54:57.058004668 -0700
1355+@@ -0,0 +1,24 @@
1356++# vim: tabstop=4 shiftwidth=4 softtabstop=4
1357++
1358++# Copyright 2012 Openstack, LLC
1359++# Copyright 2012 Canonical Ltd.
1360++#
1361++# Licensed under the Apache License, Version 2.0 (the "License"); you may
1362++# not use this file except in compliance with the License. You may obtain
1363++# a copy of the License at
1364++#
1365++# http://www.apache.org/licenses/LICENSE-2.0
1366++#
1367++# Unless required by applicable law or agreed to in writing, software
1368++# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
1369++# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
1370++# License for the specific language governing permissions and limitations
1371++# under the License.
1372++
1373++from django.conf.urls.defaults import patterns, url
1374++
1375++from .views import IndexView
1376++
1377++urlpatterns = patterns('horizon.dashboards.settings.juju.views',
1378++ url(r'^$', IndexView.as_view(), name='index'),
1379++)
1380+Index: horizon-2012.2/horizon/dashboards/settings/juju/views.py
1381+===================================================================
1382+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
1383++++ horizon-2012.2/horizon/dashboards/settings/juju/views.py 2012-10-09 11:57:05.949999981 -0700
1384+@@ -0,0 +1,35 @@
1385++# vim: tabstop=4 shiftwidth=4 softtabstop=4
1386++
1387++# Copyright 2012 Openstack, LLC
1388++#
1389++# Licensed under the Apache License, Version 2.0 (the "License"); you may
1390++# not use this file except in compliance with the License. You may obtain
1391++# a copy of the License at
1392++#
1393++# http://www.apache.org/licenses/LICENSE-2.0
1394++#
1395++# Unless required by applicable law or agreed to in writing, software
1396++# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
1397++# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
1398++# License for the specific language governing permissions and limitations
1399++# under the License.
1400++
1401++import logging
1402++
1403++from django.core.urlresolvers import reverse_lazy
1404++
1405++from horizon import forms
1406++from horizon.dashboards.settings.juju.forms import DownloadJujuEnvironment
1407++
1408++
1409++LOG = logging.getLogger(__name__)
1410++
1411++
1412++class IndexView(forms.ModalFormView):
1413++ form_class = DownloadJujuEnvironment
1414++ template_name = 'settings/juju/index.html'
1415++ success_url = reverse_lazy('horizon:settings:juju')
1416++
1417++ def form_valid(self, form):
1418++ return form.handle(self.request, form.cleaned_data)
1419++
1420+Index: horizon-2012.2/horizon/dashboards/settings/templates/settings/juju/download_form.html
1421+===================================================================
1422+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
1423++++ horizon-2012.2/horizon/dashboards/settings/templates/settings/juju/download_form.html 2012-10-09 11:54:57.058004668 -0700
1424+@@ -0,0 +1,20 @@
1425++{% extends "horizon/common/_modal_form.html" %}
1426++{% load i18n %}
1427++
1428++
1429++{% block modal-body %}
1430++<div class="left">
1431++ <fieldset>
1432++ {% include "horizon/common/_form_fields.html" %}
1433++ </fieldset>
1434++</div>
1435++<div class="right">
1436++ <h3>{% trans "Description:" %}</h3>
1437++ <p>{% trans 'Clicking "Download Juju Environment Config" will download a file which includes a Juju environment configured for your cloud.<br><center><img src='/static/dashboard/img/juju.png'></center><br>To find out more about Juju visit <a href='http://juju.ubuntu.com'>http://juju.ubuntu.com</a>' %}</p>
1438++</div>
1439++{% endblock %}
1440++
1441++{% block modal-footer %}
1442++ <input class="btn btn-primary pull-right" type="submit" value="{% trans "Download Juju Environment Config" %}" />
1443++ {% if hide %}<a href="{% url horizon:settings:juju:index %}" class="btn secondary cancel close">{% trans "Cancel" %}</a>{% endif %}
1444++{% endblock %}
1445+Index: horizon-2012.2/horizon/dashboards/settings/templates/settings/juju/environments.yaml.template
1446+===================================================================
1447+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
1448++++ horizon-2012.2/horizon/dashboards/settings/templates/settings/juju/environments.yaml.template 2012-10-09 11:54:57.058004668 -0700
1449+@@ -0,0 +1,21 @@
1450++# To use Juju with your Openstack cloud:
1451++# 1. Run: apt-get install juju
1452++# 2. Copy this file to $HOME/.juju/environments.yaml
1453++# 3. Modify the 'default-image-id' to match an Ubuntu cloud image
1454++# AMI that has been published to your cloud.
1455++# 4. Run 'juju bootstrap' and deploy services!
1456++#
1457++# To find out more about juju visit http://juju.ubuntu.com
1458++
1459++juju: environments
1460++environments:
1461++ openstack:
1462++ type: ec2
1463++ control-bucket: {{ control_bucket }}
1464++ admin-secret: {{ juju_admin_secret }}
1465++ access-key: {{ ec2_access_key }}
1466++ secret-key: {{ ec2_secret_key }}
1467++ ec2-uri: {{ ec2_url }}
1468++ s3-uri: {{ s3_url }}
1469++ default-series: precise
1470++ default-image-id: ami-00000001
1471+Index: horizon-2012.2/horizon/dashboards/settings/templates/settings/juju/index.html
1472+===================================================================
1473+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
1474++++ horizon-2012.2/horizon/dashboards/settings/templates/settings/juju/index.html 2012-10-09 11:54:57.058004668 -0700
1475+@@ -0,0 +1,11 @@
1476++{% extends 'base.html' %}
1477++{% load i18n %}
1478++{% block title %}{% trans "Download Juju Environment Config" %}{% endblock %}
1479++
1480++{% block page_header %}
1481++ {% include "horizon/common/_page_header.html" with title=_("Download Juju Environment Config") %}
1482++{% endblock page_header %}
1483++
1484++{% block main %}
1485++ {% include "settings/juju/download_form.html" %}
1486++{% endblock %}
1487
1488=== added file 'debian/patches/fix-dashboard-django-wsgi.patch'
1489--- debian/patches/fix-dashboard-django-wsgi.patch 1970-01-01 00:00:00 +0000
1490+++ debian/patches/fix-dashboard-django-wsgi.patch 2014-12-03 19:02:16 +0000
1491@@ -0,0 +1,11 @@
1492+--- a/openstack_dashboard/wsgi/django.wsgi
1493++++ b/openstack_dashboard/wsgi/django.wsgi
1494+@@ -9,6 +9,8 @@ sys.path.insert(0, os.path.join(os.path.
1495+ os.environ['DJANGO_SETTINGS_MODULE'] = 'openstack_dashboard.settings'
1496+ sys.stdout = sys.stderr
1497+
1498++sys.path.append("/usr/share/openstack-dashboard/")
1499++
1500+ DEBUG = False
1501+
1502+ application = django.core.handlers.wsgi.WSGIHandler()
1503
1504=== added file 'debian/patches/fix-dashboard-manage.patch'
1505--- debian/patches/fix-dashboard-manage.patch 1970-01-01 00:00:00 +0000
1506+++ debian/patches/fix-dashboard-manage.patch 2014-12-03 19:02:16 +0000
1507@@ -0,0 +1,11 @@
1508+--- a/manage.py
1509++++ b/manage.py
1510+@@ -17,6 +17,8 @@ import sys
1511+
1512+ from django.core.management import execute_from_command_line # noqa
1513+
1514++sys.path.append("/usr/share/openstack-dashboard")
1515++
1516+ if __name__ == "__main__":
1517+ os.environ.setdefault("DJANGO_SETTINGS_MODULE",
1518+ "openstack_dashboard.settings")
1519
1520=== added file 'debian/patches/fix-requirements.patch'
1521--- debian/patches/fix-requirements.patch 1970-01-01 00:00:00 +0000
1522+++ debian/patches/fix-requirements.patch 2014-12-03 19:02:16 +0000
1523@@ -0,0 +1,13 @@
1524+Description: Set min version of six.
1525+Author: Corey Bryant <corey.bryant@canonical.com>
1526+Forwarded: Not needed.
1527+Index: horizon/requirements.txt
1528+===================================================================
1529+--- horizon.orig/requirements.txt 2014-06-13 10:14:00.816555621 -0400
1530++++ horizon/requirements.txt 2014-06-13 11:44:13.180390616 -0400
1531+@@ -21,4 +21,4 @@
1532+ python-swiftclient>=1.6
1533+ python-troveclient>=1.0.3
1534+ pytz>=2010h
1535+-six>=1.6.0
1536++six>=1.5.2
1537
1538=== added file 'debian/patches/fix-ubuntu-tests.patch'
1539--- debian/patches/fix-ubuntu-tests.patch 1970-01-01 00:00:00 +0000
1540+++ debian/patches/fix-ubuntu-tests.patch 2014-12-03 19:02:16 +0000
1541@@ -0,0 +1,40 @@
1542+--- a/run_tests.sh
1543++++ b/run_tests.sh
1544+@@ -298,25 +298,25 @@ function run_tests_all {
1545+ if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
1546+ export NOSE_HTML_OUT_FILE='horizon_nose_results.html'
1547+ fi
1548+- ${command_wrapper} coverage erase
1549+- ${command_wrapper} coverage run -p $root/manage.py test horizon --settings=horizon.test.settings $testopts
1550++ ${command_wrapper} python-coverage erase
1551++ ${command_wrapper} python-coverage run -p $root/manage.py test horizon --settings=horizon.test.settings $testopts
1552+ # get results of the Horizon tests
1553+ HORIZON_RESULT=$?
1554+
1555+- echo "Running openstack_dashboard tests"
1556+- export NOSE_XUNIT_FILE=openstack_dashboard/nosetests.xml
1557+- if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
1558+- export NOSE_HTML_OUT_FILE='dashboard_nose_results.html'
1559+- fi
1560+- ${command_wrapper} coverage run -p $root/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings $testopts
1561++ #echo "Running openstack_dashboard tests"
1562++ #export NOSE_XUNIT_FILE=openstack_dashboard/nosetests.xml
1563++ #if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
1564++ # export NOSE_HTML_OUT_FILE='dashboard_nose_results.html'
1565++ #fi
1566++ #${command_wrapper} coverage run -p $root/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings $testopts
1567+ # get results of the openstack_dashboard tests
1568+- DASHBOARD_RESULT=$?
1569++ #DASHBOARD_RESULT=$?
1570+
1571+ if [ $with_coverage -eq 1 ]; then
1572+ echo "Generating coverage reports"
1573+- ${command_wrapper} coverage combine
1574+- ${command_wrapper} coverage xml -i --omit='/usr*,setup.py,*egg*,.venv/*'
1575+- ${command_wrapper} coverage html -i --omit='/usr*,setup.py,*egg*,.venv/*' -d reports
1576++ ${command_wrapper} python-coverage combine
1577++ ${command_wrapper} python-coverage xml -i --omit='/usr*,setup.py,*egg*,.venv/*'
1578++ ${command_wrapper} python-coverage html -i --omit='/usr*,setup.py,*egg*,.venv/*' -d reports
1579+ fi
1580+ # Remove the leftover coverage files from the -p flag earlier.
1581+ rm -f .coverage.*
1582
1583=== added file 'debian/patches/series'
1584--- debian/patches/series 1970-01-01 00:00:00 +0000
1585+++ debian/patches/series 2014-12-03 19:02:16 +0000
1586@@ -0,0 +1,9 @@
1587+fix-dashboard-django-wsgi.patch
1588+fix-dashboard-manage.patch
1589+
1590+# Disabled during Grizzly dev. cycle
1591+#add_juju_settings_panel.patch
1592+
1593+#fix-ubuntu-tests.patch
1594+ubuntu_settings.patch
1595+fix-requirements.patch
1596
1597=== added file 'debian/patches/ubuntu_settings.patch'
1598--- debian/patches/ubuntu_settings.patch 1970-01-01 00:00:00 +0000
1599+++ debian/patches/ubuntu_settings.patch 2014-12-03 19:02:16 +0000
1600@@ -0,0 +1,79 @@
1601+--- a/openstack_dashboard/local/local_settings.py.example
1602++++ b/openstack_dashboard/local/local_settings.py.example
1603+@@ -4,7 +4,7 @@ from django.utils.translation import uge
1604+
1605+ from openstack_dashboard import exceptions
1606+
1607+-DEBUG = True
1608++DEBUG = False
1609+ TEMPLATE_DEBUG = DEBUG
1610+
1611+ # Required for Django 1.5.
1612+@@ -90,23 +90,45 @@ LOCAL_PATH = os.path.dirname(os.path.abs
1613+ # requests routed to the same dashboard instance or you set the same SECRET_KEY
1614+ # for all of them.
1615+ from horizon.utils import secret_key
1616+-SECRET_KEY = secret_key.generate_or_read_from_file(os.path.join(LOCAL_PATH, '.secret_key_store'))
1617++SECRET_KEY = secret_key.generate_or_read_from_file('/var/lib/openstack-dashboard/secret_key')
1618+
1619+ # We recommend you use memcached for development; otherwise after every reload
1620+ # of the django development server, you will have to login again. To use
1621+ # memcached set CACHES to something like
1622+-# CACHES = {
1623++CACHES = {
1624++ 'default': {
1625++ 'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache',
1626++ 'LOCATION' : '127.0.0.1:11211',
1627++ }
1628++}
1629++
1630++#CACHES = {
1631+ # 'default': {
1632+-# 'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache',
1633+-# 'LOCATION' : '127.0.0.1:11211',
1634+-# }
1635++# 'BACKEND' : 'django.core.cache.backends.locmem.LocMemCache'
1636++# }
1637+ #}
1638+
1639+-CACHES = {
1640+- 'default': {
1641+- 'BACKEND' : 'django.core.cache.backends.locmem.LocMemCache'
1642+- }
1643+-}
1644++# Enable the Ubuntu theme if it is present.
1645++try:
1646++ from ubuntu_theme import *
1647++except ImportError:
1648++ pass
1649++
1650++# Default Ubuntu apache configuration uses /horizon as the application root.
1651++# Configure auth redirects here accordingly.
1652++LOGIN_URL='/horizon/auth/login/'
1653++LOGOUT_URL='/horizon/auth/logout/'
1654++LOGIN_REDIRECT_URL='/horizon'
1655++
1656++# The Ubuntu package includes pre-compressed JS and compiled CSS to allow
1657++# offline compression by default. To enable online compression, install
1658++# the node-less package and enable the following option.
1659++COMPRESS_OFFLINE = True
1660++
1661++# By default, validation of the HTTP Host header is disabled. Production
1662++# installations should have this set accordingly. For more information
1663++# see https://docs.djangoproject.com/en/dev/ref/settings/.
1664++ALLOWED_HOSTS = '*'
1665+
1666+ # Send email to the console by default
1667+ EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
1668+--- a/openstack_dashboard/settings.py
1669++++ b/openstack_dashboard/settings.py
1670+@@ -237,8 +237,7 @@ if not SECRET_KEY:
1671+ 'local')
1672+
1673+ from horizon.utils import secret_key
1674+- SECRET_KEY = secret_key.generate_or_read_from_file(os.path.join(LOCAL_PATH,
1675+- '.secret_key_store'))
1676++ SECRET_KEY = secret_key.generate_or_read_from_file('/var/lib/openstack-dashboard/secret_key')
1677+
1678+ from openstack_dashboard import policy
1679+ POLICY_CHECK_FUNCTION = policy.check
1680
1681=== added file 'debian/pydist-overrides'
1682--- debian/pydist-overrides 1970-01-01 00:00:00 +0000
1683+++ debian/pydist-overrides 2014-12-03 19:02:16 +0000
1684@@ -0,0 +1,2 @@
1685+python_quantumclient
1686+django_nose_selenium
1687
1688=== added file 'debian/python-django-horizon.install'
1689--- debian/python-django-horizon.install 1970-01-01 00:00:00 +0000
1690+++ debian/python-django-horizon.install 2014-12-03 19:02:16 +0000
1691@@ -0,0 +1,1 @@
1692+usr/lib/python*/dist-packages/horizon
1693
1694=== added file 'debian/python-django-horizon.lintian-overrides'
1695--- debian/python-django-horizon.lintian-overrides 1970-01-01 00:00:00 +0000
1696+++ debian/python-django-horizon.lintian-overrides 2014-12-03 19:02:16 +0000
1697@@ -0,0 +1,2 @@
1698+# Templates are not intended to be executed directly:
1699+python-django-horizon binary: script-not-executable usr/share/pyshared/horizon/dashboards/settings/templates/settings/tenant/openrc.sh.template
1700
1701=== added file 'debian/rules'
1702--- debian/rules 1970-01-01 00:00:00 +0000
1703+++ debian/rules 2014-12-03 19:02:16 +0000
1704@@ -0,0 +1,47 @@
1705+#!/usr/bin/make -f
1706+
1707+# Uncomment this to turn on verbose mode.
1708+#export DH_VERBOSE=1
1709+
1710+%:
1711+ dh $@ --with python2
1712+
1713+PYVER=$(shell pyversions -d)
1714+
1715+override_dh_auto_install:
1716+ # install horizon and dashboard
1717+ python setup.py install --root=$(CURDIR)/debian/tmp --no-compile -O0 --install-layout=deb
1718+ install -d -m 755 $(CURDIR)/debian/tmp/usr/share/openstack-dashboard
1719+ install -d -m 755 $(CURDIR)/debian/tmp/etc/openstack-dashboard
1720+ install -d -m 755 $(CURDIR)/debian/tmp/etc/apache2/conf-available
1721+
1722+ cp -a $(CURDIR)/openstack_dashboard/ $(CURDIR)/debian/tmp/usr/share/openstack-dashboard/
1723+ install -d -m 755 $(CURDIR)/debian/tmp/etc/openstack-dashboard
1724+ cp -a $(CURDIR)/openstack_dashboard/settings.py $(CURDIR)/debian/tmp/usr/share/openstack-dashboard/
1725+
1726+ cp $(CURDIR)/openstack_dashboard/local/local_settings.py.example \
1727+ $(CURDIR)/debian/tmp/etc/openstack-dashboard/local_settings.py
1728+ cp $(CURDIR)/manage.py \
1729+ $(CURDIR)/debian/tmp/usr/share/openstack-dashboard/manage.py
1730+ ln -fs /etc/openstack-dashboard/local_settings.py \
1731+ $(CURDIR)/debian/tmp/usr/share/openstack-dashboard/openstack_dashboard/local/local_settings.py
1732+ cp $(CURDIR)/debian/theme/img/juju.png \
1733+ $(CURDIR)/debian/tmp/usr/share/openstack-dashboard/openstack_dashboard/static/dashboard/img/juju.png
1734+ ln -fs /usr/lib/$(PYVER)/dist-packages/horizon/static/horizon \
1735+ $(CURDIR)/debian/tmp/usr/share/openstack-dashboard/openstack_dashboard/static/horizon
1736+
1737+ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
1738+override_dh_auto_test:
1739+ # Skip tests
1740+ :
1741+endif
1742+
1743+get-orig-source:
1744+ uscan --verbose --force-download --rename --destdir=../build-area
1745+
1746+refresh-static-assets:
1747+ (cd openstack_dashboard/local; ln -sf local_settings.py.example local_settings.py)
1748+ python ./manage.py compress --force
1749+ rm -rf debian/static/openstack-dashboard/*
1750+ cp -r static/dashboard/* debian/static/openstack-dashboard/
1751+ rm -f openstack_dashboard/local/local_settings.py
1752
1753=== added directory 'debian/source'
1754=== added file 'debian/source/format'
1755--- debian/source/format 1970-01-01 00:00:00 +0000
1756+++ debian/source/format 2014-12-03 19:02:16 +0000
1757@@ -0,0 +1,1 @@
1758+3.0 (quilt)
1759
1760=== added file 'debian/source/include-binaries'
1761--- debian/source/include-binaries 1970-01-01 00:00:00 +0000
1762+++ debian/source/include-binaries 2014-12-03 19:02:16 +0000
1763@@ -0,0 +1,5 @@
1764+debian/theme/img/dots.png
1765+debian/theme/img/favicon-ubuntu.ico
1766+debian/theme/img/header_stripes.png
1767+debian/theme/img/juju.png
1768+debian/theme/img/ubuntu.png
1769
1770=== added directory 'debian/static'
1771=== added directory 'debian/static/openstack-dashboard'
1772=== added directory 'debian/static/openstack-dashboard/css'
1773=== added file 'debian/static/openstack-dashboard/css/6bd71a04f0c0.css'
1774--- debian/static/openstack-dashboard/css/6bd71a04f0c0.css 1970-01-01 00:00:00 +0000
1775+++ debian/static/openstack-dashboard/css/6bd71a04f0c0.css 2014-12-03 19:02:16 +0000
1776@@ -0,0 +1,6567 @@
1777+article,
1778+aside,
1779+details,
1780+figcaption,
1781+figure,
1782+footer,
1783+header,
1784+hgroup,
1785+nav,
1786+section {
1787+ display: block;
1788+}
1789+audio, canvas, video {
1790+ display: inline-block;
1791+ *display: inline;
1792+ *zoom: 1;
1793+}
1794+audio:not([controls]) {
1795+ display: none;
1796+}
1797+html {
1798+ font-size: 100%;
1799+ -webkit-text-size-adjust: 100%;
1800+ -ms-text-size-adjust: 100%;
1801+}
1802+a:focus {
1803+ outline: thin dotted #333333;
1804+ outline: 5px auto -webkit-focus-ring-color;
1805+ outline-offset: -2px;
1806+}
1807+a:hover, a:active {
1808+ outline: 0;
1809+}
1810+sub, sup {
1811+ position: relative;
1812+ font-size: 75%;
1813+ line-height: 0;
1814+ vertical-align: baseline;
1815+}
1816+sup {
1817+ top: -0.5em;
1818+}
1819+sub {
1820+ bottom: -0.25em;
1821+}
1822+img {
1823+ max-width: 100%;
1824+ height: auto;
1825+ border: 0;
1826+ -ms-interpolation-mode: bicubic;
1827+}
1828+button, input, select, textarea {
1829+ margin: 0;
1830+ font-size: 100%;
1831+ vertical-align: middle;
1832+}
1833+button, input {
1834+ *overflow: visible;
1835+ line-height: normal;
1836+}
1837+button::-moz-focus-inner, input::-moz-focus-inner {
1838+ padding: 0;
1839+ border: 0;
1840+}
1841+button, input[type="button"], input[type="reset"], input[type="submit"] {
1842+ cursor: pointer;
1843+ -webkit-appearance: button;
1844+}
1845+input[type="search"] {
1846+ -webkit-appearance: textfield;
1847+ -webkit-box-sizing: content-box;
1848+ -moz-box-sizing: content-box;
1849+ box-sizing: content-box;
1850+}
1851+input[type="search"]::-webkit-search-decoration,
1852+input[type="search"]::-webkit-search-cancel-button {
1853+ -webkit-appearance: none;
1854+}
1855+textarea {
1856+ overflow: auto;
1857+ vertical-align: top;
1858+}
1859+.clearfix {
1860+ *zoom: 1;
1861+}
1862+.clearfix:before, .clearfix:after {
1863+ display: table;
1864+ content: "";
1865+}
1866+.clearfix:after {
1867+ clear: both;
1868+}
1869+body {
1870+ margin: 0;
1871+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
1872+ font-size: 13px;
1873+ line-height: 18px;
1874+ color: #333333;
1875+ background-color: #ffffff;
1876+}
1877+a {
1878+ color: #0088cc;
1879+ text-decoration: none;
1880+}
1881+a:hover {
1882+ color: #005580;
1883+ text-decoration: underline;
1884+}
1885+.row {
1886+ margin-left: -20px;
1887+ *zoom: 1;
1888+}
1889+.row:before, .row:after {
1890+ display: table;
1891+ content: "";
1892+}
1893+.row:after {
1894+ clear: both;
1895+}
1896+[class*="span"] {
1897+ float: left;
1898+ margin-left: 20px;
1899+}
1900+.span1 {
1901+ width: 60px;
1902+}
1903+.span2 {
1904+ width: 140px;
1905+}
1906+.span3 {
1907+ width: 220px;
1908+}
1909+.span4 {
1910+ width: 300px;
1911+}
1912+.span5 {
1913+ width: 380px;
1914+}
1915+.span6 {
1916+ width: 460px;
1917+}
1918+.span7 {
1919+ width: 540px;
1920+}
1921+.span8 {
1922+ width: 620px;
1923+}
1924+.span9 {
1925+ width: 700px;
1926+}
1927+.span10 {
1928+ width: 780px;
1929+}
1930+.span11 {
1931+ width: 860px;
1932+}
1933+.span12, .container {
1934+ width: 940px;
1935+}
1936+.offset1 {
1937+ margin-left: 100px;
1938+}
1939+.offset2 {
1940+ margin-left: 180px;
1941+}
1942+.offset3 {
1943+ margin-left: 260px;
1944+}
1945+.offset4 {
1946+ margin-left: 340px;
1947+}
1948+.offset5 {
1949+ margin-left: 420px;
1950+}
1951+.offset6 {
1952+ margin-left: 500px;
1953+}
1954+.offset7 {
1955+ margin-left: 580px;
1956+}
1957+.offset8 {
1958+ margin-left: 660px;
1959+}
1960+.offset9 {
1961+ margin-left: 740px;
1962+}
1963+.offset10 {
1964+ margin-left: 820px;
1965+}
1966+.offset11 {
1967+ margin-left: 900px;
1968+}
1969+.row-fluid {
1970+ width: 100%;
1971+ *zoom: 1;
1972+}
1973+.row-fluid:before, .row-fluid:after {
1974+ display: table;
1975+ content: "";
1976+}
1977+.row-fluid:after {
1978+ clear: both;
1979+}
1980+.row-fluid > [class*="span"] {
1981+ float: left;
1982+ margin-left: 2.127659574%;
1983+}
1984+.row-fluid > [class*="span"]:first-child {
1985+ margin-left: 0;
1986+}
1987+.row-fluid > .span1 {
1988+ width: 6.382978723%;
1989+}
1990+.row-fluid > .span2 {
1991+ width: 14.89361702%;
1992+}
1993+.row-fluid > .span3 {
1994+ width: 23.404255317%;
1995+}
1996+.row-fluid > .span4 {
1997+ width: 31.914893614%;
1998+}
1999+.row-fluid > .span5 {
2000+ width: 40.425531911%;
2001+}
2002+.row-fluid > .span6 {
2003+ width: 48.936170208%;
2004+}
2005+.row-fluid > .span7 {
2006+ width: 57.446808505%;
2007+}
2008+.row-fluid > .span8 {
2009+ width: 65.957446802%;
2010+}
2011+.row-fluid > .span9 {
2012+ width: 74.468085099%;
2013+}
2014+.row-fluid > .span10 {
2015+ width: 82.978723396%;
2016+}
2017+.row-fluid > .span11 {
2018+ width: 91.489361693%;
2019+}
2020+.row-fluid > .span12 {
2021+ width: 99.99999999%;
2022+}
2023+.container {
2024+ width: 940px;
2025+ margin-left: auto;
2026+ margin-right: auto;
2027+ *zoom: 1;
2028+}
2029+.container:before, .container:after {
2030+ display: table;
2031+ content: "";
2032+}
2033+.container:after {
2034+ clear: both;
2035+}
2036+.container-fluid {
2037+ padding-left: 20px;
2038+ padding-right: 20px;
2039+ *zoom: 1;
2040+}
2041+.container-fluid:before, .container-fluid:after {
2042+ display: table;
2043+ content: "";
2044+}
2045+.container-fluid:after {
2046+ clear: both;
2047+}
2048+p {
2049+ margin: 0 0 9px;
2050+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
2051+ font-size: 13px;
2052+ line-height: 18px;
2053+}
2054+p small {
2055+ font-size: 11px;
2056+ color: #999999;
2057+}
2058+.lead {
2059+ margin-bottom: 18px;
2060+ font-size: 20px;
2061+ font-weight: 200;
2062+ line-height: 27px;
2063+}
2064+h1, h2, h3, h4, h5, h6 {
2065+ margin: 0;
2066+ font-weight: bold;
2067+ color: #333333;
2068+ text-rendering: optimizelegibility;
2069+}
2070+h1 small, h2 small, h3 small, h4 small, h5 small, h6 small {
2071+ font-weight: normal;
2072+ color: #999999;
2073+}
2074+h1 {
2075+ font-size: 30px;
2076+ line-height: 36px;
2077+}
2078+h1 small {
2079+ font-size: 18px;
2080+}
2081+h2 {
2082+ font-size: 24px;
2083+ line-height: 36px;
2084+}
2085+h2 small {
2086+ font-size: 18px;
2087+}
2088+h3 {
2089+ line-height: 27px;
2090+ font-size: 18px;
2091+}
2092+h3 small {
2093+ font-size: 14px;
2094+}
2095+h4, h5, h6 {
2096+ line-height: 18px;
2097+}
2098+h4 {
2099+ font-size: 14px;
2100+}
2101+h4 small {
2102+ font-size: 12px;
2103+}
2104+h5 {
2105+ font-size: 12px;
2106+}
2107+h6 {
2108+ font-size: 11px;
2109+ color: #999999;
2110+ text-transform: uppercase;
2111+}
2112+.page-header {
2113+ padding-bottom: 17px;
2114+ margin: 18px 0;
2115+ border-bottom: 1px solid #eeeeee;
2116+}
2117+.page-header h1 {
2118+ line-height: 1;
2119+}
2120+ul, ol {
2121+ padding: 0;
2122+ margin: 0 0 9px 25px;
2123+}
2124+ul ul, ul ol, ol ol, ol ul {
2125+ margin-bottom: 0;
2126+}
2127+ul {
2128+ list-style: disc;
2129+}
2130+ol {
2131+ list-style: decimal;
2132+}
2133+li {
2134+ line-height: 18px;
2135+}
2136+ul.unstyled, ol.unstyled {
2137+ margin-left: 0;
2138+ list-style: none;
2139+}
2140+table ul {
2141+ margin: 0;
2142+ list-style-type: none;
2143+}
2144+dl {
2145+ margin-bottom: 18px;
2146+}
2147+dt, dd {
2148+ line-height: 18px;
2149+}
2150+dt {
2151+ font-weight: bold;
2152+}
2153+dd {
2154+ margin-left: 9px;
2155+}
2156+hr {
2157+ margin: 18px 0;
2158+ border: 0;
2159+ border-top: 1px solid #eeeeee;
2160+ border-bottom: 1px solid #ffffff;
2161+}
2162+strong {
2163+ font-weight: bold;
2164+}
2165+em {
2166+ font-style: italic;
2167+}
2168+.muted {
2169+ color: #999999;
2170+}
2171+abbr {
2172+ font-size: 90%;
2173+ text-transform: uppercase;
2174+ border-bottom: 1px dotted #dddddd;
2175+ cursor: help;
2176+}
2177+blockquote {
2178+ padding: 0 0 0 15px;
2179+ margin: 0 0 18px;
2180+ border-left: 5px solid #eeeeee;
2181+}
2182+blockquote p {
2183+ margin-bottom: 0;
2184+ font-size: 16px;
2185+ font-weight: 300;
2186+ line-height: 22.5px;
2187+}
2188+blockquote small {
2189+ display: block;
2190+ line-height: 18px;
2191+ color: #999999;
2192+}
2193+blockquote small:before {
2194+ content: '\2014 \00A0';
2195+}
2196+blockquote.pull-right {
2197+ float: right;
2198+ padding-left: 0;
2199+ padding-right: 15px;
2200+ border-left: 0;
2201+ border-right: 5px solid #eeeeee;
2202+}
2203+blockquote.pull-right p, blockquote.pull-right small {
2204+ text-align: right;
2205+}
2206+q:before, q:after, blockquote:before, blockquote:after {
2207+ content: "";
2208+}
2209+address {
2210+ display: block;
2211+ margin-bottom: 18px;
2212+ line-height: 18px;
2213+ font-style: normal;
2214+}
2215+small {
2216+ font-size: 100%;
2217+}
2218+cite {
2219+ font-style: normal;
2220+}
2221+code, pre {
2222+ padding: 0 3px 2px;
2223+ font-family: Menlo, Monaco, "Courier New", monospace;
2224+ font-size: 12px;
2225+ color: #333333;
2226+ -webkit-border-radius: 3px;
2227+ -moz-border-radius: 3px;
2228+ border-radius: 3px;
2229+}
2230+code {
2231+ padding: 3px 4px;
2232+ color: #dd1144;
2233+ background-color: #f7f7f9;
2234+ border: 1px solid #e1e1e8;
2235+}
2236+pre {
2237+ display: block;
2238+ padding: 8.5px;
2239+ margin: 0 0 9px;
2240+ font-size: 12px;
2241+ line-height: 18px;
2242+ background-color: #f5f5f5;
2243+ border: 1px solid #cccccc;
2244+ border: 1px solid rgba(0,0,0,.15);
2245+ -webkit-border-radius: 4px;
2246+ -moz-border-radius: 4px;
2247+ border-radius: 4px;
2248+ white-space: pre;
2249+ white-space: pre-wrap;
2250+ word-break: break-all;
2251+ word-wrap: break-word;
2252+}
2253+pre.prettyprint {
2254+ margin-bottom: 18px;
2255+}
2256+pre code {
2257+ padding: 0;
2258+ color: inherit;
2259+ background-color: transparent;
2260+ border: 0;
2261+}
2262+.pre-scrollable {
2263+ max-height: 340px;
2264+ overflow-y: scroll;
2265+}
2266+form {
2267+ margin: 0 0 18px;
2268+}
2269+fieldset {
2270+ padding: 0;
2271+ margin: 0;
2272+ border: 0;
2273+}
2274+legend {
2275+ display: block;
2276+ width: 100%;
2277+ padding: 0;
2278+ margin-bottom: 27px;
2279+ font-size: 19.5px;
2280+ line-height: 36px;
2281+ color: #333333;
2282+ border: 0;
2283+ border-bottom: 1px solid #eeeeee;
2284+}
2285+legend small {
2286+ font-size: 13.5px;
2287+ color: #999999;
2288+}
2289+label, input, button, select, textarea {
2290+ font-size: 13px;
2291+ font-weight: normal;
2292+ line-height: 18px;
2293+}
2294+input, button, select, textarea {
2295+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
2296+}
2297+label {
2298+ display: block;
2299+ margin-bottom: 5px;
2300+ color: #333333;
2301+}
2302+input, textarea, select, .uneditable-input {
2303+ display: inline-block;
2304+ width: 210px;
2305+ height: 18px;
2306+ padding: 4px;
2307+ margin-bottom: 9px;
2308+ font-size: 13px;
2309+ line-height: 18px;
2310+ color: #555555;
2311+ border: 1px solid #cccccc;
2312+ -webkit-border-radius: 3px;
2313+ -moz-border-radius: 3px;
2314+ border-radius: 3px;
2315+}
2316+.uneditable-textarea {
2317+ width: auto;
2318+ height: auto;
2319+}
2320+label input, label textarea, label select {
2321+ display: block;
2322+}
2323+input[type="image"], input[type="checkbox"], input[type="radio"] {
2324+ width: auto;
2325+ height: auto;
2326+ padding: 0;
2327+ margin: 3px 0;
2328+ *margin-top: 0;
2329+ line-height: normal;
2330+ cursor: pointer;
2331+ -webkit-border-radius: 0;
2332+ -moz-border-radius: 0;
2333+ border-radius: 0;
2334+ border: 0 \9;
2335+}
2336+input[type="image"] {
2337+ border: 0;
2338+}
2339+input[type="file"] {
2340+ width: auto;
2341+ padding: initial;
2342+ line-height: initial;
2343+ border: initial;
2344+ background-color: #ffffff;
2345+ background-color: initial;
2346+ -webkit-box-shadow: none;
2347+ -moz-box-shadow: none;
2348+ box-shadow: none;
2349+}
2350+input[type="button"], input[type="reset"], input[type="submit"] {
2351+ width: auto;
2352+ height: auto;
2353+}
2354+select, input[type="file"] {
2355+ height: 28px;
2356+ *margin-top: 4px;
2357+ line-height: 28px;
2358+}
2359+input[type="file"] {
2360+ line-height: 18px \9;
2361+}
2362+select {
2363+ width: 220px;
2364+ background-color: #ffffff;
2365+}
2366+select[multiple], select[size] {
2367+ height: auto;
2368+}
2369+input[type="image"] {
2370+ -webkit-box-shadow: none;
2371+ -moz-box-shadow: none;
2372+ box-shadow: none;
2373+}
2374+textarea {
2375+ height: auto;
2376+}
2377+input[type="hidden"] {
2378+ display: none;
2379+}
2380+.radio, .checkbox {
2381+ padding-left: 18px;
2382+}
2383+.radio input[type="radio"], .checkbox input[type="checkbox"] {
2384+ float: left;
2385+ margin-left: -18px;
2386+}
2387+.controls > .radio:first-child, .controls > .checkbox:first-child {
2388+ padding-top: 5px;
2389+}
2390+.radio.inline, .checkbox.inline {
2391+ display: inline-block;
2392+ padding-top: 5px;
2393+ margin-bottom: 0;
2394+ vertical-align: middle;
2395+}
2396+.radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline {
2397+ margin-left: 10px;
2398+}
2399+input, textarea {
2400+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
2401+ -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
2402+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
2403+ -webkit-transition: border linear .2s, box-shadow linear .2s;
2404+ -moz-transition: border linear .2s, box-shadow linear .2s;
2405+ -ms-transition: border linear .2s, box-shadow linear .2s;
2406+ -o-transition: border linear .2s, box-shadow linear .2s;
2407+ transition: border linear .2s, box-shadow linear .2s;
2408+}
2409+input:focus, textarea:focus {
2410+ border-color: rgba(82,168,236,.8);
2411+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
2412+ -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
2413+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
2414+ outline: 0;
2415+ outline: thin dotted \9;
2416+}
2417+input[type="file"]:focus,
2418+input[type="radio"]:focus,
2419+input[type="checkbox"]:focus,
2420+select:focus {
2421+ -webkit-box-shadow: none;
2422+ -moz-box-shadow: none;
2423+ box-shadow: none;
2424+ outline: thin dotted #333333;
2425+ outline: 5px auto -webkit-focus-ring-color;
2426+ outline-offset: -2px;
2427+}
2428+.input-mini {
2429+ width: 60px;
2430+}
2431+.input-small {
2432+ width: 90px;
2433+}
2434+.input-medium {
2435+ width: 150px;
2436+}
2437+.input-large {
2438+ width: 210px;
2439+}
2440+.input-xlarge {
2441+ width: 270px;
2442+}
2443+.input-xxlarge {
2444+ width: 530px;
2445+}
2446+input[class*="span"],
2447+select[class*="span"],
2448+textarea[class*="span"],
2449+.uneditable-input {
2450+ float: none;
2451+ margin-left: 0;
2452+}
2453+input.span1, textarea.span1, .uneditable-input.span1 {
2454+ width: 50px;
2455+}
2456+input.span2, textarea.span2, .uneditable-input.span2 {
2457+ width: 130px;
2458+}
2459+input.span3, textarea.span3, .uneditable-input.span3 {
2460+ width: 210px;
2461+}
2462+input.span4, textarea.span4, .uneditable-input.span4 {
2463+ width: 290px;
2464+}
2465+input.span5, textarea.span5, .uneditable-input.span5 {
2466+ width: 370px;
2467+}
2468+input.span6, textarea.span6, .uneditable-input.span6 {
2469+ width: 450px;
2470+}
2471+input.span7, textarea.span7, .uneditable-input.span7 {
2472+ width: 530px;
2473+}
2474+input.span8, textarea.span8, .uneditable-input.span8 {
2475+ width: 610px;
2476+}
2477+input.span9, textarea.span9, .uneditable-input.span9 {
2478+ width: 690px;
2479+}
2480+input.span10, textarea.span10, .uneditable-input.span10 {
2481+ width: 770px;
2482+}
2483+input.span11, textarea.span11, .uneditable-input.span11 {
2484+ width: 850px;
2485+}
2486+input.span12, textarea.span12, .uneditable-input.span12 {
2487+ width: 930px;
2488+}
2489+input[disabled],
2490+select[disabled],
2491+textarea[disabled],
2492+input[readonly],
2493+select[readonly],
2494+textarea[readonly] {
2495+ background-color: #f5f5f5;
2496+ border-color: #dddddd;
2497+ cursor: not-allowed;
2498+}
2499+.control-group.warning > label,
2500+.control-group.warning .help-block,
2501+.control-group.warning .help-inline {
2502+ color: #333333;
2503+}
2504+.control-group.warning input,
2505+.control-group.warning select,
2506+.control-group.warning textarea {
2507+ color: #333333;
2508+ border-color: #c09853;
2509+}
2510+.control-group.warning input:focus,
2511+.control-group.warning select:focus,
2512+.control-group.warning textarea:focus {
2513+ border-color: #a47e3c;
2514+ -webkit-box-shadow: 0 0 6px #dbc59e;
2515+ -moz-box-shadow: 0 0 6px #dbc59e;
2516+ box-shadow: 0 0 6px #dbc59e;
2517+}
2518+.control-group.warning .input-prepend .add-on,
2519+.control-group.warning .input-append .add-on {
2520+ color: #333333;
2521+ background-color: #fcf8e3;
2522+ border-color: #333333;
2523+}
2524+.control-group.error > label,
2525+.control-group.error .help-block,
2526+.control-group.error .help-inline {
2527+ color: #333333;
2528+}
2529+.control-group.error input,
2530+.control-group.error select,
2531+.control-group.error textarea {
2532+ color: #333333;
2533+ border-color: #b94a48;
2534+}
2535+.control-group.error input:focus,
2536+.control-group.error select:focus,
2537+.control-group.error textarea:focus {
2538+ border-color: #953b39;
2539+ -webkit-box-shadow: 0 0 6px #d59392;
2540+ -moz-box-shadow: 0 0 6px #d59392;
2541+ box-shadow: 0 0 6px #d59392;
2542+}
2543+.control-group.error .input-prepend .add-on,
2544+.control-group.error .input-append .add-on {
2545+ color: #333333;
2546+ background-color: #f2dede;
2547+ border-color: #333333;
2548+}
2549+.control-group.success > label,
2550+.control-group.success .help-block,
2551+.control-group.success .help-inline {
2552+ color: #333333;
2553+}
2554+.control-group.success input,
2555+.control-group.success select,
2556+.control-group.success textarea {
2557+ color: #333333;
2558+ border-color: #468847;
2559+}
2560+.control-group.success input:focus,
2561+.control-group.success select:focus,
2562+.control-group.success textarea:focus {
2563+ border-color: #356635;
2564+ -webkit-box-shadow: 0 0 6px #7aba7b;
2565+ -moz-box-shadow: 0 0 6px #7aba7b;
2566+ box-shadow: 0 0 6px #7aba7b;
2567+}
2568+.control-group.success .input-prepend .add-on,
2569+.control-group.success .input-append .add-on {
2570+ color: #333333;
2571+ background-color: #dff0d8;
2572+ border-color: #333333;
2573+}
2574+input:focus:required:invalid,
2575+textarea:focus:required:invalid,
2576+select:focus:required:invalid {
2577+ color: #b94a48;
2578+ border-color: #ee5f5b;
2579+}
2580+input:focus:required:invalid:focus,
2581+textarea:focus:required:invalid:focus,
2582+select:focus:required:invalid:focus {
2583+ border-color: #e9322d;
2584+ -webkit-box-shadow: 0 0 6px #f8b9b7;
2585+ -moz-box-shadow: 0 0 6px #f8b9b7;
2586+ box-shadow: 0 0 6px #f8b9b7;
2587+}
2588+.form-actions {
2589+ padding: 17px 20px 18px;
2590+ margin-top: 18px;
2591+ margin-bottom: 18px;
2592+ background-color: #f5f5f5;
2593+ border-top: 1px solid #dddddd;
2594+}
2595+.uneditable-input {
2596+ display: block;
2597+ background-color: #ffffff;
2598+ border-color: #eeeeee;
2599+ -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.025);
2600+ -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.025);
2601+ box-shadow: inset 0 1px 2px rgba(0,0,0,.025);
2602+ cursor: not-allowed;
2603+}
2604+:-moz-placeholder {
2605+ color: #999999;
2606+}
2607+::-webkit-input-placeholder {
2608+ color: #999999;
2609+}
2610+.help-block {
2611+ display: block;
2612+ margin-top: 5px;
2613+ margin-bottom: 0;
2614+ color: #999999;
2615+}
2616+.help-inline {
2617+ display: inline-block;
2618+ *display: inline;
2619+ *zoom: 1;
2620+ margin-bottom: 9px;
2621+ vertical-align: middle;
2622+ padding-left: 5px;
2623+}
2624+.input-prepend, .input-append {
2625+ margin-bottom: 5px;
2626+ *zoom: 1;
2627+}
2628+.input-prepend:before,
2629+.input-prepend:after,
2630+.input-append:before,
2631+.input-append:after {
2632+ display: table;
2633+ content: "";
2634+}
2635+.input-prepend:after, .input-append:after {
2636+ clear: both;
2637+}
2638+.input-prepend input,
2639+.input-prepend .uneditable-input,
2640+.input-append input,
2641+.input-append .uneditable-input {
2642+ -webkit-border-radius: 0 3px 3px 0;
2643+ -moz-border-radius: 0 3px 3px 0;
2644+ border-radius: 0 3px 3px 0;
2645+}
2646+.input-prepend input:focus,
2647+.input-prepend .uneditable-input:focus,
2648+.input-append input:focus,
2649+.input-append .uneditable-input:focus {
2650+ position: relative;
2651+ z-index: 2;
2652+}
2653+.input-prepend .uneditable-input, .input-append .uneditable-input {
2654+ border-left-color: #cccccc;
2655+}
2656+.input-prepend .add-on, .input-append .add-on {
2657+ float: left;
2658+ display: block;
2659+ width: auto;
2660+ min-width: 16px;
2661+ height: 18px;
2662+ margin-right: -1px;
2663+ padding: 4px 5px;
2664+ font-weight: normal;
2665+ line-height: 18px;
2666+ color: #999999;
2667+ text-align: center;
2668+ text-shadow: 0 1px 0 #ffffff;
2669+ background-color: #f5f5f5;
2670+ border: 1px solid #cccccc;
2671+ -webkit-border-radius: 3px 0 0 3px;
2672+ -moz-border-radius: 3px 0 0 3px;
2673+ border-radius: 3px 0 0 3px;
2674+}
2675+.input-prepend .active, .input-append .active {
2676+ background-color: #a9dba9;
2677+ border-color: #46a546;
2678+}
2679+.input-prepend .add-on {
2680+ *margin-top: 1px;
2681+}
2682+.input-append input, .input-append .uneditable-input {
2683+ float: left;
2684+ -webkit-border-radius: 3px 0 0 3px;
2685+ -moz-border-radius: 3px 0 0 3px;
2686+ border-radius: 3px 0 0 3px;
2687+}
2688+.input-append .uneditable-input {
2689+ border-left-color: #eeeeee;
2690+ border-right-color: #cccccc;
2691+}
2692+.input-append .add-on {
2693+ margin-right: 0;
2694+ margin-left: -1px;
2695+ -webkit-border-radius: 0 3px 3px 0;
2696+ -moz-border-radius: 0 3px 3px 0;
2697+ border-radius: 0 3px 3px 0;
2698+}
2699+.input-append input:first-child {
2700+ *margin-left: -160px;
2701+}
2702+.input-append input:first-child + .add-on {
2703+ *margin-left: -21px;
2704+}
2705+.search-query {
2706+ padding-left: 14px;
2707+ padding-right: 14px;
2708+ margin-bottom: 0;
2709+ -webkit-border-radius: 14px;
2710+ -moz-border-radius: 14px;
2711+ border-radius: 14px;
2712+}
2713+.form-search input,
2714+.form-search textarea,
2715+.form-search select,
2716+.form-search .help-inline,
2717+.form-search .uneditable-input,
2718+.form-inline input,
2719+.form-inline textarea,
2720+.form-inline select,
2721+.form-inline .help-inline,
2722+.form-inline .uneditable-input,
2723+.form-horizontal input,
2724+.form-horizontal textarea,
2725+.form-horizontal select,
2726+.form-horizontal .help-inline,
2727+.form-horizontal .uneditable-input {
2728+ display: inline-block;
2729+ margin-bottom: 0;
2730+}
2731+.form-search .hide, .form-inline .hide, .form-horizontal .hide {
2732+ display: none;
2733+}
2734+.form-search label,
2735+.form-inline label,
2736+.form-search .input-append,
2737+.form-inline .input-append,
2738+.form-search .input-prepend,
2739+.form-inline .input-prepend {
2740+ display: inline-block;
2741+}
2742+.form-search .input-append .add-on,
2743+.form-inline .input-prepend .add-on,
2744+.form-search .input-append .add-on,
2745+.form-inline .input-prepend .add-on {
2746+ vertical-align: middle;
2747+}
2748+.form-search .radio,
2749+.form-inline .radio,
2750+.form-search .checkbox,
2751+.form-inline .checkbox {
2752+ margin-bottom: 0;
2753+ vertical-align: middle;
2754+}
2755+.control-group {
2756+ margin-bottom: 9px;
2757+}
2758+legend + .control-group {
2759+ margin-top: 18px;
2760+ -webkit-margin-top-collapse: separate;
2761+}
2762+.form-horizontal .control-group {
2763+ margin-bottom: 18px;
2764+ *zoom: 1;
2765+}
2766+.form-horizontal .control-group:before, .form-horizontal .control-group:after {
2767+ display: table;
2768+ content: "";
2769+}
2770+.form-horizontal .control-group:after {
2771+ clear: both;
2772+}
2773+.form-horizontal .control-label {
2774+ float: left;
2775+ width: 140px;
2776+ padding-top: 5px;
2777+ text-align: right;
2778+}
2779+.form-horizontal .controls {
2780+ margin-left: 160px;
2781+}
2782+.form-horizontal .form-actions {
2783+ padding-left: 160px;
2784+}
2785+table {
2786+ max-width: 100%;
2787+ border-collapse: collapse;
2788+ border-spacing: 0;
2789+}
2790+.table {
2791+ width: 100%;
2792+ margin-bottom: 18px;
2793+}
2794+.table th, .table td {
2795+ padding: 8px;
2796+ line-height: 18px;
2797+ text-align: left;
2798+ vertical-align: top;
2799+ border-top: 1px solid #dddddd;
2800+}
2801+.table th {
2802+ font-weight: bold;
2803+}
2804+.table thead th {
2805+ vertical-align: bottom;
2806+}
2807+.table thead:first-child tr th, .table thead:first-child tr td {
2808+ border-top: 0;
2809+}
2810+.table tbody + tbody {
2811+ border-top: 2px solid #dddddd;
2812+}
2813+.table-condensed th, .table-condensed td {
2814+ padding: 4px 5px;
2815+}
2816+.table-bordered {
2817+ border: 1px solid #dddddd;
2818+ border-collapse: separate;
2819+ *border-collapse: collapsed;
2820+ -webkit-border-radius: 4px;
2821+ -moz-border-radius: 4px;
2822+ border-radius: 4px;
2823+}
2824+.table-bordered th + th,
2825+.table-bordered td + td,
2826+.table-bordered th + td,
2827+.table-bordered td + th {
2828+ border-left: 1px solid #dddddd;
2829+}
2830+.table-bordered thead:first-child tr:first-child th,
2831+.table-bordered tbody:first-child tr:first-child th,
2832+.table-bordered tbody:first-child tr:first-child td {
2833+ border-top: 0;
2834+}
2835+.table-bordered thead:first-child tr:first-child th:first-child,
2836+.table-bordered tbody:first-child tr:first-child td:first-child {
2837+ -webkit-border-radius: 4px 0 0 0;
2838+ -moz-border-radius: 4px 0 0 0;
2839+ border-radius: 4px 0 0 0;
2840+}
2841+.table-bordered thead:first-child tr:first-child th:last-child,
2842+.table-bordered tbody:first-child tr:first-child td:last-child {
2843+ -webkit-border-radius: 0 4px 0 0;
2844+ -moz-border-radius: 0 4px 0 0;
2845+ border-radius: 0 4px 0 0;
2846+}
2847+.table-bordered thead:last-child tr:last-child th:first-child,
2848+.table-bordered tbody:last-child tr:last-child td:first-child {
2849+ -webkit-border-radius: 0 0 0 4px;
2850+ -moz-border-radius: 0 0 0 4px;
2851+ border-radius: 0 0 0 4px;
2852+}
2853+.table-bordered thead:last-child tr:last-child th:last-child,
2854+.table-bordered tbody:last-child tr:last-child td:last-child {
2855+ -webkit-border-radius: 0 0 4px 0;
2856+ -moz-border-radius: 0 0 4px 0;
2857+ border-radius: 0 0 4px 0;
2858+}
2859+.table-striped tbody tr:nth-child(odd)td, .table-striped tbody tr:nth-child(odd)th {
2860+ background-color: #f9f9f9;
2861+}
2862+.table tbody tr:hover td, .table tbody tr:hover th {
2863+ background-color: #f5f5f5;
2864+}
2865+table .span1 {
2866+ float: none;
2867+ width: 44px;
2868+ margin-left: 0;
2869+}
2870+table .span2 {
2871+ float: none;
2872+ width: 124px;
2873+ margin-left: 0;
2874+}
2875+table .span3 {
2876+ float: none;
2877+ width: 204px;
2878+ margin-left: 0;
2879+}
2880+table .span4 {
2881+ float: none;
2882+ width: 284px;
2883+ margin-left: 0;
2884+}
2885+table .span5 {
2886+ float: none;
2887+ width: 364px;
2888+ margin-left: 0;
2889+}
2890+table .span6 {
2891+ float: none;
2892+ width: 444px;
2893+ margin-left: 0;
2894+}
2895+table .span7 {
2896+ float: none;
2897+ width: 524px;
2898+ margin-left: 0;
2899+}
2900+table .span8 {
2901+ float: none;
2902+ width: 604px;
2903+ margin-left: 0;
2904+}
2905+table .span9 {
2906+ float: none;
2907+ width: 684px;
2908+ margin-left: 0;
2909+}
2910+table .span10 {
2911+ float: none;
2912+ width: 764px;
2913+ margin-left: 0;
2914+}
2915+table .span11 {
2916+ float: none;
2917+ width: 844px;
2918+ margin-left: 0;
2919+}
2920+table .span12 {
2921+ float: none;
2922+ width: 924px;
2923+ margin-left: 0;
2924+}
2925+[class^="icon-"], [class*=" icon-"] {
2926+ display: inline-block;
2927+ width: 14px;
2928+ height: 14px;
2929+ line-height: 14px;
2930+ vertical-align: text-top;
2931+ background-image: url('/static/bootstrap/img/glyphicons-halflings.png');
2932+ background-position: 14px 14px;
2933+ background-repeat: no-repeat;
2934+ *margin-right: .3em;
2935+}
2936+[class^="icon-"]:last-child, [class*=" icon-"]:last-child {
2937+ *margin-left: 0;
2938+}
2939+.icon-white {
2940+ background-image: url('/static/bootstrap/img/glyphicons-halflings-white.png');
2941+}
2942+.icon-glass {
2943+ background-position: 0 0;
2944+}
2945+.icon-music {
2946+ background-position: -24px 0;
2947+}
2948+.icon-search {
2949+ background-position: -48px 0;
2950+}
2951+.icon-envelope {
2952+ background-position: -72px 0;
2953+}
2954+.icon-heart {
2955+ background-position: -96px 0;
2956+}
2957+.icon-star {
2958+ background-position: -120px 0;
2959+}
2960+.icon-star-empty {
2961+ background-position: -144px 0;
2962+}
2963+.icon-user {
2964+ background-position: -168px 0;
2965+}
2966+.icon-film {
2967+ background-position: -192px 0;
2968+}
2969+.icon-th-large {
2970+ background-position: -216px 0;
2971+}
2972+.icon-th {
2973+ background-position: -240px 0;
2974+}
2975+.icon-th-list {
2976+ background-position: -264px 0;
2977+}
2978+.icon-ok {
2979+ background-position: -288px 0;
2980+}
2981+.icon-remove {
2982+ background-position: -312px 0;
2983+}
2984+.icon-zoom-in {
2985+ background-position: -336px 0;
2986+}
2987+.icon-zoom-out {
2988+ background-position: -360px 0;
2989+}
2990+.icon-off {
2991+ background-position: -384px 0;
2992+}
2993+.icon-signal {
2994+ background-position: -408px 0;
2995+}
2996+.icon-cog {
2997+ background-position: -432px 0;
2998+}
2999+.icon-trash {
3000+ background-position: -456px 0;
3001+}
3002+.icon-home {
3003+ background-position: 0 -24px;
3004+}
3005+.icon-file {
3006+ background-position: -24px -24px;
3007+}
3008+.icon-time {
3009+ background-position: -48px -24px;
3010+}
3011+.icon-road {
3012+ background-position: -72px -24px;
3013+}
3014+.icon-download-alt {
3015+ background-position: -96px -24px;
3016+}
3017+.icon-download {
3018+ background-position: -120px -24px;
3019+}
3020+.icon-upload {
3021+ background-position: -144px -24px;
3022+}
3023+.icon-inbox {
3024+ background-position: -168px -24px;
3025+}
3026+.icon-play-circle {
3027+ background-position: -192px -24px;
3028+}
3029+.icon-repeat {
3030+ background-position: -216px -24px;
3031+}
3032+.icon-refresh {
3033+ background-position: -240px -24px;
3034+}
3035+.icon-list-alt {
3036+ background-position: -264px -24px;
3037+}
3038+.icon-lock {
3039+ background-position: -287px -24px;
3040+}
3041+.icon-flag {
3042+ background-position: -312px -24px;
3043+}
3044+.icon-headphones {
3045+ background-position: -336px -24px;
3046+}
3047+.icon-volume-off {
3048+ background-position: -360px -24px;
3049+}
3050+.icon-volume-down {
3051+ background-position: -384px -24px;
3052+}
3053+.icon-volume-up {
3054+ background-position: -408px -24px;
3055+}
3056+.icon-qrcode {
3057+ background-position: -432px -24px;
3058+}
3059+.icon-barcode {
3060+ background-position: -456px -24px;
3061+}
3062+.icon-tag {
3063+ background-position: 0 -48px;
3064+}
3065+.icon-tags {
3066+ background-position: -25px -48px;
3067+}
3068+.icon-book {
3069+ background-position: -48px -48px;
3070+}
3071+.icon-bookmark {
3072+ background-position: -72px -48px;
3073+}
3074+.icon-print {
3075+ background-position: -96px -48px;
3076+}
3077+.icon-camera {
3078+ background-position: -120px -48px;
3079+}
3080+.icon-font {
3081+ background-position: -144px -48px;
3082+}
3083+.icon-bold {
3084+ background-position: -167px -48px;
3085+}
3086+.icon-italic {
3087+ background-position: -192px -48px;
3088+}
3089+.icon-text-height {
3090+ background-position: -216px -48px;
3091+}
3092+.icon-text-width {
3093+ background-position: -240px -48px;
3094+}
3095+.icon-align-left {
3096+ background-position: -264px -48px;
3097+}
3098+.icon-align-center {
3099+ background-position: -288px -48px;
3100+}
3101+.icon-align-right {
3102+ background-position: -312px -48px;
3103+}
3104+.icon-align-justify {
3105+ background-position: -336px -48px;
3106+}
3107+.icon-list {
3108+ background-position: -360px -48px;
3109+}
3110+.icon-indent-left {
3111+ background-position: -384px -48px;
3112+}
3113+.icon-indent-right {
3114+ background-position: -408px -48px;
3115+}
3116+.icon-facetime-video {
3117+ background-position: -432px -48px;
3118+}
3119+.icon-picture {
3120+ background-position: -456px -48px;
3121+}
3122+.icon-pencil {
3123+ background-position: 0 -72px;
3124+}
3125+.icon-map-marker {
3126+ background-position: -24px -72px;
3127+}
3128+.icon-adjust {
3129+ background-position: -48px -72px;
3130+}
3131+.icon-tint {
3132+ background-position: -72px -72px;
3133+}
3134+.icon-edit {
3135+ background-position: -96px -72px;
3136+}
3137+.icon-share {
3138+ background-position: -120px -72px;
3139+}
3140+.icon-check {
3141+ background-position: -144px -72px;
3142+}
3143+.icon-move {
3144+ background-position: -168px -72px;
3145+}
3146+.icon-step-backward {
3147+ background-position: -192px -72px;
3148+}
3149+.icon-fast-backward {
3150+ background-position: -216px -72px;
3151+}
3152+.icon-backward {
3153+ background-position: -240px -72px;
3154+}
3155+.icon-play {
3156+ background-position: -264px -72px;
3157+}
3158+.icon-pause {
3159+ background-position: -288px -72px;
3160+}
3161+.icon-stop {
3162+ background-position: -312px -72px;
3163+}
3164+.icon-forward {
3165+ background-position: -336px -72px;
3166+}
3167+.icon-fast-forward {
3168+ background-position: -360px -72px;
3169+}
3170+.icon-step-forward {
3171+ background-position: -384px -72px;
3172+}
3173+.icon-eject {
3174+ background-position: -408px -72px;
3175+}
3176+.icon-chevron-left {
3177+ background-position: -432px -72px;
3178+}
3179+.icon-chevron-right {
3180+ background-position: -456px -72px;
3181+}
3182+.icon-plus-sign {
3183+ background-position: 0 -96px;
3184+}
3185+.icon-minus-sign {
3186+ background-position: -24px -96px;
3187+}
3188+.icon-remove-sign {
3189+ background-position: -48px -96px;
3190+}
3191+.icon-ok-sign {
3192+ background-position: -72px -96px;
3193+}
3194+.icon-question-sign {
3195+ background-position: -96px -96px;
3196+}
3197+.icon-info-sign {
3198+ background-position: -120px -96px;
3199+}
3200+.icon-screenshot {
3201+ background-position: -144px -96px;
3202+}
3203+.icon-remove-circle {
3204+ background-position: -168px -96px;
3205+}
3206+.icon-ok-circle {
3207+ background-position: -192px -96px;
3208+}
3209+.icon-ban-circle {
3210+ background-position: -216px -96px;
3211+}
3212+.icon-arrow-left {
3213+ background-position: -240px -96px;
3214+}
3215+.icon-arrow-right {
3216+ background-position: -264px -96px;
3217+}
3218+.icon-arrow-up {
3219+ background-position: -289px -96px;
3220+}
3221+.icon-arrow-down {
3222+ background-position: -312px -96px;
3223+}
3224+.icon-share-alt {
3225+ background-position: -336px -96px;
3226+}
3227+.icon-resize-full {
3228+ background-position: -360px -96px;
3229+}
3230+.icon-resize-small {
3231+ background-position: -384px -96px;
3232+}
3233+.icon-plus {
3234+ background-position: -408px -96px;
3235+}
3236+.icon-minus {
3237+ background-position: -433px -96px;
3238+}
3239+.icon-asterisk {
3240+ background-position: -456px -96px;
3241+}
3242+.icon-exclamation-sign {
3243+ background-position: 0 -120px;
3244+}
3245+.icon-gift {
3246+ background-position: -24px -120px;
3247+}
3248+.icon-leaf {
3249+ background-position: -48px -120px;
3250+}
3251+.icon-fire {
3252+ background-position: -72px -120px;
3253+}
3254+.icon-eye-open {
3255+ background-position: -96px -120px;
3256+}
3257+.icon-eye-close {
3258+ background-position: -120px -120px;
3259+}
3260+.icon-warning-sign {
3261+ background-position: -144px -120px;
3262+}
3263+.icon-plane {
3264+ background-position: -168px -120px;
3265+}
3266+.icon-calendar {
3267+ background-position: -192px -120px;
3268+}
3269+.icon-random {
3270+ background-position: -216px -120px;
3271+}
3272+.icon-comment {
3273+ background-position: -240px -120px;
3274+}
3275+.icon-magnet {
3276+ background-position: -264px -120px;
3277+}
3278+.icon-chevron-up {
3279+ background-position: -288px -120px;
3280+}
3281+.icon-chevron-down {
3282+ background-position: -313px -119px;
3283+}
3284+.icon-retweet {
3285+ background-position: -336px -120px;
3286+}
3287+.icon-shopping-cart {
3288+ background-position: -360px -120px;
3289+}
3290+.icon-folder-close {
3291+ background-position: -384px -120px;
3292+}
3293+.icon-folder-open {
3294+ background-position: -408px -120px;
3295+}
3296+.icon-resize-vertical {
3297+ background-position: -432px -119px;
3298+}
3299+.icon-resize-horizontal {
3300+ background-position: -456px -118px;
3301+}
3302+.dropdown {
3303+ position: relative;
3304+}
3305+.dropdown-toggle {
3306+ *margin-bottom: -3px;
3307+}
3308+.dropdown-toggle:active, .open .dropdown-toggle {
3309+ outline: 0;
3310+}
3311+.caret {
3312+ display: inline-block;
3313+ width: 0;
3314+ height: 0;
3315+ text-indent: -99999px;
3316+ *text-indent: 0;
3317+ vertical-align: top;
3318+ border-left: 4px solid transparent;
3319+ border-right: 4px solid transparent;
3320+ border-top: 4px solid #000000;
3321+ opacity: 0.3;
3322+ filter: alpha(opacity=30);
3323+ content: "\2193";
3324+}
3325+.dropdown .caret {
3326+ margin-top: 8px;
3327+ margin-left: 2px;
3328+}
3329+.dropdown:hover .caret, .open.dropdown .caret {
3330+ opacity: 1;
3331+ filter: alpha(opacity=100);
3332+}
3333+.dropdown-menu {
3334+ position: absolute;
3335+ top: 100%;
3336+ left: 0;
3337+ z-index: 1000;
3338+ float: left;
3339+ display: none;
3340+ min-width: 160px;
3341+ _width: 160px;
3342+ padding: 4px 0;
3343+ margin: 0;
3344+ list-style: none;
3345+ background-color: #ffffff;
3346+ border-color: #cccccc;
3347+ border-color: rgba(0,0,0,.2);
3348+ border-style: solid;
3349+ border-width: 1px;
3350+ -webkit-border-radius: 0 0 5px 5px;
3351+ -moz-border-radius: 0 0 5px 5px;
3352+ border-radius: 0 0 5px 5px;
3353+ -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);
3354+ -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);
3355+ box-shadow: 0 5px 10px rgba(0,0,0,.2);
3356+ -webkit-background-clip: padding-box;
3357+ -moz-background-clip: padding;
3358+ background-clip: padding-box;
3359+ *border-right-width: 2px;
3360+ *border-bottom-width: 2px;
3361+}
3362+.dropdown-menu.bottom-up {
3363+ top: auto;
3364+ bottom: 100%;
3365+ margin-bottom: 2px;
3366+}
3367+.dropdown-menu .divider {
3368+ height: 1px;
3369+ margin: 5px 1px;
3370+ overflow: hidden;
3371+ background-color: #e5e5e5;
3372+ border-bottom: 1px solid #ffffff;
3373+ *width: 100%;
3374+ *margin: -5px 0 5px;
3375+}
3376+.dropdown-menu a {
3377+ display: block;
3378+ padding: 3px 15px;
3379+ clear: both;
3380+ font-weight: normal;
3381+ line-height: 18px;
3382+ color: #555555;
3383+ word-wrap: break-word;
3384+}
3385+.dropdown-menu li > a:hover,
3386+.dropdown-menu .active > a,
3387+.dropdown-menu .active > a:hover {
3388+ color: #ffffff;
3389+ text-decoration: none;
3390+ background-color: #0088cc;
3391+}
3392+.dropdown.open {
3393+ *z-index: 1000;
3394+}
3395+.dropdown.open .dropdown-toggle {
3396+ color: #ffffff;
3397+ background: #cccccc;
3398+ background: rgba(0,0,0,.3);
3399+}
3400+.dropdown.open .dropdown-menu {
3401+ display: block;
3402+}
3403+.typeahead {
3404+ margin-top: 2px;
3405+ -webkit-border-radius: 4px;
3406+ -moz-border-radius: 4px;
3407+ border-radius: 4px;
3408+}
3409+.well {
3410+ min-height: 20px;
3411+ padding: 19px;
3412+ margin-bottom: 20px;
3413+ background-color: #f5f5f5;
3414+ border: 1px solid #eeeeee;
3415+ border: 1px solid rgba(0,0,0,.05);
3416+ -webkit-border-radius: 4px;
3417+ -moz-border-radius: 4px;
3418+ border-radius: 4px;
3419+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.05);
3420+ -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.05);
3421+ box-shadow: inset 0 1px 1px rgba(0,0,0,.05);
3422+}
3423+.well blockquote {
3424+ border-color: #dddddd;
3425+ border-color: rgba(0,0,0,.15);
3426+}
3427+.fade {
3428+ -webkit-transition: opacity .15s linear;
3429+ -moz-transition: opacity .15s linear;
3430+ -ms-transition: opacity .15s linear;
3431+ -o-transition: opacity .15s linear;
3432+ transition: opacity .15s linear;
3433+ opacity: 0;
3434+}
3435+.fade.in {
3436+ opacity: 1;
3437+}
3438+.collapse {
3439+ -webkit-transition: height .35s ease;
3440+ -moz-transition: height .35s ease;
3441+ -ms-transition: height .35s ease;
3442+ -o-transition: height .35s ease;
3443+ transition: height .35s ease;
3444+ position: relative;
3445+ overflow: hidden;
3446+ height: 0;
3447+}
3448+.collapse.in {
3449+ height: auto;
3450+}
3451+.close {
3452+ float: right;
3453+ font-size: 20px;
3454+ font-weight: bold;
3455+ line-height: 18px;
3456+ color: #000000;
3457+ text-shadow: 0 1px 0 #ffffff01;
3458+ opacity: 0.2;
3459+ filter: alpha(opacity=20);
3460+}
3461+.close:hover {
3462+ color: #000000;
3463+ text-decoration: none;
3464+ opacity: 0.4;
3465+ filter: alpha(opacity=40);
3466+ cursor: pointer;
3467+}
3468+.btn {
3469+ display: inline-block;
3470+ padding: 4px 10px 4px;
3471+ margin-bottom: 0;
3472+ font-size: 13px;
3473+ line-height: 18px;
3474+ color: #333333;
3475+ text-align: center;
3476+ text-shadow: 0 1px 1px rgba(255,255,255,.75);
3477+ vertical-align: middle;
3478+ background-color: #f5f5f5;
3479+ background-image: -moz-linear-gradient(top,#ffffff,#e6e6e6 );
3480+ background-image: -ms-linear-gradient(top,#ffffff,#e6e6e6 );
3481+ background-image: -webkit-gradient(linear,0 0,0 100%,from(#ffffff),to(#e6e6e6 ));
3482+ background-image: -webkit-linear-gradient(top,#ffffff,#e6e6e6 );
3483+ background-image: -o-linear-gradient(top,#ffffff,#e6e6e6 );
3484+ background-image: linear-gradient(top,#ffffff,#e6e6e6 );
3485+ background-repeat: repeat-x;
3486+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6 ', GradientType=0);
3487+ border-color: #e6e6e6 #e6e6e6 #c0c0c0;
3488+ border-color: rgba(0,0,0,.1)rgba(0,0,0,.1)fadein(rgba(0,0,0,.1),15%);
3489+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3490+ border: 1px solid #cccccc;
3491+ border-bottom-color: #bbbbbb;
3492+ -webkit-border-radius: 4px;
3493+ -moz-border-radius: 4px;
3494+ border-radius: 4px;
3495+ -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
3496+ -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
3497+ box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
3498+ cursor: pointer;
3499+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3500+ *margin-left: .3em;
3501+}
3502+.btn:hover, .btn:active, .btn.active, .btn.disabled, .btn[disabled] {
3503+ background-color: #e6e6e6;
3504+}
3505+.btn:active, .btn.active {
3506+ background-color: #cdcdcd \9;
3507+}
3508+.btn:first-child {
3509+ *margin-left: 0;
3510+}
3511+.btn:hover {
3512+ color: #333333;
3513+ text-decoration: none;
3514+ background-color: #e6e6e6;
3515+ background-position: 0 -15px;
3516+ -webkit-transition: background-position .1s linear;
3517+ -moz-transition: background-position .1s linear;
3518+ -ms-transition: background-position .1s linear;
3519+ -o-transition: background-position .1s linear;
3520+ transition: background-position .1s linear;
3521+}
3522+.btn:focus {
3523+ outline: thin dotted #333333;
3524+ outline: 5px auto -webkit-focus-ring-color;
3525+ outline-offset: -2px;
3526+}
3527+.btn.active, .btn:active {
3528+ background-image: none;
3529+ -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
3530+ -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
3531+ box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
3532+ background-color: #e6e6e6;
3533+ background-color: #d9d9d9 \9;
3534+ outline: 0;
3535+}
3536+.btn.disabled, .btn[disabled] {
3537+ cursor: default;
3538+ background-image: none;
3539+ background-color: #e6e6e6;
3540+ opacity: 0.65;
3541+ filter: alpha(opacity=65);
3542+ -webkit-box-shadow: none;
3543+ -moz-box-shadow: none;
3544+ box-shadow: none;
3545+}
3546+.btn-large {
3547+ padding: 9px 14px;
3548+ font-size: 15px;
3549+ line-height: normal;
3550+ -webkit-border-radius: 5px;
3551+ -moz-border-radius: 5px;
3552+ border-radius: 5px;
3553+}
3554+.btn-large [class^="icon-"] {
3555+ margin-top: 1px;
3556+}
3557+.btn-small {
3558+ padding: 5px 9px;
3559+ font-size: 11px;
3560+ line-height: 16px;
3561+}
3562+.btn-small [class^="icon-"] {
3563+ margin-top: -1px;
3564+}
3565+.btn-mini {
3566+ padding: 2px 6px;
3567+ font-size: 11px;
3568+ line-height: 14px;
3569+}
3570+.btn-primary,
3571+.btn-primary:hover,
3572+.btn-warning,
3573+.btn-warning:hover,
3574+.btn-danger,
3575+.btn-danger:hover,
3576+.btn-success,
3577+.btn-success:hover,
3578+.btn-info,
3579+.btn-info:hover,
3580+.btn-inverse,
3581+.btn-inverse:hover {
3582+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
3583+ color: #ffffff;
3584+}
3585+.btn-primary.active,
3586+.btn-warning.active,
3587+.btn-danger.active,
3588+.btn-success.active,
3589+.btn-info.active,
3590+.btn-dark.active {
3591+ color: rgba(255,255,255,.75);
3592+}
3593+.btn-primary {
3594+ background-color: #006ccc;
3595+ background-image: -moz-linear-gradient(top,#0088cc,#0044cc );
3596+ background-image: -ms-linear-gradient(top,#0088cc,#0044cc );
3597+ background-image: -webkit-gradient(linear,0 0,0 100%,from(#0088cc),to(#0044cc ));
3598+ background-image: -webkit-linear-gradient(top,#0088cc,#0044cc );
3599+ background-image: -o-linear-gradient(top,#0088cc,#0044cc );
3600+ background-image: linear-gradient(top,#0088cc,#0044cc );
3601+ background-repeat: repeat-x;
3602+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc ', GradientType=0);
3603+ border-color: #0044cc #0044cc #002a80;
3604+ border-color: rgba(0,0,0,.1)rgba(0,0,0,.1)fadein(rgba(0,0,0,.1),15%);
3605+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3606+}
3607+.btn-primary:hover,
3608+.btn-primary:active,
3609+.btn-primary.active,
3610+.btn-primary.disabled,
3611+.btn-primary[disabled] {
3612+ background-color: #0044cc;
3613+}
3614+.btn-primary:active, .btn-primary.active {
3615+ background-color: #003399 \9;
3616+}
3617+.btn-warning {
3618+ background-color: #f9a732;
3619+ background-image: -moz-linear-gradient(top,#fbb450 ,#f89406);
3620+ background-image: -ms-linear-gradient(top,#fbb450 ,#f89406);
3621+ background-image: -webkit-gradient(linear,0 0,0 100%,from(#fbb450 ),to(#f89406));
3622+ background-image: -webkit-linear-gradient(top,#fbb450 ,#f89406);
3623+ background-image: -o-linear-gradient(top,#fbb450 ,#f89406);
3624+ background-image: linear-gradient(top,#fbb450 ,#f89406);
3625+ background-repeat: repeat-x;
3626+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450 ', endColorstr='#f89406', GradientType=0);
3627+ border-color: #f89406 #f89406 #ad6704;
3628+ border-color: rgba(0,0,0,.1)rgba(0,0,0,.1)fadein(rgba(0,0,0,.1),15%);
3629+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3630+}
3631+.btn-warning:hover,
3632+.btn-warning:active,
3633+.btn-warning.active,
3634+.btn-warning.disabled,
3635+.btn-warning[disabled] {
3636+ background-color: #f89406;
3637+}
3638+.btn-warning:active, .btn-warning.active {
3639+ background-color: #c67605 \9;
3640+}
3641+.btn-danger {
3642+ background-color: #da4e49;
3643+ background-image: -moz-linear-gradient(top,#ee5f5b,#bd362f);
3644+ background-image: -ms-linear-gradient(top,#ee5f5b,#bd362f);
3645+ background-image: -webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));
3646+ background-image: -webkit-linear-gradient(top,#ee5f5b,#bd362f);
3647+ background-image: -o-linear-gradient(top,#ee5f5b,#bd362f);
3648+ background-image: linear-gradient(top,#ee5f5b,#bd362f);
3649+ background-repeat: repeat-x;
3650+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
3651+ border-color: #bd362f #bd362f #802420;
3652+ border-color: rgba(0,0,0,.1)rgba(0,0,0,.1)fadein(rgba(0,0,0,.1),15%);
3653+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3654+}
3655+.btn-danger:hover,
3656+.btn-danger:active,
3657+.btn-danger.active,
3658+.btn-danger.disabled,
3659+.btn-danger[disabled] {
3660+ background-color: #bd362f;
3661+}
3662+.btn-danger:active, .btn-danger.active {
3663+ background-color: #942a25 \9;
3664+}
3665+.btn-success {
3666+ background-color: #5bb65b;
3667+ background-image: -moz-linear-gradient(top,#62c462,#51a351);
3668+ background-image: -ms-linear-gradient(top,#62c462,#51a351);
3669+ background-image: -webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));
3670+ background-image: -webkit-linear-gradient(top,#62c462,#51a351);
3671+ background-image: -o-linear-gradient(top,#62c462,#51a351);
3672+ background-image: linear-gradient(top,#62c462,#51a351);
3673+ background-repeat: repeat-x;
3674+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
3675+ border-color: #51a351 #51a351 #387038;
3676+ border-color: rgba(0,0,0,.1)rgba(0,0,0,.1)fadein(rgba(0,0,0,.1),15%);
3677+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3678+}
3679+.btn-success:hover,
3680+.btn-success:active,
3681+.btn-success.active,
3682+.btn-success.disabled,
3683+.btn-success[disabled] {
3684+ background-color: #51a351;
3685+}
3686+.btn-success:active, .btn-success.active {
3687+ background-color: #408140 \9;
3688+}
3689+.btn-info {
3690+ background-color: #49afcd;
3691+ background-image: -moz-linear-gradient(top,#5bc0de,#2f96b4);
3692+ background-image: -ms-linear-gradient(top,#5bc0de,#2f96b4);
3693+ background-image: -webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));
3694+ background-image: -webkit-linear-gradient(top,#5bc0de,#2f96b4);
3695+ background-image: -o-linear-gradient(top,#5bc0de,#2f96b4);
3696+ background-image: linear-gradient(top,#5bc0de,#2f96b4);
3697+ background-repeat: repeat-x;
3698+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
3699+ border-color: #2f96b4 #2f96b4 #1f6377;
3700+ border-color: rgba(0,0,0,.1)rgba(0,0,0,.1)fadein(rgba(0,0,0,.1),15%);
3701+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3702+}
3703+.btn-info:hover,
3704+.btn-info:active,
3705+.btn-info.active,
3706+.btn-info.disabled,
3707+.btn-info[disabled] {
3708+ background-color: #2f96b4;
3709+}
3710+.btn-info:active, .btn-info.active {
3711+ background-color: #24748c \9;
3712+}
3713+.btn-inverse {
3714+ background-color: #383838;
3715+ background-image: -moz-linear-gradient(top,#454545,#262626);
3716+ background-image: -ms-linear-gradient(top,#454545,#262626);
3717+ background-image: -webkit-gradient(linear,0 0,0 100%,from(#454545),to(#262626));
3718+ background-image: -webkit-linear-gradient(top,#454545,#262626);
3719+ background-image: -o-linear-gradient(top,#454545,#262626);
3720+ background-image: linear-gradient(top,#454545,#262626);
3721+ background-repeat: repeat-x;
3722+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#454545', endColorstr='#262626', GradientType=0);
3723+ border-color: #262626 #262626 #000000;
3724+ border-color: rgba(0,0,0,.1)rgba(0,0,0,.1)fadein(rgba(0,0,0,.1),15%);
3725+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3726+}
3727+.btn-inverse:hover,
3728+.btn-inverse:active,
3729+.btn-inverse.active,
3730+.btn-inverse.disabled,
3731+.btn-inverse[disabled] {
3732+ background-color: #262626;
3733+}
3734+.btn-inverse:active, .btn-inverse.active {
3735+ background-color: #0c0c0c \9;
3736+}
3737+button.btn, input[type="submit"].btn {
3738+ *padding-top: 2px;
3739+ *padding-bottom: 2px;
3740+}
3741+button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner {
3742+ padding: 0;
3743+ border: 0;
3744+}
3745+button.btn.large, input[type="submit"].btn.large {
3746+ *padding-top: 7px;
3747+ *padding-bottom: 7px;
3748+}
3749+button.btn.small, input[type="submit"].btn.small {
3750+ *padding-top: 3px;
3751+ *padding-bottom: 3px;
3752+}
3753+.btn-group {
3754+ position: relative;
3755+ *zoom: 1;
3756+ *margin-left: .3em;
3757+}
3758+.btn-group:before, .btn-group:after {
3759+ display: table;
3760+ content: "";
3761+}
3762+.btn-group:after {
3763+ clear: both;
3764+}
3765+.btn-group:first-child {
3766+ *margin-left: 0;
3767+}
3768+.btn-group + .btn-group {
3769+ margin-left: 5px;
3770+}
3771+.btn-toolbar {
3772+ margin-top: 9px;
3773+ margin-bottom: 9px;
3774+}
3775+.btn-toolbar .btn-group {
3776+ display: inline-block;
3777+ *display: inline;
3778+ *zoom: 1;
3779+}
3780+.btn-group .btn {
3781+ position: relative;
3782+ float: left;
3783+ margin-left: -1px;
3784+ -webkit-border-radius: 0;
3785+ -moz-border-radius: 0;
3786+ border-radius: 0;
3787+}
3788+.btn-group .btn:first-child {
3789+ margin-left: 0;
3790+ -webkit-border-top-left-radius: 4px;
3791+ -moz-border-radius-topleft: 4px;
3792+ border-top-left-radius: 4px;
3793+ -webkit-border-bottom-left-radius: 4px;
3794+ -moz-border-radius-bottomleft: 4px;
3795+ border-bottom-left-radius: 4px;
3796+}
3797+.btn-group .btn:last-child, .btn-group .dropdown-toggle {
3798+ -webkit-border-top-right-radius: 4px;
3799+ -moz-border-radius-topright: 4px;
3800+ border-top-right-radius: 4px;
3801+ -webkit-border-bottom-right-radius: 4px;
3802+ -moz-border-radius-bottomright: 4px;
3803+ border-bottom-right-radius: 4px;
3804+}
3805+.btn-group .btn.large:first-child {
3806+ margin-left: 0;
3807+ -webkit-border-top-left-radius: 6px;
3808+ -moz-border-radius-topleft: 6px;
3809+ border-top-left-radius: 6px;
3810+ -webkit-border-bottom-left-radius: 6px;
3811+ -moz-border-radius-bottomleft: 6px;
3812+ border-bottom-left-radius: 6px;
3813+}
3814+.btn-group .btn.large:last-child, .btn-group .large.dropdown-toggle {
3815+ -webkit-border-top-right-radius: 6px;
3816+ -moz-border-radius-topright: 6px;
3817+ border-top-right-radius: 6px;
3818+ -webkit-border-bottom-right-radius: 6px;
3819+ -moz-border-radius-bottomright: 6px;
3820+ border-bottom-right-radius: 6px;
3821+}
3822+.btn-group .btn:hover,
3823+.btn-group .btn:focus,
3824+.btn-group .btn:active,
3825+.btn-group .btn.active {
3826+ z-index: 2;
3827+}
3828+.btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle {
3829+ outline: 0;
3830+}
3831+.btn-group .dropdown-toggle {
3832+ padding-left: 8px;
3833+ padding-right: 8px;
3834+ -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);
3835+ -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);
3836+ 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);
3837+ *padding-top: 5px;
3838+ *padding-bottom: 5px;
3839+}
3840+.btn-group.open {
3841+ *z-index: 1000;
3842+}
3843+.btn-group.open .dropdown-menu {
3844+ display: block;
3845+ margin-top: 1px;
3846+ -webkit-border-radius: 5px;
3847+ -moz-border-radius: 5px;
3848+ border-radius: 5px;
3849+}
3850+.btn-group.open .dropdown-toggle {
3851+ background-image: none;
3852+ -webkit-box-shadow: inset 0 1px 6px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
3853+ -moz-box-shadow: inset 0 1px 6px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
3854+ box-shadow: inset 0 1px 6px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
3855+}
3856+.btn .caret {
3857+ margin-top: 7px;
3858+ margin-left: 0;
3859+}
3860+.btn:hover .caret, .open.btn-group .caret {
3861+ opacity: 1;
3862+ filter: alpha(opacity=100);
3863+}
3864+.btn-primary .caret,
3865+.btn-danger .caret,
3866+.btn-info .caret,
3867+.btn-success .caret,
3868+.btn-inverse .caret {
3869+ border-top-color: #ffffff;
3870+ opacity: 0.75;
3871+ filter: alpha(opacity=75);
3872+}
3873+.btn-small .caret {
3874+ margin-top: 4px;
3875+}
3876+.alert {
3877+ padding: 8px 35px 8px 14px;
3878+ margin-bottom: 18px;
3879+ text-shadow: 0 1px 0 rgba(255,255,255,.5);
3880+ background-color: #fcf8e3;
3881+ border: 1px solid #fbefd5;
3882+ -webkit-border-radius: 4px;
3883+ -moz-border-radius: 4px;
3884+ border-radius: 4px;
3885+}
3886+.alert, .alert-heading {
3887+ color: #c09853;
3888+}
3889+.alert .close {
3890+ position: relative;
3891+ top: -2px;
3892+ right: -21px;
3893+ line-height: 18px;
3894+}
3895+.alert-success {
3896+ background-color: #dff0d8;
3897+ border-color: #d6e9c6;
3898+}
3899+.alert-success, .alert-success .alert-heading {
3900+ color: #468847;
3901+}
3902+.alert-danger, .alert-error {
3903+ background-color: #f2dede;
3904+ border-color: #eed3d7;
3905+}
3906+.alert-danger,
3907+.alert-error,
3908+.alert-danger .alert-heading,
3909+.alert-error .alert-heading {
3910+ color: #b94a48;
3911+}
3912+.alert-info {
3913+ background-color: #d9edf7;
3914+ border-color: #bce8f1;
3915+}
3916+.alert-info, .alert-info .alert-heading {
3917+ color: #3a87ad;
3918+}
3919+.alert-block {
3920+ padding-top: 14px;
3921+ padding-bottom: 14px;
3922+}
3923+.alert-block > p, .alert-block > ul {
3924+ margin-bottom: 0;
3925+}
3926+.alert-block p + p {
3927+ margin-top: 5px;
3928+}
3929+.nav {
3930+ margin-left: 0;
3931+ margin-bottom: 18px;
3932+ list-style: none;
3933+}
3934+.nav > li > a {
3935+ display: block;
3936+}
3937+.nav > li > a:hover {
3938+ text-decoration: none;
3939+ background-color: #eeeeee;
3940+}
3941+.nav .nav-header {
3942+ display: block;
3943+ padding: 3px 15px;
3944+ font-size: 11px;
3945+ font-weight: bold;
3946+ line-height: 18px;
3947+ color: #999999;
3948+ text-shadow: 0 1px 0 rgba(255,255,255,.5);
3949+ text-transform: uppercase;
3950+}
3951+.nav li + .nav-header {
3952+ margin-top: 9px;
3953+}
3954+.nav-list {
3955+ padding-left: 14px;
3956+ padding-right: 14px;
3957+ margin-bottom: 0;
3958+}
3959+.nav-list > li > a, .nav-list .nav-header {
3960+ margin-left: -15px;
3961+ margin-right: -15px;
3962+ text-shadow: 0 1px 0 rgba(255,255,255,.5);
3963+}
3964+.nav-list > li > a {
3965+ padding: 3px 15px;
3966+}
3967+.nav-list .active > a, .nav-list .active > a:hover {
3968+ color: #ffffff;
3969+ text-shadow: 0 -1px 0 rgba(0,0,0,.2);
3970+ background-color: #0088cc;
3971+}
3972+.nav-list [class^="icon-"] {
3973+ margin-right: 2px;
3974+}
3975+.nav-tabs, .nav-pills {
3976+ *zoom: 1;
3977+}
3978+.nav-tabs:before, .nav-tabs:after, .nav-pills:before, .nav-pills:after {
3979+ display: table;
3980+ content: "";
3981+}
3982+.nav-tabs:after, .nav-pills:after {
3983+ clear: both;
3984+}
3985+.nav-tabs > li, .nav-pills > li {
3986+ float: left;
3987+}
3988+.nav-tabs > li > a, .nav-pills > li > a {
3989+ padding-right: 12px;
3990+ padding-left: 12px;
3991+ margin-right: 2px;
3992+ line-height: 14px;
3993+}
3994+.nav-tabs {
3995+ border-bottom: 1px solid #dddddd;
3996+}
3997+.nav-tabs > li {
3998+ margin-bottom: -1px;
3999+}
4000+.nav-tabs > li > a {
4001+ padding-top: 9px;
4002+ padding-bottom: 9px;
4003+ border: 1px solid transparent;
4004+ -webkit-border-radius: 4px 4px 0 0;
4005+ -moz-border-radius: 4px 4px 0 0;
4006+ border-radius: 4px 4px 0 0;
4007+}
4008+.nav-tabs > li > a:hover {
4009+ border-color: #eeeeee #eeeeee #dddddd;
4010+}
4011+.nav-tabs > .active > a, .nav-tabs > .active > a:hover {
4012+ color: #555555;
4013+ background-color: #ffffff;
4014+ border: 1px solid #dddddd;
4015+ border-bottom-color: transparent;
4016+ cursor: default;
4017+}
4018+.nav-pills > li > a {
4019+ padding-top: 8px;
4020+ padding-bottom: 8px;
4021+ margin-top: 2px;
4022+ margin-bottom: 2px;
4023+ -webkit-border-radius: 5px;
4024+ -moz-border-radius: 5px;
4025+ border-radius: 5px;
4026+}
4027+.nav-pills .active > a, .nav-pills .active > a:hover {
4028+ color: #ffffff;
4029+ background-color: #0088cc;
4030+}
4031+.nav-stacked > li {
4032+ float: none;
4033+}
4034+.nav-stacked > li > a {
4035+ margin-right: 0;
4036+}
4037+.nav-tabs.nav-stacked {
4038+ border-bottom: 0;
4039+}
4040+.nav-tabs.nav-stacked > li > a {
4041+ border: 1px solid #dddddd;
4042+ -webkit-border-radius: 0;
4043+ -moz-border-radius: 0;
4044+ border-radius: 0;
4045+}
4046+.nav-tabs.nav-stacked > li:first-child > a {
4047+ -webkit-border-radius: 4px 4px 0 0;
4048+ -moz-border-radius: 4px 4px 0 0;
4049+ border-radius: 4px 4px 0 0;
4050+}
4051+.nav-tabs.nav-stacked > li:last-child > a {
4052+ -webkit-border-radius: 0 0 4px 4px;
4053+ -moz-border-radius: 0 0 4px 4px;
4054+ border-radius: 0 0 4px 4px;
4055+}
4056+.nav-tabs.nav-stacked > li > a:hover {
4057+ border-color: #dddddd;
4058+ z-index: 2;
4059+}
4060+.nav-pills.nav-stacked > li > a {
4061+ margin-bottom: 3px;
4062+}
4063+.nav-pills.nav-stacked > li:last-child > a {
4064+ margin-bottom: 1px;
4065+}
4066+.nav-tabs .dropdown-menu, .nav-pills .dropdown-menu {
4067+ margin-top: 1px;
4068+ border-width: 1px;
4069+}
4070+.nav-pills .dropdown-menu {
4071+ -webkit-border-radius: 4px;
4072+ -moz-border-radius: 4px;
4073+ border-radius: 4px;
4074+}
4075+.nav-tabs .dropdown-toggle .caret, .nav-pills .dropdown-toggle .caret {
4076+ border-top-color: #0088cc;
4077+ margin-top: 6px;
4078+}
4079+.nav-tabs .dropdown-toggle:hover .caret, .nav-pills .dropdown-toggle:hover .caret {
4080+ border-top-color: #005580;
4081+}
4082+.nav-tabs .active .dropdown-toggle .caret,
4083+.nav-pills .active .dropdown-toggle .caret {
4084+ border-top-color: #333333;
4085+}
4086+.nav > .dropdown.active > a:hover {
4087+ color: #000000;
4088+ cursor: pointer;
4089+}
4090+.nav-tabs .open .dropdown-toggle,
4091+.nav-pills .open .dropdown-toggle,
4092+.nav > .open.active > a:hover {
4093+ color: #ffffff;
4094+ background-color: #999999;
4095+ border-color: #999999;
4096+}
4097+.nav .open .caret, .nav .open.active .caret, .nav .open a:hover .caret {
4098+ border-top-color: #ffffff;
4099+ opacity: 1;
4100+ filter: alpha(opacity=100);
4101+}
4102+.tabs-stacked .open > a:hover {
4103+ border-color: #999999;
4104+}
4105+.tabbable {
4106+ *zoom: 1;
4107+}
4108+.tabbable:before, .tabbable:after {
4109+ display: table;
4110+ content: "";
4111+}
4112+.tabbable:after {
4113+ clear: both;
4114+}
4115+.tab-content {
4116+ overflow: hidden;
4117+}
4118+.tabs-below .nav-tabs, .tabs-right .nav-tabs, .tabs-left .nav-tabs {
4119+ border-bottom: 0;
4120+}
4121+.tab-content > .tab-pane, .pill-content > .pill-pane {
4122+ display: none;
4123+}
4124+.tab-content > .active, .pill-content > .active {
4125+ display: block;
4126+}
4127+.tabs-below .nav-tabs {
4128+ border-top: 1px solid #dddddd;
4129+}
4130+.tabs-below .nav-tabs > li {
4131+ margin-top: -1px;
4132+ margin-bottom: 0;
4133+}
4134+.tabs-below .nav-tabs > li > a {
4135+ -webkit-border-radius: 0 0 4px 4px;
4136+ -moz-border-radius: 0 0 4px 4px;
4137+ border-radius: 0 0 4px 4px;
4138+}
4139+.tabs-below .nav-tabs > li > a:hover {
4140+ border-bottom-color: transparent;
4141+ border-top-color: #dddddd;
4142+}
4143+.tabs-below .nav-tabs .active > a, .tabs-below .nav-tabs .active > a:hover {
4144+ border-color: transparent #dddddd #dddddd #dddddd;
4145+}
4146+.tabs-left .nav-tabs > li, .tabs-right .nav-tabs > li {
4147+ float: none;
4148+}
4149+.tabs-left .nav-tabs > li > a, .tabs-right .nav-tabs > li > a {
4150+ min-width: 74px;
4151+ margin-right: 0;
4152+ margin-bottom: 3px;
4153+}
4154+.tabs-left .nav-tabs {
4155+ float: left;
4156+ margin-right: 19px;
4157+ border-right: 1px solid #dddddd;
4158+}
4159+.tabs-left .nav-tabs > li > a {
4160+ margin-right: -1px;
4161+ -webkit-border-radius: 4px 0 0 4px;
4162+ -moz-border-radius: 4px 0 0 4px;
4163+ border-radius: 4px 0 0 4px;
4164+}
4165+.tabs-left .nav-tabs > li > a:hover {
4166+ border-color: #eeeeee #dddddd #eeeeee #eeeeee;
4167+}
4168+.tabs-left .nav-tabs .active > a, .tabs-left .nav-tabs .active > a:hover {
4169+ border-color: #dddddd transparent #dddddd #dddddd;
4170+ *border-right-color: #ffffff;
4171+}
4172+.tabs-right .nav-tabs {
4173+ float: right;
4174+ margin-left: 19px;
4175+ border-left: 1px solid #dddddd;
4176+}
4177+.tabs-right .nav-tabs > li > a {
4178+ margin-left: -1px;
4179+ -webkit-border-radius: 0 4px 4px 0;
4180+ -moz-border-radius: 0 4px 4px 0;
4181+ border-radius: 0 4px 4px 0;
4182+}
4183+.tabs-right .nav-tabs > li > a:hover {
4184+ border-color: #eeeeee #eeeeee #eeeeee #dddddd;
4185+}
4186+.tabs-right .nav-tabs .active > a, .tabs-right .nav-tabs .active > a:hover {
4187+ border-color: #dddddd #dddddd #dddddd transparent;
4188+ *border-left-color: #ffffff;
4189+}
4190+.navbar {
4191+ overflow: visible;
4192+ margin-bottom: 18px;
4193+}
4194+.navbar-inner {
4195+ padding-left: 20px;
4196+ padding-right: 20px;
4197+ background-color: #2c2c2c;
4198+ background-image: -moz-linear-gradient(top,#333333,#222222);
4199+ background-image: -ms-linear-gradient(top,#333333,#222222);
4200+ background-image: -webkit-gradient(linear,0 0,0 100%,from(#333333),to(#222222));
4201+ background-image: -webkit-linear-gradient(top,#333333,#222222);
4202+ background-image: -o-linear-gradient(top,#333333,#222222);
4203+ background-image: linear-gradient(top,#333333,#222222);
4204+ background-repeat: repeat-x;
4205+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
4206+ -webkit-border-radius: 4px;
4207+ -moz-border-radius: 4px;
4208+ border-radius: 4px;
4209+ -webkit-box-shadow: 0 1px 3px rgba(0,0,0,.25), inset 0 -1px 0 rgba(0,0,0,.1);
4210+ -moz-box-shadow: 0 1px 3px rgba(0,0,0,.25), inset 0 -1px 0 rgba(0,0,0,.1);
4211+ box-shadow: 0 1px 3px rgba(0,0,0,.25), inset 0 -1px 0 rgba(0,0,0,.1);
4212+}
4213+.btn-navbar {
4214+ display: none;
4215+ float: right;
4216+ padding: 7px 10px;
4217+ margin-left: 5px;
4218+ margin-right: 5px;
4219+ background-color: #2c2c2c;
4220+ background-image: -moz-linear-gradient(top,#333333,#222222);
4221+ background-image: -ms-linear-gradient(top,#333333,#222222);
4222+ background-image: -webkit-gradient(linear,0 0,0 100%,from(#333333),to(#222222));
4223+ background-image: -webkit-linear-gradient(top,#333333,#222222);
4224+ background-image: -o-linear-gradient(top,#333333,#222222);
4225+ background-image: linear-gradient(top,#333333,#222222);
4226+ background-repeat: repeat-x;
4227+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
4228+ border-color: #222222 #222222 #000000;
4229+ border-color: rgba(0,0,0,.1)rgba(0,0,0,.1)fadein(rgba(0,0,0,.1),15%);
4230+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
4231+ -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
4232+ -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
4233+ box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
4234+}
4235+.btn-navbar:hover,
4236+.btn-navbar:active,
4237+.btn-navbar.active,
4238+.btn-navbar.disabled,
4239+.btn-navbar[disabled] {
4240+ background-color: #222222;
4241+}
4242+.btn-navbar:active, .btn-navbar.active {
4243+ background-color: #080808 \9;
4244+}
4245+.btn-navbar .icon-bar {
4246+ display: block;
4247+ width: 18px;
4248+ height: 2px;
4249+ background-color: #f5f5f5;
4250+ -webkit-border-radius: 1px;
4251+ -moz-border-radius: 1px;
4252+ border-radius: 1px;
4253+ -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.25);
4254+ -moz-box-shadow: 0 1px 0 rgba(0,0,0,.25);
4255+ box-shadow: 0 1px 0 rgba(0,0,0,.25);
4256+}
4257+.btn-navbar .icon-bar + .icon-bar {
4258+ margin-top: 3px;
4259+}
4260+.nav-collapse.collapse {
4261+ height: auto;
4262+}
4263+.navbar .brand:hover {
4264+ text-decoration: none;
4265+}
4266+.navbar .brand {
4267+ float: left;
4268+ display: block;
4269+ padding: 8px 20px 12px;
4270+ margin-left: -20px;
4271+ font-size: 20px;
4272+ font-weight: 200;
4273+ line-height: 1;
4274+ color: #ffffff;
4275+}
4276+.navbar .navbar-text {
4277+ margin-bottom: 0;
4278+ line-height: 40px;
4279+ color: #999999;
4280+}
4281+.navbar .navbar-text a:hover {
4282+ color: #ffffff;
4283+ background-color: transparent;
4284+}
4285+.navbar .btn, .navbar .btn-group {
4286+ margin-top: 5px;
4287+}
4288+.navbar .btn-group .btn {
4289+ margin-top: 0;
4290+}
4291+.navbar-form {
4292+ margin-bottom: 0;
4293+ *zoom: 1;
4294+}
4295+.navbar-form:before, .navbar-form:after {
4296+ display: table;
4297+ content: "";
4298+}
4299+.navbar-form:after {
4300+ clear: both;
4301+}
4302+.navbar-form input, .navbar-form select {
4303+ display: inline-block;
4304+ margin-top: 5px;
4305+ margin-bottom: 0;
4306+}
4307+.navbar-form .radio, .navbar-form .checkbox {
4308+ margin-top: 5px;
4309+}
4310+.navbar-form input[type="image"],
4311+.navbar-form input[type="checkbox"],
4312+.navbar-form input[type="radio"] {
4313+ margin-top: 3px;
4314+}
4315+.navbar-form .input-append, .navbar-form .input-prepend {
4316+ margin-top: 6px;
4317+ white-space: nowrap;
4318+}
4319+.navbar-form .input-append input, .navbar-form .input-prepend input {
4320+ margin-top: 0;
4321+}
4322+.navbar-search {
4323+ position: relative;
4324+ float: left;
4325+ margin-top: 6px;
4326+ margin-bottom: 0;
4327+}
4328+.navbar-search .search-query {
4329+ padding: 4px 9px;
4330+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
4331+ font-size: 13px;
4332+ font-weight: normal;
4333+ line-height: 1;
4334+ color: #ffffff;
4335+ color: rgba(255,255,255,.75);
4336+ background: #666666;
4337+ background: rgba(255,255,255,.3);
4338+ border: 1px solid #111111;
4339+ -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
4340+ -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
4341+ box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
4342+ -webkit-transition: none;
4343+ -moz-transition: none;
4344+ -ms-transition: none;
4345+ -o-transition: none;
4346+ transition: none;
4347+}
4348+.navbar-search .search-query :-moz-placeholder {
4349+ color: #eeeeee;
4350+}
4351+.navbar-search .search-query ::-webkit-input-placeholder {
4352+ color: #eeeeee;
4353+}
4354+.navbar-search .search-query:hover {
4355+ color: #ffffff;
4356+ background-color: #999999;
4357+ background-color: rgba(255,255,255,.5);
4358+}
4359+.navbar-search .search-query:focus, .navbar-search .search-query.focused {
4360+ padding: 5px 10px;
4361+ color: #333333;
4362+ text-shadow: 0 1px 0 #ffffff;
4363+ background-color: #ffffff;
4364+ border: 0;
4365+ -webkit-box-shadow: 0 0 3px rgba(0,0,0,.15);
4366+ -moz-box-shadow: 0 0 3px rgba(0,0,0,.15);
4367+ box-shadow: 0 0 3px rgba(0,0,0,.15);
4368+ outline: 0;
4369+}
4370+.navbar-fixed-top {
4371+ position: fixed;
4372+ top: 0;
4373+ right: 0;
4374+ left: 0;
4375+ z-index: 1030;
4376+}
4377+.navbar-fixed-top .navbar-inner {
4378+ padding-left: 0;
4379+ padding-right: 0;
4380+ -webkit-border-radius: 0;
4381+ -moz-border-radius: 0;
4382+ border-radius: 0;
4383+}
4384+.navbar .nav {
4385+ position: relative;
4386+ left: 0;
4387+ display: block;
4388+ float: left;
4389+ margin: 0 10px 0 0;
4390+}
4391+.navbar .nav.pull-right {
4392+ float: right;
4393+}
4394+.navbar .nav > li {
4395+ display: block;
4396+ float: left;
4397+}
4398+.navbar .nav > li > a {
4399+ float: none;
4400+ padding: 10px 10px 11px;
4401+ line-height: 19px;
4402+ color: #999999;
4403+ text-decoration: none;
4404+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
4405+}
4406+.navbar .nav > li > a:hover {
4407+ background-color: transparent;
4408+ color: #ffffff;
4409+ text-decoration: none;
4410+}
4411+.navbar .nav .active > a, .navbar .nav .active > a:hover {
4412+ color: #ffffff;
4413+ text-decoration: none;
4414+ background-color: #222222;
4415+}
4416+.navbar .divider-vertical {
4417+ height: 40px;
4418+ width: 1px;
4419+ margin: 0 9px;
4420+ overflow: hidden;
4421+ background-color: #222222;
4422+ border-right: 1px solid #333333;
4423+}
4424+.navbar .nav.pull-right {
4425+ margin-left: 10px;
4426+ margin-right: 0;
4427+}
4428+.navbar .dropdown-menu {
4429+ margin-top: 1px;
4430+ -webkit-border-radius: 4px;
4431+ -moz-border-radius: 4px;
4432+ border-radius: 4px;
4433+}
4434+.navbar .dropdown-menu:before {
4435+ content: '';
4436+ display: inline-block;
4437+ border-left: 7px solid transparent;
4438+ border-right: 7px solid transparent;
4439+ border-bottom: 7px solid #cccccc;
4440+ border-bottom-color: rgba(0,0,0,.2);
4441+ position: absolute;
4442+ top: -7px;
4443+ left: 9px;
4444+}
4445+.navbar .dropdown-menu:after {
4446+ content: '';
4447+ display: inline-block;
4448+ border-left: 6px solid transparent;
4449+ border-right: 6px solid transparent;
4450+ border-bottom: 6px solid #ffffff;
4451+ position: absolute;
4452+ top: -6px;
4453+ left: 10px;
4454+}
4455+.navbar .nav .dropdown-toggle .caret, .navbar .nav .open.dropdown .caret {
4456+ border-top-color: #ffffff;
4457+}
4458+.navbar .nav .active .caret {
4459+ opacity: 1;
4460+ filter: alpha(opacity=100);
4461+}
4462+.navbar .nav .open > .dropdown-toggle,
4463+.navbar .nav .active > .dropdown-toggle,
4464+.navbar .nav .open.active > .dropdown-toggle {
4465+ background-color: transparent;
4466+}
4467+.navbar .nav .active > .dropdown-toggle:hover {
4468+ color: #ffffff;
4469+}
4470+.navbar .nav.pull-right .dropdown-menu {
4471+ left: auto;
4472+ right: 0;
4473+}
4474+.navbar .nav.pull-right .dropdown-menu:before {
4475+ left: auto;
4476+ right: 12px;
4477+}
4478+.navbar .nav.pull-right .dropdown-menu:after {
4479+ left: auto;
4480+ right: 13px;
4481+}
4482+.breadcrumb {
4483+ padding: 7px 14px;
4484+ margin: 0 0 18px;
4485+ background-color: #fbfbfb;
4486+ background-image: -moz-linear-gradient(top,#ffffff,#f5f5f5);
4487+ background-image: -ms-linear-gradient(top,#ffffff,#f5f5f5);
4488+ background-image: -webkit-gradient(linear,0 0,0 100%,from(#ffffff),to(#f5f5f5));
4489+ background-image: -webkit-linear-gradient(top,#ffffff,#f5f5f5);
4490+ background-image: -o-linear-gradient(top,#ffffff,#f5f5f5);
4491+ background-image: linear-gradient(top,#ffffff,#f5f5f5);
4492+ background-repeat: repeat-x;
4493+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);
4494+ border: 1px solid #dddddd;
4495+ -webkit-border-radius: 3px;
4496+ -moz-border-radius: 3px;
4497+ border-radius: 3px;
4498+ -webkit-box-shadow: inset 0 1px 0 #ffffff;
4499+ -moz-box-shadow: inset 0 1px 0 #ffffff;
4500+ box-shadow: inset 0 1px 0 #ffffff;
4501+}
4502+.breadcrumb li {
4503+ display: inline-block;
4504+ text-shadow: 0 1px 0 #ffffff;
4505+}
4506+.breadcrumb .divider {
4507+ padding: 0 5px;
4508+ color: #999999;
4509+}
4510+.breadcrumb .active a {
4511+ color: #333333;
4512+}
4513+.pagination {
4514+ height: 36px;
4515+ margin: 18px 0;
4516+}
4517+.pagination ul {
4518+ display: inline-block;
4519+ *display: inline;
4520+ *zoom: 1;
4521+ margin-left: 0;
4522+ margin-bottom: 0;
4523+ -webkit-border-radius: 3px;
4524+ -moz-border-radius: 3px;
4525+ border-radius: 3px;
4526+ -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.05);
4527+ -moz-box-shadow: 0 1px 2px rgba(0,0,0,.05);
4528+ box-shadow: 0 1px 2px rgba(0,0,0,.05);
4529+}
4530+.pagination li {
4531+ display: inline;
4532+}
4533+.pagination a {
4534+ float: left;
4535+ padding: 0 14px;
4536+ line-height: 34px;
4537+ text-decoration: none;
4538+ border: 1px solid #dddddd;
4539+ border-left-width: 0;
4540+}
4541+.pagination a:hover, .pagination .active a {
4542+ background-color: #f5f5f5;
4543+}
4544+.pagination .active a {
4545+ color: #999999;
4546+ cursor: default;
4547+}
4548+.pagination .disabled a, .pagination .disabled a:hover {
4549+ color: #999999;
4550+ background-color: transparent;
4551+ cursor: default;
4552+}
4553+.pagination li:first-child a {
4554+ border-left-width: 1px;
4555+ -webkit-border-radius: 3px 0 0 3px;
4556+ -moz-border-radius: 3px 0 0 3px;
4557+ border-radius: 3px 0 0 3px;
4558+}
4559+.pagination li:last-child a {
4560+ -webkit-border-radius: 0 3px 3px 0;
4561+ -moz-border-radius: 0 3px 3px 0;
4562+ border-radius: 0 3px 3px 0;
4563+}
4564+.pagination-centered {
4565+ text-align: center;
4566+}
4567+.pagination-right {
4568+ text-align: right;
4569+}
4570+.pager {
4571+ margin: 18px 0;
4572+ list-style: none;
4573+ text-align: center;
4574+ *zoom: 1;
4575+}
4576+.pager:before, .pager:after {
4577+ display: table;
4578+ content: "";
4579+}
4580+.pager:after {
4581+ clear: both;
4582+}
4583+.pager li {
4584+ display: inline;
4585+}
4586+.pager li > a, .pager li > span {
4587+ display: inline-block;
4588+ padding: 5px 14px;
4589+ background-color: #ffffff;
4590+ border: 1px solid #dddddd;
4591+ -webkit-border-radius: 15px;
4592+ -moz-border-radius: 15px;
4593+ border-radius: 15px;
4594+}
4595+.pager li > a:hover, .pager li > a:focus {
4596+ text-decoration: none;
4597+ background-color: #f5f5f5;
4598+}
4599+.pager .next > a, .pager .next > span {
4600+ float: right;
4601+}
4602+.pager .previous > a, .pager .previous > span {
4603+ float: left;
4604+}
4605+.pager .disabled > a,
4606+.pager .disabled > a:hover,
4607+.pager .disabled > a:focus,
4608+.pager .disabled > span {
4609+ color: #999999;
4610+ background-color: #ffffff;
4611+ cursor: default;
4612+}
4613+.modal-open .dropdown-menu {
4614+ z-index: 2050;
4615+}
4616+.modal-open .dropdown.open {
4617+ *z-index: 2050;
4618+}
4619+.modal-open .popover {
4620+ z-index: 2060;
4621+}
4622+.modal-open .tooltip {
4623+ z-index: 2070;
4624+}
4625+.modal-backdrop {
4626+ position: fixed;
4627+ top: 0;
4628+ right: 0;
4629+ bottom: 0;
4630+ left: 0;
4631+ z-index: 1040;
4632+ background-color: #000000;
4633+}
4634+.modal-backdrop.fade {
4635+ opacity: 0;
4636+}
4637+.modal-backdrop, .modal-backdrop.fade.in {
4638+ opacity: 0.8;
4639+ filter: alpha(opacity=80);
4640+}
4641+.modal {
4642+ position: fixed;
4643+ top: 50%;
4644+ left: 50%;
4645+ z-index: 1050;
4646+ max-height: 500px;
4647+ overflow: auto;
4648+ width: 560px;
4649+ margin: -250px 0 0 -280px;
4650+ background-color: #ffffff;
4651+ border: 1px solid #999999;
4652+ border: 1px solid rgba(0,0,0,.3);
4653+ *border: 1px solid #999999;
4654+ -webkit-border-radius: 6px;
4655+ -moz-border-radius: 6px;
4656+ border-radius: 6px;
4657+ -webkit-box-shadow: 0 3px 7px rgba(0,0,0,0.3);
4658+ -moz-box-shadow: 0 3px 7px rgba(0,0,0,0.3);
4659+ box-shadow: 0 3px 7px rgba(0,0,0,0.3);
4660+ -webkit-background-clip: padding-box;
4661+ -moz-background-clip: padding-box;
4662+ background-clip: padding-box;
4663+}
4664+.modal.fade {
4665+ -webkit-transition: opacity .3s linear, top .3s ease-out;
4666+ -moz-transition: opacity .3s linear, top .3s ease-out;
4667+ -ms-transition: opacity .3s linear, top .3s ease-out;
4668+ -o-transition: opacity .3s linear, top .3s ease-out;
4669+ transition: opacity .3s linear, top .3s ease-out;
4670+ top: -25%;
4671+}
4672+.modal.fade.in {
4673+ top: 50%;
4674+}
4675+.modal-header {
4676+ padding: 9px 15px;
4677+ border-bottom: 1px solid #eeeeee;
4678+}
4679+.modal-header .close {
4680+ margin-top: 2px;
4681+}
4682+.modal-body {
4683+ padding: 15px;
4684+}
4685+.modal-body .modal-form {
4686+ margin-bottom: 0;
4687+}
4688+.modal-footer {
4689+ padding: 14px 15px 15px;
4690+ margin-bottom: 0;
4691+ background-color: #f5f5f5;
4692+ border-top: 1px solid #dddddd;
4693+ -webkit-border-radius: 0 0 6px 6px;
4694+ -moz-border-radius: 0 0 6px 6px;
4695+ border-radius: 0 0 6px 6px;
4696+ -webkit-box-shadow: inset 0 1px 0 #ffffff;
4697+ -moz-box-shadow: inset 0 1px 0 #ffffff;
4698+ box-shadow: inset 0 1px 0 #ffffff;
4699+ *zoom: 1;
4700+}
4701+.modal-footer:before, .modal-footer:after {
4702+ display: table;
4703+ content: "";
4704+}
4705+.modal-footer:after {
4706+ clear: both;
4707+}
4708+.modal-footer .btn {
4709+ float: right;
4710+ margin-left: 5px;
4711+ margin-bottom: 0;
4712+}
4713+.tooltip {
4714+ position: absolute;
4715+ z-index: 1020;
4716+ display: block;
4717+ visibility: visible;
4718+ padding: 5px;
4719+ font-size: 11px;
4720+ opacity: 0;
4721+ filter: alpha(opacity=0);
4722+}
4723+.tooltip.in {
4724+ opacity: 0.8;
4725+ filter: alpha(opacity=80);
4726+}
4727+.tooltip.top {
4728+ margin-top: -2px;
4729+}
4730+.tooltip.right {
4731+ margin-left: 2px;
4732+}
4733+.tooltip.bottom {
4734+ margin-top: 2px;
4735+}
4736+.tooltip.left {
4737+ margin-left: -2px;
4738+}
4739+.tooltip.top .tooltip-arrow {
4740+ bottom: 0;
4741+ left: 50%;
4742+ margin-left: -5px;
4743+ border-left: 5px solid transparent;
4744+ border-right: 5px solid transparent;
4745+ border-top: 5px solid #000000;
4746+}
4747+.tooltip.left .tooltip-arrow {
4748+ top: 50%;
4749+ right: 0;
4750+ margin-top: -5px;
4751+ border-top: 5px solid transparent;
4752+ border-bottom: 5px solid transparent;
4753+ border-left: 5px solid #000000;
4754+}
4755+.tooltip.bottom .tooltip-arrow {
4756+ top: 0;
4757+ left: 50%;
4758+ margin-left: -5px;
4759+ border-left: 5px solid transparent;
4760+ border-right: 5px solid transparent;
4761+ border-bottom: 5px solid #000000;
4762+}
4763+.tooltip.right .tooltip-arrow {
4764+ top: 50%;
4765+ left: 0;
4766+ margin-top: -5px;
4767+ border-top: 5px solid transparent;
4768+ border-bottom: 5px solid transparent;
4769+ border-right: 5px solid #000000;
4770+}
4771+.tooltip-inner {
4772+ max-width: 200px;
4773+ padding: 3px 8px;
4774+ color: #ffffff;
4775+ text-align: center;
4776+ text-decoration: none;
4777+ background-color: #000000;
4778+ -webkit-border-radius: 4px;
4779+ -moz-border-radius: 4px;
4780+ border-radius: 4px;
4781+}
4782+.tooltip-arrow {
4783+ position: absolute;
4784+ width: 0;
4785+ height: 0;
4786+}
4787+.popover {
4788+ position: absolute;
4789+ top: 0;
4790+ left: 0;
4791+ z-index: 1010;
4792+ display: none;
4793+ padding: 5px;
4794+}
4795+.popover.top {
4796+ margin-top: -5px;
4797+}
4798+.popover.right {
4799+ margin-left: 5px;
4800+}
4801+.popover.bottom {
4802+ margin-top: 5px;
4803+}
4804+.popover.left {
4805+ margin-left: -5px;
4806+}
4807+.popover.top .arrow {
4808+ bottom: 0;
4809+ left: 50%;
4810+ margin-left: -5px;
4811+ border-left: 5px solid transparent;
4812+ border-right: 5px solid transparent;
4813+ border-top: 5px solid #000000;
4814+}
4815+.popover.right .arrow {
4816+ top: 50%;
4817+ left: 0;
4818+ margin-top: -5px;
4819+ border-top: 5px solid transparent;
4820+ border-bottom: 5px solid transparent;
4821+ border-right: 5px solid #000000;
4822+}
4823+.popover.bottom .arrow {
4824+ top: 0;
4825+ left: 50%;
4826+ margin-left: -5px;
4827+ border-left: 5px solid transparent;
4828+ border-right: 5px solid transparent;
4829+ border-bottom: 5px solid #000000;
4830+}
4831+.popover.left .arrow {
4832+ top: 50%;
4833+ right: 0;
4834+ margin-top: -5px;
4835+ border-top: 5px solid transparent;
4836+ border-bottom: 5px solid transparent;
4837+ border-left: 5px solid #000000;
4838+}
4839+.popover .arrow {
4840+ position: absolute;
4841+ width: 0;
4842+ height: 0;
4843+}
4844+.popover-inner {
4845+ padding: 3px;
4846+ width: 280px;
4847+ overflow: hidden;
4848+ background: #000000;
4849+ background: rgba(0,0,0,.8);
4850+ -webkit-border-radius: 6px;
4851+ -moz-border-radius: 6px;
4852+ border-radius: 6px;
4853+ -webkit-box-shadow: 0 3px 7px rgba(0,0,0,0.3);
4854+ -moz-box-shadow: 0 3px 7px rgba(0,0,0,0.3);
4855+ box-shadow: 0 3px 7px rgba(0,0,0,0.3);
4856+}
4857+.popover-title {
4858+ padding: 9px 15px;
4859+ line-height: 1;
4860+ background-color: #f5f5f5;
4861+ border-bottom: 1px solid #eeeeee;
4862+ -webkit-border-radius: 3px 3px 0 0;
4863+ -moz-border-radius: 3px 3px 0 0;
4864+ border-radius: 3px 3px 0 0;
4865+}
4866+.popover-content {
4867+ padding: 14px;
4868+ background-color: #ffffff;
4869+ -webkit-border-radius: 0 0 3px 3px;
4870+ -moz-border-radius: 0 0 3px 3px;
4871+ border-radius: 0 0 3px 3px;
4872+ -webkit-background-clip: padding-box;
4873+ -moz-background-clip: padding-box;
4874+ background-clip: padding-box;
4875+}
4876+.popover-content p, .popover-content ul, .popover-content ol {
4877+ margin-bottom: 0;
4878+}
4879+.thumbnails {
4880+ margin-left: -20px;
4881+ list-style: none;
4882+ *zoom: 1;
4883+}
4884+.thumbnails:before, .thumbnails:after {
4885+ display: table;
4886+ content: "";
4887+}
4888+.thumbnails:after {
4889+ clear: both;
4890+}
4891+.thumbnails > li {
4892+ float: left;
4893+ margin: 0 0 18px 20px;
4894+}
4895+.thumbnail {
4896+ display: block;
4897+ padding: 4px;
4898+ line-height: 1;
4899+ border: 1px solid #dddddd;
4900+ -webkit-border-radius: 4px;
4901+ -moz-border-radius: 4px;
4902+ border-radius: 4px;
4903+ -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.075);
4904+ -moz-box-shadow: 0 1px 1px rgba(0,0,0,.075);
4905+ box-shadow: 0 1px 1px rgba(0,0,0,.075);
4906+}
4907+a.thumbnail:hover {
4908+ border-color: #0088cc;
4909+ -webkit-box-shadow: 0 1px 4px rgba(0,105,214,.25);
4910+ -moz-box-shadow: 0 1px 4px rgba(0,105,214,.25);
4911+ box-shadow: 0 1px 4px rgba(0,105,214,.25);
4912+}
4913+.thumbnail > img {
4914+ display: block;
4915+ max-width: 100%;
4916+ margin-left: auto;
4917+ margin-right: auto;
4918+}
4919+.thumbnail .caption {
4920+ padding: 9px;
4921+}
4922+.label {
4923+ padding: 2px 4px 3px;
4924+ font-size: 11.05px;
4925+ font-weight: bold;
4926+ color: #ffffff;
4927+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
4928+ background-color: #999999;
4929+ -webkit-border-radius: 3px;
4930+ -moz-border-radius: 3px;
4931+ border-radius: 3px;
4932+}
4933+.label:hover {
4934+ color: #ffffff;
4935+ text-decoration: none;
4936+}
4937+.label-important {
4938+ background-color: #b94a48;
4939+}
4940+.label-important:hover {
4941+ background-color: #953b39;
4942+}
4943+.label-warning {
4944+ background-color: #f89406;
4945+}
4946+.label-warning:hover {
4947+ background-color: #c67605;
4948+}
4949+.label-success {
4950+ background-color: #468847;
4951+}
4952+.label-success:hover {
4953+ background-color: #356635;
4954+}
4955+.label-info {
4956+ background-color: #3a87ad;
4957+}
4958+.label-info:hover {
4959+ background-color: #2d6987;
4960+}
4961+@-webkit-keyframes progress-bar-stripes {
4962+ from {
4963+ background-position: 0 0;
4964+ }
4965+ to {
4966+ background-position: 40px 0;
4967+ }
4968+}
4969+@-moz-keyframes progress-bar-stripes {
4970+ from {
4971+ background-position: 0 0;
4972+ }
4973+ to {
4974+ background-position: 40px 0;
4975+ }
4976+}
4977+@keyframes progress-bar-stripes {
4978+ from {
4979+ background-position: 0 0;
4980+ }
4981+ to {
4982+ background-position: 40px 0;
4983+ }
4984+}
4985+.progress {
4986+ overflow: hidden;
4987+ height: 18px;
4988+ margin-bottom: 18px;
4989+ background-color: #f6f6f6;
4990+ background-image: -moz-linear-gradient(top,#f5f5f5,#f9f9f9);
4991+ background-image: -ms-linear-gradient(top,#f5f5f5,#f9f9f9);
4992+ background-image: -webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));
4993+ background-image: -webkit-linear-gradient(top,#f5f5f5,#f9f9f9);
4994+ background-image: -o-linear-gradient(top,#f5f5f5,#f9f9f9);
4995+ background-image: linear-gradient(top,#f5f5f5,#f9f9f9);
4996+ background-repeat: repeat-x;
4997+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);
4998+ -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
4999+ -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
5000+ box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches