Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

initial playdoh scaffold

  • Loading branch information...
commit a5b49035ac520cf02b3a6158a0a2515c2cbd4fd0 0 parents
@ednapiranha ednapiranha authored
Showing with 1,917 additions and 0 deletions.
  1. +17 −0 .gitignore
  2. +3 −0  .gitmodules
  3. +25 −0 LICENSE
  4. +23 −0 README.md
  5. +43 −0 Vagrantfile
  6. 0  __init__.py
  7. 0  apps/.gitignore
  8. 0  apps/__init__.py
  9. 0  apps/examples/__init__.py
  10. 0  apps/examples/models.py
  11. +36 −0 apps/examples/templates/examples/bleach.html
  12. +30 −0 apps/examples/templates/examples/home.html
  13. +5 −0 apps/examples/templates/examples/mobile/home.html
  14. +7 −0 apps/examples/urls.py
  15. +36 −0 apps/examples/views.py
  16. +28 −0 bin/compile-mo.sh
  17. +69 −0 bin/jenkins.sh
  18. +142 −0 bin/update_site.py
  19. +130 −0 docs/Makefile
  20. 0  docs/_static/.gitkeep
  21. 0  docs/_templates/.gitkeep
  22. +40 −0 docs/build-github.zsh
  23. +220 −0 docs/conf.py
  24. +30 −0 docs/index.rst
  25. +1 −0  lib/product_details_json/firefox_beta_builds.json
  26. +1 −0  lib/product_details_json/firefox_history_development_releases.json
  27. +1 −0  lib/product_details_json/firefox_history_major_releases.json
  28. +1 −0  lib/product_details_json/firefox_history_stability_releases.json
  29. +1 −0  lib/product_details_json/firefox_primary_builds.json
  30. +1 −0  lib/product_details_json/firefox_versions.json
  31. +1 −0  lib/product_details_json/languages.json
  32. +1 −0  lib/product_details_json/mobile_details.json
  33. +1 −0  lib/product_details_json/mobile_history_development_releases.json
  34. +1 −0  lib/product_details_json/mobile_history_major_releases.json
  35. +1 −0  lib/product_details_json/mobile_history_stability_releases.json
  36. +1 −0  lib/product_details_json/thunderbird_beta_builds.json
  37. +1 −0  lib/product_details_json/thunderbird_history_development_releases.json
  38. +1 −0  lib/product_details_json/thunderbird_history_major_releases.json
  39. +1 −0  lib/product_details_json/thunderbird_history_stability_releases.json
  40. +1 −0  lib/product_details_json/thunderbird_primary_builds.json
  41. +1 −0  lib/product_details_json/thunderbird_versions.json
  42. +31 −0 locale/en_US/LC_MESSAGES/messages.po
  43. +29 −0 locale/fr/LC_MESSAGES/messages.po
  44. +32 −0 locale/templates/LC_MESSAGES/messages.pot
  45. +24 −0 manage.py
  46. 0  media/css/.gitignore
  47. +52 −0 media/css/examples/main.css
  48. +73 −0 media/css/examples/mobile.css
  49. 0  media/img/.gitignore
  50. 0  media/js/.gitignore
  51. +9 −0 media/js/examples/init.js
  52. +167 −0 media/js/examples/libs/jquery-1.4.4.min.js
  53. +96 −0 media/js/examples/libs/jquery.cookie.js
  54. +1 −0  migrations/01-noop.sql
  55. 0  migrations/__init__.py
  56. +30 −0 migrations/schematic_settings.py
  57. +30 −0 puppet/files/etc/httpd/conf.d/playdoh.conf
  58. +53 −0 puppet/manifests/classes/apache.pp
  59. +3 −0  puppet/manifests/classes/custom.pp
  60. +25 −0 puppet/manifests/classes/init.pp
  61. +14 −0 puppet/manifests/classes/memcahed.pp
  62. +26 −0 puppet/manifests/classes/mysql.pp
  63. +39 −0 puppet/manifests/classes/playdoh.pp
  64. +34 −0 puppet/manifests/classes/python.pp
  65. +29 −0 puppet/manifests/vagrant.pp
  66. +1 −0  requirements/compiled.txt
  67. +6 −0 requirements/dev.txt
  68. +1 −0  requirements/prod.txt
  69. +6 −0 settings/__init__.py
  70. +56 −0 settings/base.py
  71. +70 −0 settings/local.py-dist
  72. 0  templates/.gitignore
  73. +26 −0 templates/example_base.html
  74. +26 −0 urls.py
  75. +5 −0 vagrantconfig.yaml
  76. +5 −0 vagrantconfig_local.yaml-dist
  77. 0  vendor-local/vendor.pth
  78. +17 −0 wsgi/playdoh.wsgi
17 .gitignore
@@ -0,0 +1,17 @@
+settings_local.py
+settings/local.py
+*.py[co]
+*.sw[po]
+.coverage
+pip-log.txt
+docs/_gh-pages
+build.py
+.DS_Store
+*-min.css
+*-all.css
+*-min.js
+*-all.js
+.noseids
+tmp/*
+*~
+*.mo
3  .gitmodules
@@ -0,0 +1,3 @@
+[submodule "vendor"]
+ path = vendor
+ url = git://github.com/mozilla/playdoh-lib.git
25 LICENSE
@@ -0,0 +1,25 @@
+Copyright (c) 2011, Mozilla
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the copyright owner nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 README.md
@@ -0,0 +1,23 @@
+playdoh
+=======
+
+Mozilla's Playdoh is a web application template based on [Django][django].
+
+Patches are welcome! Feel free to fork and contribute to this project on
+[github][gh-playdoh].
+
+Full [documentation][docs] is available as well.
+
+
+[django]: http://www.djangoproject.com/
+[gh-playdoh]: https://github.com/mozilla/playdoh
+[docs]: http://playdoh.rtfd.org/
+
+
+License
+-------
+This software is licensed under the [New BSD License][BSD]. For more
+information, read the file ``LICENSE``.
+
+[BSD]: http://creativecommons.org/licenses/BSD/
+
43 Vagrantfile
@@ -0,0 +1,43 @@
+require "yaml"
+
+# Load up our vagrant config files -- vagrantconfig.yaml first
+_config = YAML.load(File.open(File.join(File.dirname(__FILE__),
+ "vagrantconfig.yaml"), File::RDONLY).read)
+
+# Local-specific/not-git-managed config -- vagrantconfig_local.yaml
+begin
+ _config.merge!(YAML.load(File.open(File.join(File.dirname(__FILE__),
+ "vagrantconfig_local.yaml"), File::RDONLY).read))
+rescue Errno::ENOENT # No vagrantconfig_local.yaml found -- that's OK; just
+ # use the defaults.
+end
+
+CONF = _config
+MOUNT_POINT = '/home/vagrant/project'
+
+Vagrant::Config.run do |config|
+ config.vm.box = "lucid32"
+ config.vm.box_url = "http://files.vagrantup.com/lucid32.box"
+
+ config.vm.forward_port("web", 8000, 8000)
+
+ # Increase vagrant's patience during hang-y CentOS bootup
+ # see: https://github.com/jedi4ever/veewee/issues/14
+ config.ssh.max_tries = 50
+ config.ssh.timeout = 300
+
+ # nfs needs to be explicitly enabled to run.
+ if CONF['nfs'] == false or RUBY_PLATFORM =~ /mswin(32|64)/
+ config.vm.share_folder("v-root", MOUNT_POINT, ".")
+ else
+ config.vm.share_folder("v-root", MOUNT_POINT, ".", :nfs => true)
+ end
+
+ # Add to /etc/hosts: 33.33.33.24 dev.playdoh.org
+ config.vm.network "33.33.33.24"
+
+ config.vm.provision :puppet do |puppet|
+ puppet.manifests_path = "puppet/manifests"
+ puppet.manifest_file = "vagrant.pp"
+ end
+end
0  __init__.py
No changes.
0  apps/.gitignore
No changes.
0  apps/__init__.py
No changes.
0  apps/examples/__init__.py
No changes.
0  apps/examples/models.py
No changes.
36 apps/examples/templates/examples/bleach.html
@@ -0,0 +1,36 @@
+{% extends "example_base.html" %}
+
+{% block content %}
+<h1>Bleach</h1>
+<p>(back to the <a href="{{ url('examples.home') }}">main page</a>)</p>
+
+<p>An example showing how to use Bleach library to do user input sanitization.</p>
+
+<p>For more information, check out the <a href="https://github.com/jsocol/bleach/">
+ Bleach README</a>.</p>
+
+<p>Enter some possibly harmful text here, hit send, and see what Bleach does
+with it.</p>
+
+<form id="bleachform" method="post" action="">
+ {{ csrf() }}
+ <textarea name="bleachme">{{ bleachme if bleachme else '' }}</textarea>
+ <p>(Allowed tags: <code>&lt;strong&gt;</code>, <code>&lt;em&gt;</code>)</p>
+ <button type="submit">Bleach!</button>
+</form>
+
+{% if bleached %}
+<section id="bleached">
+ <p>Bleached, this became:</p>
+ <p>{{ bleached }}</p>
+</section>
+{% endif %}
+
+<p>Some things to try out:</p>
+<ul id="bleachable">
+ <li><code>an &lt;script&gt;evil()&lt;/script&gt; example</code></li>
+ <li><code>Hello &lt;strong&gt;world&lt;/strong&gt;!</code></li>
+ <li><code>Check out &lt;a href="http://mozilla.org"&gt;mozilla.org&lt;/a&gt;</code></li>
+ <li><code>Unbalanced &lt;em&gt;tag</code></li>
+</ul>
+{% endblock %}
30 apps/examples/templates/examples/home.html
@@ -0,0 +1,30 @@
+{% extends "example_base.html" %}
+
+{% block content %}
+<h1>
+ <a href="/">{{ _('Hello world') }}</a>
+</h1>
+
+{# L10n: This is a localizer comment #}
+{% if request.MOBILE %}
+ <p>{{ _('This is a <em>test view</em> for mobile browsers.') }}</p>
+{% else %}
+ <p>{{ _('This is a <em>test view</em> for desktop browsers.') }}</p>
+{% endif %}
+<p>
+ {% trans docs_url='http://playdoh.rtfd.org/' %}
+ <a href="{{ docs_url }}">Learn you some Playdoh</a> and then go build
+ something <strong>awesome</strong>.
+ {% endtrans %}
+</p>
+<p>
+ {% trans langs=LANGUAGES.items() %}
+ Current locale: {{ LANG }}.<br>
+ Available locales: {{ langs }}.
+ {% endtrans %}
+</p>
+<p>Some more examples:</p>
+<ul>
+ <li><a href="{{ url('examples.bleach') }}">Input sanitization with Bleach</a></li>
+</ul>
+{% endblock %}
5 apps/examples/templates/examples/mobile/home.html
@@ -0,0 +1,5 @@
+{% extends "examples/home.html" %}
+
+{% block site_css %}
+ {{ css('example_mobile_css') }}
+{% endblock %}
7 apps/examples/urls.py
@@ -0,0 +1,7 @@
+from django.conf.urls.defaults import *
+
+
+urlpatterns = patterns('examples.views',
+ url(r'^$', 'home', name='examples.home'),
+ url(r'^bleach/?$', 'bleach_test', name='examples.bleach'),
+)
36 apps/examples/views.py
@@ -0,0 +1,36 @@
+"""Example views. Feel free to delete this app."""
+
+from django import http
+from django.shortcuts import render
+
+import bleach
+import commonware
+from mobility.decorators import mobile_template
+from session_csrf import anonymous_csrf
+
+
+log = commonware.log.getLogger('playdoh')
+
+
+@mobile_template('examples/{mobile/}home.html')
+def home(request, template=None):
+ """Main example view."""
+ data = {} # You'd add data here that you're sending to the template.
+ log.debug("I'm alive!")
+ return render(request, template, data)
+
+
+@anonymous_csrf
+def bleach_test(request):
+ """A view outlining bleach's HTML sanitization."""
+ allowed_tags = ('strong', 'em')
+
+ data = {}
+
+ if request.method == 'POST':
+ bleachme = request.POST.get('bleachme', None)
+ data['bleachme'] = bleachme
+ if bleachme:
+ data['bleached'] = bleach.clean(bleachme, tags=allowed_tags)
+
+ return render(request, 'examples/bleach.html', data)
28 bin/compile-mo.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+TARGET=$1
+LOCKFILE="/tmp/compile-mo-${2}.lock"
+
+function usage() {
+ echo "syntax:"
+ echo " compile-mo.sh locale-dir/ [unique]"
+ echo "unique is an optional string that will be used as the name of the lockfile"
+ exit 1
+}
+
+# check if file and dir are there
+if [[ ($# -gt 2) || (! -d "$TARGET") ]]; then usage; fi
+
+# check if the lockfile exists
+if [ -e $LOCKFILE ]; then
+ echo "$LOCKFILE present, exiting"
+ exit 99
+fi
+
+touch $LOCKFILE
+for lang in `find $TARGET -type f -name "*.po"`; do
+ dir=`dirname $lang`
+ stem=`basename $lang .po`
+ msgfmt -o ${dir}/${stem}.mo $lang
+done
+rm $LOCKFILE
69 bin/jenkins.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+# This script makes sure that Jenkins can properly run your tests against your
+# codebase.
+set -e
+
+DB_HOST="localhost"
+DB_USER="hudson"
+
+cd $WORKSPACE
+VENV=$WORKSPACE/venv
+
+echo "Starting build on executor $EXECUTOR_NUMBER..."
+
+# Make sure there's no old pyc files around.
+find . -name '*.pyc' -exec rm {} \;
+
+if [ ! -d "$VENV/bin" ]; then
+ echo "No virtualenv found. Making one..."
+ virtualenv $VENV --no-site-packages
+ source $VENV/bin/activate
+ pip install --upgrade pip
+ pip install coverage
+fi
+
+git submodule sync -q
+git submodule update --init --recursive
+
+if [ ! -d "$WORKSPACE/vendor" ]; then
+ echo "No /vendor... crap."
+ exit 1
+fi
+
+source $VENV/bin/activate
+pip install -q -r requirements/compiled.txt
+pip install -q -r requirements/dev.txt
+
+cat > settings/local.py <<SETTINGS
+from settings.base import *
+
+ROOT_URLCONF = 'workspace.urls'
+LOG_LEVEL = logging.ERROR
+# Database name has to be set because of sphinx
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.mysql',
+ 'HOST': '${DB_HOST}',
+ 'NAME': '${JOB_NAME}',
+ 'USER': 'hudson',
+ 'PASSWORD': '',
+ 'OPTIONS': {'init_command': 'SET storage_engine=InnoDB'},
+ 'TEST_NAME': 'test_${JOB_NAME}',
+ 'TEST_CHARSET': 'utf8',
+ 'TEST_COLLATION': 'utf8_general_ci',
+ }
+}
+
+INSTALLED_APPS += ('django_nose',)
+CELERY_ALWAYS_EAGER = True
+SETTINGS
+
+echo "Creating database if we need it..."
+echo "CREATE DATABASE IF NOT EXISTS ${JOB_NAME}"|mysql -u $DB_USER -h $DB_HOST
+
+echo "Starting tests..."
+export FORCE_DB=1
+coverage run manage.py test --noinput --with-xunit
+coverage xml $(find apps lib -name '*.py')
+
+echo "FIN"
142 bin/update_site.py
@@ -0,0 +1,142 @@
+#!/usr/bin/env python
+"""
+Usage: update_site.py [options]
+Updates a server's sources, vendor libraries, packages CSS/JS
+assets, migrates the database, and other nifty deployment tasks.
+
+Options:
+ -h, --help show this help message and exit
+ -e ENVIRONMENT, --environment=ENVIRONMENT
+ Type of environment. One of (prod|dev|stage) Example:
+ update_site.py -e stage
+ -v, --verbose Echo actions before taking them.
+"""
+
+import os
+import sys
+from textwrap import dedent
+from optparse import OptionParser
+from hashlib import md5
+
+# Constants
+PROJECT = 0
+VENDOR = 1
+
+ENV_BRANCH = {
+ # 'environment': [PROJECT_BRANCH, VENDOR_BRANCH],
+ 'dev': ['base', 'master'],
+ 'stage': ['master', 'master'],
+ 'prod': ['prod', 'master'],
+}
+
+# The URL of the SVN repository with the localization files (*.po). If you set
+# it to a non-empty value, remember to `git rm --cached -r locale` in the root
+# of the project. Example:
+# LOCALE_REPO_URL = 'https://svn.mozilla.org/projects/l10n-misc/trunk/playdoh/locale'
+LOCALE_REPO_URL = ''
+
+GIT_PULL = "git pull -q origin %(branch)s"
+GIT_SUBMODULE = "git submodule update --init"
+SVN_CO = "svn checkout --force %(url)s locale"
+SVN_UP = "svn update"
+COMPILE_MO = "./bin/compile-mo.sh %(localedir)s %(unique)s"
+
+EXEC = 'exec'
+CHDIR = 'chdir'
+
+
+def update_site(env, debug):
+ """Run through commands to update this site."""
+ error_updating = False
+ here = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
+ locale = os.path.join(here, 'locale')
+ unique = md5(locale).hexdigest()
+ project_branch = {'branch': ENV_BRANCH[env][PROJECT]}
+ vendor_branch = {'branch': ENV_BRANCH[env][VENDOR]}
+
+ commands = [
+ (CHDIR, here),
+ (EXEC, GIT_PULL % project_branch),
+ (EXEC, GIT_SUBMODULE),
+ ]
+
+ # Checkout the locale repo into locale/ if the URL is known
+ if LOCALE_REPO_URL and not os.path.exists(os.path.join(locale, '.svn')):
+ commands += [
+ (EXEC, SVN_CO % {'url': LOCALE_REPO_URL}),
+ (EXEC, COMPILE_MO % {'localedir': locale, 'unique': unique}),
+ ]
+
+ # Update locale dir if applicable
+ if os.path.exists(os.path.join(locale, '.svn')):
+ commands += [
+ (CHDIR, locale),
+ (EXEC, SVN_UP),
+ (CHDIR, here),
+ (EXEC, COMPILE_MO % {'localedir': locale, 'unique': unique}),
+ ]
+ elif os.path.exists(os.path.join(locale, '.git')):
+ commands += [
+ (CHDIR, locale),
+ (EXEC, GIT_PULL % 'master'),
+ (CHDIR, here),
+ ]
+
+ commands += [
+ (CHDIR, os.path.join(here, 'vendor')),
+ (EXEC, GIT_PULL % vendor_branch),
+ (EXEC, GIT_SUBMODULE),
+ (CHDIR, os.path.join(here)),
+ (EXEC, 'python2.6 vendor/src/schematic/schematic migrations/'),
+ (EXEC, 'python2.6 manage.py compress_assets'),
+ ]
+
+ for cmd, cmd_args in commands:
+ if CHDIR == cmd:
+ if debug:
+ sys.stdout.write("cd %s\n" % cmd_args)
+ os.chdir(cmd_args)
+ elif EXEC == cmd:
+ if debug:
+ sys.stdout.write("%s\n" % cmd_args)
+ if not 0 == os.system(cmd_args):
+ error_updating = True
+ break
+ else:
+ raise Exception("Unknown type of command %s" % cmd)
+
+ if error_updating:
+ sys.stderr.write("There was an error while updating. Please try again "
+ "later. Aborting.\n")
+
+
+def main():
+ """ Handels command line args. """
+ debug = False
+ usage = dedent("""\
+ %prog [options]
+ Updates a server's sources, vendor libraries, packages CSS/JS
+ assets, migrates the database, and other nifty deployment tasks.
+ """.rstrip())
+
+ options = OptionParser(usage=usage)
+ e_help = "Type of environment. One of (%s) Example: update_site.py \
+ -e stage" % '|'.join(ENV_BRANCH.keys())
+ options.add_option("-e", "--environment", help=e_help)
+ options.add_option("-v", "--verbose",
+ help="Echo actions before taking them.",
+ action="store_true", dest="verbose")
+ (opts, _) = options.parse_args()
+
+ if opts.verbose:
+ debug = True
+ if opts.environment in ENV_BRANCH.keys():
+ update_site(opts.environment, debug)
+ else:
+ sys.stderr.write("Invalid environment!\n")
+ options.print_help(sys.stderr)
+ sys.exit(1)
+
+
+if __name__ == '__main__':
+ main()
130 docs/Makefile
@@ -0,0 +1,130 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS =
+SPHINXBUILD = sphinx-build
+PAPER =
+BUILDDIR = _build
+
+# Internal variables.
+PAPEROPT_a4 = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
+
+help:
+ @echo "Please use \`make <target>' where <target> is one of"
+ @echo " html to make standalone HTML files"
+ @echo " dirhtml to make HTML files named index.html in directories"
+ @echo " singlehtml to make a single large HTML file"
+ @echo " pickle to make pickle files"
+ @echo " json to make JSON files"
+ @echo " htmlhelp to make HTML files and a HTML help project"
+ @echo " qthelp to make HTML files and a qthelp project"
+ @echo " devhelp to make HTML files and a Devhelp project"
+ @echo " epub to make an epub"
+ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+ @echo " latexpdf to make LaTeX files and run them through pdflatex"
+ @echo " text to make text files"
+ @echo " man to make manual pages"
+ @echo " changes to make an overview of all changed/added/deprecated items"
+ @echo " linkcheck to check all external links for integrity"
+ @echo " doctest to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+ -rm -rf $(BUILDDIR)/*
+
+html:
+ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+ $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+ @echo
+ @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+ @echo
+ @echo "Build finished; now you can process the pickle files."
+
+json:
+ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+ @echo
+ @echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+ @echo
+ @echo "Build finished; now you can run HTML Help Workshop with the" \
+ ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+ $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+ @echo
+ @echo "Build finished; now you can run "qcollectiongenerator" with the" \
+ ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+ @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/playdoh.qhcp"
+ @echo "To view the help file:"
+ @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/playdoh.qhc"
+
+devhelp:
+ $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+ @echo
+ @echo "Build finished."
+ @echo "To view the help file:"
+ @echo "# mkdir -p $$HOME/.local/share/devhelp/playdoh"
+ @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/playdoh"
+ @echo "# devhelp"
+
+epub:
+ $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+ @echo
+ @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo
+ @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+ @echo "Run \`make' in that directory to run these through (pdf)latex" \
+ "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo "Running LaTeX files through pdflatex..."
+ make -C $(BUILDDIR)/latex all-pdf
+ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+ $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+ @echo
+ @echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+ $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+ @echo
+ @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+changes:
+ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+ @echo
+ @echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+ @echo
+ @echo "Link check complete; look for any errors in the above output " \
+ "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+ $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+ @echo "Testing of doctests in the sources finished, look at the " \
+ "results in $(BUILDDIR)/doctest/output.txt."
0  docs/_static/.gitkeep
No changes.
0  docs/_templates/.gitkeep
No changes.
40 docs/build-github.zsh
@@ -0,0 +1,40 @@
+#!/bin/zsh
+
+# A useful build script for projects hosted on github:
+# It can build your Sphinx docs and push them straight to your gh-pages branch.
+
+# Should be run from the docs directory: (cd docs && ./build-github.zsh)
+
+REPO=$(git config remote.origin.url)
+HERE=$(dirname $0)
+GH=$HERE/_gh-pages
+
+
+# Checkout the gh-pages branch, if necessary.
+if [[ ! -d $GH ]]; then
+ git clone $REPO $GH
+ pushd $GH
+ git checkout -b gh-pages origin/gh-pages
+ popd
+fi
+
+# Update and clean out the _gh-pages target dir.
+pushd $GH
+git pull && rm -rf *
+popd
+
+# Make a clean build.
+pushd $HERE
+make clean dirhtml
+
+# Move the fresh build over.
+cp -r _build/dirhtml/* $GH
+pushd $GH
+
+# Commit.
+git add .
+git commit -am "gh-pages build on $(date)"
+git push origin gh-pages
+
+popd
+popd
220 docs/conf.py
@@ -0,0 +1,220 @@
+# -*- coding: utf-8 -*-
+#
+# playdoh documentation build configuration file, created by
+# sphinx-quickstart on Tue Jan 4 15:11:09 2011.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration -----------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.coverage']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'a playdoh-based project'
+copyright = u'2011, the authors'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '1.0'
+# The full version, including alpha/beta/rc tags.
+release = '1.0'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. See the documentation for
+# a list of builtin themes.
+html_theme = 'default'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further. For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents. If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar. Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it. The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'playdohdoc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+ ('index', 'playdoh.tex', u'playdoh Documentation',
+ u'Mozilla', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+
+# -- Options for manual page output --------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+ ('index', 'a-playdoh-app', u"a-playdoh-app's Documentation",
+ [u'the authors'], 1)
+]
+
+
+# Example configuration for intersphinx: refer to the Python standard library.
+intersphinx_mapping = {'http://docs.python.org/': None}
30 docs/index.rst
@@ -0,0 +1,30 @@
+========================================
+Welcome to this project's documentation!
+========================================
+
+This is a documentation template for a **web application based on Playdoh**.
+Feel free to change this to your liking.
+
+
+About playdoh
+-------------
+
+This project is based on **playdoh**. Mozilla's Playdoh is an open source
+web application template based on `Django <http://www.djangoproject.com/>`_.
+
+To learn more about it, step by the `playdoh project page
+<https://github.com/mozilla/playdoh>`_.
+
+Contents
+--------
+
+.. toctree::
+ :maxdepth: 1
+
+
+Indices and tables
+------------------
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
1  lib/product_details_json/firefox_beta_builds.json
@@ -0,0 +1 @@
+{"ast":{"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"es-CL":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"es-MX":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"gd":{"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"kk":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"ku":{"3.5.16":[],"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"mn":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"3.6.13":[]},"or":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"3.6.13":{"Windows":{"filesize":8},"OS X":{"filesize":19},"Linux":{"filesize":9.8}}},"rm":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"ta":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"3.6.13":{"Windows":{"filesize":8},"OS X":{"filesize":19},"Linux":{"filesize":9.8}}},"ta-LK":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}}}
1  lib/product_details_json/firefox_history_development_releases.json
@@ -0,0 +1 @@
+{"1.0rc1":"2004-10-27","1.0rc2":"2004-11-03","1.5rc1":"2005-11-01","1.5rc2":"2005-11-10","1.5rc3":"2005-11-17","2.0b1":"2006-07-12","2.0b2":"2006-08-31","2.0rc1":"2006-09-26","2.0rc2":"2006-10-06","2.0rc3":"2007-10-16","3.0b1":"2007-11-19","3.0b2":"2007-12-18","3.0b3":"2008-02-12","3.0b4":"2008-03-10","3.0b5":"2008-04-02","3.0rc1":"2008-05-16","3.0rc2":"2008-06-03","3.1b1":"2008-08-14","3.1b2":"2008-12-08","3.1b3":"2009-03-12","3.5b4":"2009-04-27","3.5rc2":"2009-06-19","3.5rc3":"2009-06-24","3.6b1":"2009-10-30","3.6b2":"2009-11-10","3.6b3":"2009-11-17","3.6b4":"2009-11-26","3.6b5":"2009-12-17","3.6rc1":"2010-01-08","3.6rc2":"2010-01-17","3.6.3plugin1":"2010-04-08","3.6.4build1":"2010-04-20","3.6.4build3":"2010-05-04","3.6.4build4":"2010-05-14","3.6.4build5":"2010-05-26","3.6.4build6":"2010-05-28","3.6.4build7":"2010-06-14","3.6.7build1":"2010-07-02","4.0b1":"2010-07-06","4.0b2":"2010-07-27","4.0b3":"2010-08-11","4.0b4":"2010-08-24","4.0b5":"2010-09-07","4.0b6":"2010-09-14","4.0b7":"2010-11-10","4.0b8":"2010-12-22","4.0b9":"2011-01-14","4.0b10":"2011-01-25"}
1  lib/product_details_json/firefox_history_major_releases.json
@@ -0,0 +1 @@
+{"1.0":"2004-11-09","1.5":"2005-11-29","2.0":"2006-10-24","3.0":"2008-06-17","3.5":"2009-06-30","3.6":"2010-01-21"}
1  lib/product_details_json/firefox_history_stability_releases.json
@@ -0,0 +1 @@
+{"1.0.1":"2005-02-24","1.0.2":"2005-03-23","1.0.3":"2005-04-15","1.0.4":"2005-05-11","1.0.5":"2005-07-12","1.0.6":"2005-07-19","1.0.7":"2005-09-20","1.0.8":"2006-04-13","1.5.0.1":"2006-02-01","1.5.0.2":"2006-04-13","1.5.0.3":"2006-05-02","1.5.0.4":"2006-06-01","1.5.0.5":"2006-07-26","1.5.0.6":"2006-08-02","1.5.0.7":"2006-09-14","1.5.0.8":"2006-11-07","1.5.0.9":"2006-12-19","1.5.0.10":"2007-02-23","1.5.0.11":"2007-03-20","1.5.0.12":"2007-05-30","2.0.0.1":"2006-12-19","2.0.0.2":"2007-02-23","2.0.0.3":"2007-03-20","2.0.0.4":"2007-05-30","2.0.0.5":"2007-07-17","2.0.0.6":"2007-07-30","2.0.0.7":"2007-09-18","2.0.0.8":"2007-10-18","2.0.0.9":"2007-11-01","2.0.0.10":"2007-11-26","2.0.0.11":"2007-11-30","2.0.0.12":"2008-02-07","2.0.0.13":"2008-03-25","2.0.0.14":"2008-04-16","2.0.0.15":"2008-07-01","2.0.0.16":"2008-07-15","2.0.0.17":"2008-09-23","2.0.0.18":"2008-11-12","2.0.0.19":"2008-12-16","2.0.0.20":"2008-12-18","3.0.1":"2008-07-16","3.0.2":"2008-09-23","3.0.3":"2008-09-26","3.0.4":"2008-11-12","3.0.5":"2008-12-16","3.0.6":"2009-02-03","3.0.7":"2009-03-04","3.0.8":"2009-03-27","3.0.9":"2009-04-21","3.0.10":"2009-04-27","3.0.11":"2009-06-11","3.0.12":"2009-07-21","3.0.13":"2009-08-03","3.0.14":"2009-09-09","3.0.15":"2009-10-27","3.0.16":"2009-12-15","3.0.17":"2010-01-05","3.0.18":"2010-02-17","3.0.19":"2010-03-30","3.5.1":"2009-07-17","3.5.2":"2009-08-03","3.5.3":"2009-09-09","3.5.4":"2009-10-27","3.5.5":"2009-11-05","3.5.6":"2009-12-15","3.5.7":"2010-01-05","3.5.8":"2010-02-17","3.5.9":"2010-03-30","3.5.10":"2010-06-22","3.5.11":"2010-07-20","3.5.12":"2010-09-07","3.5.13":"2010-09-15","3.5.14":"2010-10-19","3.5.15":"2010-10-27","3.6.16":"2010-12-09","3.6.2":"2010-03-22","3.6.3":"2010-04-01","3.6.4":"2010-06-22","3.6.6":"2010-06-26","3.6.7":"2010-07-20","3.6.8":"2010-07-23","3.6.9":"2010-09-07","3.6.10":"2010-09-15","3.6.11":"2010-10-19","3.6.12":"2010-10-27","3.6.13":"2010-12-09"}
1  lib/product_details_json/firefox_primary_builds.json
@@ -0,0 +1 @@
+{"af":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"ak":{"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"ar":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"as":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"be":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"bg":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"bn-BD":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"bn-IN":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"br":{"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"ca":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"cs":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"cy":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"da":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":11}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":11}}},"de":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"el":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"en-GB":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"en-US":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":8},"OS X":{"filesize":19},"Linux":{"filesize":9.8}},"3.6.13":{"Windows":{"filesize":8},"OS X":{"filesize":19},"Linux":{"filesize":9.8}}},"en-ZA":{"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"eo":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"es-AR":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"es-ES":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"et":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"eu":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"fa":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"fi":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"fr":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":8.1},"OS X":{"filesize":19},"Linux":{"filesize":9.8}},"3.6.13":{"Windows":{"filesize":8.1},"OS X":{"filesize":19},"Linux":{"filesize":9.8}}},"fy-NL":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"ga-IE":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"gl":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"gu-IN":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"he":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"hi-IN":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"hr":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"hu":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":8.4},"OS X":{"filesize":19},"Linux":{"filesize":11}},"3.6.13":{"Windows":{"filesize":8.4},"OS X":{"filesize":19},"Linux":{"filesize":11}}},"hy-AM":{"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"id":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"is":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"it":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"ja":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":8},"OS X":{"filesize":19},"Linux":{"filesize":9.8}}},"ka":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"3.6.13":{"Windows":{"filesize":8},"OS X":{"filesize":19},"Linux":{"filesize":9.8}}},"kk":{"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"kn":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"ko":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"ku":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":[]},"lg":{"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"lt":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":8.1},"OS X":{"filesize":19},"Linux":{"filesize":9.9}},"3.6.13":{"Windows":{"filesize":8.1},"OS X":{"filesize":19},"Linux":{"filesize":9.9}}},"lv":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":8.4},"OS X":{"filesize":20},"Linux":{"filesize":11}},"3.6.13":{"Windows":{"filesize":8.4},"OS X":{"filesize":20},"Linux":{"filesize":11}}},"mai":{"4.0b10":{"Windows":{"filesize":8.3},"OS X":{"filesize":20},"Linux":{"filesize":11}}},"mk":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":8.3},"OS X":{"filesize":20},"Linux":{"filesize":11}},"3.6.13":{"Windows":{"filesize":8.3},"OS X":{"filesize":20},"Linux":{"filesize":11}}},"ml":{"4.0b10":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"mr":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"nb-NO":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"nl":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":8.7},"OS X":{"filesize":20},"Linux":{"filesize":11}},"3.6.13":{"Windows":{"filesize":8.7},"OS X":{"filesize":20},"Linux":{"filesize":11}}},"nn-NO":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"nso":{"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"oc":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"or":{"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"pa-IN":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"pl":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":8.7},"OS X":{"filesize":20},"Linux":{"filesize":11}},"3.6.13":{"Windows":{"filesize":8.7},"OS X":{"filesize":20},"Linux":{"filesize":11}}},"pt-BR":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"pt-PT":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":8},"OS X":{"filesize":19},"Linux":{"filesize":9.8}},"3.6.13":{"Windows":{"filesize":8},"OS X":{"filesize":19},"Linux":{"filesize":9.8}}},"ro":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":8.2},"OS X":{"filesize":19},"Linux":{"filesize":11}},"3.6.13":{"Windows":{"filesize":8.2},"OS X":{"filesize":19},"Linux":{"filesize":11}}},"ru":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":8.2},"OS X":{"filesize":19},"Linux":{"filesize":11}},"3.6.13":{"Windows":{"filesize":8.2},"OS X":{"filesize":19},"Linux":{"filesize":11}}},"si":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":8.2},"OS X":{"filesize":19},"Linux":{"filesize":11}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"sk":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":8.3},"OS X":{"filesize":19},"Linux":{"filesize":11}},"3.6.13":{"Windows":{"filesize":8.3},"OS X":{"filesize":19},"Linux":{"filesize":11}}},"sl":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"son":{"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"sq":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"sr":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"3.6.13":{"Windows":{"filesize":8.9},"OS X":{"filesize":21},"Linux":{"filesize":12}}},"sv-SE":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":8.1},"OS X":{"filesize":19},"Linux":{"filesize":9.9}},"3.6.13":{"Windows":{"filesize":8.1},"OS X":{"filesize":19},"Linux":{"filesize":9.9}}},"ta":{"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"ta-LK":{"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"te":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"th":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"tr":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"uk":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":8.2},"OS X":{"filesize":19},"Linux":{"filesize":10}}},"vi":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"3.6.13":{"Windows":{"filesize":7.9},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}},"zh-CN":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.5}}},"zh-TW":{"3.5.16":{"Windows":{"filesize":7.6},"OS X":{"filesize":17.4},"Linux":{"filesize":9.2}},"4.0b10":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}},"3.6.13":{"Windows":{"filesize":7.8},"OS X":{"filesize":19},"Linux":{"filesize":9.6}}}}
1  lib/product_details_json/firefox_versions.json
@@ -0,0 +1 @@
+{"LATEST_FIREFOX_VERSION":"3.6.13","LATEST_FIREFOX_DEVEL_VERSION":"4.0b10","LATEST_FIREFOX_RELEASED_DEVEL_VERSION":"4.0b10","LATEST_FIREFOX_OLDER_VERSION":"3.5.16"}
1  lib/product_details_json/languages.json
@@ -0,0 +1 @@
+{"af":{"English":"Afrikaans","native":"Afrikaans"},"ak":{"English":"Akan","native":"Akan"},"ast":{"English":"Asturian","native":"Asturianu"},"ar":{"English":"Arabic","native":"\u0639\u0631\u0628\u064a"},"as":{"English":"Assamese","native":"\u0985\u09b8\u09ae\u09c0\u09af\u09bc\u09be"},"be":{"English":"Belarusian","native":"\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f"},"bg":{"English":"Bulgarian","native":"\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"},"bn-BD":{"English":"Bengali (Bangladesh)","native":"\u09ac\u09be\u0982\u09b2\u09be (\u09ac\u09be\u0982\u09b2\u09be\u09a6\u09c7\u09b6)"},"bn-IN":{"English":"Bengali (India)","native":"\u09ac\u09be\u0982\u09b2\u09be (\u09ad\u09be\u09b0\u09a4)"},"br":{"English":"Breton","native":"Brezhoneg"},"ca":{"English":"Catalan","native":"catal\u00e0"},"ca-valencia":{"English":"Catalan (Valencian)","native":"catal\u00e0 (valenci\u00e0)"},"cs":{"English":"Czech","native":"\u010ce\u0161tina"},"cy":{"English":"Welsh","native":"Cymraeg"},"da":{"English":"Danish","native":"Dansk"},"de":{"English":"German","native":"Deutsch"},"de-AT":{"English":"German (Austria)","native":"Deutsch (\u00d6sterreich)"},"de-CH":{"English":"German (Switzerland)","native":"Deutsch (Schweiz)"},"de-DE":{"English":"German (Germany)","native":"Deutsch (Deutschland)"},"dsb":{"English":"Lower Sorbian","native":"Dolnoserb\u0161\u0107ina"},"el":{"English":"Greek","native":"\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"},"en-AU":{"English":"English (Australian)","native":"English (Australian)"},"en-CA":{"English":"English (Canadian)","native":"English (Canadian)"},"en-GB":{"English":"English (British)","native":"English (British)"},"en-NZ":{"English":"English (New Zealand)","native":"English (New Zealand)"},"en-US":{"English":"English (US)","native":"English (US)"},"en-ZA":{"English":"English (South African)","native":"English (South African)"},"eo":{"English":"Esperanto","native":"Esperanto"},"es":{"English":"Spanish","native":"Espa\u00f1ol"},"es-AR":{"English":"Spanish (Argentina)","native":"Espa\u00f1ol (de Argentina)"},"es-CL":{"English":"Spanish (Chile)","native":"Espa\u00f1ol (de Chile)"},"es-ES":{"English":"Spanish (Spain)","native":"Espa\u00f1ol (de Espa\u00f1a)"},"es-MX":{"English":"Spanish (Mexico)","native":"Espa\u00f1ol (de M\u00e9xico)"},"et":{"English":"Estonian","native":"Eesti keel"},"eu":{"English":"Basque","native":"Euskara"},"fa":{"English":"Persian","native":"\u0641\u0627\u0631\u0633\u06cc"},"fi":{"English":"Finnish","native":"suomi"},"fj-FJ":{"English":"Fijian","native":"Vosa vaka-Viti"},"fr":{"English":"French","native":"Fran\u00e7ais"},"fur-IT":{"English":"Friulian","native":"Furlan"},"fy-NL":{"English":"Frisian","native":"Frysk"},"ga":{"English":"Irish","native":"Gaeilge"},"ga-IE":{"English":"Irish (Ireland)","native":"Gaeilge (\u00c9ire)"},"gd":{"English":"Gaelic (Scotland)","native":"G\u00e0idhlig"},"gl":{"English":"Galician","native":"Galego"},"gu-IN":{"English":"Gujarati","native":"\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0"},"he":{"English":"Hebrew","native":"\u05e2\u05d1\u05e8\u05d9\u05ea"},"hi":{"English":"Hindi","native":"\u0939\u093f\u0928\u094d\u0926\u0940"},"hi-IN":{"English":"Hindi (India)","native":"\u0939\u093f\u0928\u094d\u0926\u0940 (\u092d\u093e\u0930\u0924)"},"hr":{"English":"Croatian","native":"Hrvatski"},"hsb":{"English":"Upper Sorbian","native":"Hornjoserbsce"},"hu":{"English":"Hungarian","native":"Magyar"},"hy-AM":{"English":"Armenian","native":"\u0540\u0561\u0575\u0565\u0580\u0565\u0576"},"id":{"English":"Indonesian","native":"Bahasa Indonesia"},"is":{"English":"Icelandic","native":"\u00edslenska"},"it":{"English":"Italian","native":"Italiano"},"ja":{"English":"Japanese","native":"\u65e5\u672c\u8a9e"},"ja-JP-mac":{"English":"Japanese","native":"\u65e5\u672c\u8a9e"},"ka":{"English":"Georgian","native":"\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8"},"kk":{"English":"Kazakh","native":"\u049a\u0430\u0437\u0430\u049b"},"kn":{"English":"Kannada","native":"\u0c95\u0ca8\u0ccd\u0ca8\u0ca1"},"ko":{"English":"Korean","native":"\ud55c\uad6d\uc5b4"},"ku":{"English":"Kurdish","native":"Kurd\u00ee"},"la":{"English":"Latin","native":"Latina"},"lg":{"English":"Luganda","native":"Luganda"},"lt":{"English":"Lithuanian","native":"lietuvi\u0173 kalba"},"lv":{"English":"Latvian","native":"Latvie\u0161u"},"mai":{"English":"Maithili","native":"\u092e\u0948\u0925\u093f\u0932\u0940 \u09ae\u09c8\u09a5\u09bf\u09b2\u09c0"},"mg":{"English":"Malagasy","native":"Malagasy"},"mi":{"English":"Maori (Aotearoa)","native":"M\u0101ori (Aotearoa)"},"mk":{"English":"Macedonian","native":"\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438"},"ml":{"English":"Malayalam","native":"\u0d2e\u0d32\u0d2f\u0d3e\u0d33\u0d02"},"mn":{"English":"Mongolian","native":"\u041c\u043e\u043d\u0433\u043e\u043b"},"mr":{"English":"Marathi","native":"\u092e\u0930\u093e\u0920\u0940"},"nb-NO":{"English":"Norwegian (Bokm\u00e5l)","native":"Norsk bokm\u00e5l"},"ne-NP":{"English":"Nepali","native":"\u0928\u0947\u092a\u093e\u0932\u0940"},"nn-NO":{"English":"Norwegian (Nynorsk)","native":"Norsk nynorsk"},"nl":{"English":"Dutch","native":"Nederlands"},"nr":{"English":"Ndebele, South","native":"isiNdebele"},"nso":{"English":"Northern Sotho","native":"Sepedi"},"oc":{"English":"Occitan (Lengadocian)","native":"occitan (lengadocian)"},"or":{"English":"Oriya","native":"\u0b13\u0b21\u0b3c\u0b3f\u0b06"},"pa-IN":{"English":"Punjabi","native":"\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40"},"pl":{"English":"Polish","native":"Polski"},"pt-BR":{"English":"Portuguese (Brazilian)","native":"Portugu\u00eas (do Brasil)"},"pt-PT":{"English":"Portuguese (Portugal)","native":"Portugu\u00eas (Europeu)"},"ro":{"English":"Romanian","native":"rom\u00e2n\u0103"},"rm":{"English":"Romansh","native":"rumantsch"},"ru":{"English":"Russian","native":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439"},"rw":{"English":"Kinyarwanda","native":"Ikinyarwanda"},"si":{"English":"Sinhala","native":"\u0dc3\u0dd2\u0d82\u0dc4\u0dbd"},"sk":{"English":"Slovak","native":"sloven\u010dina"},"sl":{"English":"Slovenian","native":"slovensko"},"son":{"English":"Songhai","native":"So\u014bay"},"sq":{"English":"Albanian","native":"Shqip"},"sr":{"English":"Serbian","native":"\u0421\u0440\u043f\u0441\u043a\u0438"},"sr-Latn":{"English":"Serbian","native":"Srpski"},"ss":{"English":"Siswati","native":"siSwati"},"st":{"English":"Southern Sotho","native":"Sesotho"},"sv-SE":{"English":"Swedish","native":"Svenska"},"ta":{"English":"Tamil","native":"\u0ba4\u0bae\u0bbf\u0bb4\u0bcd"},"ta-IN":{"English":"Tamil (India)","native":"\u0ba4\u0bae\u0bbf\u0bb4\u0bcd (\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe)"},"ta-LK":{"English":"Tamil (Sri Lanka)","native":"\u0ba4\u0bae\u0bbf\u0bb4\u0bcd (\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8)"},"te":{"English":"Telugu","native":"\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41"},"th":{"English":"Thai","native":"\u0e44\u0e17\u0e22"},"tn":{"English":"Tswana","native":"Setswana"},"tr":{"English":"Turkish","native":"T\u00fcrk\u00e7e"},"ts":{"English":"Tsonga","native":"Xitsonga"},"tt-RU":{"English":"Tatar","native":"Tatar\u00e7a"},"uk":{"English":"Ukrainian","native":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"},"ur":{"English":"Urdu","native":"\u0627\u064f\u0631\u062f\u0648"},"ve":{"English":"Venda","native":"Tshiven\u1e13a"},"vi":{"English":"Vietnamese","native":"Ti\u1ebfng Vi\u1ec7t"},"wo":{"English":"Wolof","native":"Wolof"},"xh":{"English":"Xhosa","native":"isiXhosa"},"zh-CN":{"English":"Chinese (Simplified)","native":"\u4e2d\u6587 (\u7b80\u4f53)"},"zh-TW":{"English":"Chinese (Traditional)","native":"\u6b63\u9ad4\u4e2d\u6587 (\u7e41\u9ad4)"},"zu":{"English":"Zulu","native":"isiZulu"}}
1  lib/product_details_json/mobile_details.json
@@ -0,0 +1 @@
+{"version":"1.1","beta_version":"4.0b3","builds":[{"locale":{"code":"ar","english":"Arabic","native":"\u0639\u0631\u0628\u064a"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=ar","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"be","english":"Belarusian","native":"\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=be","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"ca","english":"Catalan","native":"catal\u00e0"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=ca","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"cs","english":"Czech","native":"\u010ce\u0161tina"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=multi","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"da","english":"Danish","native":"Dansk"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=multi","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"de","english":"German","native":"Deutsch"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=multi","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"el","english":"Greek","native":"\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=el","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"en-US","english":"English (US)","native":"English (US)"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=multi","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"es-AR","english":"Spanish (Argentina)","native":"Espa\u00f1ol (de Argentina)"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=es-AR","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"es-ES","english":"Spanish (Spain)","native":"Espa\u00f1ol (de Espa\u00f1a)"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=multi","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"eu","english":"Basque","native":"Euskara"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=eu","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"fa","english":"Persian","native":"\u0641\u0627\u0631\u0633\u06cc"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=fa","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"fi","english":"Finnish","native":"suomi"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=multi","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"fr","english":"French","native":"Fran\u00e7ais"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=multi","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"fy-NL","english":"Frisian","native":"Frysk"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=fy-NL","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"ga-IE","english":"Irish (Ireland)","native":"Gaeilge (\u00c9ire)"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=ga-IE","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"gl","english":"Galician","native":"Galego"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=gl","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"hu","english":"Hungarian","native":"Magyar"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=hu","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"it","english":"Italian","native":"Italiano"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=multi","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"ja","english":"Japanese","native":"\u65e5\u672c\u8a9e"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=ja","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"lt","english":"Lithuanian","native":"lietuvi\u0173 kalba"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=lt","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"nb-NO","english":"Norwegian (Bokm\u00e5l)","native":"Norsk bokm\u00e5l"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=multi","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"nl","english":"Dutch","native":"Nederlands"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=multi","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"nn-NO","english":"Norwegian (Nynorsk)","native":"Norsk nynorsk"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=nn-NO","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"pa-IN","english":"Punjabi","native":"\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=pa-IN","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"pl","english":"Polish","native":"Polski"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=multi","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"pt-BR","english":"Portuguese (Brazilian)","native":"Portugu\u00eas (do Brasil)"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=pt-BR","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"pt-PT","english":"Portuguese (Portugal)","native":"Portugu\u00eas (Europeu)"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=multi","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"ro","english":"Romanian","native":"rom\u00e2n\u0103"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=ro","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"ru","english":"Russian","native":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=multi","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"sk","english":"Slovak","native":"sloven\u010dina"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=sk","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"sl","english":"Slovenian","native":"slovensko"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=sl","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"sr","english":"Serbian","native":"\u0421\u0440\u043f\u0441\u043a\u0438"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=sr","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"tr","english":"Turkish","native":"T\u00fcrk\u00e7e"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=tr","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"uk","english":"Ukrainian","native":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=uk","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"vi","english":"Vietnamese","native":"Ti\u1ebfng Vi\u1ec7t"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=vi","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"zh-CN","english":"Chinese (Simplified)","native":"\u4e2d\u6587 (\u7b80\u4f53)"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=zh-CN","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}},{"locale":{"code":"zh-TW","english":"Chinese (Traditional)","native":"\u6b63\u9ad4\u4e2d\u6587 (\u7e41\u9ad4)"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-1.1&os=maemo&lang=zh-TW","win32":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/win32-i686\/fennec-4.0b3.en-US.win32.zip","mac":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/macosx-i686\/fennec-4.0b3.en-US.mac.dmg","linux-i686":"http:\/\/ftp.mozilla.org\/pub\/mozilla.org\/mobile\/releases\/4.0b3\/linux-i686\/fennec-4.0b3.en-US.linux-i686.tar.bz2"}}],"beta_builds":[{"locale":{"code":"cs","english":"Czech","native":"\u010ce\u0161tina"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-4.0b3&os=maemo&lang=multi","android":"market:\/\/details?id=org.mozilla.firefox"}},{"locale":{"code":"en-US","english":"English (US)","native":"English (US)"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-4.0b3&os=maemo&lang=multi","android":"market:\/\/details?id=org.mozilla.firefox"}},{"locale":{"code":"es-ES","english":"Spanish (Spain)","native":"Espa\u00f1ol (de Espa\u00f1a)"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-4.0b3&os=maemo&lang=multi","android":"market:\/\/details?id=org.mozilla.firefox"}},{"locale":{"code":"fi","english":"Finnish","native":"suomi"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-4.0b3&os=maemo&lang=multi","android":"market:\/\/details?id=org.mozilla.firefox"}},{"locale":{"code":"it","english":"Italian","native":"Italiano"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-4.0b3&os=maemo&lang=multi","android":"market:\/\/details?id=org.mozilla.firefox"}},{"locale":{"code":"nb-NO","english":"Norwegian (Bokm\u00e5l)","native":"Norsk bokm\u00e5l"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-4.0b3&os=maemo&lang=multi","android":"market:\/\/details?id=org.mozilla.firefox"}},{"locale":{"code":"nl","english":"Dutch","native":"Nederlands"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-4.0b3&os=maemo&lang=multi","android":"market:\/\/details?id=org.mozilla.firefox"}},{"locale":{"code":"pl","english":"Polish","native":"Polski"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-4.0b3&os=maemo&lang=multi","android":"market:\/\/details?id=org.mozilla.firefox"}},{"locale":{"code":"pt-PT","english":"Portuguese (Portugal)","native":"Portugu\u00eas (Europeu)"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-4.0b3&os=maemo&lang=multi","android":"market:\/\/details?id=org.mozilla.firefox"}},{"locale":{"code":"ru","english":"Russian","native":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439"},"download":{"maemo":"http:\/\/download.mozilla.org\/?product=firefox-mobile-4.0b3&os=maemo&lang=multi","android":"market:\/\/details?id=org.mozilla.firefox"}}]}
1  lib/product_details_json/mobile_history_development_releases.json
@@ -0,0 +1 @@
+{"1.1b1":"2010-04-28","1.1rc1":"2010-06-16","4.0b1":"2010-10-06","4.0b2":"2010-11-04","4.0b3":"2010-12-22"}
1  lib/product_details_json/mobile_history_major_releases.json
@@ -0,0 +1 @@
+{"1.0":"2010-01-28","1.1":"2010-07-01"}
1  lib/product_details_json/mobile_history_stability_releases.json
@@ -0,0 +1 @@
+{"1.0.1":"2010-04-13"}
1  lib/product_details_json/thunderbird_beta_builds.json
@@ -0,0 +1 @@
+[]
1  lib/product_details_json/thunderbird_history_development_releases.json
@@ -0,0 +1 @@
+{"1.0rc1":"2004-12-01","1.5b1":"2005-09-09","1.5b2":"2005-10-07","1.5rc1":"2005-11-05","1.5rc2":"2005-12-21","2.0b1":"2006-12-12","2.0b2":"2007-01-23","2.0rc1":"2007-04-06","3.0a1":"2008-05-12","3.0a2":"2008-07-13","3.0a3":"2008-10-14","3.0b1":"2008-12-09","3.0b2":"2009-02-26","3.0b3":"2009-07-21","3.0b4":"2009-10-22","3.0rc1":"2009-11-24","3.0rc2":"2009-12-01","3.1a1":"2010-02-03","3.1b1":"2010-03-10","3.1rc1":"2010-05-27","3.1rc2":"2010-06-09"}
1  lib/product_details_json/thunderbird_history_major_releases.json
@@ -0,0 +1 @@
+{"1.0":"2004-12-07","1.5":"2006-01-11","2.0":"2007-04-18","3.0":"2009-12-08","3.1":"2010-06-24"}
1  lib/product_details_json/thunderbird_history_stability_releases.json
@@ -0,0 +1 @@
+{"1.0.2":"2005-03-21","1.0.5":"2005-07-13","1.0.6":"2005-07-19","1.0.7":"2005-09-29","1.0.8":"2006-04-21","1.5.0.2":"2006-04-21","1.5.0.4":"2006-06-01","1.5.0.5":"2006-07-27","1.5.0.7":"2006-09-14","1.5.0.8":"2006-11-08","1.5.0.9":"2006-12-19","1.5.0.10":"2007-03-01","1.5.0.12":"2007-05-30","1.5.0.13":"2007-08-23","2.0.0.4":"2007-06-14","2.0.0.5":"2007-07-19","2.0.0.6":"2007-08-01","2.0.0.9":"2007-11-14","2.0.0.12":"2008-02-26","2.0.0.14":"2008-05-01","2.0.0.16":"2008-07-23","2.0.0.17":"2008-09-25","2.0.0.18":"2008-11-19","2.0.0.19":"2008-12-30","2.0.0.21":"2009-03-18","2.0.0.22":"2009-06-22","2.0.0.23":"2009-08-20","2.0.0.24":"2010-03-16","3.0.1":"2010-01-20","3.0.2":"2010-02-25","3.0.3":"2010-03-01","3.0.4":"2010-03-30","3.0.5":"2010-06-17","3.0.6":"2010-07-20","3.0.7":"2010-09-07","3.0.8":"2010-09-16","3.0.9":"2010-10-19","3.0.10":"2010-10-27","3.1.1":"2010-07-20","3.1.2":"2010-08-05","3.1.3":"2010-09-07","3.1.4":"2010-09-16","3.1.5":"2010-10-19","3.1.6":"2010-10-27"}
1  lib/product_details_json/thunderbird_primary_builds.json
@@ -0,0 +1 @@
+{"af":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"ar":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"be":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.2},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.7}}},"bg":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.3}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"bn-BD":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.3}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"ca":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.3}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"cs":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"da":{"3.0.11":{"Windows":{"filesize":8.9},"OS X":{"filesize":19.8},"Linux":{"filesize":10.8}},"3.1.7":{"Windows":{"filesize":9.3},"OS X":{"filesize":21},"Linux":{"filesize":11.3}}},"de":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.3}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"el":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"en-GB":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"en-US":{"3.0.11":{"Windows":{"filesize":8.6},"OS X":{"filesize":19.5},"Linux":{"filesize":10.5}},"3.1.7":{"Windows":{"filesize":9},"OS X":{"filesize":20.6},"Linux":{"filesize":11}}},"es-AR":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.3}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"es-ES":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.2},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.8},"OS X":{"filesize":20.4},"Linux":{"filesize":10.7}}},"et":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"eu":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"fi":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"fr":{"3.0.11":{"Windows":{"filesize":8.7},"OS X":{"filesize":19.5},"Linux":{"filesize":10.5}},"3.1.7":{"Windows":{"filesize":9.1},"OS X":{"filesize":20.7},"Linux":{"filesize":11}}},"fy-NL":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.3}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"ga-IE":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.3}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"gd":{"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"gl":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"he":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.2},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"hu":{"3.0.11":{"Windows":{"filesize":9},"OS X":{"filesize":19.9},"Linux":{"filesize":10.9}},"3.1.7":{"Windows":{"filesize":9.4},"OS X":{"filesize":21.1},"Linux":{"filesize":11.4}}},"id":{"3.0.11":{"Windows":{"filesize":8.6},"OS X":{"filesize":19.3},"Linux":{"filesize":10.3}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.5},"Linux":{"filesize":10.9}}},"is":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"it":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.2},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.8},"OS X":{"filesize":20.4},"Linux":{"filesize":10.7}}},"ja":{"3.0.11":{"Windows":{"filesize":8.7},"OS X":{"filesize":19.5},"Linux":{"filesize":10.5}},"3.1.7":{"Windows":{"filesize":9},"OS X":{"filesize":20.7},"Linux":{"filesize":11}}},"ka":{"3.0.11":{"Windows":{"filesize":8.7},"OS X":{"filesize":19.5},"Linux":{"filesize":10.5}}},"ko":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.2},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"lt":{"3.0.11":{"Windows":{"filesize":8.8},"OS X":{"filesize":19.6},"Linux":{"filesize":10.6}},"3.1.7":{"Windows":{"filesize":9.2},"OS X":{"filesize":20.8},"Linux":{"filesize":11.1}}},"nb-NO":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"nl":{"3.0.11":{"Windows":{"filesize":9.3},"OS X":{"filesize":20.1},"Linux":{"filesize":11}},"3.1.7":{"Windows":{"filesize":9.7},"OS X":{"filesize":21.3},"Linux":{"filesize":11.6}}},"nn-NO":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"pa-IN":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.3}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"pl":{"3.0.11":{"Windows":{"filesize":9.3},"OS X":{"filesize":20.2},"Linux":{"filesize":11.3}},"3.1.7":{"Windows":{"filesize":9.7},"OS X":{"filesize":21.4},"Linux":{"filesize":11.8}}},"pt-BR":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"pt-PT":{"3.0.11":{"Windows":{"filesize":8.7},"OS X":{"filesize":19.4},"Linux":{"filesize":10.4}},"3.1.7":{"Windows":{"filesize":9},"OS X":{"filesize":20.6},"Linux":{"filesize":11}}},"ro":{"3.0.11":{"Windows":{"filesize":8.9},"OS X":{"filesize":19.8},"Linux":{"filesize":10.8}},"3.1.7":{"Windows":{"filesize":9.3},"OS X":{"filesize":21},"Linux":{"filesize":11.3}}},"ru":{"3.0.11":{"Windows":{"filesize":8.9},"OS X":{"filesize":19.7},"Linux":{"filesize":10.7}},"3.1.7":{"Windows":{"filesize":9.3},"OS X":{"filesize":20.9},"Linux":{"filesize":11.2}}},"si":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.3}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"sk":{"3.0.11":{"Windows":{"filesize":9},"OS X":{"filesize":19.8},"Linux":{"filesize":10.8}},"3.1.7":{"Windows":{"filesize":9.3},"OS X":{"filesize":21},"Linux":{"filesize":11.4}}},"sl":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"sq":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"sr":{"3.0.11":{"Windows":{"filesize":9.6},"OS X":{"filesize":20.9},"Linux":{"filesize":12.1}},"3.1.7":{"Windows":{"filesize":10},"OS X":{"filesize":22.1},"Linux":{"filesize":12.6}}},"sv-SE":{"3.0.11":{"Windows":{"filesize":8.7},"OS X":{"filesize":19.6},"Linux":{"filesize":10.6}},"3.1.7":{"Windows":{"filesize":9.1},"OS X":{"filesize":20.8},"Linux":{"filesize":11.1}}},"ta-LK":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.3}}},"tr":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"uk":{"3.0.11":{"Windows":{"filesize":8.9},"OS X":{"filesize":19.7},"Linux":{"filesize":10.7}},"3.1.7":{"Windows":{"filesize":9.3},"OS X":{"filesize":20.8},"Linux":{"filesize":11.2}}},"vi":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.3}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.5},"Linux":{"filesize":10.8}}},"zh-CN":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.2},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}},"zh-TW":{"3.0.11":{"Windows":{"filesize":8.5},"OS X":{"filesize":19.3},"Linux":{"filesize":10.2}},"3.1.7":{"Windows":{"filesize":8.9},"OS X":{"filesize":20.4},"Linux":{"filesize":10.8}}}}
1  lib/product_details_json/thunderbird_versions.json
@@ -0,0 +1 @@
+{"LATEST_THUNDERBIRD_VERSION":"3.1.7","LATEST_THUNDERBIRD__OLDER_VERSION":"3.0.11"}
31 locale/en_US/LC_MESSAGES/messages.po
@@ -0,0 +1,31 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-05-26 18:11-0700\n"
+"PO-Revision-Date: 2011-05-26 18:11-0700\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: en_US\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.8.0\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: apps/examples/templates/examples/home.html:5
+msgid "Hello world"
+msgstr "Hello world"
+
+#. This is a localizer comment
+#: apps/examples/templates/examples/home.html:9
+msgid "This is a <em>test view</em>."
+msgstr "This is a <em>test view</em>."
+
+#: apps/examples/templates/examples/home.html:11
+msgid "<a href=\"%(docs_url)s\">Learn you some Playdoh</a> and then go build something <strong>awesome</strong>."
+msgstr "<a href=\"%(docs_url)s\">Learn you some Playdoh</a> and then go build something <strong>awesome</strong>."
+
+#: apps/examples/templates/examples/home.html:17
+msgid "Current locale: %(LANG)s.<br> Available locales: %(langs)s."
+msgstr "Current locale: %(LANG)s.<br> Available locales: %(langs)s."
29 locale/fr/LC_MESSAGES/messages.po
@@ -0,0 +1,29 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-06-03 19:07-0700\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: apps/examples/templates/examples/home.html:5
+msgid "Hello world"
+msgstr "Bonjour le monde"
+
+#. This is a localizer comment
+#: apps/examples/templates/examples/home.html:9
+msgid "This is a <em>test view</em>."
+msgstr "Ceci est une <em>vue de test</em>."
+
+#: apps/examples/templates/examples/home.html:11
+msgid "<a href=\"%(docs_url)s\">Learn you some Playdoh</a> and then go build something <strong>awesome</strong>."
+msgstr "<a href=\"%(docs_url)s\">Apprends à jouer avec Playdoh</a> et construis quelque chose de <strong>génial</strong>."
+
+#: apps/examples/templates/examples/home.html:17
+msgid "Current locale: %(LANG)s.<br> Available locales: %(langs)s."
+msgstr "Langue active&nbsp;: %(LANG)s.<br> Langues disponibles&nbsp;: %(langs)s."
32 locale/templates/LC_MESSAGES/messages.pot
@@ -0,0 +1,32 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-06-03 19:07-0700\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.8.0\n"
+
+#: apps/examples/templates/examples/home.html:5
+msgid "Hello world"
+msgstr ""
+
+#. This is a localizer comment
+#: apps/examples/templates/examples/home.html:9
+msgid "This is a <em>test view</em>."
+msgstr ""
+
+#: apps/examples/templates/examples/home.html:11
+msgid ""
+"<a href=\"%(docs_url)s\">Learn you some Playdoh</a> and then go build "
+"something <strong>awesome</strong>."
+msgstr ""
+
+#: apps/examples/templates/examples/home.html:17
+msgid "Current locale: %(LANG)s.<br> Available locales: %(langs)s."
+msgstr ""
24 manage.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+import os
+import sys
+
+try:
+ # For local development in a virtualenv:
+ from funfactory import manage
+except ImportError:
+ # Production:
+ # Add a temporary path so that we can import the funfactory
+ tmp_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),
+ 'vendor', 'src', 'funfactory')
+ sys.path.append(tmp_path)
+
+ from funfactory import manage
+
+ # Let the path magic happen in setup_environ() !
+ sys.path.remove(tmp_path)
+
+
+manage.setup_environ(__file__)
+
+if __name__ == "__main__":
+ manage.main()
0  media/css/.gitignore
No changes.
52 media/css/examples/main.css
@@ -0,0 +1,52 @@
+/* An example CSS file that will be minified. */
+body {
+ font-family: sans-serif;
+ background-color: rgb(56,142,222);
+ background-image: -webkit-gradient(
+ linear,
+ left bottom,
+ left top,
+ color-stop(0.19, rgb(56,142,222)),
+ color-stop(0.6, rgb(82,186,255))
+ );
+ background-image: -moz-linear-gradient(
+ center bottom,
+ rgb(56,142,222) 19%,
+ rgb(82,186,255) 60%
+ );
+ background-repeat: repeat-x;
+ min-height: 800px;
+ padding-left: 30px;
+}
+h1 {
+ font-family: Helvetica, sans-serif;
+}
+section, p, ul {
+ background-color: rgba(255,255,255,0.3);;
+ color: #333;
+ font-family: Courier, serif;
+ line-height: 1.4;
+ padding: 5px;
+ width: 600px;
+}
+li {
+ margin-left: 30px;
+}
+
+#bleachform {
+ margin: 50px 0;
+}
+#bleachform p {
+ font-size: 80%;
+}
+#bleachform textarea {
+ height: 100px;
+ width: 600px;
+}
+#bleached {
+ background-color: rgba(255, 0, 0, .5);
+ margin: 50px 0;
+}
+#bleached p {
+ background-color: transparent;
+}
73 media/css/examples/mobile.css
@@ -0,0 +1,73 @@
+/* http://meyerweb.com/eric/tools/css/reset/
+ v2.0 | 20110126
+ License: none (public domain)
+*/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+body {
+ line-height: 1;
+}
+ol, ul {
+ list-style: none;
+}
+blockquote, q {
+ quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: '';
+ content: none;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+/* end meyer reset */
+
+/************************************/
+/* STYLES */
+/************************************/
+
+h1, h2, h3 {
+ font-family: Georgia, serif;
+}
+a:link {
+ font-family: Georgia, serif;
+ color: #447bc4;
+ text-decoration: none;
+}
+body {
+ background-color: rgb(56,142,222);
+ margin: 0.3em;
+ line-height: 1.1em;
+}
+p {
+ margin: 0.5em 0 0 0;
+}
+#footer {
+ margin-top: 1em;
+}
0  media/img/.gitignore
No changes.
0  media/js/.gitignore
No changes.
9 media/js/examples/init.js
@@ -0,0 +1,9 @@
+$(function() {
+ var cookie_name = $('body').attr('data-mobile-cookie');
+ $(".desktop-link").attr("href", window.location).click(function() {
+ $.cookie(cookie_name, "off", {expires:30});
+ });
+ $(".mobile-link").attr("href", window.location).click(function() {
+ $.cookie(cookie_name, "on", {expires:30});
+ });
+});
167 media/js/examples/libs/jquery-1.4.4.min.js
@@ -0,0 +1,167 @@
+/*!
+ * jQuery JavaScript Library v1.4.4
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Nov 11 19:04:53 2010 -0500
+ */
+(function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h=
+h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;k<J.length;k++){h=J[k];h.origType.replace(X,"")===a.type?f.push(h.selector):J.splice(k--,1)}f=c(a.target).closest(f,a.currentTarget);o=0;for(x=f.length;o<x;o++){r=f[o];for(k=0;k<J.length;k++){h=J[k];if(r.selector===h.selector&&(!A||A.test(h.namespace))){l=r.elem;e=null;if(h.preType==="mouseenter"||
+h.preType==="mouseleave"){a.type=h.preType;e=c(a.relatedTarget).closest(h.selector)[0]}if(!e||e!==l)C.push({elem:l,handleObj:h,level:r.level})}}}o=0;for(x=C.length;o<x;o++){f=C[o];if(d&&f.level>d)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La,
+"`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this,
+e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a,
+"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+
+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j,
+s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this,
+j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length},
+toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject=this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j===
+-1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false;
+if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K<Q;K++)if((j=arguments[K])!=null)for(s in j){v=G[s];z=j[s];if(G!==z)if(ga&&z&&(b.isPlainObject(z)||(H=b.isArray(z)))){if(H){H=false;v=v&&b.isArray(v)?v:[]}else v=v&&b.isPlainObject(v)?v:{};G[s]=b.extend(ga,v,z)}else if(z!==B)G[s]=z}return G};b.extend({noConflict:function(j){E.$=e;if(j)E.jQuery=d;return b},isReady:false,readyWait:1,ready:function(j){j===true&&b.readyWait--;
+if(!b.readyWait||j!==true&&!b.isReady){if(!t.body)return setTimeout(b.ready,1);b.isReady=true;if(!(j!==true&&--b.readyWait>0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false);E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload",
+b.ready);var j=false;try{j=E.frameElement==null}catch(s){}t.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in j},isNaN:function(j){return j==null||!r.test(j)||isNaN(j)},type:function(j){return j==null?String(j):R[y.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&&
+!F.call(j,"constructor")&&!F.call(j.constructor.prototype,"isPrototypeOf"))return false;for(var s in j);return s===B||F.call(j,s)},isEmptyObject:function(j){for(var s in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!=="string"||!j)return null;j=b.trim(j);if(C.test(j.replace(J,"@").replace(w,"]").replace(I,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&&
+l.test(j)){var s=t.getElementsByTagName("head")[0]||t.documentElement,v=t.createElement("script");v.type="text/javascript";if(b.support.scriptEval)v.appendChild(t.createTextNode(j));else v.text=j;s.insertBefore(v,s.firstChild);s.removeChild(v)}},nodeName:function(j,s){return j.nodeName&&j.nodeName.toUpperCase()===s.toUpperCase()},each:function(j,s,v){var z,H=0,G=j.length,K=G===B||b.isFunction(j);if(v)if(K)for(z in j){if(s.apply(j[z],v)===false)break}else for(;H<G;){if(s.apply(j[H++],v)===false)break}else if(K)for(z in j){if(s.call(j[z],
+z,j[z])===false)break}else for(v=j[0];H<G&&s.call(v,H,v)!==false;v=j[++H]);return j},trim:O?function(j){return j==null?"":O.call(j)}:function(j){return j==null?"":j.toString().replace(k,"").replace(o,"")},makeArray:function(j,s){var v=s||[];if(j!=null){var z=b.type(j);j.length==null||z==="string"||z==="function"||z==="regexp"||b.isWindow(j)?M.call(v,j):b.merge(v,j)}return v},inArray:function(j,s){if(s.indexOf)return s.indexOf(j);for(var v=0,z=s.length;v<z;v++)if(s[v]===j)return v;return-1},merge:function(j,
+s){var v=j.length,z=0;if(typeof s.length==="number")for(var H=s.length;z<H;z++)j[v++]=s[z];else for(;s[z]!==B;)j[v++]=s[z++];j.length=v;return j},grep:function(j,s,v){var z=[],H;v=!!v;for(var G=0,K=j.length;G<K;G++){H=!!s(j[G],G);v!==H&&z.push(j[G])}return z},map:function(j,s,v){for(var z=[],H,G=0,K=j.length;G<K;G++){H=s(j[G],G,v);if(H!=null)z[z.length]=H}return z.concat.apply([],z)},guid:1,proxy:function(j,s,v){if(arguments.length===2)if(typeof s==="string"){v=j;j=v[s];s=B}else if(s&&!b.isFunction(s)){v=
+s;s=B}if(!s&&j)s=function(){return j.apply(v||this,arguments)};if(j)s.guid=j.guid=j.guid||s.guid||b.guid++;return s},access:function(j,s,v,z,H,G){var K=j.length;if(typeof s==="object"){for(var Q in s)b.access(j,Q,s[Q],z,H,v);return j}if(v!==B){z=!G&&z&&b.isFunction(v);for(Q=0;Q<K;Q++)H(j[Q],s,z?v.call(j[Q],Q,H(j[Q],s)):v,G);return j}return K?H(j[0],s):B},now:function(){return(new Date).getTime()},uaMatch:function(j){j=j.toLowerCase();j=L.exec(j)||g.exec(j)||i.exec(j)||j.indexOf("compatible")<0&&n.exec(j)||
+[];return{browser:j[1]||"",version:j[2]||"0"}},browser:{}});b.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(j,s){R["[object "+s+"]"]=s.toLowerCase()});m=b.uaMatch(m);if(m.browser){b.browser[m.browser]=true;b.browser.version=m.version}if(b.browser.webkit)b.browser.safari=true;if(D)b.inArray=function(j,s){return D.call(s,j)};if(!/\s/.test("\u00a0")){k=/^[\s\xA0]+/;o=/[\s\xA0]+$/}f=b(t);if(t.addEventListener)u=function(){t.removeEventListener("DOMContentLoaded",u,
+false);b.ready()};else if(t.attachEvent)u=function(){if(t.readyState==="complete"){t.detachEvent("onreadystatechange",u);b.ready()}};return E.jQuery=E.$=b}();(function(){c.support={};var a=t.documentElement,b=t.createElement("script"),d=t.createElement("div"),e="script"+c.now();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],l=t.createElement("select"),
+k=l.appendChild(t.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:k.selected,deleteExpando:true,optDisabled:false,checkClone:false,
+scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};l.disabled=true;c.support.optDisabled=!k.disabled;b.type="text/javascript";try{b.appendChild(t.createTextNode("window."+e+"=1;"))}catch(o){}a.insertBefore(b,a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}try{delete b.test}catch(x){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function r(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",r)});d.cloneNode(true).fireEvent("onclick")}d=t.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=t.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var r=t.createElement("div");r.style.width=r.style.paddingLeft="1px";t.body.appendChild(r);c.boxModel=c.support.boxModel=r.offsetWidth===2;if("zoom"in r.style){r.style.display="inline";r.style.zoom=
+1;c.support.inlineBlockNeedsLayout=r.offsetWidth===2;r.style.display="";r.innerHTML="<div style='width:4px;'></div>";c.support.shrinkWrapBlocks=r.offsetWidth!==2}r.innerHTML="<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";var A=r.getElementsByTagName("td");c.support.reliableHiddenOffsets=A[0].offsetHeight===0;A[0].style.display="";A[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&A[0].offsetHeight===0;r.innerHTML="";t.body.removeChild(r).style.display=
+"none"});a=function(r){var A=t.createElement("div");r="on"+r;var C=r in A;if(!C){A.setAttribute(r,"return;");C=typeof A[r]==="function"}return C};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ra={},Ja=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?ra:a;var e=a.nodeType,f=e?a[c.expando]:null,h=
+c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?ra:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando);
+else if(d)delete f[e];else for(var l in a)delete a[l]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,l=e.length;h<l;h++){f=e[h].name;if(f.indexOf("data-")===0){f=f.substr(5);ka(this[0],f,d[f])}}}return d}else if(typeof a==="object")return this.each(function(){c.data(this,
+a)});var k=a.split(".");k[1]=k[1]?"."+k[1]:"";if(b===B){d=this.triggerHandler("getData"+k[1]+"!",[k[0]]);if(d===B&&this.length){d=c.data(this[0],a);d=ka(this[0],a,d)}return d===B&&k[1]?this.data(k[0]):d}else return this.each(function(){var o=c(this),x=[k[0],b];o.triggerHandler("setData"+k[1]+"!",x);c.data(this,a,b);o.triggerHandler("changeData"+k[1]+"!",x)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var e=
+c.data(a,b);if(!d)return e||[];if(!e||c.isArray(d))e=c.data(a,b,c.makeArray(d));else e.push(d);return e}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),e=d.shift();if(e==="inprogress")e=d.shift();if(e){b==="fx"&&d.unshift("inprogress");e.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===B)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,
+a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var sa=/[\n\t]/g,ha=/\s+/,Sa=/\r/g,Ta=/^(?:href|src|style)$/,Ua=/^(?:button|input)$/i,Va=/^(?:button|input|object|select|textarea)$/i,Wa=/^a(?:rea)?$/i,ta=/^(?:radio|checkbox)$/i;c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",
+colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};c.fn.extend({attr:function(a,b){return c.access(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(x){var r=c(this);r.addClass(a.call(this,x,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ha),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===
+1)if(f.className){for(var h=" "+f.className+" ",l=f.className,k=0,o=b.length;k<o;k++)if(h.indexOf(" "+b[k]+" ")<0)l+=" "+b[k];f.className=c.trim(l)}else f.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(o){var x=c(this);x.removeClass(a.call(this,o,x.attr("class")))});if(a&&typeof a==="string"||a===B)for(var b=(a||"").split(ha),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1&&f.className)if(a){for(var h=(" "+f.className+" ").replace(sa," "),
+l=0,k=b.length;l<k;l++)h=h.replace(" "+b[l]+" "," ");f.className=c.trim(h)}else f.className=""}return this},toggleClass:function(a,b){var d=typeof a,e=typeof b==="boolean";if(c.isFunction(a))return this.each(function(f){var h=c(this);h.toggleClass(a.call(this,f,h.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var f,h=0,l=c(this),k=b,o=a.split(ha);f=o[h++];){k=e?k:!l.hasClass(f);l[k?"addClass":"removeClass"](f)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,
+"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(sa," ").indexOf(a)>-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one";
+if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h<e;h++){var l=f[h];if(l.selected&&(c.support.optDisabled?!l.disabled:l.getAttribute("disabled")===null)&&(!l.parentNode.disabled||!c.nodeName(l.parentNode,"optgroup"))){a=c(l).val();if(b)return a;d.push(a)}}return d}if(ta.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Sa,"")}return B}var k=c.isFunction(a);return this.each(function(o){var x=c(this),r=a;if(this.nodeType===1){if(k)r=
+a.call(this,o,x.val());if(r==null)r="";else if(typeof r==="number")r+="";else if(c.isArray(r))r=c.map(r,function(C){return C==null?"":C+""});if(c.isArray(r)&&ta.test(this.type))this.checked=c.inArray(x.val(),r)>=0;else if(c.nodeName(this,"select")){var A=c.makeArray(r);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),A)>=0});if(!A.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},
+attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=Ta.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&Ua.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&
+b.specified?b.value:Va.test(a.nodeName)||Wa.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var X=/\.(.*)$/,ia=/^(?:textarea|input|select)$/i,La=/\./g,Ma=/ /g,Xa=/[^\w\s.|`]/g,Ya=function(a){return a.replace(Xa,"\\$&")},ua={focusin:0,focusout:0};
+c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var l=a.nodeType?"events":"__events__",k=h[l],o=h.handle;if(typeof k==="function"){o=k.handle;k=k.events}else if(!k){a.nodeType||(h[l]=h=function(){});h.events=k={}}if(!o)h.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,
+arguments):B};o.elem=a;b=b.split(" ");for(var x=0,r;l=b[x++];){h=f?c.extend({},f):{handler:d,data:e};if(l.indexOf(".")>-1){r=l.split(".");l=r.shift();h.namespace=r.slice(0).sort().join(".")}else{r=[];h.namespace=""}h.type=l;if(!h.guid)h.guid=d.guid;var A=k[l],C=c.event.special[l]||{};if(!A){A=k[l]=[];if(!C.setup||C.setup.call(a,e,r,o)===false)if(a.addEventListener)a.addEventListener(l,o,false);else a.attachEvent&&a.attachEvent("on"+l,o)}if(C.add){C.add.call(a,h);if(!h.handler.guid)h.handler.guid=
+d.guid}A.push(h);c.event.global[l]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,l=0,k,o,x,r,A,C,J=a.nodeType?"events":"__events__",w=c.data(a),I=w&&w[J];if(w&&I){if(typeof I==="function"){w=I;I=I.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in I)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[l++];){r=f;k=f.indexOf(".")<0;o=[];if(!k){o=f.split(".");f=o.shift();x=RegExp("(^|\\.)"+
+c.map(o.slice(0).sort(),Ya).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(A=I[f])if(d){r=c.event.special[f]||{};for(h=e||0;h<A.length;h++){C=A[h];if(d.guid===C.guid){if(k||x.test(C.namespace)){e==null&&A.splice(h--,1);r.remove&&r.remove.call(a,C)}if(e!=null)break}}if(A.length===0||e!=null&&A.length===1){if(!r.teardown||r.teardown.call(a,o)===false)c.removeEvent(a,f,w.handle);delete I[f]}}else for(h=0;h<A.length;h++){C=A[h];if(k||x.test(C.namespace)){c.event.remove(a,r,C.handler,h);A.splice(h--,1)}}}if(c.isEmptyObject(I)){if(b=
+w.handle)b.elem=null;delete w.events;delete w.handle;if(typeof w==="function")c.removeData(a,J);else c.isEmptyObject(w)&&c.removeData(a)}}}}},trigger:function(a,b,d,e){var f=a.type||a;if(!e){a=typeof a==="object"?a[c.expando]?a:c.extend(c.Event(f),a):c.Event(f);if(f.indexOf("!")>=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===
+8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var l;e=a.target;var k=f.replace(X,""),o=c.nodeName(e,"a")&&k===
+"click",x=c.event.special[k]||{};if((!x._default||x._default.call(d,a)===false)&&!o&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[k]){if(l=e["on"+k])e["on"+k]=null;c.event.triggered=true;e[k]()}}catch(r){}if(l)e["on"+k]=l;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+
+d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var l=d.length;f<l;f++){var k=d[f];if(b||e.test(k.namespace)){a.handler=k.handler;a.data=k.data;a.handleObj=k;k=k.handler.apply(this,h);if(k!==B){a.result=k;if(k===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[c.expando])return a;var b=a;a=c.Event(b);for(var d=this.props.length,e;d;){e=this.props[--d];a[e]=b[e]}if(!a.target)a.target=a.srcElement||t;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=t.documentElement;d=t.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(a.which==null&&(a.charCode!=null||a.keyCode!=null))a.which=a.charCode!=null?a.charCode:a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==B)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,Y(a.origType,a.selector),c.extend({},a,{handler:Ka,guid:a.handler.guid}))},remove:function(a){c.event.remove(this,
+Y(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,d){if(c.isWindow(this))this.onbeforeunload=d},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.removeEvent=t.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent&&a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=
+c.now();this[c.expando]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=ca;var a=this.originalEvent;if(a)if(a.preventDefault)a.preventDefault();else a.returnValue=false},stopPropagation:function(){this.isPropagationStopped=ca;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=ca;this.stopPropagation()},isDefaultPrevented:U,isPropagationStopped:U,isImmediatePropagationStopped:U};
+var va=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},wa=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?wa:va,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?wa:va)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(){if(this.nodeName.toLowerCase()!==
+"form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length){a.liveFired=B;return la("submit",this,arguments)}});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13){a.liveFired=B;return la("submit",this,arguments)}})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};if(!c.support.changeBubbles){var V,
+xa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ia.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=xa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired=
+B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",xa(a))}},setup:function(){if(this.type===
+"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ia.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ia.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}t.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){ua[b]++===0&&t.addEventListener(a,d,true)},teardown:function(){--ua[b]===
+0&&t.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var l=b==="one"?c.proxy(f,function(o){c(this).unbind(o,l);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var k=this.length;h<k;h++)c.event.add(this[h],d,l,e)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&!a.preventDefault)for(var d in a)this.unbind(d,
+a[d]);else{d=0;for(var e=this.length;d<e;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,e){return this.live(b,d,e,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var d=c.Event(a);d.preventDefault();d.stopPropagation();c.event.trigger(d,b,this[0]);return d.result}},toggle:function(a){for(var b=arguments,d=
+1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(e){var f=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,f+1);e.preventDefault();return b[f].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var ya={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,e,f,h){var l,k=0,o,x,r=h||this.selector;h=h?this:c(this.context);if(typeof d===
+"object"&&!d.preventDefault){for(l in d)h[b](l,e,d[l],r);return this}if(c.isFunction(e)){f=e;e=B}for(d=(d||"").split(" ");(l=d[k++])!=null;){o=X.exec(l);x="";if(o){x=o[0];l=l.replace(X,"")}if(l==="hover")d.push("mouseenter"+x,"mouseleave"+x);else{o=l;if(l==="focus"||l==="blur"){d.push(ya[l]+x);l+=x}else l=(ya[l]||l)+x;if(b==="live"){x=0;for(var A=h.length;x<A;x++)c.event.add(h[x],"live."+Y(l,r),{data:e,selector:r,handler:f,origType:l,origHandler:f,preType:o})}else h.unbind("live."+Y(l,r),f)}}return this}});
+c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d,e){if(e==null){e=d;d=null}return arguments.length>0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
+(function(){function a(g,i,n,m,p,q){p=0;for(var u=m.length;p<u;p++){var y=m[p];if(y){var F=false;for(y=y[g];y;){if(y.sizcache===n){F=m[y.sizset];break}if(y.nodeType===1&&!q){y.sizcache=n;y.sizset=p}if(y.nodeName.toLowerCase()===i){F=y;break}y=y[g]}m[p]=F}}}function b(g,i,n,m,p,q){p=0;for(var u=m.length;p<u;p++){var y=m[p];if(y){var F=false;for(y=y[g];y;){if(y.sizcache===n){F=m[y.sizset];break}if(y.nodeType===1){if(!q){y.sizcache=n;y.sizset=p}if(typeof i!=="string"){if(y===i){F=true;break}}else if(k.filter(i,
+[y]).length>0){F=y;break}}y=y[g]}m[p]=F}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,l=true;[0,0].sort(function(){l=false;return 0});var k=function(g,i,n,m){n=n||[];var p=i=i||t;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var q,u,y,F,M,N=true,O=k.isXML(i),D=[],R=g;do{d.exec("");if(q=d.exec(R)){R=q[3];D.push(q[1]);if(q[2]){F=q[3];
+break}}}while(q);if(D.length>1&&x.exec(g))if(D.length===2&&o.relative[D[0]])u=L(D[0]+D[1],i);else for(u=o.relative[D[0]]?[i]:k(D.shift(),i);D.length;){g=D.shift();if(o.relative[g])g+=D.shift();u=L(g,u)}else{if(!m&&D.length>1&&i.nodeType===9&&!O&&o.match.ID.test(D[0])&&!o.match.ID.test(D[D.length-1])){q=k.find(D.shift(),i,O);i=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]}if(i){q=m?{expr:D.pop(),set:C(m)}:k.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&i.parentNode?i.parentNode:i,O);u=q.expr?k.filter(q.expr,
+q.set):q.set;if(D.length>0)y=C(u);else N=false;for(;D.length;){q=M=D.pop();if(o.relative[M])q=D.pop();else M="";if(q==null)q=i;o.relative[M](y,q,O)}}else y=[]}y||(y=u);y||k.error(M||g);if(f.call(y)==="[object Array]")if(N)if(i&&i.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&k.contains(i,y[g])))n.push(u[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&n.push(u[g]);else n.push.apply(n,y);else C(y,n);if(F){k(F,p,n,m);k.uniqueSort(n)}return n};k.uniqueSort=function(g){if(w){h=
+l;g.sort(w);if(h)for(var i=1;i<g.length;i++)g[i]===g[i-1]&&g.splice(i--,1)}return g};k.matches=function(g,i){return k(g,null,null,i)};k.matchesSelector=function(g,i){return k(i,null,null,[g]).length>0};k.find=function(g,i,n){var m;if(!g)return[];for(var p=0,q=o.order.length;p<q;p++){var u,y=o.order[p];if(u=o.leftMatch[y].exec(g)){var F=u[1];u.splice(1,1);if(F.substr(F.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");m=o.find[y](u,i,n);if(m!=null){g=g.replace(o.match[y],"");break}}}}m||(m=i.getElementsByTagName("*"));
+return{set:m,expr:g}};k.filter=function(g,i,n,m){for(var p,q,u=g,y=[],F=i,M=i&&i[0]&&k.isXML(i[0]);g&&i.length;){for(var N in o.filter)if((p=o.leftMatch[N].exec(g))!=null&&p[2]){var O,D,R=o.filter[N];D=p[1];q=false;p.splice(1,1);if(D.substr(D.length-1)!=="\\"){if(F===y)y=[];if(o.preFilter[N])if(p=o.preFilter[N](p,F,n,y,m,M)){if(p===true)continue}else q=O=true;if(p)for(var j=0;(D=F[j])!=null;j++)if(D){O=R(D,p,j,F);var s=m^!!O;if(n&&O!=null)if(s)q=true;else F[j]=false;else if(s){y.push(D);q=true}}if(O!==
+B){n||(F=y);g=g.replace(o.match[N],"");if(!q)return[];break}}}if(g===u)if(q==null)k.error(g);else break;u=g}return F};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var o=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
+POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,i){var n=typeof i==="string",m=n&&!/\W/.test(i);n=n&&!m;if(m)i=i.toLowerCase();m=0;for(var p=g.length,q;m<p;m++)if(q=g[m]){for(;(q=q.previousSibling)&&q.nodeType!==1;);g[m]=n||q&&q.nodeName.toLowerCase()===
+i?q||false:q===i}n&&k.filter(i,g,true)},">":function(g,i){var n,m=typeof i==="string",p=0,q=g.length;if(m&&!/\W/.test(i))for(i=i.toLowerCase();p<q;p++){if(n=g[p]){n=n.parentNode;g[p]=n.nodeName.toLowerCase()===i?n:false}}else{for(;p<q;p++)if(n=g[p])g[p]=m?n.parentNode:n.parentNode===i;m&&k.filter(i,g,true)}},"":function(g,i,n){var m,p=e++,q=b;if(typeof i==="string"&&!/\W/.test(i)){m=i=i.toLowerCase();q=a}q("parentNode",i,p,g,m,n)},"~":function(g,i,n){var m,p=e++,q=b;if(typeof i==="string"&&!/\W/.test(i)){m=
+i=i.toLowerCase();q=a}q("previousSibling",i,p,g,m,n)}},find:{ID:function(g,i,n){if(typeof i.getElementById!=="undefined"&&!n)return(g=i.getElementById(g[1]))&&g.parentNode?[g]:[]},NAME:function(g,i){if(typeof i.getElementsByName!=="undefined"){for(var n=[],m=i.getElementsByName(g[1]),p=0,q=m.length;p<q;p++)m[p].getAttribute("name")===g[1]&&n.push(m[p]);return n.length===0?null:n}},TAG:function(g,i){return i.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,i,n,m,p,q){g=" "+g[1].replace(/\\/g,
+"")+" ";if(q)return g;q=0;for(var u;(u=i[q])!=null;q++)if(u)if(p^(u.className&&(" "+u.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))n||m.push(u);else if(n)i[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n,
+m,p,q){i=g[1].replace(/\\/g,"");if(!q&&o.attrMap[i])g[1]=o.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,i);else{g=k.filter(g[3],i,n,true^p);n||m.push.apply(m,g);return false}else if(o.match.POS.test(g[0])||o.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===
+true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!k(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===
+g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,m){return i===m.length-1},even:function(g,i){return i%2===0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return i<n[3]-0},gt:function(g,i,n){return i>n[3]-0},nth:function(g,i,n){return n[3]-
+0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,m){var p=i[1],q=o.filters[p];if(q)return q(g,n,i,m);else if(p==="contains")return(g.textContent||g.innerText||k.getText([g])||"").indexOf(i[3])>=0;else if(p==="not"){i=i[3];n=0;for(m=i.length;n<m;n++)if(i[n]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+p)},CHILD:function(g,i){var n=i[1],m=g;switch(n){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(n===
+"first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":n=i[2];var p=i[3];if(n===1&&p===0)return true;var q=i[0],u=g.parentNode;if(u&&(u.sizcache!==q||!g.nodeIndex)){var y=0;for(m=u.firstChild;m;m=m.nextSibling)if(m.nodeType===1)m.nodeIndex=++y;u.sizcache=q}m=g.nodeIndex-p;return n===0?m===0:m%n===0&&m/n>=0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===
+i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];n=o.attrHandle[n]?o.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);var m=n+"",p=i[2],q=i[4];return n==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&n!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,i,n,m){var p=o.setFilters[i[2]];
+if(p)return p(g,n,i,m)}}},x=o.match.POS,r=function(g,i){return"\\"+(i-0+1)},A;for(A in o.match){o.match[A]=RegExp(o.match[A].source+/(?![^\[]*\])(?![^\(]*\))/.source);o.leftMatch[A]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[A].source.replace(/\\(\d+)/g,r))}var C=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);return i}return g};try{Array.prototype.slice.call(t.documentElement.childNodes,0)}catch(J){C=function(g,i){var n=0,m=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(m,
+g);else if(typeof g.length==="number")for(var p=g.length;n<p;n++)m.push(g[n]);else for(;g[n];n++)m.push(g[n]);return m}}var w,I;if(t.documentElement.compareDocumentPosition)w=function(g,i){if(g===i){h=true;return 0}if(!g.compareDocumentPosition||!i.compareDocumentPosition)return g.compareDocumentPosition?-1:1;return g.compareDocumentPosition(i)&4?-1:1};else{w=function(g,i){var n,m,p=[],q=[];n=g.parentNode;m=i.parentNode;var u=n;if(g===i){h=true;return 0}else if(n===m)return I(g,i);else if(n){if(!m)return 1}else return-1;
+for(;u;){p.unshift(u);u=u.parentNode}for(u=m;u;){q.unshift(u);u=u.parentNode}n=p.length;m=q.length;for(u=0;u<n&&u<m;u++)if(p[u]!==q[u])return I(p[u],q[u]);return u===n?I(g,q[u],-1):I(p[u],i,1)};I=function(g,i,n){if(g===i)return n;for(g=g.nextSibling;g;){if(g===i)return-1;g=g.nextSibling}return 1}}k.getText=function(g){for(var i="",n,m=0;g[m];m++){n=g[m];if(n.nodeType===3||n.nodeType===4)i+=n.nodeValue;else if(n.nodeType!==8)i+=k.getText(n.childNodes)}return i};(function(){var g=t.createElement("div"),
+i="script"+(new Date).getTime(),n=t.documentElement;g.innerHTML="<a name='"+i+"'/>";n.insertBefore(g,n.firstChild);if(t.getElementById(i)){o.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:B:[]};o.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}n.removeChild(g);
+n=g=null})();(function(){var g=t.createElement("div");g.appendChild(t.createComment(""));if(g.getElementsByTagName("*").length>0)o.find.TAG=function(i,n){var m=n.getElementsByTagName(i[1]);if(i[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")o.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();t.querySelectorAll&&
+function(){var g=k,i=t.createElement("div");i.innerHTML="<p class='TEST'></p>";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){k=function(m,p,q,u){p=p||t;m=m.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u&&!k.isXML(p))if(p.nodeType===9)try{return C(p.querySelectorAll(m),q)}catch(y){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var F=p.getAttribute("id"),M=F||"__sizzle__";F||p.setAttribute("id",M);try{return C(p.querySelectorAll("#"+M+" "+m),q)}catch(N){}finally{F||
+p.removeAttribute("id")}}return g(m,p,q,u)};for(var n in g)k[n]=g[n];i=null}}();(function(){var g=t.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(t.documentElement,"[test!='']:sizzle")}catch(m){n=true}if(i)k.matchesSelector=function(p,q){q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(p))try{if(n||!o.match.PSEUDO.test(q)&&!/!=/.test(q))return i.call(p,q)}catch(u){}return k(q,null,null,[p]).length>0}})();(function(){var g=
+t.createElement("div");g.innerHTML="