diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 000000000..3c1171c1a --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,137 @@ +# Contributing to Quasar + +Looking to contribute something? **Here's how you can help.** + +Please take a moment to review this document in order to make the contribution +process easy and effective for everyone involved. + +Following these guidelines helps to communicate that you respect the time of +the developers managing and developing this open source project. In return, +they should reciprocate that respect in addressing your issue or assessing +patches and features. + + +## Using the issue tracker + +The issue tracker is the preferred channel for [bug reports](#bug-reports), +[features requests](#feature-requests) and +[submitting pull requests](#pull-requests), but please respect the +following restrictions: + +* Please **do not** use the issue tracker for personal support requests. The + [Kodi forum thread](http://forum.kodi.tv/showthread.php?tid=257967) is a better place to get help. + +* Please **do not** derail or troll issues. Keep the discussion on topic and + respect the opinions of others. + +* Please **do not** open issues or pull requests which *belongs to* third party + components. + + +## Bug reports + +A bug is a _demonstrable problem_ that is caused by the code in the repository. +Good bug reports are extremely helpful, so thanks! + +Guidelines for bug reports: + +1. **Use the GitHub issue search** — check if the issue has already been + reported. + +2. **Check if the issue has been fixed** — try to reproduce it using the + latest version of the add-on. + +3. **Provide logs** — this cannot be overstated enough; bug reports + without logs will likely be dismissed and closed. + + +A good bug report shouldn't leave others needing to chase you up for more +information. Please try to be as detailed as possible in your report. What is +your environment? What steps will reproduce the issue? What browser(s) and OS +experience the problem? Do other browsers show the bug differently? What +would you expect to be the outcome? All these details will help people to fix +any potential bugs. + + +## Feature requests + +Feature requests are welcome. But take a moment to find out whether your idea +fits with the scope and aims of the project. It's up to *you* to make a strong +case to convince the project's developers of the merits of this feature. Please +provide as much detail and context as possible. + + +## Pull requests + +Good pull requests, patches, improvements and new features are a fantastic +help. They should remain focused in scope and avoid containing unrelated +commits. + +**Please ask first** before embarking on any significant pull request (e.g. +implementing features, refactoring code, porting to a different language), +otherwise you risk spending a lot of time working on something that the +project's developers might not want to merge into the project. + +Please adhere to the [coding guidelines](#code-guidelines) used throughout the +project (indentation, accurate comments, etc.) and any other requirements +(such as test coverage). + +Adhering to the following process is the best way to get your work +included in the project: + +1. [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork, + and configure the remotes: + + ```bash + # Clone your fork of the repo into the current directory + git clone https://github.com/scakemyer/plugin.video.quasar.git + # Navigate to the newly cloned directory + cd plugin.video.quasar + # Assign the original repo to a remote called "upstream" + git remote add upstream https://github.com/scakemyer/plugin.video.quasar.git + ``` + +2. If you cloned a while ago, get the latest changes from upstream: + + ```bash + git checkout master + git pull --rebase upstream master + ``` + +3. Create a new topic branch (off the main project development branch) to + contain your feature, change, or fix: + + ```bash + git checkout -b + ``` + +4. Commit your changes in logical chunks. Please adhere to these [git commit + message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) + or your code is unlikely be merged into the main project. Use Git's + [interactive rebase](https://help.github.com/articles/interactive-rebase) + feature to tidy up your commits before making them public. Also, prepend name of the feature + to the commit message. For instance: "SCSS: Fixes compiler results for IFileListener, fixes `#123`" + +5. Locally merge (or rebase) the upstream development branch into your topic branch: + + ```bash + git pull --rebase upstream master + ``` + +6. Push your topic branch up to your fork: + + ```bash + git push origin + ``` + +7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) + with a clear title and description against the `master` branch. + + +## Code guidelines + +- Indentation must be 4 spaces for Python files. Follow proper indentation for + other file types. +- Always run `flake8` before committing and pushing changes. +- Run `./scripts/xgettext.sh` if you're updating translations to make sure + your changes are valid. diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..070a2981b --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,47 @@ + + + + + + + +## Expected Behavior + + + +## Current Behavior + + + +## Possible Solution + + + +## Steps to Reproduce (for bugs) + + +1. +2. +3. +4. + +## Context + + + +## Your Environment + +* Version used: + +* Environment name and version: + +* Operating System and version: + +* Link to Kodi debug log: + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..1106ee811 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,41 @@ + + + + +## Description + + +## Related Issue + + + + +## Motivation and Context + + + +## How Has This Been Tested? + + + + +## Screenshots (if appropriate): + +## Types of changes + +- [ ] Bug fix (non-breaking change which fixes an issue) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to change) +- [ ] Translation + +## Checklist: + + +- [ ] My code follows the code style of this project. +- [ ] My change requires a change to the documentation. +- [ ] I have updated the documentation accordingly. +- [ ] I have read the **CONTRIBUTING** document. +- [ ] I have added tests to cover my changes. +- [ ] All new and existing tests passed. diff --git a/.gitignore b/.gitignore index db4561eaa..30479af31 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,8 @@ var/ *.egg-info/ .installed.cfg *.egg +*.zip +# bin/ # PyInstaller # Usually these files are written by a python script from a template @@ -40,10 +42,6 @@ htmlcov/ nosetests.xml coverage.xml -# Translations -*.mo -*.pot - # Django stuff: *.log @@ -52,3 +50,7 @@ docs/_build/ # PyBuilder target/ + +# Other +# resources/bin +resources/web/static/js/*.map diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 000000000..c90ca6412 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,61 @@ +image: alpine:latest + +stages: + - test + - build + - release + +test: + image: python:2.7-alpine + stage: test + before_script: + - pip install -r requirements.txt + script: + - flake8 + - ./scripts/xgettext.sh + +build: + stage: build + before_script: + - apk update + - apk add git make zip + - git submodule update --init --depth=22 + script: + - make + only: + - master + +release: + stage: release + before_script: + - apk update + - apk add git make lftp zip + - git submodule update --init --depth=22 + script: + - make + - make zipfiles + after_script: + - | + lftp -c "open 'ftp://$FTP_USER:$FTP_PASS@$FTP_HOST'; \ + cd plugin.video.quasar; \ + mirror --reverse --verbose --exclude '.*' --exclude '.*/' --include-glob addon.xml; \ + mkdir -p -f $CI_BUILD_TAG; \ + cd $CI_BUILD_TAG; \ + mirror --reverse --verbose --exclude '.*' --exclude '.*/' --include-glob *.zip; \ + exit;" + artifacts: + paths: + - plugin.video.quasar-${CI_BUILD_TAG:1}.zip + - plugin.video.quasar-${CI_BUILD_TAG:1}.android_arm.zip + - plugin.video.quasar-${CI_BUILD_TAG:1}.android_x64.zip + - plugin.video.quasar-${CI_BUILD_TAG:1}.android_x86.zip + - plugin.video.quasar-${CI_BUILD_TAG:1}.darwin_x64.zip + - plugin.video.quasar-${CI_BUILD_TAG:1}.linux_arm.zip + - plugin.video.quasar-${CI_BUILD_TAG:1}.linux_armv7.zip + - plugin.video.quasar-${CI_BUILD_TAG:1}.linux_arm64.zip + - plugin.video.quasar-${CI_BUILD_TAG:1}.linux_x64.zip + - plugin.video.quasar-${CI_BUILD_TAG:1}.linux_x86.zip + - plugin.video.quasar-${CI_BUILD_TAG:1}.windows_x64.zip + - plugin.video.quasar-${CI_BUILD_TAG:1}.windows_x86.zip + only: + - tags diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..6710c815e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "resources/bin"] + path = resources/bin + url = https://github.com/scakemyer/quasar-binaries diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..81ab821dd --- /dev/null +++ b/.travis.yml @@ -0,0 +1,42 @@ +language: python +python: + - 2.7 + +git: + submodules: false + +before_install: + - git submodule init + - git submodule update --depth=22 + +install: + - pip install -r requirements.txt + +script: + - flake8 + - ./scripts/xgettext.sh + - make + - | + if [ "${TRAVIS_PULL_REQUEST}" = "false" ] && [ -n "${TRAVIS_TAG}" ]; then + make zipfiles + fi + +deploy: + provider: releases + api_key: $GH_TOKEN + file: + - plugin.video.quasar-${TRAVIS_TAG:1}.zip + - plugin.video.quasar-${TRAVIS_TAG:1}.android_arm.zip + - plugin.video.quasar-${TRAVIS_TAG:1}.android_x64.zip + - plugin.video.quasar-${TRAVIS_TAG:1}.android_x86.zip + - plugin.video.quasar-${TRAVIS_TAG:1}.darwin_x64.zip + - plugin.video.quasar-${TRAVIS_TAG:1}.linux_arm.zip + - plugin.video.quasar-${TRAVIS_TAG:1}.linux_armv7.zip + - plugin.video.quasar-${TRAVIS_TAG:1}.linux_arm64.zip + - plugin.video.quasar-${TRAVIS_TAG:1}.linux_x64.zip + - plugin.video.quasar-${TRAVIS_TAG:1}.linux_x86.zip + - plugin.video.quasar-${TRAVIS_TAG:1}.windows_x64.zip + - plugin.video.quasar-${TRAVIS_TAG:1}.windows_x86.zip + skip_cleanup: true + on: + tags: true diff --git a/Makefile b/Makefile index a19a609a2..1eb5750ca 100644 --- a/Makefile +++ b/Makefile @@ -1,41 +1,52 @@ -NAME = plugin.video.pulsar +NAME = plugin.video.quasar GIT = git GIT_VERSION = $(shell $(GIT) describe --always) -VERSION = $(patsubst v%,%,$(GIT_VERSION)) -ARCHS = windows_x86 darwin_x64 +VERSION = $(shell sed -ne "s/.*version=\"\([0-9a-z\.\-]*\)\"\sprovider.*/\1/p" addon.xml) +ARCHS = \ + android_arm \ + android_x64 \ + android_x86 \ + darwin_x64 \ + linux_arm \ + linux_armv7 \ + linux_arm64 \ + linux_x64 \ + linux_x86 \ + windows_x64 \ + windows_x86 ZIP_SUFFIX = zip ZIP_FILE = $(NAME)-$(VERSION).$(ZIP_SUFFIX) all: clean zip -bootstraper: - mkdir -p $(NAME) - sed s/\$$VERSION/0.0.1/g < addon.xml.tpl > $(NAME)/addon.xml - cp fanart.jpg $(NAME) - cp icon.png $(NAME) - zip -9 -r $(NAME).zip $(NAME) - rm -rf $(NAME) +.PHONY: $(ARCHS) -addon.xml: - sed s/\$$VERSION/$(VERSION)/g < addon.xml.tpl > $@ +$(ARCHS): + $(MAKE) clean_arch ZIP_SUFFIX=$@.zip + $(MAKE) zip ARCHS=$@ ZIP_SUFFIX=$@.zip -$(ZIP_FILE): addon.xml - git archive --format zip --prefix $(NAME)/ --output $(ZIP_FILE) $(GIT_VERSION) +$(ZIP_FILE): + git archive --format zip --prefix $(NAME)/ --output $(ZIP_FILE) HEAD mkdir -p $(NAME)/resources/bin - ln -s `pwd`/addon.xml $(NAME) - zip -9 -r -g $(ZIP_FILE) $(NAME)/addon.xml for arch in $(ARCHS); do \ - ln -s `pwd`/resources/bin/$$arch $(NAME)/resources/bin/$$arch; \ + ln -s `pwd`/resources/bin$(DEV)/$$arch $(NAME)/resources/bin/$$arch; \ zip -9 -r -g $(ZIP_FILE) $(NAME)/resources/bin/$$arch; \ done rm -rf $(NAME) +zip: $(ZIP_FILE) + zipfiles: addon.xml for arch in $(ARCHS); do \ - $(MAKE) zip ARCHS=$$arch ZIP_SUFFIX=$$arch.zip; \ + $(MAKE) $$arch; \ done -zip: $(ZIP_FILE) +clean_arch: + rm -f $(ZIP_FILE) clean: - rm -rf addon.xml + for arch in $(ARCHS); do \ + $(MAKE) clean_arch ZIP_SUFFIX=$$arch.zip; \ + done + rm -f $(ZIP_FILE) + rm -rf $(NAME) diff --git a/README.md b/README.md index 613826fca..d46569bac 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,129 @@ -plugin.video.pulsar -=================== +![](http://i.imgur.com/4eQhijh.png) -Pulsar addon for XBMC +[![Build Status](https://travis-ci.org/scakemyer/plugin.video.quasar.svg?branch=master)](https://travis-ci.org/scakemyer/plugin.video.quasar) +[![Join the chat at https://gitter.im/QuasarHQ/Lobby](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/QuasarHQ/Lobby) +[![Bountysource](https://www.bountysource.com/badge/team?team_id=133972&style=bounties_received)](https://www.bountysource.com/teams/plugin.video.quasar) + +What it is +---------- +Quasar is a torrent finding and streaming engine. It doesn't go on torrent websites for legal reasons. However, it calls specially crafted add-ons (called providers) that are installed separately. They are normal Kodi add-ons, and thus can be installed/updated/distributed just like any other add-on. + +This project is a fork of the well known, but no longer maintained Pulsar project from [steeve](https://github.com/steeve/plugin.video.pulsar). +Big thanks for his great job. + +Supported platforms +------------------- +- Windows 32/64 bits +- Linux 32/64 bits (starting Ubuntu 15.04) +- Linux ARM (Raspberry Pi, Cubox i4Pro, etc) +- OS X 64 bits +- Android ARM (4.4.x, L and M), x86 and x64 (L and M) + +Minimum supported Kodi version: 16 (Jarvis) + +Download +-------- +See the [Releases](https://github.com/scakemyer/plugin.video.quasar/releases) page. **Do NOT use the `Download ZIP` button on this page.** + + +Installation +------------ +- Go to Settings > Service settings > Control and **enable both Application control options** +- Restart Kodi if one or both options were not enabled +- Install Quasar like any other add-on + +Build +----- +The entire build process of Quasar is automated using Travis CI, and that's a +good thing because it's quite a complicated one with many dependencies and +repositories. Here's the stack from top to bottom: + +- [quasar](https://github.com/scakemyer/quasar) - The Quasar daemon itself, built on top of the cross-compiled libtorrent-go +- [libtorrent-go](https://github.com/scakemyer/libtorrent-go) - The libtorrent library with Go bindings, built using cross-compiler +- [cross-compiler](https://github.com/scakemyer/cross-compiler) - Builds the base images to, you guessed it, cross-compile Quasar + +#### Build status of each project +| quasar daemon | libtorrent-go | cross-compiler | +| ------------- | ------------- | -------------- | +| [![Build Status](https://travis-ci.org/scakemyer/quasar.svg?branch=master)](https://travis-ci.org/scakemyer/quasar) | [![Build Status](https://travis-ci.org/scakemyer/libtorrent-go.svg?branch=master)](https://travis-ci.org/scakemyer/libtorrent-go) | [![Build Status](https://travis-ci.org/scakemyer/cross-compiler.svg?branch=master)](https://travis-ci.org/scakemyer/cross-compiler) | + +There are different ways to build the Quasar daemon. You can either pull the different Docker images or build it all yourself. If you want to go for the latter, start by building the cross-compiler images, then libtorrent-go, and come back to Quasar afterwards. There should be enough info in each of the projects to get you started, but you'll obviously have to dive into the code at some point. + +Since the whole build process is now automated, this repository is using [pre-built binaries](https://github.com/scakemyer/quasar-binaries) from the last Quasar daemon build as a submodule. Here's how you'd build this add-on using those: +``` +git clone https://github.com/scakemyer/plugin.video.quasar +cd plugin.video.quasar +git submodule update --init +make +``` + +How it works +------------ +Quasar is a torrent finding and streaming engine. **It doesn't go on torrent websites for legal reasons**. It calls specially crafted add-ons (called **providers**) that are installed separately. They are normal Kodi add-ons, and thus can be installed/updated/distributed just like any other add-on. + +Quasar is centered around media: it browses media from [TheMovieDB](https://www.themoviedb.org/) and [Trakt.tv](https://trakt.tv/). +And so, when you decide you want to watch a media (i.e. given an TMDB ID), here's what Quasar does: + +- Enumerate the installed providers +- Call each provider to find the media you want to watch (in parallel) +- Each provider returns a list of BT links they found +- Collects and de-duplicates all the links +- Goes on the BitTorrent network to find out the number of seeds and peers in real time (i.e. not provided by the provider) +- Finds out of which quality are the different links (thanks to their name) +- Ranks the links by quality and availability (Quasar privileges quality over availability, but it's not dumb. However, you can get a full list to choose from manually if you want, or disable 'Choose stream automatically' to always choose manually) +- Sends the chosen link to the BitTorrent streaming engine + +All of this is done in less than 10s depending on your platform and timeout settings. Quasar is around 95% Go, and thus, it's *fast*. Very fast, actually. + +The BitTorrent streaming engine is very resilient (or at least it's designed to be). It's built on top of libtorrent 1.1, so it's very optimized, especially for low CPU machines. I have yet to find a media that doesn't play with the engine. + + +Providers +--------- +As said before, Quasar **relies on providers to find streams**. Providers are easy to write, and can be as little as ~20 lines of Python code. As they are normal Kodi add-ons, which can have their own configuration (although it is not recommended because it complicates things). + +Sample Quasar provider: [https://github.com/scakemyer/script.quasar.dummy](https://github.com/scakemyer/script.quasar.dummy) + +Providers are given a max amount of time to run before Quasar considers them to be too slow. The timeouts are as follow: +- 10 seconds on Intel CPUs +- 20 seconds on multi-core ARM CPUs +- 30 seconds on single core ARM CPUs (Raspberry Pi) + +Please note that for legal reasons, **I won't discuss, develop nor distribute any providers connecting to illegal sources**. So there is no need to ask me. +While I can partake in general discussions regarding provider development, **I won't do so for illegal sources specific problems**. + + +FAQ +--- +##### I can't code. How can I help? +Spread the word. Talk about it with your friends, show them, make videos, tutorials. Talk about it on social networks, blogs, etc... + +##### The plugin doesn't work, what can I do? +Please search currently [open and closed issues](https://github.com/scakemyer/plugin.video.quasar/issues) to see if it has already been reported and/or fixed. If not then add a new issue with a short but descriptive title, a detailed description and of course a link to the logs. If you don't know how to do that, just follow the guide at: [http://kodi.wiki/view/Log_file/Easy](http://kodi.wiki/view/Log_file/Easy). If you actually went through the logs and know the relevant part, you can instead paste that, as long as it's shorter than a hundred lines or so, and please enclose it in triple back-quotes for readability. + +##### Can I seek in a video? +Yes, but it can fail. + +##### What about seeding? +When watching a torrent, **you will be seeding while you watch the stream**. + +##### Does it download the whole file? Do I need the space? Is it ever deleted? +Yes, yes and yes. + +##### Can I keep the file after watching it? +Yes, change it in the add-on settings. + +##### Can I set it to download directly to my NAS? +Yes, but **you need to mount your NAS via the OS, not via Kodi**. + +##### Provider X is blocked in my country/ISP, how can I set another domain? +Sorry, I won't comment of specific providers. + + +Screenshots +----------- +![](https://raw.githubusercontent.com/scakemyer/plugin.video.quasar/master/resources/screenshots/home.jpg) + +![](https://raw.githubusercontent.com/scakemyer/plugin.video.quasar/master/resources/screenshots/movies.jpg) + +![](https://raw.githubusercontent.com/scakemyer/plugin.video.quasar/master/resources/screenshots/webui.png) diff --git a/addon.xml b/addon.xml new file mode 100644 index 000000000..35273a90b --- /dev/null +++ b/addon.xml @@ -0,0 +1,32 @@ + + + + + + + + + + video + + + + + + Quasar: Torrent streaming + Quasar is a torrent finding and streaming engine. It doesn't go on torrent websites for legal reasons. However, it calls specially crafted add-ons (called providers) that are installed separately.[CR]This project is a fork of the well known, but no longer maintained Pulsar project from steeve. + en el es de fi fr he hr it nl pt ro sk + all + https://github.com/scakemyer/plugin.video.quasar + https://github.com/scakemyer/plugin.video.quasar + http://forum.kodi.tv/showthread.php?tid=257967 + Non commercial. See https://github.com/scakemyer/plugin.video.quasar/blob/master/LICENSE + + icon.png + fanart.jpg + resources/screenshots/home.jpg + resources/screenshots/movies.jpg + resources/screenshots/webui.png + + + diff --git a/addon.xml.tpl b/addon.xml.tpl deleted file mode 100644 index c2b7e91fa..000000000 --- a/addon.xml.tpl +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - video - - - - all - - - diff --git a/fanart.jpg b/fanart.jpg index efbcb0e89..fe26b76dd 100644 Binary files a/fanart.jpg and b/fanart.jpg differ diff --git a/icon-menu.png b/icon-menu.png new file mode 100644 index 000000000..941e4f288 Binary files /dev/null and b/icon-menu.png differ diff --git a/icon.png b/icon.png new file mode 100644 index 000000000..69d57a2ef Binary files /dev/null and b/icon.png differ diff --git a/logo.png b/logo.png new file mode 100644 index 000000000..da28dfabe Binary files /dev/null and b/logo.png differ diff --git a/main.py b/main.py deleted file mode 100644 index 10f9ae212..000000000 --- a/main.py +++ /dev/null @@ -1,80 +0,0 @@ -import sys, os -sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'resources', 'site-packages')) - -import json -import sys -import urllib -import urllib2 -import xbmcgui -import xbmcplugin - -HANDLE = int(sys.argv[1]) -PULSARD_HOST = "http://localhost:10001" - -import socket -socket.setdefaulttimeout(120) - -class closing(object): - def __init__(self, thing): - self.thing = thing - def __enter__(self): - return self.thing - def __exit__(self, *exc_info): - self.thing.close() - -class NoRedirectHandler(urllib2.HTTPRedirectHandler): - def http_error_302(self, req, fp, code, msg, headers): - infourl = urllib.addinfourl(fp, headers, headers["Location"]) - infourl.status = code - infourl.code = code - return infourl - http_error_300 = http_error_302 - http_error_301 = http_error_302 - http_error_303 = http_error_302 - http_error_307 = http_error_302 -opener = urllib2.build_opener(NoRedirectHandler()) -urllib2.install_opener(opener) - -def _json(url): - with closing(urllib2.urlopen(url)) as response: - if response.code >= 300 and response.code <= 307: - xbmcplugin.setResolvedUrl(HANDLE, True, xbmcgui.ListItem(path=response.geturl())) - return - payload = response.read() - if payload: - return json.loads(payload) - -url = sys.argv[0].replace("plugin://plugin.video.pulsar", PULSARD_HOST) + sys.argv[2] -xbmc.log(repr(url)) -data = _json(url) -if data: - if data["content_type"]: - xbmcplugin.addSortMethod(HANDLE, xbmcplugin.SORT_METHOD_UNSORTED) - xbmcplugin.addSortMethod(HANDLE, xbmcplugin.SORT_METHOD_LABEL_IGNORE_THE) - xbmcplugin.addSortMethod(HANDLE, xbmcplugin.SORT_METHOD_DATE) - xbmcplugin.addSortMethod(HANDLE, xbmcplugin.SORT_METHOD_GENRE) - xbmcplugin.setContent(HANDLE, data["content_type"]) - - listitems = [] - for item in data["items"]: - listItem = xbmcgui.ListItem(label=item["label"], iconImage=item["icon"], thumbnailImage=item["thumbnail"]) - if item.get("info"): - listItem.setInfo("video", item["info"]) - if item.get("stream_info"): - for type_, values in item["stream_info"].items(): - listItem.addStreamInfo(type_, values) - if item.get("art"): - listItem.setArt(item["art"]) - if item.get("context_menu"): - listItem.addContextMenuItems(item["context_menu"]) - listItem.setProperty("isPlayable", item["is_playable"] and "true" or "false") - for k, v in (item.get("properties") or {}).items(): - listItem.setProperty(k, v) - listitems.append([ - item["path"], - listItem, - not item["is_playable"], - ]) - - xbmcplugin.addDirectoryItems(HANDLE, listitems, totalItems=len(listitems)) - xbmcplugin.endOfDirectory(HANDLE, succeeded=True, updateListing=False, cacheToDisc=True) diff --git a/navigation.py b/navigation.py new file mode 100644 index 000000000..6dcc830f1 --- /dev/null +++ b/navigation.py @@ -0,0 +1,6 @@ +import os +import sys +sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'resources', 'site-packages')) +from quasar import navigation + +navigation.run() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..39304807f --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +flake8 diff --git a/resources/bin b/resources/bin new file mode 160000 index 000000000..014ca2bef --- /dev/null +++ b/resources/bin @@ -0,0 +1 @@ +Subproject commit 014ca2bef53043720ecbf66728c805e9ee25beac diff --git a/resources/img/LICENSE b/resources/img/LICENSE new file mode 100644 index 000000000..65d538269 --- /dev/null +++ b/resources/img/LICENSE @@ -0,0 +1,10 @@ +Icons made by: +- Freepik http://www.flaticon.com/authors/freepik +- Icons8 http://www.flaticon.com/authors/icons8 +- Scott de Jonge http://www.flaticon.com/authors/scott-de-jonge +- Icomoon http://www.flaticon.com/authors/icomoon +- Anton Saputro http://www.flaticon.com/authors/anton-saputro +- Rami McMin http://www.flaticon.com/authors/rami-mcmin +- Google http://www.flaticon.com/authors/google + +Icons from www.flaticon.com are licensed by CC BY 3.0 (http://creativecommons.org/licenses/by/3.0/) diff --git a/resources/img/black.png b/resources/img/black.png new file mode 100644 index 000000000..1914264c0 Binary files /dev/null and b/resources/img/black.png differ diff --git a/resources/img/box_office.png b/resources/img/box_office.png new file mode 100755 index 000000000..095eac9e7 Binary files /dev/null and b/resources/img/box_office.png differ diff --git a/resources/img/clock.png b/resources/img/clock.png new file mode 100644 index 000000000..b77296437 Binary files /dev/null and b/resources/img/clock.png differ diff --git a/resources/img/cloud.png b/resources/img/cloud.png new file mode 100644 index 000000000..012d37acf Binary files /dev/null and b/resources/img/cloud.png differ diff --git a/resources/img/faq8.png b/resources/img/faq8.png new file mode 100644 index 000000000..455c1c96a Binary files /dev/null and b/resources/img/faq8.png differ diff --git a/resources/img/favourites.png b/resources/img/favourites.png new file mode 100644 index 000000000..402081a6d Binary files /dev/null and b/resources/img/favourites.png differ diff --git a/resources/img/fresh.png b/resources/img/fresh.png new file mode 100644 index 000000000..1108dab6c Binary files /dev/null and b/resources/img/fresh.png differ diff --git a/resources/img/genre_action.png b/resources/img/genre_action.png new file mode 100644 index 000000000..0bc4407c5 Binary files /dev/null and b/resources/img/genre_action.png differ diff --git a/resources/img/genre_adventure.png b/resources/img/genre_adventure.png new file mode 100644 index 000000000..db57a9f89 Binary files /dev/null and b/resources/img/genre_adventure.png differ diff --git a/resources/img/genre_animation.png b/resources/img/genre_animation.png new file mode 100644 index 000000000..833186323 Binary files /dev/null and b/resources/img/genre_animation.png differ diff --git a/resources/img/genre_comedy.png b/resources/img/genre_comedy.png new file mode 100644 index 000000000..6992a4f3d Binary files /dev/null and b/resources/img/genre_comedy.png differ diff --git a/resources/img/genre_crime.png b/resources/img/genre_crime.png new file mode 100644 index 000000000..aa9142ca7 Binary files /dev/null and b/resources/img/genre_crime.png differ diff --git a/resources/img/genre_documentary.png b/resources/img/genre_documentary.png new file mode 100644 index 000000000..1379caf28 Binary files /dev/null and b/resources/img/genre_documentary.png differ diff --git a/resources/img/genre_drama.png b/resources/img/genre_drama.png new file mode 100644 index 000000000..30dfc4efa Binary files /dev/null and b/resources/img/genre_drama.png differ diff --git a/resources/img/genre_education.png b/resources/img/genre_education.png new file mode 100644 index 000000000..fc068e8ba Binary files /dev/null and b/resources/img/genre_education.png differ diff --git a/resources/img/genre_family.png b/resources/img/genre_family.png new file mode 100644 index 000000000..a29100b11 Binary files /dev/null and b/resources/img/genre_family.png differ diff --git a/resources/img/genre_fantasy.png b/resources/img/genre_fantasy.png new file mode 100644 index 000000000..ef06e7b6b Binary files /dev/null and b/resources/img/genre_fantasy.png differ diff --git a/resources/img/genre_foreign.png b/resources/img/genre_foreign.png new file mode 100644 index 000000000..dafec0473 Binary files /dev/null and b/resources/img/genre_foreign.png differ diff --git a/resources/img/genre_history.png b/resources/img/genre_history.png new file mode 100644 index 000000000..9888537b0 Binary files /dev/null and b/resources/img/genre_history.png differ diff --git a/resources/img/genre_horror.png b/resources/img/genre_horror.png new file mode 100644 index 000000000..aa8049fff Binary files /dev/null and b/resources/img/genre_horror.png differ diff --git a/resources/img/genre_kids.png b/resources/img/genre_kids.png new file mode 100644 index 000000000..32b4874af Binary files /dev/null and b/resources/img/genre_kids.png differ diff --git a/resources/img/genre_music.png b/resources/img/genre_music.png new file mode 100644 index 000000000..7786acf6a Binary files /dev/null and b/resources/img/genre_music.png differ diff --git a/resources/img/genre_mystery.png b/resources/img/genre_mystery.png new file mode 100644 index 000000000..4b921299d Binary files /dev/null and b/resources/img/genre_mystery.png differ diff --git a/resources/img/genre_news.png b/resources/img/genre_news.png new file mode 100644 index 000000000..cf852fca6 Binary files /dev/null and b/resources/img/genre_news.png differ diff --git a/resources/img/genre_reality.png b/resources/img/genre_reality.png new file mode 100644 index 000000000..3b1832216 Binary files /dev/null and b/resources/img/genre_reality.png differ diff --git a/resources/img/genre_romance.png b/resources/img/genre_romance.png new file mode 100644 index 000000000..01a69c977 Binary files /dev/null and b/resources/img/genre_romance.png differ diff --git a/resources/img/genre_scifi.png b/resources/img/genre_scifi.png new file mode 100644 index 000000000..50ef46237 Binary files /dev/null and b/resources/img/genre_scifi.png differ diff --git a/resources/img/genre_soap.png b/resources/img/genre_soap.png new file mode 100644 index 000000000..40f55e709 Binary files /dev/null and b/resources/img/genre_soap.png differ diff --git a/resources/img/genre_talk.png b/resources/img/genre_talk.png new file mode 100644 index 000000000..8de036a47 Binary files /dev/null and b/resources/img/genre_talk.png differ diff --git a/resources/img/genre_thriller.png b/resources/img/genre_thriller.png new file mode 100644 index 000000000..e2a7c752c Binary files /dev/null and b/resources/img/genre_thriller.png differ diff --git a/resources/img/genre_tv.png b/resources/img/genre_tv.png new file mode 100644 index 000000000..c6d53d5f9 Binary files /dev/null and b/resources/img/genre_tv.png differ diff --git a/resources/img/genre_war.png b/resources/img/genre_war.png new file mode 100644 index 000000000..df4ab2207 Binary files /dev/null and b/resources/img/genre_war.png differ diff --git a/resources/img/genre_western.png b/resources/img/genre_western.png new file mode 100644 index 000000000..708e32c91 Binary files /dev/null and b/resources/img/genre_western.png differ diff --git a/resources/img/imdb.png b/resources/img/imdb.png new file mode 100644 index 000000000..f70ef35a5 Binary files /dev/null and b/resources/img/imdb.png differ diff --git a/resources/img/magnet.png b/resources/img/magnet.png new file mode 100644 index 000000000..5fccde8f1 Binary files /dev/null and b/resources/img/magnet.png differ diff --git a/resources/img/most_anticipated.png b/resources/img/most_anticipated.png new file mode 100755 index 000000000..7e6f8021f Binary files /dev/null and b/resources/img/most_anticipated.png differ diff --git a/resources/img/most_collected.png b/resources/img/most_collected.png new file mode 100755 index 000000000..3ff3e2b99 Binary files /dev/null and b/resources/img/most_collected.png differ diff --git a/resources/img/most_played.png b/resources/img/most_played.png new file mode 100755 index 000000000..5d557c9be Binary files /dev/null and b/resources/img/most_played.png differ diff --git a/resources/img/most_voted.png b/resources/img/most_voted.png new file mode 100644 index 000000000..33d708bd4 Binary files /dev/null and b/resources/img/most_voted.png differ diff --git a/resources/img/most_watched.png b/resources/img/most_watched.png new file mode 100755 index 000000000..8cdf54f34 Binary files /dev/null and b/resources/img/most_watched.png differ diff --git a/resources/img/movies.png b/resources/img/movies.png new file mode 100644 index 000000000..05967f508 Binary files /dev/null and b/resources/img/movies.png differ diff --git a/resources/img/multi-cloud.png b/resources/img/multi-cloud.png new file mode 100644 index 000000000..1cdc07627 Binary files /dev/null and b/resources/img/multi-cloud.png differ diff --git a/resources/img/nextpage.png b/resources/img/nextpage.png new file mode 100644 index 000000000..ddbcb7fd3 Binary files /dev/null and b/resources/img/nextpage.png differ diff --git a/resources/img/popular.png b/resources/img/popular.png new file mode 100644 index 000000000..a9249195b Binary files /dev/null and b/resources/img/popular.png differ diff --git a/resources/img/search.png b/resources/img/search.png new file mode 100644 index 000000000..ccf3d0b9e Binary files /dev/null and b/resources/img/search.png differ diff --git a/resources/img/settings.png b/resources/img/settings.png new file mode 100644 index 000000000..aa1e7d5f7 Binary files /dev/null and b/resources/img/settings.png differ diff --git a/resources/img/shield.png b/resources/img/shield.png new file mode 100644 index 000000000..07fffd413 Binary files /dev/null and b/resources/img/shield.png differ diff --git a/resources/img/top_rated.png b/resources/img/top_rated.png new file mode 100644 index 000000000..6131e7695 Binary files /dev/null and b/resources/img/top_rated.png differ diff --git a/resources/img/trakt.png b/resources/img/trakt.png new file mode 100644 index 000000000..4384837d9 Binary files /dev/null and b/resources/img/trakt.png differ diff --git a/resources/img/trending.png b/resources/img/trending.png new file mode 100755 index 000000000..337560bf7 Binary files /dev/null and b/resources/img/trending.png differ diff --git a/resources/img/tv.png b/resources/img/tv.png new file mode 100644 index 000000000..1b7e392a0 Binary files /dev/null and b/resources/img/tv.png differ diff --git a/resources/language/Croatian/strings.po b/resources/language/Croatian/strings.po new file mode 100644 index 000000000..fc1c2d329 --- /dev/null +++ b/resources/language/Croatian/strings.po @@ -0,0 +1,723 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-02-07 15:15+0100\n" +"PO-Revision-Date: 2017-02-11 12:25+0100\n" +"Last-Translator: penzinho\n" +"Language-Team: \n" +"Language: hr_HR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +# Settings +msgctxt "#30000" +msgid "General" +msgstr "Općenito" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Lokacija skidanja (ne FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Zadrži datoteke nakon gledanja/skidanja" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Velicina buffera (MB)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Max brzina uploada (kB/s)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Max brzina downloada (kB/s)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Slusaj port Min" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Slusaj port Max" + +msgctxt "#30008" +msgid "Proxy" +msgstr "Proxy" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "SOCKS v5 konfiguracija" + +msgctxt "#30010" +msgid "Enabled" +msgstr "Omogućeno" + +msgctxt "#30011" +msgid "Host" +msgstr "Host" + +msgctxt "#30012" +msgid "Port" +msgstr "Port" + +msgctxt "#30013" +msgid "Login" +msgstr "Korisničko ime" + +msgctxt "#30014" +msgid "Password" +msgstr "Šifra" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Napredno" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Proizvoljni timeout za providera" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Omogućeno (koristi na vlastiti rizik)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Timeout u sekundama" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Održavanje" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Izbriši cache" + +msgctxt "#30021" +msgid "Enable pagination" +msgstr "Omogući pagination" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Omogući statusni overlay" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Automatski izaberi stream" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Primi nadogradnje prije izdanja (pre-release)" + +msgctxt "#30025" +msgid "Limit rates after buffering only" +msgstr "Ograniči brzinu nakon što se napuni buffer" + +msgctxt "#30026" +msgid "Library path" +msgstr "Lokacija library-a" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Limit konekcija" + +msgctxt "#30028" +msgid "Background handling of torrents" +msgstr "Pozadinski rad torrenta" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Učestalost spremanja sesije (sekunde)" + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "Vertikalna udaljenost statusnog prozora" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "Onemogući providere koji nisu prošli test zdravlja" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "Dopusti greške prije nego se provider onemogući" + +msgctxt "#30033" +msgid "Appearance" +msgstr "Izgled" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "Zadani prikaz za filmove" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "Zadani prikaz za serije" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "Zadani prikaz za sezone" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "Zadani prikaz za epizode" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "Koristi originalni naziv" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "TheMovieDB" + +msgctxt "#30040" +msgid "API key" +msgstr "API ključ" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "Sortiranje streamova" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "Način sortiranja za filmove" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "Način sortiranja za serije" + +msgctxt "#30044" +msgid "By seeders" +msgstr "Po seederima" + +msgctxt "#30045" +msgid "By resolution" +msgstr "Po rezoluciji" + +msgctxt "#30046" +msgid "Balanced" +msgstr "Balansirano" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "Željena/prioritetna rezolucija filmova" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "Željena/prioritetna rezolucija serija" + +msgctxt "#30049" +msgid "Percentage of additional seeders required before choosing next resolution" +msgstr "Potreban postotak dodatnih seedera prije izabiranja iduće rezolucije" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "Onemogući DHT" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "Limit dijeljenja (postotak)" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "Limit vremena seedanja (postotak)" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "Vrijeme seedanja (sati)" + +msgctxt "#30054" +msgid "Update library" +msgstr "Osvježi library" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "Dodaj specijale u library" + +msgctxt "#30056" +msgid "Trakt" +msgstr "Trakt" + +msgctxt "#30057" +msgid "Username" +msgstr "Korisničko ime" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "Autoriziraj Quasar" + +msgctxt "#30059" +msgid "Library update delay on startup (seconds)" +msgstr "Odmak za osvježavanje library-a prilikom pokretanja (sekunde)" + +msgctxt "#30060" +msgid "Library update frequency (hours)" +msgstr "Učestalost osvježavanja library-a (sati)" + +msgctxt "#30061" +msgid "Sync frequency of Trakt lists to library (hours)" +msgstr "Učestalost sinkroniziranja Trakt lista sa library-em (sati)" + +msgctxt "#30062" +msgid "Ask to keep the files after streaming" +msgstr "Pitaj za zadržavanje datoteka nakon streamanja" + +msgctxt "#30114" +msgid "TheTVDB" +msgstr "TheTVDB" + +msgctxt "#30115" +msgid "TV scraper used by library" +msgstr "TV scraper koji koristi library" + +msgctxt "#30063" +msgid "Disable UPNP & NATPMP" +msgstr "Onemogući UPNP & NATPMP" + +msgctxt "#30064" +msgid "Encryption policy" +msgstr "Način enkripcije" + +msgctxt "#30065" +msgid "Disabled" +msgstr "Omogućeno" + +msgctxt "#30066" +msgid "Forced" +msgstr "Forsirano" + +msgctxt "#30067" +msgid "Proxy type" +msgstr "Tip proxy-a" + +msgctxt "#30068" +msgid "SOCKS4" +msgstr "SOCKS4" + +msgctxt "#30069" +msgid "SOCKS5" +msgstr "SOCKS5" + +msgctxt "#30070" +msgid "SOCKS5 password" +msgstr "SOCKS5 šifra" + +msgctxt "#30071" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30072" +msgid "HTTP password" +msgstr "HTTP šifra" + +msgctxt "#30073" +msgid "i2p" +msgstr "i2p" + +msgctxt "#30074" +msgid "Spoof user agent (highly inadvisable)" +msgstr "Lažiraj tip uređaja (jako nepreporučljivo)" + +msgctxt "#30075" +msgid "Default from libtorrent (acceptable)" +msgstr "Zadano iz libtorrenta (preporučljivo)" + +msgctxt "#30076" +msgid "libtorrent (Rasterbar) 1.1.0" +msgstr "libtorrent (Rasterbar) 1.1.0" + +msgctxt "#30077" +msgid "BitTorrent 7.5.0" +msgstr "BitTorrent 7.5.0" + +msgctxt "#30078" +msgid "BitTorrent 7.4.3" +msgstr "BitTorrent 7.4.3" + +msgctxt "#30079" +msgid "µTorrent 3.4.9" +msgstr "µTorrent 3.4.9" + +msgctxt "#30080" +msgid "µTorrent 3.2.0" +msgstr "µTorrent 3.2.0" + +msgctxt "#30081" +msgid "µTorrent 2.2.1" +msgstr "µTorrent 2.2.1" + +msgctxt "#30082" +msgid "Transmission 2.92" +msgstr "Transmission 2.92" + +msgctxt "#30083" +msgid "Deluge 1.3.6.0" +msgstr "Deluge 1.3.6.0" + +msgctxt "#30084" +msgid "Deluge 1.3.12.0" +msgstr "Deluge 1.3.12.0" + +msgctxt "#30085" +msgid "Vuze 5.7.3.0" +msgstr "Vuze 5.7.3.0" + +msgctxt "#30086" +msgid "Enable tuned storage settings" +msgstr "Omogući podešene postavke pohrane" + +msgctxt "#30087" +msgid "Ask to delete the files after streaming" +msgstr "Pitaj da izbrišeš datoteke nakon streamanja" + +# Interface +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Quasar se srušio, ponovno pokrećem..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Morate restartati Kodi prije korištenja Quasara" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Ovaj add-on se može pokrenuti jedino iz Quasara" + +msgctxt "#30103" +msgid "Unable to find Quasar binary" +msgstr "Ne može se naći Quasarov binary" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Ubaci file ili URL" + +msgctxt "#30105" +msgid "URL" +msgstr "URL" + +msgctxt "#30106" +msgid "File" +msgstr "File/datoteka" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "Ubaci URL" + +msgctxt "#30108" +msgid "File path" +msgstr "Put do datoteke" + +msgctxt "#30109" +msgid "OK" +msgstr "OK" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "Srušio se previše puta, obustavljam..." + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "Provider se srušio previše puta, onemogućavam..." + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "Provider se ne može onemogućiti" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "Lokacija skidanja nije određena, provjerite postavke" + +# Quasar daemon + +msgctxt "#30200" +msgid "Cache cleared" +msgstr "Cache očišćen" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Traži TV serije" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Izaberi Stream..." + +msgctxt "#30203" +msgid "Show information" +msgstr "Informacije o seriji" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "Ne mogu naći providere" + +msgctxt "#30205" +msgid "No links were found" +msgstr "Nije pronađen niti jedan link" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Traži filmove" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "Nema dovoljno mjesta na lokaciji skidanja." + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "Quasar daemon je pokrenut" + +msgctxt "#30209" +msgid "Search" +msgstr "Traži" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Najpopularnije" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "Najbolje ocjenjeno" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Najviše glasano" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "IMDB Top 250" + +msgctxt "#30214" +msgid "Movies" +msgstr "Filmovi" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "TV Serije" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Dodaj torrent" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Zalijepi Magnet ili URL" + +msgctxt "#30218" +msgid "Next page" +msgstr "Slijedeća stranica" + +msgctxt "#30219" +msgid "Add/Remove from library" +msgstr "Dodaj/Ukloni iz library-a" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "Lokacija library-a nije određena" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Uspješno dodano u library" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Uklonjeno iz library-a" + +msgctxt "#30223" +msgid "Files" +msgstr "Datoteke" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Greška u provideru" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Greška u navigaciji" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Greška Daemona" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Greška prilikom updatea Quasar daemona" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Dostupni streamovi za" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Torrenti" + +msgctxt "#30230" +msgid "Play/resume torrent" +msgstr "Pokreni/nastavi torrent" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Pauziraj torrent" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Izbriši torrent" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Pauziraj sesiju" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Nastavi sesiju" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "Nastavi torrent" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Nedavno objavljeno" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Aktualne Serije" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Posljednje epizode" + +msgctxt "#30239" +msgid "Providers" +msgstr "Provideri" + +msgctxt "#30240" +msgid "Enable" +msgstr "Omogući" + +msgctxt "#30241" +msgid "Disable" +msgstr "Onemogući" + +msgctxt "#30242" +msgid "Check" +msgstr "Provjera" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "Greške providera" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "Postavke providera" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "Popularno na Traktu" + +msgctxt "#30246" +msgid "Trending" +msgstr "U trendu" + +msgctxt "#30247" +msgid "Most Played" +msgstr "Najviše pokretano" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "Najviše gledano" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "Najviše skupljeno" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "Najiščekivanje" + +msgctxt "#30251" +msgid "Box Office" +msgstr "Box Office" + +msgctxt "#30252" +msgid "Add to library" +msgstr "Dodaj u library" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "Ukloni iz library-a" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "Lista za gledanje" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "Dodaj u listu za gledanje" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "Ukloni iz liste za gledanje" + +msgctxt "#30257" +msgid "Collection" +msgstr "Kolekcija" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "Dodaj u kolekciju" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "Ukloni iz kolekcije" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "Torrent je već izabran, da ga koristim?" + +msgctxt "#30261" +msgid "Search history" +msgstr "Povijest pretrage" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "Koristiti povijest pretrage?" + +msgctxt "#30263" +msgid "Lists" +msgstr "Liste" + +msgctxt "#30264" +msgid "Reset clearances" +msgstr "Poništi dopšuštenja" + +msgctxt "#30265" +msgid "Item already in library" +msgstr "Stvar se već nalazi u library-u" + +msgctxt "#30266" +msgid "Ignore duplicates" +msgstr "Ignoriraj duplikate" + +msgctxt "#30267" +msgid "Keep downloaded files?" +msgstr "Zadrži skinute datoteke?" + +msgctxt "#30268" +msgid "Toggle watched" +msgstr "Prebaci gledane" + +msgctxt "#30269" +msgid "Delete downloaded files?" +msgstr "Izbriši skinute datoteke?" + +msgctxt "#30270" +msgid "Match found in your active torrents, play it?" +msgstr "Isto je već nađeno u tvojim aktivnim torrentima, da pokrenem?" \ No newline at end of file diff --git a/resources/language/Dutch/strings.po b/resources/language/Dutch/strings.po new file mode 100644 index 000000000..75d7a8e65 --- /dev/null +++ b/resources/language/Dutch/strings.po @@ -0,0 +1,898 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"Last-Translator: MrLegendary\n" +"Language-Team: \n" +"Language: nl_NL\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" + +# Settings + +msgctxt "#30000" +msgid "General" +msgstr "Algemeen" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Download pad (Geen FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Behoud bestanden nadat afspelen/downloaden is beeindigd." + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Buffergrootte (MB)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Max upload snelheid (kB/s)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Max download snelheid (kB/s)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Luister poort min" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Luister poort max" + +msgctxt "#30008" +msgid "Proxy" +msgstr "Proxy" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "SOCKS v5 Configuratie" + +msgctxt "#30010" +msgid "Enabled" +msgstr "Ingeschakeld" + +msgctxt "#30011" +msgid "Host" +msgstr "Host" + +msgctxt "#30012" +msgid "Port" +msgstr "Poort" + +msgctxt "#30013" +msgid "Login" +msgstr "Inloggen" + +msgctxt "#30014" +msgid "Password" +msgstr "Wachtwoord" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Geavanceerd" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Aangepaste provider time-out" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Ingeschakeld (gebruik op eigen risico)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Time-out in seconden" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Onderhoud" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Cache opschonen" + +msgctxt "#30021" +msgid "Results per page" +msgstr "Resultaten per pagina" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Inschakelen overlay status balk" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Kies stream automatisch" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Verkrijg updates voor pre-releases" + +msgctxt "#30025" +msgid "Limit rates after buffering only" +msgstr "Beperk snelheden na het bufferen" + +msgctxt "#30026" +msgid "Library path" +msgstr "Bibliotheekpad" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Maximaal aantal verbindingen" + +msgctxt "#30028" +msgid "Background handling of torrents" +msgstr "Op de achtergrond verwerken van torrents" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Frequency voor het opslaan van een sessie (seconden)" + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "Overlay status verticale offset" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "Falende provider gezondheid check niet uitvoeren" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "Aantal toegestaande foutmelding voordat een provider uitgezet wordt" + +msgctxt "#30033" +msgid "Appearance" +msgstr "Uiterlijk" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "Standaardweergave voor films" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "Standaardweergave voor series" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "Standaardweergave voor seizoenen" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "Standaardweergave voor afleveringen" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "Voorkeur voor gebruik originele titel" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "TheMovieDB" + +msgctxt "#30040" +msgid "API key" +msgstr "API key" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "Stream sorteren" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "Sorteer modus voor films" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "Sorteer modus voor series" + +msgctxt "#30044" +msgid "By seeders" +msgstr "Via seeders" + +msgctxt "#30045" +msgid "By resolution" +msgstr "Via resolutie" + +msgctxt "#30046" +msgid "Balanced" +msgstr "Gebalanceerd" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "Resolutie voorkeur voor films" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "Resolutie voorkeur voor series" + +msgctxt "#30049" +msgid "Percentage of additional seeders required before choosing next resolution" +msgstr "Benodigd percentage van extra seeders voordat volgende resolutie gekozen" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "DHT uitschakelen" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "Deel ratio (procent)" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "Seed tijd ratio limiet (procent)" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "Seed tijd limiet (uren)" + +msgctxt "#30054" +msgid "Update library" +msgstr "Bibliotheek bijwerken" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "Voeg speciale afleveringen toe aan bibliotheek" + +msgctxt "#30056" +msgid "Trakt" +msgstr "Trakt" + +msgctxt "#30057" +msgid "Username" +msgstr "Gebruikersnaam" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "Autoriseer Quasar" + +msgctxt "#30059" +msgid "Library update delay on startup (seconds)" +msgstr "Vertraag bijwerken van bibliotheek tijdens starten (seconden)" + +msgctxt "#30060" +msgid "Library update frequency (hours)" +msgstr "Bibliotheek update frequentie (uren)" + +msgctxt "#30061" +msgid "Sync frequency of Trakt lists to library (hours)" +msgstr "Synchroniseer frequentie tussen Trakt en bibliotheek (uren)" + +msgctxt "#30062" +msgid "Ask to keep the files after streaming" +msgstr "Vraag om bestanden te behouden na streamen" + +msgctxt "#30063" +msgid "Disable UPNP & NATPMP" +msgstr "Schakel UPNP & NATPMP uit" + +msgctxt "#30064" +msgid "Encryption policy" +msgstr "Encryptiebeleid" + +msgctxt "#30065" +msgid "Disabled" +msgstr "Uitgeschakeld" + +msgctxt "#30066" +msgid "Forced" +msgstr "Geforceerd" + +msgctxt "#30067" +msgid "Proxy type" +msgstr "Proxy type" + +msgctxt "#30068" +msgid "SOCKS4" +msgstr "SOCKS4" + +msgctxt "#30069" +msgid "SOCKS5" +msgstr "SOCKS5" + +msgctxt "#30070" +msgid "SOCKS5 password" +msgstr "SOCKS5 wachtwoord" + +msgctxt "#30071" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30072" +msgid "HTTP password" +msgstr "HTTP wachtwoord" + +msgctxt "#30073" +msgid "i2p" +msgstr "i2p" + +msgctxt "#30074" +msgid "Spoof user agent (highly inadvisable)" +msgstr "Spoof user agent (niet aanbevolen)" + +msgctxt "#30075" +msgid "Default from libtorrent (acceptable)" +msgstr "Standaard van LibTorrent (acceptabel)" + +msgctxt "#30076" +msgid "libtorrent (Rasterbar) 1.1.0" +msgstr "libtorrent (Rasterbar) 1.1.0" + +msgctxt "#30077" +msgid "BitTorrent 7.5.0" +msgstr "BitTorrent 7.5.0" + +msgctxt "#30078" +msgid "BitTorrent 7.4.3" +msgstr "BitTorrent 7.4.3" + +msgctxt "#30079" +msgid "µTorrent 3.4.9" +msgstr "µTorrent 3.4.9" + +msgctxt "#30080" +msgid "µTorrent 3.2.0" +msgstr "µTorrent 3.2.0" + +msgctxt "#30081" +msgid "µTorrent 2.2.1" +msgstr "µTorrent 2.2.1" + +msgctxt "#30082" +msgid "Transmission 2.92" +msgstr "Transmission 2.92" + +msgctxt "#30083" +msgid "Deluge 1.3.6.0" +msgstr "Deluge 1.3.6.0" + +msgctxt "#30084" +msgid "Deluge 1.3.12.0" +msgstr "Deluge 1.3.12.0" + +msgctxt "#30085" +msgid "Vuze 5.7.3.0" +msgstr "Vuze 5.7.3.0" + +msgctxt "#30086" +msgid "Enable tuned storage settings" +msgstr "Schakel afgestelde opslag instellingen in" + +msgctxt "#30087" +msgid "Ask to delete the files after streaming" +msgstr "Vraag om bestanden de verwijderen na streamen" + +msgctxt "#30088" +msgid "Initial buffering timeout (seconds)" +msgstr "Buffer time-out (seconden)" + +msgctxt "#30089" +msgid "Automatically re-scan Kodi library after updates" +msgstr "Automatisch Kodi bibliotheek herscannen na updates" + +msgctxt "#30090" +msgid "Listen interfaces" +msgstr "Luister interfaces" + +msgctxt "#30091" +msgid "Outgoing interfaces" +msgstr "Uitgaande interfaces" + +msgctxt "#30092" +msgid "Use default fanart" +msgstr "Gebruik standaard fanart" + +msgctxt "#30093" +msgid "Do Not Disturb mode" +msgstr "Niet storen modus" + + +# Interface + +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Quasar is gecrasht, opnieuw starten..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Je moet Kodi opnieuw opstarten voordat je Quasar gebruikt" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Deze add-on kan alleen gebruikt worden door Quasar" + +msgctxt "#30103" +msgid "Unable to find Quasar binary" +msgstr "Kan Quasar binary niet vinden" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Bestand of URL invoeren" + +msgctxt "#30105" +msgid "URL" +msgstr "URL" + +msgctxt "#30106" +msgid "File" +msgstr "Bestand" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "URL invoeren" + +msgctxt "#30108" +msgid "File path" +msgstr "Bestandspad" + +msgctxt "#30109" +msgid "OK" +msgstr "OK" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "Te vaak gecrasht, afsluiten..." + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "Provider te vaak gefaald, stoppen..." + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "Kan provider niet uitzetten" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "Download pad niet bepaald, controleer uw instellingen" + +msgctxt "#30114" +msgid "TheTVDB" +msgstr "TheTVDB" + +msgctxt "#30115" +msgid "TV show scraper used by Kodi library" +msgstr "Serie scraper gebruikt door Kodi bibliotheek" + +msgctxt "#30116" +msgid "Looks like Quasar is still starting up, give it a few seconds..." +msgstr "Quasar is nog aan het opstarten, even geduld..." + +msgctxt "#30117" +msgid "Resolving torrent files..." +msgstr "Torrent bestanden opzoeken..." + +msgctxt "#30118" +msgid "Scraping trackers..." +msgstr "Scraping trackers..." + +msgctxt "#30141" +msgid "Please support Quasar development by visiting https://quasar.surge.sh/donate" +msgstr "Doneer aan Quasar development door https://quasar.surge.sh/donte te bezoeken" + +msgctxt "#30142" +msgid "Default view for menus in Movies" +msgstr "Standaard weergave voor menu's in Films" + +msgctxt "#30143" +msgid "Default view for menus in TV Shows" +msgstr "Standaard weergave voor menu's in Series" + +msgctxt "#30144" +msgid "Default view for movie genres" +msgstr "Standaard weergave voor film genres" + +msgctxt "#30145" +msgid "Default view for TV show genres" +msgstr "Standaard weergave voor serie genres" + + +# Quasar daemon + +msgctxt "#30200" +msgid "Cache cleared" +msgstr "Cache opgeschoond" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Zoeken van series" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Kies stream..." + +msgctxt "#30203" +msgid "Show information" +msgstr "Toon informatie" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "Geen providers gevonden" + +msgctxt "#30205" +msgid "No links were found" +msgstr "Geen links gevonden" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Zoek Films" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "Niet genoeg ruimte beschikbaar in het download pad." + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "Quasar daemon is gestart" + +msgctxt "#30209" +msgid "Search" +msgstr "Zoeken" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Meest Populair" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "Best beoordeeld" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Meeste stemmen" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "IMDB Top 250" + +msgctxt "#30214" +msgid "Movies" +msgstr "Films" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "Series" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Torrent toevoegen" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Plak Magnet of URL" + +msgctxt "#30218" +msgid "Next page" +msgstr "Volgende pagina" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "Toevoegen / verwijderen van bibliotheek" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "Bibliotheek pad niet bepaald" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Item succesvol aan bibliotheek toegevoegd" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Bestand verwijderd uit bibliotheek" + +msgctxt "#30223" +msgid "Files" +msgstr "Bestanden" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Provider error" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Navigatie error" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Daemon error" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Fout tijdens updaten van Quasar daemon" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Beschikbare streams voor" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Torrents" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "Torrent afspelen / hervatten" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Torrent pauzeren" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Torrent verwijderen" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Sessie pauzeren" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Sessie hervatten" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "Torrent hervatten" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Recent uitgebracht" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Recente Series" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Recente Afleveringen" + +msgctxt "#30239" +msgid "Providers" +msgstr "Providers" + +msgctxt "#30240" +msgid "Enable" +msgstr "Inschakelen" + +msgctxt "#30241" +msgid "Disable" +msgstr "Inschakelen" + +msgctxt "#30242" +msgid "Check" +msgstr "Controleren" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "Provider storingen" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "Provider instellingen" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "Populair op Trakt" + +msgctxt "#30246" +msgid "Trending" +msgstr "Trending" + +msgctxt "#30247" +msgid "Most Played" +msgstr "Meest afgespeeld" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "Meest bekeken" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "Meest verzameld" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "Meest verwacht" + +msgctxt "#30251" +msgid "Box Office" +msgstr "Box Office" + +msgctxt "#30252" +msgid "Add to library" +msgstr "Toevoegen aan bibliotheek" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "Verwijderen van bibliotheek" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "Kijklijst" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "Toevoegen aan kijklijst" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "Verwijderen van kijklijst" + +msgctxt "#30257" +msgid "Collection" +msgstr "Collectie" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "Toevoegen aan collectie" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "Verwijderen van collectie" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "Eerder gekozen torrent gebruiken?" + +msgctxt "#30261" +msgid "Search history" +msgstr "Zoek geschiedenis" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "Zoek geschiedenis gebruiken?" + +msgctxt "#30263" +msgid "Lists" +msgstr "Lijsten" + +msgctxt "#30264" +msgid "Reset clearances" +msgstr "Reset clearances" + +msgctxt "#30265" +msgid "Item already in library" +msgstr "Onderdeel zit al in bibliotheek" + +msgctxt "#30266" +msgid "Ignore duplicates" +msgstr "Negeer duplicaten" + +msgctxt "#30267" +msgid "Keep downloaded files?" +msgstr "Gedownloade bestanden behouden?" + +msgctxt "#30268" +msgid "Toggle watched" +msgstr "Toggle bekeken" + +msgctxt "#30269" +msgid "Delete downloaded files?" +msgstr "Gedownloade bestanden verwijderen?" + +msgctxt "#30270" +msgid "Match found in your active torrents, play it?" +msgstr "Match gevonden in uw actieve torrents, wilt u deze afspelen?" + +msgctxt "#30271" +msgid "There is now an official multi-provider for Quasar called [COLOR FFFF6B00]Burst[/COLOR], would you like to install it now?" +msgstr "Er is nu een officiele multi-provider voor Quasar genaamd [COLOR FFFF6B00]Burst[/COLOR], wilt u deze nu installeren?" + +msgctxt "#30272" +msgid "Installation successful, enjoy Quasar [COLOR FFFF6B00]Burst[/COLOR]!" +msgstr "Installatie succesvol, veel plezier met het gebruik van Quasar [COLOR FFFF6B00]Burst[/COLOR]!" + +msgctxt "#30273" +msgid "Shoot... It looks like we couldn't install [COLOR FFFF6B00]Burst[/COLOR] automatically, head over to the Quasar Repository, then under the Program add-ons section to install it." +msgstr "Het is niet gelukt Quasar [COLOR FFFF6B00]Burst[/COLOR] automatisch te installeren, ga naar de Quasar Repository. Via programma add-ons kunt u het installeren" + +msgctxt "#30274" +msgid "Enable all" +msgstr "Alles inschakelen" + +msgctxt "#30275" +msgid "Disable all" +msgstr "Alles uitschakelen" + +msgctxt "#30276" +msgid "Delete torrent and files" +msgstr "Torrent en bestanden verwijderen." + +msgctxt "#30277" +msgid "%s added to library, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "%s toegevoegd aan bibliotheek, wilt u nu opnieuw scannen?[CR] U kunt ook Kodi's 'Bibliotheek bijwerken' functie gebruiken" + +msgctxt "#30278" +msgid "%s removed from library, do you want to clean it?[CR]You can later use Kodi's 'Clean library' feature instead." +msgstr "%s verwijderd van bibliotheek, wilt u nu opnieuw scannen?[CR] U kunt ook Kodi's 'Bibliotheek opschonen' functie gebruiken" + +msgctxt "#30279" +msgid "Watchlist added to library" +msgstr "Kijklijst toegevoegd aan bibliotheek" + +msgctxt "#30280" +msgid "Collection added to library" +msgstr "Collectie toegevoegd aan bibliotheek" + +msgctxt "#30281" +msgid "List added to library" +msgstr "Lijst toegevoegd aan bibliotheek" + +msgctxt "#30282" +msgid "Nothing left to remove from Quasar" +msgstr "Niks over om te verwijderen van Quasar" + +msgctxt "#30283" +msgid "Merge to library" +msgstr "Samenvoegen met bibliotheek" + +msgctxt "#30284" +msgid "Show unaired seasons" +msgstr "Vertoon niet uitgezonden seizoenen" + +msgctxt "#30285" +msgid "Show unaired episodes" +msgstr "Vertoon niet uitgezonden afleveringen" + +msgctxt "#30286" +msgid "%s merged to library, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "%s samengevoegd met bibliotheek, wilt u nu opnieuw scannen?[CR] U kunt ook Kodi's 'Bibliotheek bijwerken' functie gebruiken" + +msgctxt "#30287" +msgid "%s already in library" +msgstr "%s zit al in uw bibliotheek" + +msgctxt "#30288" +msgid "Library updated, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "Bibliotheek geupdate, wilt u nu opnieuw scannen?[CR] U kunt ook Kodi's 'Bibliotheek bijwerken' functie gebruiken" + +msgctxt "#30289" +msgid "Genres" +msgstr "Genres" + +msgctxt "#30290" +msgid "Calendars" +msgstr "Kalenders" + +msgctxt "#30291" +msgid "My Movies" +msgstr "Mijn Films" + +msgctxt "#30292" +msgid "My Releases" +msgstr "Mijn Releases" + +msgctxt "#30293" +msgid "All Movies" +msgstr "Alle Films" + +msgctxt "#30294" +msgid "All Releases" +msgstr "Alle Releases" + +msgctxt "#30295" +msgid "My Shows" +msgstr "Mijn Series" + +msgctxt "#30296" +msgid "My New Shows" +msgstr "Mijn Nieuwe Series" + +msgctxt "#30297" +msgid "My Premieres" +msgstr "Mijn Premieres" + +msgctxt "#30298" +msgid "All Shows" +msgstr "Alle Series" + +msgctxt "#30299" +msgid "All New Shows" +msgstr "Alle Nieuwe Series" + +msgctxt "#30300" +msgid "All Premieres" +msgstr "Alle Premieres" diff --git a/resources/language/English/strings.po b/resources/language/English/strings.po new file mode 100644 index 000000000..e549781dd --- /dev/null +++ b/resources/language/English/strings.po @@ -0,0 +1,974 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + + +# Settings + +msgctxt "#30000" +msgid "General" +msgstr "" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "" + +msgctxt "#30008" +msgid "Proxy" +msgstr "" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "" + +msgctxt "#30010" +msgid "Enabled" +msgstr "" + +msgctxt "#30011" +msgid "Host" +msgstr "" + +msgctxt "#30012" +msgid "Port" +msgstr "" + +msgctxt "#30013" +msgid "Login" +msgstr "" + +msgctxt "#30014" +msgid "Password" +msgstr "" + +msgctxt "#30015" +msgid "Advanced" +msgstr "" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "" + +msgctxt "#30021" +msgid "Results per page" +msgstr "" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "" + +msgctxt "#30025" +msgid "Limit rates after initial buffering only" +msgstr "" + +msgctxt "#30026" +msgid "Library path" +msgstr "" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "" + +msgctxt "#30028" +msgid "Do not ask to keep downloading" +msgstr "" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "" + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "" + +msgctxt "#30033" +msgid "Appearance" +msgstr "" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "" + +msgctxt "#30040" +msgid "API key" +msgstr "" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "" + +msgctxt "#30044" +msgid "By seeders" +msgstr "" + +msgctxt "#30045" +msgid "By resolution" +msgstr "" + +msgctxt "#30046" +msgid "Balanced" +msgstr "" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "" + +msgctxt "#30049" +msgid "Percentage of additional seeders required before choosing next resolution" +msgstr "" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "" + +msgctxt "#30054" +msgid "Update library" +msgstr "" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "" + +msgctxt "#30056" +msgid "Trakt" +msgstr "" + +msgctxt "#30057" +msgid "Username" +msgstr "" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "" + +msgctxt "#30059" +msgid "Library update delay on startup (seconds)" +msgstr "" + +msgctxt "#30060" +msgid "Library update frequency (hours)" +msgstr "" + +msgctxt "#30061" +msgid "Sync frequency of Trakt lists to library (hours)" +msgstr "" + +msgctxt "#30062" +msgid "Ask to keep the files after streaming" +msgstr "" + +msgctxt "#30063" +msgid "Disable UPNP & NATPMP" +msgstr "" + +msgctxt "#30064" +msgid "Encryption policy" +msgstr "" + +msgctxt "#30065" +msgid "Disabled" +msgstr "" + +msgctxt "#30066" +msgid "Forced" +msgstr "" + +msgctxt "#30067" +msgid "Proxy type" +msgstr "" + +msgctxt "#30068" +msgid "SOCKS4" +msgstr "" + +msgctxt "#30069" +msgid "SOCKS5" +msgstr "" + +msgctxt "#30070" +msgid "SOCKS5 password" +msgstr "" + +msgctxt "#30071" +msgid "HTTP" +msgstr "" + +msgctxt "#30072" +msgid "HTTP password" +msgstr "" + +msgctxt "#30073" +msgid "i2p" +msgstr "" + +msgctxt "#30074" +msgid "Spoof user agent (highly inadvisable)" +msgstr "" + +msgctxt "#30075" +msgid "Default from libtorrent (acceptable)" +msgstr "" + +msgctxt "#30076" +msgid "libtorrent (Rasterbar) 1.1.0" +msgstr "" + +msgctxt "#30077" +msgid "BitTorrent 7.5.0" +msgstr "" + +msgctxt "#30078" +msgid "BitTorrent 7.4.3" +msgstr "" + +msgctxt "#30079" +msgid "µTorrent 3.4.9" +msgstr "" + +msgctxt "#30080" +msgid "µTorrent 3.2.0" +msgstr "" + +msgctxt "#30081" +msgid "µTorrent 2.2.1" +msgstr "" + +msgctxt "#30082" +msgid "Transmission 2.92" +msgstr "" + +msgctxt "#30083" +msgid "Deluge 1.3.6.0" +msgstr "" + +msgctxt "#30084" +msgid "Deluge 1.3.12.0" +msgstr "" + +msgctxt "#30085" +msgid "Vuze 5.7.3.0" +msgstr "" + +msgctxt "#30086" +msgid "Enable tuned storage settings" +msgstr "" + +msgctxt "#30087" +msgid "Ask to delete the files after streaming" +msgstr "" + +msgctxt "#30088" +msgid "Initial buffering timeout (seconds)" +msgstr "" + +msgctxt "#30089" +msgid "Automatically re-scan Kodi library after updates" +msgstr "" + +msgctxt "#30090" +msgid "Listen interfaces" +msgstr "" + +msgctxt "#30091" +msgid "Outgoing interfaces" +msgstr "" + +msgctxt "#30092" +msgid "Use default fanart" +msgstr "" + +msgctxt "#30093" +msgid "Disable notification sound" +msgstr "" + +msgctxt "#30094" +msgid "Disable background progress dialog" +msgstr "" + +msgctxt "#30095" +msgid "Resume playback from library integration" +msgstr "" + +msgctxt "#30096" +msgid "Never" +msgstr "" + +msgctxt "#30097" +msgid "Always" +msgstr "" + +msgctxt "#30098" +msgid "Active torrents only" +msgstr "" + + +# Interface + +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "" + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "" + +msgctxt "#30103" +msgid "Unable to find Quasar binary[CR]Required platform:" +msgstr "" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "" + +msgctxt "#30105" +msgid "URL" +msgstr "" + +msgctxt "#30106" +msgid "File" +msgstr "" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "" + +msgctxt "#30108" +msgid "File path" +msgstr "" + +msgctxt "#30109" +msgid "OK" +msgstr "" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "" + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "" + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "" + +msgctxt "#30114" +msgid "TheTVDB" +msgstr "" + +msgctxt "#30115" +msgid "TV show scraper used by Kodi library" +msgstr "" + +msgctxt "#30116" +msgid "Looks like Quasar is still starting up, give it a few seconds..." +msgstr "" + +msgctxt "#30117" +msgid "Resolving torrent files..." +msgstr "" + +msgctxt "#30118" +msgid "Scraping trackers..." +msgstr "" + +msgctxt "#30141" +msgid "Please support Quasar development by visiting https://quasar.surge.sh/donate" +msgstr "" + +msgctxt "#30142" +msgid "Default view for menus in Movies" +msgstr "" + +msgctxt "#30143" +msgid "Default view for menus in TV Shows" +msgstr "" + +msgctxt "#30144" +msgid "Default view for movie genres" +msgstr "" + +msgctxt "#30145" +msgid "Default view for TV show genres" +msgstr "" + +msgctxt "#30146" +msgid "Keep downloading?" +msgstr "" + +msgctxt "#30147" +msgid "Caches are still warming up, give it a minute or two..." +msgstr "" + +msgctxt "#30148" +msgid "Caches warmed up" +msgstr "" + +msgctxt "#30149" +msgid "Trakt username not set, check your settings" +msgstr "" + +msgctxt "#30199" +msgid "No available JSON-RPC connection to Kodi.[CR]Enable both Application control options in Service settings / Control and restart Kodi." +msgstr "" + + +# Quasar daemon + +msgctxt "#30200" +msgid "Cache cleared" +msgstr "" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "" + +msgctxt "#30203" +msgid "Show information" +msgstr "" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "" + +msgctxt "#30205" +msgid "No links were found" +msgstr "" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "" + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "" + +msgctxt "#30209" +msgid "Search" +msgstr "" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "" + +msgctxt "#30214" +msgid "Movies" +msgstr "" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "" + +msgctxt "#30218" +msgid "Next page" +msgstr "" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "" + +msgctxt "#30223" +msgid "Files" +msgstr "" + +msgctxt "#30224" +msgid "Provider error" +msgstr "" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "" + +msgctxt "#30229" +msgid "Torrents" +msgstr "" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "" + +msgctxt "#30233" +msgid "Pause session" +msgstr "" + +msgctxt "#30234" +msgid "Resume session" +msgstr "" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "" + +msgctxt "#30239" +msgid "Providers" +msgstr "" + +msgctxt "#30240" +msgid "Enable" +msgstr "" + +msgctxt "#30241" +msgid "Disable" +msgstr "" + +msgctxt "#30242" +msgid "Check" +msgstr "" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "" + +msgctxt "#30246" +msgid "Trending" +msgstr "" + +msgctxt "#30247" +msgid "Most Played" +msgstr "" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "" + +msgctxt "#30251" +msgid "Box Office" +msgstr "" + +msgctxt "#30252" +msgid "Add to library" +msgstr "" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "" + +msgctxt "#30257" +msgid "Collection" +msgstr "" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "" + +msgctxt "#30261" +msgid "Search history" +msgstr "" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "" + +msgctxt "#30263" +msgid "Lists" +msgstr "" + +msgctxt "#30264" +msgid "Reset clearances" +msgstr "" + +msgctxt "#30265" +msgid "Item already in library" +msgstr "" + +msgctxt "#30266" +msgid "Ignore duplicates" +msgstr "" + +msgctxt "#30267" +msgid "Keep downloaded files?" +msgstr "" + +msgctxt "#30268" +msgid "Toggle watched" +msgstr "" + +msgctxt "#30269" +msgid "Delete downloaded files?" +msgstr "" + +msgctxt "#30270" +msgid "Match found in your active torrents, play it?" +msgstr "" + +msgctxt "#30271" +msgid "There is now an official multi-provider for Quasar called [COLOR FFFF6B00]Burst[/COLOR], would you like to install it now?" +msgstr "" + +msgctxt "#30272" +msgid "Installation successful, enjoy Quasar [COLOR FFFF6B00]Burst[/COLOR]!" +msgstr "" + +msgctxt "#30273" +msgid "Shoot... It looks like we couldn't install [COLOR FFFF6B00]Burst[/COLOR] automatically, head over to the Quasar Repository, then under the Program add-ons section to install it." +msgstr "" + +msgctxt "#30274" +msgid "Enable all" +msgstr "" + +msgctxt "#30275" +msgid "Disable all" +msgstr "" + +msgctxt "#30276" +msgid "Delete torrent and files" +msgstr "" + +msgctxt "#30277" +msgid "%s added to library, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "" + +msgctxt "#30278" +msgid "%s removed from library, do you want to clean it?[CR]You can later use Kodi's 'Clean library' feature instead." +msgstr "" + +msgctxt "#30279" +msgid "Watchlist added to library" +msgstr "" + +msgctxt "#30280" +msgid "Collection added to library" +msgstr "" + +msgctxt "#30281" +msgid "List added to library" +msgstr "" + +msgctxt "#30282" +msgid "Nothing left to remove from Quasar" +msgstr "" + +msgctxt "#30283" +msgid "Merge to library" +msgstr "" + +msgctxt "#30284" +msgid "Show unaired seasons" +msgstr "" + +msgctxt "#30285" +msgid "Show unaired episodes" +msgstr "" + +msgctxt "#30286" +msgid "%s merged to library, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "" + +msgctxt "#30287" +msgid "%s already in library" +msgstr "" + +msgctxt "#30288" +msgid "Library updated, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "" + +msgctxt "#30289" +msgid "Genres" +msgstr "" + +msgctxt "#30290" +msgid "Calendars" +msgstr "" + +msgctxt "#30291" +msgid "My Movies" +msgstr "" + +msgctxt "#30292" +msgid "My Releases" +msgstr "" + +msgctxt "#30293" +msgid "All Movies" +msgstr "" + +msgctxt "#30294" +msgid "All Releases" +msgstr "" + +msgctxt "#30295" +msgid "My Shows" +msgstr "" + +msgctxt "#30296" +msgid "My New Shows" +msgstr "" + +msgctxt "#30297" +msgid "My Premieres" +msgstr "" + +msgctxt "#30298" +msgid "All Shows" +msgstr "" + +msgctxt "#30299" +msgid "All New Shows" +msgstr "" + +msgctxt "#30300" +msgid "All Premieres" +msgstr "" + +msgctxt "#30301" +msgid "Move finished downloads to separate folders" +msgstr "" + +msgctxt "#30302" +msgid "Files will only be moved after seeding is finished (see[CR]" +"- BitTorrent settings), and will wait if currently playing" +msgstr "" + +msgctxt "#30303" +msgid "RAR archive detected. Download will need to be completed before" +" playback can start and will require around twice the amount of" +" space, continue?" +msgstr "" + +msgctxt "#30304" +msgid "Error creating output pipe for 'unrar' command" +msgstr "" + +msgctxt "#30305" +msgid "Error starting 'unrar' command" +msgstr "" + +msgctxt "#30306" +msgid "Error waiting for 'unrar' command" +msgstr "" + +msgctxt "#30307" +msgid "Error reading from destination folder" +msgstr "" + +msgctxt "#30308" +msgid "Move completed" +msgstr "" diff --git a/resources/language/Finnish/strings.po b/resources/language/Finnish/strings.po new file mode 100644 index 000000000..80217be65 --- /dev/null +++ b/resources/language/Finnish/strings.po @@ -0,0 +1,935 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi_FI\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + + +# Settings + +msgctxt "#30000" +msgid "General" +msgstr "Yleiset" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Latauspolku (ei FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Säilytä ladatut tiedostot" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Puskurin koko (Mt)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Korkein lähetysnopeus (kt/s)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Korkein latausnopeus (kt/s)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Seuraa porttia (alaraja)" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Seuraa porttia (yläraja)" + +msgctxt "#30008" +msgid "Proxy" +msgstr "Välityspalvelin" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "SOCKS v5 -asetukset" + +msgctxt "#30010" +msgid "Enabled" +msgstr "Käytössä" + +msgctxt "#30011" +msgid "Host" +msgstr "Isäntäpalvelin" + +msgctxt "#30012" +msgid "Port" +msgstr "Portti" + +msgctxt "#30013" +msgid "Login" +msgstr "Käyttäjätunnus" + +msgctxt "#30014" +msgid "Password" +msgstr "Salasana" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Lisäasetukset" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Aikakatkaisun raja" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Käytössä (käytä omalla vastuulla)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Viive sekunteina" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Ylläpito" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Tyhjennä välimuisti" + +msgctxt "#30021" +msgid "Results per page" +msgstr "Hakutulosten määrä sivua kohden" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Näytä latauksen tila" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Valitse tiedosto automaattisesti" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Päivitä testiversioihin" + +msgctxt "#30025" +msgid "Limit rates after buffering only" +msgstr "Rajoita nopeutta vasta puskuroinnin jälkeen" + +msgctxt "#30026" +msgid "Library path" +msgstr "Kirjaston polku" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Yhteyksien enimmäismäärä" + +msgctxt "#30028" +msgid "Do not ask to keep downloading" +msgstr "Älä kysy jatketaanko latausta" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Istunnon tallennustiheys (sekunteina)" + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "Latauksen tilan sijainti pystysuunnassa" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "Poista toimimattomat tarjoajat käytöstä" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "Sallittujen virheiden määrä ennen käytöstä poistamista" + +msgctxt "#30033" +msgid "Appearance" +msgstr "Ulkoasu" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "Elokuvien oletusnäkymä" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "Tv-sarjojen oletusnäkymä" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "Tuotantokausien oletusnäkymä" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "Jaksojen oletusnäkymä" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "Käytä alkuperäisiä nimiä" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "TheMovieDB" + +msgctxt "#30040" +msgid "API key" +msgstr "API-avain" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "Tiedostojen lajittelu" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "Elokuvien lajittelutapa" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "Tv-sarjojen lajittelutapa" + +msgctxt "#30044" +msgid "By seeders" +msgstr "Jakajien määrä" + +msgctxt "#30045" +msgid "By resolution" +msgstr "Resoluutio" + +msgctxt "#30046" +msgid "Balanced" +msgstr "Tasapainoinen" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "Elokuvien haluttu resoluutio" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "Tv-sarjojen haluttu resoluutio" + +msgctxt "#30049" +msgid "Percentage of additional seeders required before choosing next resolution" +msgstr "Vaadittava jakajien osuus ennen kuin valitaan toinen resoluutio" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "Kytke DHT pois päältä" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "Jakosuhde enintään (prosentteina)" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "Jakoajan ja jakosuhteen raja (prosentteina)" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "Jakoaika enintään (tunteina)" + +msgctxt "#30054" +msgid "Update library" +msgstr "Päivitä kirjasto" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "Lisää erikoisjaksot kirjastoon" + +msgctxt "#30056" +msgid "Trakt" +msgstr "Trakt" + +msgctxt "#30057" +msgid "Username" +msgstr "Käyttäjätunnus" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "Valtuuta Quasar" + +msgctxt "#30059" +msgid "Library update delay on startup (seconds)" +msgstr "Viive kirjaston päivitykselle käynnistyksen jälkeen (sekunteina)" + +msgctxt "#30060" +msgid "Library update frequency (hours)" +msgstr "Kirjaston päivitysväli (tunteina)" + +msgctxt "#30061" +msgid "Sync frequency of Trakt lists to library (hours)" +msgstr "Traktin listojen synkronointiväli (tunteina)" + +msgctxt "#30062" +msgid "Ask to keep the files after streaming" +msgstr "Kysy katsomisen jälkeen säilytetäänkö tiedosto" + +msgctxt "#30063" +msgid "Disable UPNP & NATPMP" +msgstr "Älä käytä UPNP:tä ja NATPMP:tä" + +msgctxt "#30064" +msgid "Encryption policy" +msgstr "Salauskäytäntö" + +msgctxt "#30065" +msgid "Disabled" +msgstr "Pois käytöstä" + +msgctxt "#30066" +msgid "Forced" +msgstr "Pakotettu" + +msgctxt "#30067" +msgid "Proxy type" +msgstr "Välityspalvelimen tyyppi" + +msgctxt "#30068" +msgid "SOCKS4" +msgstr "SOCKS4" + +msgctxt "#30069" +msgid "SOCKS5" +msgstr "SOCKS5" + +msgctxt "#30070" +msgid "SOCKS5 password" +msgstr "SOCKS5-salasana" + +msgctxt "#30071" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30072" +msgid "HTTP password" +msgstr "HTTP-salasana" + +msgctxt "#30073" +msgid "i2p" +msgstr "i2p" + +msgctxt "#30074" +msgid "Spoof user agent (highly inadvisable)" +msgstr "Väärennä käyttäjätunnus (ei suositella)" + +msgctxt "#30075" +msgid "Default from libtorrent (acceptable)" +msgstr "Libtorrentin oletus (hyväksyttävä)" + +msgctxt "#30076" +msgid "libtorrent (Rasterbar) 1.1.0" +msgstr "libtorrent (Rasterbar) 1.1.0" + +msgctxt "#30077" +msgid "BitTorrent 7.5.0" +msgstr "BitTorrent 7.5.0" + +msgctxt "#30078" +msgid "BitTorrent 7.4.3" +msgstr "BitTorrent 7.4.3" + +msgctxt "#30079" +msgid "µTorrent 3.4.9" +msgstr "µTorrent 3.4.9" + +msgctxt "#30080" +msgid "µTorrent 3.2.0" +msgstr "µTorrent 3.2.0" + +msgctxt "#30081" +msgid "µTorrent 2.2.1" +msgstr "µTorrent 2.2.1" + +msgctxt "#30082" +msgid "Transmission 2.92" +msgstr "Transmission 2.92" + +msgctxt "#30083" +msgid "Deluge 1.3.6.0" +msgstr "Deluge 1.3.6.0" + +msgctxt "#30084" +msgid "Deluge 1.3.12.0" +msgstr "Deluge 1.3.12.0" + +msgctxt "#30085" +msgid "Vuze 5.7.3.0" +msgstr "Vuze 5.7.3.0" + +msgctxt "#30086" +msgid "Enable tuned storage settings" +msgstr "Käytä muokattuja tallennusasetuksia" + +msgctxt "#30087" +msgid "Ask to delete the files after streaming" +msgstr "Kysy katsomisen jälkeen poistetaanko tiedosto" + +msgctxt "#30088" +msgid "Initial buffering timeout (seconds)" +msgstr "Puskuroinnin aikakatkaisu (sekunteina)" + +msgctxt "#30089" +msgid "Automatically re-scan Kodi library after updates" +msgstr "Päivitä Kodin kirjasto automaattisesti lisäysten jälkeen" + +msgctxt "#30090" +msgid "Listen interfaces" +msgstr "Seuratut verkko-osoitteet" + +msgctxt "#30091" +msgid "Outgoing interfaces" +msgstr "Lähtevän liikenteen osoitteet" + +msgctxt "#30092" +msgid "Use default fanart" +msgstr "Käytä oletusfanitaidetta" + +msgctxt "#30093" +msgid "Disable notification sound" +msgstr "Älä käytä äänimerkkiä ilmoituksissa" + +msgctxt "#30094" +msgid "Disable background progress dialog" +msgstr "Älä näytä latauksen tila -ilmoitusta" + +msgctxt "#30095" +msgid "Resume playback from library integration" +msgstr "Jatka kesken jääneestä kohdasta, jos video on videokirjastossa" + +msgctxt "#30096" +msgid "Never" +msgstr "Ei koskaan" + +msgctxt "#30097" +msgid "Always" +msgstr "Aina" + +msgctxt "#30098" +msgid "Active torrents only" +msgstr "Vain aktiiviset torrentit" + + +# Interface + +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Quasar kaatui, käynnistetään uudelleen..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Käynnistä Kodi uudelleen ennen kuin alat käyttää Quasaria" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Tämä lisäosa toimii vain Quasarin kautta" + +msgctxt "#30103" +msgid "Unable to find Quasar binary" +msgstr "Quasarin binääritiedostoja ei löytynyt" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Anna tiedostosijainti tai URL-osoite" + +msgctxt "#30105" +msgid "URL" +msgstr "URL" + +msgctxt "#30106" +msgid "File" +msgstr "Tiedosto" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "URL-osoite" + +msgctxt "#30108" +msgid "File path" +msgstr "Tiedostopolku" + +msgctxt "#30109" +msgid "OK" +msgstr "OK" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "Kaatui liian monta kertaa, peruutetaan..." + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "Tarjoaja epäonnistui liian monta kertaa, poistetaan käytöstä..." + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "Tarjoajan poistaminen käytöstä epäonnistui" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "Latauspolkua ei ole valittu, tarkista asetukset" + +msgctxt "#30114" +msgid "TheTVDB" +msgstr "TheTVDB" + +msgctxt "#30115" +msgid "TV show scraper used by Kodi library" +msgstr "Videokirjaston tv-sarjatietojen tarjoaja" + +msgctxt "#30116" +msgid "Looks like Quasar is still starting up, give it a few seconds..." +msgstr "Quasar ei ole vielä käynnistynyt, odota hetki..." + +msgctxt "#30117" +msgid "Resolving torrent files..." +msgstr "Järjestellään torrent-tiedostoja..." + +msgctxt "#30118" +msgid "Scraping trackers..." +msgstr "Etsitään trackereilta..." + +msgctxt "#30141" +msgid "Please support Quasar development by visiting https://quasar.surge.sh/donate" +msgstr "Tue Quasarin kehitystyötä vierailemalla osoitteessa https://quasar.surge.sh/donate" + +msgctxt "#30142" +msgid "Default view for menus in Movies" +msgstr "Elokuvat-osion valikoiden oletusnäkymä" + +msgctxt "#30143" +msgid "Default view for menus in TV Shows" +msgstr "Tv-sarjat-osion valikoiden oletusnäkymä" + +msgctxt "#30144" +msgid "Default view for movie genres" +msgstr "Elokuvien lajityyppien oletusnäkymä" + +msgctxt "#30145" +msgid "Default view for TV show genres" +msgstr "Tv-sarjojen lajityyppien oletusnäkymä" + +msgctxt "#30146" +msgid "Keep downloading?" +msgstr "Jatketaanko lataamista?" + +msgctxt "#30147" +msgid "Caches are still warming up, give it a minute or two..." +msgstr "Välimuistin päivitys on vielä kesken, odota hetki..." + +msgctxt "#30148" +msgid "Caches warmed up" +msgstr "Välimuisti päivitetty" + +msgctxt "#30199" +msgid "No available JSON-RPC connection to Kodi.[CR]Enable both Application control options in Service settings / Control and restart Kodi." +msgstr "Toimivaa JSON-RPC-yhteyttä Kodiin ei löytynyt.[CR]Ota molemmat asetukset käyttöön valikossa Palveluasetukset -> Hallinta -> Sovelluksen hallinta ja käynnistä Kodi uudelleen." + + +# Quasar daemon + +msgctxt "#30200" +msgid "Cache cleared" +msgstr "Välimuisti tyhjennetty" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Etsi tv-sarjoja" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Valitse tiedosto..." + +msgctxt "#30203" +msgid "Show information" +msgstr "Näytä tiedot" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "Tarjoajia ei löytynyt" + +msgctxt "#30205" +msgid "No links were found" +msgstr "Linkkejä ei löytynyt" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Etsi elokuvia" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "Latauskohteessa ei ole tarpeeksi tilaa." + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "Quasar-daemon on käynnistynyt" + +msgctxt "#30209" +msgid "Search" +msgstr "Etsi" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Suosituimmat" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "Arvostelumenestykset" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Äänestetyimmät" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "IMDB:n Top 250" + +msgctxt "#30214" +msgid "Movies" +msgstr "Elokuvat" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "Tv-sarjat" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Lisää torrent-tiedosto" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Liitä magnet-tiedosto tai osoite" + +msgctxt "#30218" +msgid "Next page" +msgstr "Seuraava sivu" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "Lisää/poista kirjastosta" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "Kirjaston polkua ei ole asetettu" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Kohde lisättiin kirjastoon" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Kohde poistettiin kirjastosta" + +msgctxt "#30223" +msgid "Files" +msgstr "Tiedostot" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Tarjoajan virhe" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Navigointivirhe" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Daemon-virhe" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Virhe Quasar-daemonia päivitettäessä" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Saatavilla olevat tiedostot" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Torrentit" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "Toista/jatka torrent-latausta" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Laita torrent-lataus tauolle" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Poista torrent" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Laita istunto tauolle" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Jatka istuntoa" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "Jatka torrent-latausta" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Uudet julkaisut" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Uudet sarjat" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Uudet jaksot" + +msgctxt "#30239" +msgid "Providers" +msgstr "Tarjoajat" + +msgctxt "#30240" +msgid "Enable" +msgstr "Käytä" + +msgctxt "#30241" +msgid "Disable" +msgstr "Poista käytöstä" + +msgctxt "#30242" +msgid "Check" +msgstr "Tarkista" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "Tarjoajan virheet" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "Tarjoajan asetukset" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "Suosittuja Traktissa" + +msgctxt "#30246" +msgid "Trending" +msgstr "Nousussa" + +msgctxt "#30247" +msgid "Most Played" +msgstr "Toistetuimmat" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "Katsotuimmat" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "Kerätyimmät" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "Halutuimmat" + +msgctxt "#30251" +msgid "Box Office" +msgstr "Elokuvateatteri" + +msgctxt "#30252" +msgid "Add to library" +msgstr "Lisää kirjastoon" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "Poista kirjastosta" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "Katselulista" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "Lisää katselulistalle" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "Poista katselulistalta" + +msgctxt "#30257" +msgid "Collection" +msgstr "Kokoelma" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "Lisää kokoelmaan" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "Poista kokoelmasta" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "Käytetäänkö viimeksi valittua torrent-tiedostoa?" + +msgctxt "#30261" +msgid "Search history" +msgstr "Hakuhistoria" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "Käytetäänkö hakuhistoriaa?" + +msgctxt "#30263" +msgid "Lists" +msgstr "Listat" + +msgctxt "#30264" +msgid "Reset clearances" +msgstr "Palauta valtuutukset" + +msgctxt "#30265" +msgid "Item already in library" +msgstr "Kohde on jo kirjastossa" + +msgctxt "#30266" +msgid "Ignore duplicates" +msgstr "Älä huomioi kaksoiskappaleita" + +msgctxt "#30267" +msgid "Keep downloaded files?" +msgstr "Säilytetäänkö ladatut tiedostot?" + +msgctxt "#30268" +msgid "Toggle watched" +msgstr "Merkitse katsotuksi" + +msgctxt "#30269" +msgid "Delete downloaded files?" +msgstr "Poistetaanko ladatut tiedostot?" + +msgctxt "#30270" +msgid "Match found in your active torrents, play it?" +msgstr "Tämä torrent on jo latauksessa. Haluatko aloittaa toiston?" + +msgctxt "#30271" +msgid "There is now an official multi-provider for Quasar called [COLOR FFFF6B00]Burst[/COLOR], would you like to install it now?" +msgstr "Quasarille on saatavilla virallinen tarjoaja nimeltä [COLOR FFFF6B00]Burst[/COLOR], joka hakee tietoja monelta sivustolta samanaikaisesti. Haluaisitko asentaa sen nyt?" + +msgctxt "#30272" +msgid "Installation successful, enjoy Quasar [COLOR FFFF6B00]Burst[/COLOR]!" +msgstr "Asennus onnistui. Nauti Quasar [COLOR FFFF6B00]Burst[/COLOR]ista!" + +msgctxt "#30273" +msgid "Shoot... It looks like we couldn't install [COLOR FFFF6B00]Burst[/COLOR] automatically, head over to the Quasar Repository, then under the Program add-ons section to install it." +msgstr "Voi rähmä... [COLOR FFFF6B00]Burst[/COLOR]in automaattinen asennus epäonnistui. Siirry Quasarin ohjelmavarastoon lisäosaselaimella ja asenna se alavalikosta nimeltä Ohjelmalisäosat." + +msgctxt "#30274" +msgid "Enable all" +msgstr "Käytä kaikkia" + +msgctxt "#30275" +msgid "Disable all" +msgstr "Poista kaikki käytöstä" + +msgctxt "#30276" +msgid "Delete torrent and files" +msgstr "Poista sekä torrent että tiedostot" + +msgctxt "#30277" +msgid "%s added to library, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "%s lisätty kirjastoon, haluatko suorittaa kirjaston päivityksen?[CR]Voit tehdä sen myöhemmin valitsemalla sivuvalikosta 'Päivitä kirjasto'." + +msgctxt "#30278" +msgid "%s removed from library, do you want to clean it?[CR]You can later use Kodi's 'Clean library' feature instead." +msgstr "%s poistettiin kirjastosta, haluatko suorittaa kirjaston puhdistuksen?[CR]Voit tehdä sen myöhemmin valitsemallla media-asetuksista 'Puhdista kirjasto'." + +msgctxt "#30279" +msgid "Watchlist added to library" +msgstr "Katselulista lisätty kirjastoon" + +msgctxt "#30280" +msgid "Collection added to library" +msgstr "Kokoelma lisätty kirjastoon" + +msgctxt "#30281" +msgid "List added to library" +msgstr "Lista lisätty kirjastoon" + +msgctxt "#30282" +msgid "Nothing left to remove from Quasar" +msgstr "Mitään poistettavaa ei ole jäljellä" + +msgctxt "#30283" +msgid "Merge to library" +msgstr "Yhdistä kirjastoon" + +msgctxt "#30284" +msgid "Show unaired seasons" +msgstr "Näytä esittämättömät tuotantokaudet" + +msgctxt "#30285" +msgid "Show unaired episodes" +msgstr "Näytä esittämättömät jaksot" + +msgctxt "#30286" +msgid "%s merged to library, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "%s yhdistetty kirjastoon, haluatko suorittaa kirjaston päivityksen?[CR]Voit tehdä sen myöhemmin valitsemalla sivuvalikosta 'Päivitä kirjasto'." + +msgctxt "#30287" +msgid "%s already in library" +msgstr "%s on jo kirjastossa" + +msgctxt "#30288" +msgid "Library updated, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "Kirjasto päivitetty, haluatko suorittaa kirjaston päivityksen?[CR]Voit tehdä sen myöhemmin valitsemalla sivuvalikosta 'Päivitä kirjasto'." + +msgctxt "#30289" +msgid "Genres" +msgstr "Lajityypit" + +msgctxt "#30290" +msgid "Calendars" +msgstr "Kalenterit" + +msgctxt "#30291" +msgid "My Movies" +msgstr "Elokuvani" + +msgctxt "#30292" +msgid "My Releases" +msgstr "Julkaisuni" + +msgctxt "#30293" +msgid "All Movies" +msgstr "Kaikki elokuvat" + +msgctxt "#30294" +msgid "All Releases" +msgstr "Kaikki julkaisut" + +msgctxt "#30295" +msgid "My Shows" +msgstr "Sarjani" + +msgctxt "#30296" +msgid "My New Shows" +msgstr "Uudet sarjani" + +msgctxt "#30297" +msgid "My Premieres" +msgstr "Ensi-iltani" + +msgctxt "#30298" +msgid "All Shows" +msgstr "Kaikki sarjat" + +msgctxt "#30299" +msgid "All New Shows" +msgstr "Kaikki uudet sarjat" + +msgctxt "#30300" +msgid "All Premieres" +msgstr "Kaikki ensi-illat" diff --git a/resources/language/French/strings.po b/resources/language/French/strings.po new file mode 100644 index 000000000..72b5f95bb --- /dev/null +++ b/resources/language/French/strings.po @@ -0,0 +1,1009 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-13 12:03+0100\n" +"PO-Revision-Date: 2017-03-13 12:07+0100\n" +"Last-Translator: \n" +"Language-Team: \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" +"X-Generator: Poedit 1.8.12\n" + +# Settings +msgctxt "#30000" +msgid "General" +msgstr "Général" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Chemin de téléchargement (pas de FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Conserver les fichiers après la fin de la lecture ou du téléchargement" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Taille du tampon (Mo)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Débit montant max (ko/s)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Débit descendant max (ko/s)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Port d'écoute min" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Port d'écoute max" + +msgctxt "#30008" +msgid "Proxy" +msgstr "Proxy" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "Configuration SOCKS v5" + +msgctxt "#30010" +msgid "Enabled" +msgstr "Activé" + +msgctxt "#30011" +msgid "Host" +msgstr "Hôte" + +msgctxt "#30012" +msgid "Port" +msgstr "Port" + +msgctxt "#30013" +msgid "Login" +msgstr "Identifiant" + +msgctxt "#30014" +msgid "Password" +msgstr "Mot de passe" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Avancé" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Délai d’attente maximum du Provider personnalisé" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Activé (risqué)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Délai d’attente max (secondes)" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Maintenance" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Vider le cache" + +msgctxt "#30021" +msgid "Results per page" +msgstr "Résultats par page" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Activer la barre d'information en surimpression" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Choisir un flux automatiquement" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Autoriser les versions beta" + +msgctxt "#30025" +msgid "Limit rates after initial buffering only" +msgstr "Limiter la vitesse après la phase de mise en cache uniquement" + +msgctxt "#30026" +msgid "Library path" +msgstr "Chemin vers la médiathèque" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Nombre de connexions max" + +msgctxt "#30028" +msgid "Do not ask to keep downloading" +msgstr "Ne pas demander à continuer le téléchargement" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Fréquence de sauvegarde de la session (secondes)" + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "Décalage vertical du statut en surimpression" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "Désactiver la détection des Providers en échec" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "Nombre d'erreurs avant désactivation d'un Provider" + +msgctxt "#30033" +msgid "Appearance" +msgstr "Apparence" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "Vue par défaut pour les films" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "Vue par défaut pour les séries" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "Vue par défaut pour les saisons" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "Vue par défaut pour les épisodes" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "Utiliser de préférence le titre original" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "TheMovieDB" + +msgctxt "#30040" +msgid "API key" +msgstr "Clé d'API" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "Tri des flux" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "Tri des Films" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "Tri des Séries" + +msgctxt "#30044" +msgid "By seeders" +msgstr "Par seeders" + +msgctxt "#30045" +msgid "By resolution" +msgstr "Par résolution" + +msgctxt "#30046" +msgid "Balanced" +msgstr "Equilibré" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "Préférence de qualité pour les Films" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "Préférence de qualité pour les Séries" + +msgctxt "#30049" +msgid "" +"Percentage of additional seeders required before choosing next resolution" +msgstr "" +"Pourcentage de seeders additionels avant de choisir la qualité suivante" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "Désactiver DHT" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "Taux de partage des torrents (pourcent)" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "Ratio temps seed / téléchargement (pourcent)" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "Temps de partage des torrents (heures)" + +msgctxt "#30054" +msgid "Update library" +msgstr "Mettre à jour la médiathèque" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "Ajouter les épisodes spéciaux (pilotes, ...) à la médiathèque" + +msgctxt "#30056" +msgid "Trakt" +msgstr "Trakt" + +msgctxt "#30057" +msgid "Username" +msgstr "Identifiant" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "Autoriser Quasar" + +msgctxt "#30059" +msgid "Library update delay on startup (seconds)" +msgstr "Différé de mise à jour de la médiathèque au démarrage (secondes)" + +msgctxt "#30060" +msgid "Library update frequency (hours)" +msgstr "Fréquence de mise à jour de la librairie (heures)" + +msgctxt "#30061" +msgid "Sync frequency of Trakt lists to library (hours)" +msgstr "" +"Fréquence de mise à jour entre les listes Trakt et la librairie (heures)" + +msgctxt "#30062" +msgid "Ask to keep the files after streaming" +msgstr "Demander à conserver les fichiers après le streaming" + +msgctxt "#30063" +msgid "Disable UPNP & NATPMP" +msgstr "Désactiver UPNP et NATPMP" + +msgctxt "#30064" +msgid "Encryption policy" +msgstr "Règles de chiffrement" + +# à accorder correctement +msgctxt "#30065" +msgid "Disabled" +msgstr "Désactivé" + +# à accorder correctement +msgctxt "#30066" +msgid "Forced" +msgstr "Forcé" + +msgctxt "#30067" +msgid "Proxy type" +msgstr "Type de Proxy" + +msgctxt "#30068" +msgid "SOCKS4" +msgstr "SOCKS4" + +msgctxt "#30069" +msgid "SOCKS5" +msgstr "SOCKS5" + +msgctxt "#30070" +msgid "SOCKS5 password" +msgstr "mot de passe SOCKS5" + +msgctxt "#30071" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30072" +msgid "HTTP password" +msgstr "mot de passe HTTP" + +msgctxt "#30073" +msgid "i2p" +msgstr "i2p" + +msgctxt "#30074" +msgid "Spoof user agent (highly inadvisable)" +msgstr "Remplacer le “user agent” (fortement déconseillé)" + +msgctxt "#30075" +msgid "Default from libtorrent (acceptable)" +msgstr "Valeurs par défaut depuis libtorrent (acceptable)" + +msgctxt "#30076" +msgid "libtorrent (Rasterbar) 1.1.0" +msgstr "libtorrent (Rasterbar) 1.1.0" + +msgctxt "#30077" +msgid "BitTorrent 7.5.0" +msgstr "BitTorrent 7.5.0" + +msgctxt "#30078" +msgid "BitTorrent 7.4.3" +msgstr "BitTorrent 7.4.3" + +msgctxt "#30079" +msgid "µTorrent 3.4.9" +msgstr "µTorrent 3.4.9" + +msgctxt "#30080" +msgid "µTorrent 3.2.0" +msgstr "µTorrent 3.2.0" + +msgctxt "#30081" +msgid "µTorrent 2.2.1" +msgstr "µTorrent 2.2.1" + +msgctxt "#30082" +msgid "Transmission 2.92" +msgstr "Transmission 2.92" + +msgctxt "#30083" +msgid "Deluge 1.3.6.0" +msgstr "Deluge 1.3.6.0" + +msgctxt "#30084" +msgid "Deluge 1.3.12.0" +msgstr "Deluge 1.3.12.0" + +msgctxt "#30085" +msgid "Vuze 5.7.3.0" +msgstr "Vuze 5.7.3.0" + +msgctxt "#30086" +msgid "Enable tuned storage settings" +msgstr "Activer les réglages de stockage améliorés" + +msgctxt "#30087" +msgid "Ask to delete the files after streaming" +msgstr "Demander à supprimer les fichiers après le streaming" + +msgctxt "#30088" +msgid "Initial buffering timeout (seconds)" +msgstr "Délai d’attente maximum initial (secondes)" + +msgctxt "#30089" +msgid "Automatically re-scan Kodi library after updates" +msgstr "Re-parcourir la librairie Kodi automatiquement après les mises à jour" + +# interfaces réseau ? +msgctxt "#30090" +msgid "Listen interfaces" +msgstr "Interfaces d’écoute" + +msgctxt "#30091" +msgid "Outgoing interfaces" +msgstr "Interfaces de sortie" + +msgctxt "#30092" +msgid "Use default fanart" +msgstr "Utiliser le “fanart” par défaut" + +msgctxt "#30093" +msgid "Disable notification sound" +msgstr "Désactiver la notification sonore" + +msgctxt "#30094" +msgid "Disable background progress dialog" +msgstr "Désactiver la fenêtre d’avancement en fond de tâche" + +msgctxt "#30095" +msgid "Resume playback from library integration" +msgstr "Continuer la lecture depuis l’intégration librairie" + +msgctxt "#30096" +msgid "Never" +msgstr "Jamais" + +msgctxt "#30097" +msgid "Always" +msgstr "Toujours" + +msgctxt "#30098" +msgid "Active torrents only" +msgstr "Torrents actifs uniquement" + +# Interface +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Plantage de Quasar, redémarrage..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Vous devez redémarrer Kodi avant de pouvoir utiliser Quasar" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Cet add-on ne peut être utilisé que depuis Quasar" + +msgctxt "#30103" +msgid "Unable to find Quasar binary[CR]Required platform:" +msgstr "Impossible de trouver l’application Quasar[CR]Plateforme nécessaire :" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Saisir un fichier ou une URL" + +msgctxt "#30105" +msgid "URL" +msgstr "URL" + +msgctxt "#30106" +msgid "File" +msgstr "Fichier" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "Saisir une URL" + +msgctxt "#30108" +msgid "File path" +msgstr "Chemin vers le fichier" + +msgctxt "#30109" +msgid "OK" +msgstr "OK" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "Trop de plantages, abandon..." + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "Trop d'erreurs du Provider, désactivation..." + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "Impossible de désactiver le Provider" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "Chemin de téléchargement non spécifié, vérifiez votre configuration" + +msgctxt "#30114" +msgid "TheTVDB" +msgstr "TheTVDB" + +msgctxt "#30115" +msgid "TV show scraper used by Kodi library" +msgstr "Le “scraper” utilisé par la librairie Kodi pour les Séries" + +msgctxt "#30116" +msgid "Looks like Quasar is still starting up, give it a few seconds..." +msgstr "Quasar est en cours de démarrage, patientez quelques secondes" + +msgctxt "#30117" +msgid "Resolving torrent files..." +msgstr "Recherche des fichiers torrents …" + +msgctxt "#30118" +msgid "Scraping trackers..." +msgstr "Recherche sur les “trackers” …" + +msgctxt "#30141" +msgid "" +"Please support Quasar development by visiting https://quasar.surge.sh/donate" +msgstr "" +"Aidez le développement de Quasar en visitant https://quasar.surge.sh/donate" + +msgctxt "#30142" +msgid "Default view for menus in Movies" +msgstr "Vue par défaut pour les menus des Films" + +msgctxt "#30143" +msgid "Default view for menus in TV Shows" +msgstr "Vue par défaut pour les menus des Séries" + +msgctxt "#30144" +msgid "Default view for movie genres" +msgstr "Vue par défaut pour les genres de Films" + +msgctxt "#30145" +msgid "Default view for TV show genres" +msgstr "Vue par défaut pour les genres de Séries" + +msgctxt "#30146" +msgid "Keep downloading?" +msgstr "Continuer le téléchargement ?" + +msgctxt "#30147" +msgid "Caches are still warming up, give it a minute or two..." +msgstr "Mise en cache en cours, patientez une minute ou deux …" + +msgctxt "#30148" +msgid "Caches warmed up" +msgstr "Mise en cache terminée" + +msgctxt "#30149" +msgid "Trakt username not set, check your settings" +msgstr "Nom d’utilisateur Trakt manquant, vérifiez les réglages" + +msgctxt "#30199" +msgid "" +"No available JSON-RPC connection to Kodi.[CR]Enable both Application control " +"options in Service settings / Control and restart Kodi." +msgstr "" +"Pas de connexion JSON-RPC avec Kodi disponible.[CR]Activez la prise en main " +"à distance dans les réglages" + +# Quasar daemon +msgctxt "#30200" +msgid "Cache cleared" +msgstr "Cache nettoyé" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Rechercher des Séries" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Choisir un flux" + +msgctxt "#30203" +msgid "Show information" +msgstr "Afficher les informations" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "Aucun Provider trouvé" + +msgctxt "#30205" +msgid "No links were found" +msgstr "Aucun lien trouvé" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Rechercher des Films" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "Pas assez d'espace disponible dans le répertoire de téléchargement" + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "Le processus Quasar a démarré" + +msgctxt "#30209" +msgid "Search" +msgstr "Rechercher" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Les plus populaires" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "Les mieux classés" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Les plus notés" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "Top 250 IMDB" + +msgctxt "#30214" +msgid "Movies" +msgstr "Films" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "Séries" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Ajouter un Torrent" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Coller un Magnet ou une URL" + +msgctxt "#30218" +msgid "Next page" +msgstr "Page suivante" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "Ajouter / Supprimer de la médiathèque" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "Chemin vers la médiathèque non spécifié" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Elément ajouté à la médiathèque" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Elément supprimé de la médiathèque" + +msgctxt "#30223" +msgid "Files" +msgstr "Fichiers" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Erreur du Provider" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Erreur de navigation" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Erreur du processus Quasar" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Erreur lors de la mise à jour du processus Quasar" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Flux disponibles pour" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Torrents" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "Lire / Reprendre le torrent" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Mettre en pause le torrent" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Supprimer le torrent" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Mettre en pause la session" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Reprendre la lecture de la session" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "Reprendre la lecture du torrent" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Sorties récentes" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Séries récentes" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Episodes récents" + +msgctxt "#30239" +msgid "Providers" +msgstr "Providers" + +msgctxt "#30240" +msgid "Enable" +msgstr "Activer" + +msgctxt "#30241" +msgid "Disable" +msgstr "Désactiver" + +msgctxt "#30242" +msgid "Check" +msgstr "Vérifier" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "Erreurs du Provider" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "Paramètres du Provider" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "Les plus populaires" + +msgctxt "#30246" +msgid "Trending" +msgstr "Les plus tendances (en ce moment)" + +msgctxt "#30247" +msgid "Most Played" +msgstr "Les plus joués (dans l'absolu)" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "Les plus regardés (visiteurs uniques)" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "Les plus ajoutés aux collections" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "Les plus attendus" + +msgctxt "#30251" +msgid "Box Office" +msgstr "Trakt: Box Office" + +msgctxt "#30252" +msgid "Add to library" +msgstr "Ajouter à la médiathèque" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "Supprimer de la médiathèque" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "Liste à regarder" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "Ajouter à la liste à regarder" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "Supprimer de la liste à regarder" + +msgctxt "#30257" +msgid "Collection" +msgstr "Collection Trakt" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "Ajouter à la collection" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "Supprimer de la collection" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "Un torrent a été choisi précédemment, l'utiliser ?" + +msgctxt "#30261" +msgid "Search history" +msgstr "Historique de recherche" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "Utiliser l'historique de recherche ?" + +msgctxt "#30263" +msgid "Lists" +msgstr "Listes" + +# traduction incertaine +msgctxt "#30264" +msgid "Reset clearances" +msgstr "Remise à zéro des autorisations" + +msgctxt "#30265" +msgid "Item already in library" +msgstr "Element déjà présent dans la librairie" + +msgctxt "#30266" +msgid "Ignore duplicates" +msgstr "Ignorer les doublons" + +msgctxt "#30267" +msgid "Keep downloaded files?" +msgstr "Conserver les fichiers téléchargés ?" + +# traduction incertaine +msgctxt "#30268" +msgid "Toggle watched" +msgstr "Marquer les contenus vus" + +msgctxt "#30269" +msgid "Delete downloaded files?" +msgstr "Supprimer les fichiers téléchargés" + +msgctxt "#30270" +msgid "Match found in your active torrents, play it?" +msgstr "Un torrent en cours correspond, lancer sa lecture ?" + +msgctxt "#30271" +msgid "" +"There is now an official multi-provider for Quasar called [COLOR " +"FFFF6B00]Burst[/COLOR], would you like to install it now?" +msgstr "" +"Il y a maintenant un addon multi-provider pour Quasar appelé [COLOR " +"FFFF6B00]Burst[/COLOR], voulez vous l’installer ?" + +msgctxt "#30272" +msgid "Installation successful, enjoy Quasar [COLOR FFFF6B00]Burst[/COLOR]!" +msgstr "" +"Installation terminée avec succès, profitez de Quasar [COLOR FFFF6B00]Burst[/" +"COLOR]!" + +msgctxt "#30273" +msgid "" +"Shoot... It looks like we couldn't install [COLOR FFFF6B00]Burst[/COLOR] " +"automatically, head over to the Quasar Repository, then under the Program " +"add-ons section to install it." +msgstr "" +"Zut … Il semble que l’installation automatique de [COLOR FFFF6B00]Burst[/" +"COLOR] ne fonctionne pas, tentez manuellement depuis le dépot Quasar, " +"section Programmes" + +msgctxt "#30274" +msgid "Enable all" +msgstr "Tout activer" + +msgctxt "#30275" +msgid "Disable all" +msgstr "Tout désactiver" + +msgctxt "#30276" +msgid "Delete torrent and files" +msgstr "Supprimer le torrent et les fichiers correspondants" + +msgctxt "#30277" +msgid "" +"%s added to library, do you want to rescan it?[CR]You can later use Kodi's " +"'Update library' feature instead." +msgstr "" +"%s ajouté à la librairie, voulez-vous la mettre à jour ?[CR]Vous pouvez " +"utiliser ultérieurement la fonction Kodi de mise à jour." + +msgctxt "#30278" +msgid "" +"%s removed from library, do you want to clean it?[CR]You can later use " +"Kodi's 'Clean library' feature instead." +msgstr "" +"%s retiré de la librairie, voulez-vous la mettre à jour ?[CR]Vous pouvez " +"utiliser ultérieurement la fonction Kodi de mise à jour." + +msgctxt "#30279" +msgid "Watchlist added to library" +msgstr "Liste de lecture ajoutée à la librairie" + +msgctxt "#30280" +msgid "Collection added to library" +msgstr "Collection ajoutée à la librairie" + +msgctxt "#30281" +msgid "List added to library" +msgstr "Liste ajoutée à la librairie" + +msgctxt "#30282" +msgid "Nothing left to remove from Quasar" +msgstr "Rien de plus à supprimer dans Quasar" + +msgctxt "#30283" +msgid "Merge to library" +msgstr "Joindre à la librairie" + +msgctxt "#30284" +msgid "Show unaired seasons" +msgstr "Afficher les saisons avant leur disponibilité" + +msgctxt "#30285" +msgid "Show unaired episodes" +msgstr "Afficher les épisodes avant leur disponibilité" + +msgctxt "#30286" +msgid "" +"%s merged to library, do you want to rescan it?[CR]You can later use Kodi's " +"'Update library' feature instead." +msgstr "" +"%s ajouté à la librairie, voulez-vous la mettre à jour ?[CR]Vous pouvez " +"utiliser ultérieurement la fonction Kodi de mise à jour." + +msgctxt "#30287" +msgid "%s already in library" +msgstr "%s déjà dans la librairie" + +# pas très clair +msgctxt "#30288" +msgid "" +"Library updated, do you want to rescan it?[CR]You can later use Kodi's " +"'Update library' feature instead." +msgstr "" +"Librairie modifiée, voulez-vous la mettre à jour ?[CR]Vous pouvez utiliser " +"ultérieurement la fonction Kodi de mise à jour." + +msgctxt "#30289" +msgid "Genres" +msgstr "Genres" + +msgctxt "#30290" +msgid "Calendars" +msgstr "Calendriers" + +msgctxt "#30291" +msgid "My Movies" +msgstr "Mes Films" + +msgctxt "#30292" +msgid "My Releases" +msgstr "Mes Sorties" + +msgctxt "#30293" +msgid "All Movies" +msgstr "Tous les Films" + +msgctxt "#30294" +msgid "All Releases" +msgstr "Toutes les Sorties" + +msgctxt "#30295" +msgid "My Shows" +msgstr "Mes Séries" + +msgctxt "#30296" +msgid "My New Shows" +msgstr "Mes nouvelles Séries" + +msgctxt "#30297" +msgid "My Premieres" +msgstr "Mes Premières" + +msgctxt "#30298" +msgid "All Shows" +msgstr "Toutes les Séries" + +msgctxt "#30299" +msgid "All New Shows" +msgstr "Toutes les nouvelles Séries" + +msgctxt "#30300" +msgid "All Premieres" +msgstr "Toutes les Premières" + +msgctxt "#30301" +msgid "Move finished downloads to separate folders" +msgstr "Déplacer les téléchargements dans des répertoires distincts" + +msgctxt "#30302" +msgid "" +"Files will only be moved after seeding is finished (see[CR]- BitTorrent " +"settings), and will wait if currently playing" +msgstr "" +"Les fichiers ne seront déplacés qu’à la fin du “seed” (voir[CR]- réglages " +"BitTorrent), et à la fin de la lecture" + +#~ msgctxt "#30025" +#~ msgid "Limit rates after buffering only" +#~ msgstr "Limiter le débit seulement après le chargement du tampon" + +#~ msgctxt "#30103" +#~ msgid "Unable to find Quasar binary" +#~ msgstr "Impossible de trouver le fichier exécutable Quasar" + +#~ msgctxt "#30021" +#~ msgid "Enable pagination" +#~ msgstr "Activer la pagination" + +#~ msgctxt "#30028" +#~ msgid "Background handling of torrents" +#~ msgstr "Prise en charge des torrents en arrière plan" diff --git a/resources/language/German/strings.po b/resources/language/German/strings.po new file mode 100644 index 000000000..1835a19ea --- /dev/null +++ b/resources/language/German/strings.po @@ -0,0 +1,573 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2016-03-24 07:54+0100\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: de\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" +"X-Generator: Poedit 1.8.7\n" + +# Settings +msgctxt "#30000" +msgid "General" +msgstr "Allgemein" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Download Pfad (nicht FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Dateien nach dem Download/Abspielen behalten" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Buffer Größe (MB)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Max Upload Geschwindigkeit (kB/s)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Max Download Geschwindigkeit (kB/s)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Eingehender Port min" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Eingehender Port max" + +msgctxt "#30008" +msgid "Proxy" +msgstr "Proxy" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "SOCKS v5 Konfiguration" + +msgctxt "#30010" +msgid "Enabled" +msgstr "Aktiviert" + +msgctxt "#30011" +msgid "Host" +msgstr "Anbieter" + +msgctxt "#30012" +msgid "Port" +msgstr "Port" + +msgctxt "#30013" +msgid "Login" +msgstr "Login" + +msgctxt "#30014" +msgid "Password" +msgstr "Passwort" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Fortgeschritten" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Benutzerdefiniertes Zeitlimit für Provider" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Aktiviert (auf eigene Gefahr)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Zeitlimit in Sekunden" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Instandhaltung" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Speicher (Cache) löschen" + +msgctxt "#30021" +msgid "Results per page" +msgstr "Resultate pro Seite" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Status Anzeige aktivieren" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Stream automatisch auswählen" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Updates für Pre-Releases erhalten" + +msgctxt "#30025" +msgid "Limit rates after buffering only" +msgstr "Limitiere die Geschwindigkeit erst nach dem Buffern" + +msgctxt "#30026" +msgid "Library path" +msgstr "Pfad zur Bibliothek" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Max Anzahl Verbindungen" + +msgctxt "#30028" +msgid "Background handling of torrents" +msgstr "Verwalte Torrents im Hintergrund" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Intervall für Speichern der Sitzung (Sekunden)" + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "Status Anzeige vertikale Anpassung" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "Deaktiviere Provider ohne Verbindung" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "Erlaube Verbindungsfehler bevor Provider deaktiviert wird" + +msgctxt "#30033" +msgid "Appearance" +msgstr "Darstellung" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "Standardansicht für Filme" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "Standardansicht für TV-Serien" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "Standardansicht für Staffeln" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "Standardansicht für Episoden" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "Bevorzuge Originaltitel" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "TheMovieDB" + +msgctxt "#30040" +msgid "API key" +msgstr "API Schlüssel" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "Stream Sortierung" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "Sortiermodus für Filme" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "Sortiermodus für TV-Serien" + +msgctxt "#30044" +msgid "By seeders" +msgstr "Nach Seedern" + +msgctxt "#30045" +msgid "By resolution" +msgstr "Nach Auflösung" + +msgctxt "#30046" +msgid "Balanced" +msgstr "Ausgeglichen" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "Bevorzugte Auflösung für Filme" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "Bevorzugte Auflösung für TV-Serien" + +msgctxt "#30049" +msgid "Percentage of additional seeders required before choosing next resolution" +msgstr "Prozentzahl an zusätzlichen Seedern bevor nächste Auflösung gewählt wird" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "DHT Deaktivieren" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "Teile Ratio-Limit (Prozent)" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "Ratio-Limit für Seeds (Prozent)" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "Zeit-Limit für Seed (Stunden)" + +msgctxt "#30054" +msgid "Update library" +msgstr "Bibliothek aktualisieren" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "Specials zur Bibliothek hinzufügen" + +msgctxt "#30056" +msgid "Trakt" +msgstr "Trakt" + +msgctxt "#30057" +msgid "Username" +msgstr "Benutzername" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "Quasar authorisieren" + +msgctxt "#30059" +msgid "Library update delay on startup (seconds)" +msgstr "Update der Bibliothek beim Start verzögern (Sekunden)" + +# Interface +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Quasar ist abgestürzt, Neustart…" + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Sie müssen Kodi neustarten bevor Sie Quasar benutzen können" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Dieses Add-on kann nur innerhalb von Quasar verwendet werden" + +msgctxt "#30103" +msgid "Unable to find Quasar binary" +msgstr "Kann Quasar Binärdatei nicht finden" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Datei oder URL eingeben" + +msgctxt "#30105" +msgid "URL" +msgstr "URL" + +msgctxt "#30106" +msgid "File" +msgstr "Datei" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "URL eingeben" + +msgctxt "#30108" +msgid "File path" +msgstr "Dateipfad" + +msgctxt "#30109" +msgid "OK" +msgstr "OK" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "Zu oft abgestürzt, Abbruch…" + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "Provider zu oft ohne Verbindung, deaktiviere…" + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "Kann Provider nicht deaktivieren" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "Download Pfad nicht angegeben, überprüfen Sie Ihre Einstellungen" + +# Quasar daemon +msgctxt "#30200" +msgid "Cache cleared" +msgstr "Speicher (Cache) geleert" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Suche TV-Serien" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Stream auswählen…" + +msgctxt "#30203" +msgid "Show information" +msgstr "Zeige Information" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "Kann keine Provider finden" + +msgctxt "#30205" +msgid "No links were found" +msgstr "Keine Links gefunden" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Suche Filme" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "Nicht genügend Platz im Download Pfad" + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "Quasar Daemon gestartet" + +msgctxt "#30209" +msgid "Search" +msgstr "Suche" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Am beliebtesten" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "Am besten bewertet" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Am meisten Votes" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "IMDB Top 250" + +msgctxt "#30214" +msgid "Movies" +msgstr "Filme" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "TV-Serien" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Torrent hinzufügen" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Magnet oder URL eingeben" + +msgctxt "#30218" +msgid "Next page" +msgstr "Nächste Seite" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "Aus Bibliothek entfernen/hinzufügen" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "Pfad zur Bibliothek fehlt" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Element erfolgreich zur Bibliothek hinzugefügt" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Element aus Bibliothek entfernt" + +msgctxt "#30223" +msgid "Files" +msgstr "Dateien" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Provider Fehler" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Navigationsfehler" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Daemon Fehler" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Fehler beim Aktualisieren des Quasar Daemons" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Verfügbare Streams für" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Torrents" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "Torrent wiedergeben / fortsetzen" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Torrent pausieren" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Torrent löschen" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Sitzung pausieren" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Sitzung fortsetzen" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "Torrent fortsetzen" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Kürzlich veröffentlicht" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Aktuelle TV-Serien" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Aktuelle Episoden" + +msgctxt "#30239" +msgid "Providers" +msgstr "Provider" + +msgctxt "#30240" +msgid "Enable" +msgstr "Aktivieren" + +msgctxt "#30241" +msgid "Disable" +msgstr "Deaktivieren" + +msgctxt "#30242" +msgid "Check" +msgstr "Überprüfen" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "Provider Fehler" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "Provider Einstellungen" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "Beliebt auf Trakt" + +msgctxt "#30246" +msgid "Trending" +msgstr "Im Trend" + +msgctxt "#30247" +msgid "Most Played" +msgstr "Meisten Wiedergaben" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "Meisten Betrachter" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "Am meisten gesammelt" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "Mit Spannung erwartet (Hype)" + +msgctxt "#30251" +msgid "Box Office" +msgstr "Verkaufszahlen" + +msgctxt "#30252" +msgid "Add to library" +msgstr "Zur Bibliothek hinzufügen" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "Aus Bibliothek entfernen" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "Merkliste" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "Zur Merkliste hinzufügen" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "Aus Merkliste entfernen" + +msgctxt "#30257" +msgid "Collection" +msgstr "Sammlung" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "Zur Sammlung hinzufügen" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "Aus Sammlung entfernen" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "Es wurde bereits ein Torrent ausgewählt. Verwenden?" + +msgctxt "#30261" +msgid "Search history" +msgstr "Suchverlauf" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "Suchverlauf verwenden?" + +#~ msgctxt "#30021" +#~ msgid "Enable pagination" +#~ msgstr "Seitenweise Darstellung aktivieren" diff --git a/resources/language/Greek/strings.po b/resources/language/Greek/strings.po new file mode 100644 index 000000000..8251c6ca3 --- /dev/null +++ b/resources/language/Greek/strings.po @@ -0,0 +1,557 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"Project-Id-Version: Greek translation\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-27 19:53+0200\n" +"PO-Revision-Date: 2016-03-14 21:57+0200\n" +"Last-Translator: filosofos \n" +"Language-Team: filosofos \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" + +# Settings +msgctxt "#30000" +msgid "General" +msgstr "Γενικές ρυθμίσεις" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Διαδρομή λήψης (ΟΧΙ FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Διατήρηση αρχείων όταν ολοκληρωθεί η αναπαραγωγή/λήψη" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Μέγεθος προσωρινής μνήμης (MB)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Μέγιστος ρυθμός μεταφόρτωσης (Upload)(kB/s)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Μέγιστος ρυθμός λήψης (kB/s)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Θύρα επικοινωνίας (μικρότερη)" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Θύρα επικοινωνίας (μεγαλύτερη)" + +msgctxt "#30008" +msgid "Proxy" +msgstr "Διακομιστής μεσολάβησης (proxy)" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "Ρυθμίσεις SOCKS v5" + +msgctxt "#30010" +msgid "Enabled" +msgstr "Ενεργοποιημένο" + +msgctxt "#30011" +msgid "Host" +msgstr "Εξυπηρετητής" + +msgctxt "#30012" +msgid "Port" +msgstr "Θύρα" + +msgctxt "#30013" +msgid "Login" +msgstr "Σύνδεση" + +msgctxt "#30014" +msgid "Password" +msgstr "Συνθηματικό" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Προχωρημένες ρυθμίσεις" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Προσαρμοσμένη διάρκεια λήξης παρόχων" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Ενεργοποιημένο (χρησιμοποιήστε το με δική σας ευθύνη)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Χρονικό όριο λήξης σε δευτερόλεπτα" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Συντήρηση" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Διαγραφή προσωρινής μνήμης" + +msgctxt "#30021" +msgid "Results per page" +msgstr "Αποτελέσματα ανά σελίδα" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Ενεργοποίηση μπάρας κατάστασης" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Αυτόματη επιλογή ροής (stream)" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Ενεργοποίηση λήψης ανεπίσημων εκδόσεων" + +msgctxt "#30025" +msgid "Limit rates after buffering only" +msgstr "Περιορισμός ρυθμού λήψης μετά την αποθήκευση στην ενδιάμεση μνήμη" + +msgctxt "#30026" +msgid "Library path" +msgstr "Διαδρομή ταινιοθήκης" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Όριο συνδέσεων" + +msgctxt "#30028" +msgid "Background handling of torrents" +msgstr "Χειρισμός torrents στο υπόβαθρο" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Συχνότητα αποθήκευσης συνεδρίας (δευτερόλεπτα)" + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "Κάθετη μετατόπιση μπάρας κατάστασης" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "Απενεργοποίηση των παρόχων που απέτυχαν στον έλεγχο ορθής λειτουργίας" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "Επιτρεπόμενες αποτυχίες πριν την απενεργοποίηση του παρόχου" + +msgctxt "#30033" +msgid "Appearance" +msgstr "Εμφάνιση" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "Προεπιλεγμένη εμφάνιση για Ταινίες" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "Προεπιλεγμένη εμφάνιση για Τηλεοπτικές Σειρές" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "Προεπιλεγμένη εμφάνιση για Κύκλους Επεισοδίων" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "Προεπιλεγμένη εμφάνιση για Επεισόδια" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "Προτίμηση του πρωτότυπου τίτλου" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "TheMovieDB" + +msgctxt "#30040" +msgid "API key" +msgstr "Κλειδί API" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "Κατάταξη ροής" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "Λειτουργία κατάταξης Ταινιών" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "Λειτουργία κατάταξης Τηλεοπτικών Σειρών" + +msgctxt "#30044" +msgid "By seeders" +msgstr "Βάσει seeders" + +msgctxt "#30045" +msgid "By resolution" +msgstr "Βάσει ανάλυσης" + +msgctxt "#30046" +msgid "Balanced" +msgstr "Ισορροπημένο" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "Επιλογή ανάλυσης Ταινιών" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "Επιλογή ανάλυσης για Τηλεοπτικές Σειρές" + +msgctxt "#30049" +msgid "Percentage of additional seeders required before choosing next resolution" +msgstr "Ποσοστό επιπρόσθετων seeders που απαιτούνται πριν από την επιλογή της επόμενης ανάλυσης" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "Απενεργοποίηση DHT" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "Όριο αναλογίας διαμοιρασμού (ποσοστό)" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "Χρονικό όριο αναλογίας διαμοιρασμού (ποσοστό)" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "Χρονικό όριο διαμοιρασμού (ώρες)" + +msgctxt "#30054" +msgid "Update library" +msgstr "Ενημέρωση βιβλιοθήκης" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "Προσθήκη αφιερωμάτων στην ταινιοθήκη" + +msgctxt "#30056" +msgid "Trakt" +msgstr "Trakt" + +msgctxt "#30057" +msgid "Username" +msgstr "Όνομα χρήστη" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "Εξουσιοδότηση Quasar" + +# Interface +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Το Quasar έχει κλείσει αναπάντεχα, γίνεται επανεκκίνηση..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Απαιτείται η επανεκκίνηση του Kodi πριν από τη χρήση του Quasar" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Το συγκεκριμένο πρόσθετο μπορεί να χρησιμοποιηθεί μόνο μέσα από το Quasar" + +msgctxt "#30103" +msgid "Unable to find Quasar binary" +msgstr "Δεν βρέθηκε το binary του Quasar" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Εισαγωγή αρχείου ή URL" + +msgctxt "#30105" +msgid "URL" +msgstr "URL" + +msgctxt "#30106" +msgid "File" +msgstr "Αρχείο" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "Εισαγωγή URL" + +msgctxt "#30108" +msgid "File path" +msgstr "Διαδρομή αρχείου" + +msgctxt "#30109" +msgid "OK" +msgstr "OK" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "Κράσαρε πάρα πολλές φορές, γίνεται διακοπή" + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "Ο πάροχος απέτυχε πάρα πολλές φορές, απενεργοποιείται..." + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "Δεν ήταν δυνατή η απενεργοποίηση του παρόχου" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "Δεν έχει ορισθεί η διαδρομή λήψης, ελέγξτε τις ρυθμίσεις" + +# Quasar daemon +msgctxt "#30200" +msgid "Cache cleared" +msgstr "Έγινε εκκαθάριση της προσωρινής μνήμης" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Αναζήτηση Τηλεοπτικών Σειρών" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Επιλέξτε ροή..." + +msgctxt "#30203" +msgid "Show information" +msgstr "Εμφάνιση πληροφοριών" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "Δεν βρέθηκαν πάροχοι (providers)" + +msgctxt "#30205" +msgid "No links were found" +msgstr "Δε βρέθηκαν σύνδεσμοι" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Αναζήτηση ταινιών" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "Δεν υπάρχει ελεύθερος διαθέσιμος χώρος στη διαδρομή λήψης" + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "Έγινε εκκίνηση του Quasar" + +msgctxt "#30209" +msgid "Search" +msgstr "Αναζήτηση" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Δημοφιλέστερες" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "Ταινίες με τις υψηλότερες βαθμολογίες" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Ταινίες με τις περισσότερες ψήφους" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "Καλύτερες 250 ταινίες του IMDB" + +msgctxt "#30214" +msgid "Movies" +msgstr "Ταινίες" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "Τηλεοπτικές Σειρές" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Επικόλληση URL" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Επικόλληση Magnet ή URL" + +msgctxt "#30218" +msgid "Next page" +msgstr "Επόμενη σελίδα" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "Προσθήκη/Διαγραφή από την ταινιοθήκη" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "Δεν έχει ορισθεί διαδρομή για τη ταινιοθήκη" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Το αντικείμενο προστέθηκε στη ταινιοθήκη" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Το αντικείμενο αφαιρέθηκε από τη ταινιοθήκη" + +msgctxt "#30223" +msgid "Files" +msgstr "Αρχεία" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Σφάλμα παρόχου" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Σφάλμα πλοήγησης" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Σφάλμα Daemon" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Πρόβλημα ενημέρωσης Quasar daemon" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Διαθέσιμες ροές για" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Torrents" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "Αναπαραγωγή / συνέχιση torrent" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Παύση torrent" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Διαγραφή torrent" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Παύση συνεδρίας" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Συνέχιση συνεδρίας" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "Συνέχιση torrent" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Πρόσφατες κυκλοφορίες" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Πρόσφατες τηλεοπτικές σειρές" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Πρόσφατα Επεισόδια" + +msgctxt "#30239" +msgid "Providers" +msgstr "Πάροχοι" + +msgctxt "#30240" +msgid "Enable" +msgstr "Ενεργοποίηση" + +msgctxt "#30241" +msgid "Disable" +msgstr "Απενεργοποίηση" + +msgctxt "#30242" +msgid "Check" +msgstr "Έλεγξε" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "Σφάλματα παρόχου" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "Ρυθμίσεις παρόχου" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "Δημοφιλή στο Trakt" + +msgctxt "#30246" +msgid "Trending" +msgstr "Τελευταίες τάσεις" + +msgctxt "#30247" +msgid "Most Played" +msgstr "Παίζουν περισσότερο" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "Έχουν παρακολουθηθεί περισσότερο" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "Βρίσκονται στις περισσότερες συλλογές" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "Πολυαναμενόμενα" + +msgctxt "#30251" +msgid "Box Office" +msgstr "Εισπρακτικές επιτυχίες" + +msgctxt "#30252" +msgid "Add to library" +msgstr "Προσθήκη στην ταινιοθήκη" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "Διαγραφή από την ταινιοθήκη" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "Λίστα παρακολούθησης" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "Προσθήκη στη λίστα παρακολούθησης" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "Διαγραφή από τη λίστα παρακολούθησης" + +msgctxt "#30257" +msgid "Collection" +msgstr "Συλλογή" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "Προσθήκη στη συλλογή" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "Αφαίρεση από τη συλλογή" + +#~ msgctxt "#30021" +#~ msgid "Enable pagination" +#~ msgstr "Ενεργοποίηση σελιδοποίησης" diff --git a/resources/language/Hebrew/strings.po b/resources/language/Hebrew/strings.po new file mode 100644 index 000000000..e962a0c7a --- /dev/null +++ b/resources/language/Hebrew/strings.po @@ -0,0 +1,1030 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-04-03 21:51+0300\n" +"PO-Revision-Date: 2017-04-03 21:53+0300\n" +"Last-Translator: Assaf Sapir , ShlomiD\n" +"Language-Team: \n" +"Language: he\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" +"X-Generator: Poedit 1.8.11\n" + +# Settings +msgctxt "#30000" +msgid "General" +msgstr "כללי" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "נתיב הורדה (לא FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "שמירת הקבצים בסיום הניגון/ההורדה" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "גודל הבאפר (MB)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "קצב העלאה מרבי (kB/s)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "קצב הורדה מרבי (kB/s)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "פורט האזנה מינימלי" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "פורט האזנה מקסימלי" + +msgctxt "#30008" +msgid "Proxy" +msgstr "פרוקסי" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "הגדרת SOCKS v5" + +msgctxt "#30010" +msgid "Enabled" +msgstr "מופעל" + +msgctxt "#30011" +msgid "Host" +msgstr "הוסט" + +msgctxt "#30012" +msgid "Port" +msgstr "פורט" + +msgctxt "#30013" +msgid "Login" +msgstr "שם משתמש" + +msgctxt "#30014" +msgid "Password" +msgstr "ססמה" + +msgctxt "#30015" +msgid "Advanced" +msgstr "מתקדם" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Timeout מותאם אישית" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "הפעלה (שימוש רק באחריותך)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Timeout בשניות" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "תחזוקה" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "ניקוי מטמון" + +msgctxt "#30021" +msgid "Results per page" +msgstr "מספר תוצאות בעמוד" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "הצגת שורת מצב" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "בחירת מקור אוטומטית" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "הפעלת עדכוני קדם-שחרור" + +msgctxt "#30025" +msgid "Limit rates after initial buffering only" +msgstr "הגבלת קצב לאחר הבאפרינג ההתחלתי" + +msgctxt "#30026" +msgid "Library path" +msgstr "נתיב לספרייה" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "הגבלת חיבורים" + +msgctxt "#30028" +msgid "Do not ask to keep downloading" +msgstr "לא לשאול האם להמשיך להוריד" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "תדירות שמירת ההפעלה (בשניות)" + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "הזזת המיקום של שורת המצב" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "כיבוי בדיקת ספקים" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "מספר כשלונות לפני כיבוי ספק" + +msgctxt "#30033" +msgid "Appearance" +msgstr "מראה" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "תצוגת ברירת מחדל לסרטים" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "תצוגת ברירת מחדל לסדרות" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "תצוגת ברירת מחדל לעונות" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "תצוגת ברירת מחדל לפרקים" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "שימוש בכותרת מקורית" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "TheMovieDB" + +msgctxt "#30040" +msgid "API key" +msgstr "מפתח API" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "סידור מקורות" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "שיטת סידור לסרטים" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "שיטת סידור לסדרות" + +msgctxt "#30044" +msgid "By seeders" +msgstr "לפי זורעים" + +msgctxt "#30045" +msgid "By resolution" +msgstr "לפי איכות" + +msgctxt "#30046" +msgid "Balanced" +msgstr "מאוזן" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "העדפות רזולוציה לסרטים" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "העדפות רזולוציה לסדרות" + +msgctxt "#30049" +msgid "" +"Percentage of additional seeders required before choosing next resolution" +msgstr "אחוז נדרש של זורעים לפני בחירה של הרזולוציה הבאה" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "כיבוי DHT" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "הגבלת יחס זריעה (באחוזים)" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "הגבלת יחס זמן לזריעה (באחוזים)" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "הגבלת זמן זריעה (בשעות)" + +msgctxt "#30054" +msgid "Update library" +msgstr "עדכון הספריה" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "הוספת ספיישלים לספריה" + +msgctxt "#30056" +msgid "Trakt" +msgstr "Trakt" + +msgctxt "#30057" +msgid "Username" +msgstr "שם משתמש" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "אישור Quasar" + +msgctxt "#30059" +msgid "Library update delay on startup (seconds)" +msgstr "זמן (בשניות) להשהיה לאחר ההפעה עד לעדכון הספריה" + +msgctxt "#30060" +msgid "Library update frequency (hours)" +msgstr "תדירות עדכון הספרייה (בשעות)" + +msgctxt "#30061" +msgid "Sync frequency of Trakt lists to library (hours)" +msgstr "תדירות סנכרון הספרייה עם רשימות מבTrakt" + +msgctxt "#30062" +msgid "Ask to keep the files after streaming" +msgstr "האם לשאול אם לשמור קבצים בסיום הניגון" + +msgctxt "#30063" +msgid "Disable UPNP & NATPMP" +msgstr "כיבוי UPNP ו־NATPMP" + +msgctxt "#30064" +msgid "Encryption policy" +msgstr "מדיניות הצפנה" + +msgctxt "#30065" +msgid "Disabled" +msgstr "כבוי" + +msgctxt "#30066" +msgid "Forced" +msgstr "כפוי" + +msgctxt "#30067" +msgid "Proxy type" +msgstr "שיטת הפרוקסי" + +msgctxt "#30068" +msgid "SOCKS4" +msgstr "SOCKS4" + +msgctxt "#30069" +msgid "SOCKS5" +msgstr "SOCKS5" + +msgctxt "#30070" +msgid "SOCKS5 password" +msgstr "SOKCS% עם ססמה" + +msgctxt "#30071" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30072" +msgid "HTTP password" +msgstr "HTTP עם ססמה" + +msgctxt "#30073" +msgid "i2p" +msgstr "i2p" + +msgctxt "#30074" +msgid "Spoof user agent (highly inadvisable)" +msgstr "שינוי\tUser agent (מאוד לא מומלץ)" + +msgctxt "#30075" +msgid "Default from libtorrent (acceptable)" +msgstr "ברירת המחדל של libtorrent (סביר)" + +msgctxt "#30076" +msgid "libtorrent (Rasterbar) 1.1.0" +msgstr "libtorrent (Rasterbar) 1.1.0" + +msgctxt "#30077" +msgid "BitTorrent 7.5.0" +msgstr "BitTorrent 7.5.0" + +msgctxt "#30078" +msgid "BitTorrent 7.4.3" +msgstr "BitTorrent 7.4.3" + +msgctxt "#30079" +msgid "µTorrent 3.4.9" +msgstr "µTorrent 3.4.9" + +msgctxt "#30080" +msgid "µTorrent 3.2.0" +msgstr "µTorrent 3.2.0" + +msgctxt "#30081" +msgid "µTorrent 2.2.1" +msgstr "µTorrent 2.2.1" + +msgctxt "#30082" +msgid "Transmission 2.92" +msgstr "Transmission 2.92" + +msgctxt "#30083" +msgid "Deluge 1.3.6.0" +msgstr "Deluge 1.3.6.0" + +msgctxt "#30084" +msgid "Deluge 1.3.12.0" +msgstr "Deluge 1.3.12.0" + +msgctxt "#30085" +msgid "Vuze 5.7.3.0" +msgstr "Vuze 5.7.3.0" + +msgctxt "#30086" +msgid "Enable tuned storage settings" +msgstr "הפעלת הגדרות לאחסון מכוון" + +msgctxt "#30087" +msgid "Ask to delete the files after streaming" +msgstr "האם לשאול אם למחוק את הקבצים בסיום ההזרמה" + +msgctxt "#30088" +msgid "Initial buffering timeout (seconds)" +msgstr "מקסימום זמן לטעינה לפני תחילת ניגון (בשניות)" + +msgctxt "#30089" +msgid "Automatically re-scan Kodi library after updates" +msgstr "סריקה חוזרת של ספריית ה־Kodi לאחר עדכונים" + +msgctxt "#30090" +msgid "Listen interfaces" +msgstr "מנשק האזנה" + +msgctxt "#30091" +msgid "Outgoing interfaces" +msgstr "מנשק יוצא" + +msgctxt "#30092" +msgid "Use default fanart" +msgstr "שימוש ב fanart ברירת מחדל" + +msgctxt "#30093" +msgid "Disable notification sound" +msgstr "כיבוי צלילי התראות" + +msgctxt "#30094" +msgid "Disable background progress dialog" +msgstr "כיבוי הצגת מצב ההתקדמות ברקע" + +msgctxt "#30095" +msgid "Resume playback from library integration" +msgstr "המשך צפיה באינטגרציה עם הספריה" + +msgctxt "#30096" +msgid "Never" +msgstr "לעולם לא" + +msgctxt "#30097" +msgid "Always" +msgstr "תמיד" + +msgctxt "#30098" +msgid "Active torrents only" +msgstr "טורנטים פעילים בלבד" + +# Interface +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Quasar קרס, מופעל מחדש..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "יש להפעיל את Kodi מחדש לפני השימוש ב־Quasar" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "הרחבה זאת פועלת רק מתוך Quasar" + +msgctxt "#30103" +msgid "Unable to find Quasar binary[CR]Required platform:" +msgstr "לא ניתן למצוא את קובץ ההרצה של Quasar[CR] לארכיטקטורה:" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "הכנסת נתיב לקובץ או לכתובת אינטרנט" + +msgctxt "#30105" +msgid "URL" +msgstr "כתובת אינטרנט" + +msgctxt "#30106" +msgid "File" +msgstr "קובץ" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "הכנסת כתובת אינטרנט" + +msgctxt "#30108" +msgid "File path" +msgstr "נתיב לקובץ " + +msgctxt "#30109" +msgid "OK" +msgstr "אישור" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "Quasar קרס יותר מדי פעמים, מתבטל..." + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "הספק נכשל יותר מדי פעמים, משבית..." + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "לא ניתן לבטל את ההפעלה של הספק" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "לא הוגדר נתיב הורדה, אנא בדקו את ההגדרות" + +# Site name +msgctxt "#30114" +msgid "TheTVDB" +msgstr "TheTVDB" + +msgctxt "#30115" +msgid "TV show scraper used by Kodi library" +msgstr "סקרפרים בשימוש על־ידי הספרייה" + +msgctxt "#30116" +msgid "Looks like Quasar is still starting up, give it a few seconds..." +msgstr "נראה כי Quasar עדיין בעליה, תנו לזה עוד כמה שניות..." + +msgctxt "#30117" +msgid "Resolving torrent files..." +msgstr "מוצא קבצי טורנט" + +msgctxt "#30118" +msgid "Scraping trackers..." +msgstr "מוצא טראקרים" + +msgctxt "#30141" +msgid "" +"Please support Quasar development by visiting https://quasar.surge.sh/donate" +msgstr "תמכו בפיתוח של Quasar באמצעות ביקור ב־https://quasar.surge.sh/donate" + +msgctxt "#30142" +msgid "Default view for menus in Movies" +msgstr "תצוגת ברירת מחדל לתפריטי סרטים" + +msgctxt "#30143" +msgid "Default view for menus in TV Shows" +msgstr "תצוגת ברירת מחדל לסדרות טלויזיה" + +msgctxt "#30144" +msgid "Default view for movie genres" +msgstr "תצוגת ברירת מחדל לז'נרים של סרטים" + +msgctxt "#30145" +msgid "Default view for TV show genres" +msgstr "תצוגת ברירת מחדל לז'נרים של סדרו" + +msgctxt "#30146" +msgid "Keep downloading?" +msgstr "האם להמשיך להוריד?" + +msgctxt "#30147" +msgid "Caches are still warming up, give it a minute or two..." +msgstr "עדיין טוען את הקאש, יש עוד דקה או שתיים" + +msgctxt "#30148" +msgid "Caches warmed up" +msgstr "הקאש נטען" + +msgctxt "#30149" +msgid "Trakt username not set, check your settings" +msgstr "שם המשתמש ב־Trakt לא הוגדר, יש לבדוק את ההגדרות" + +msgctxt "#30199" +msgid "" +"No available JSON-RPC connection to Kodi.[CR]Enable both Application control " +"options in Service settings / Control and restart Kodi." +msgstr "" +"לא מצליח ליצור קישור JSON-RPC ל־Kodi.[CR]יש להפעיל את שתי האפשרויות לשליטה " +"באפליקציה תחת הגדרות שירות / שליטה ולהפעיל את Kodi מחדש" + +# Quasar daemon +msgctxt "#30200" +msgid "Cache cleared" +msgstr "מטמון נוקה" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "חיפוש תוכנית טלוויזיה" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "בחירת מקור..." + +msgctxt "#30203" +msgid "Show information" +msgstr "הצגת מידע" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "לא נמצאו ספקים" + +msgctxt "#30205" +msgid "No links were found" +msgstr "לא נמצאו קישורים" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "חיפוש סרטים" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "אין מספיק מקום בנתיב ההורדה." + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "שירות Quasar הופעל" + +msgctxt "#30209" +msgid "Search" +msgstr "חיפוש" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "הכי פופלאריים" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "מדורגים הכי גבוה" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "הכי הרבה הצבעות" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "IMDB Top 250" + +msgctxt "#30214" +msgid "Movies" +msgstr "סרטים" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "סדרות" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "הוספת טורנט" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "הדבקת קישור מגנט או כתובת אינטרנט" + +msgctxt "#30218" +msgid "Next page" +msgstr "עמוד הבא" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "הוספה/הסרה מהספרייה" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "נתיב הספרייה לא מוגדר" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "פריט הוסף בהצלחה לספרייה" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "פריט הוסר בהצלחה מהספרייה" + +msgctxt "#30223" +msgid "Files" +msgstr "קבצים" + +msgctxt "#30224" +msgid "Provider error" +msgstr "שגיאת ספק" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "שגיאת ניווט" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "שגיאת שרת" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "שגיאה בעדכון של שרת Quasar" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "מקורות זמינים עבור" + +msgctxt "#30229" +msgid "Torrents" +msgstr "טורנטים" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "ניגון/המשך טורנט" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "השהיית טורנט" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "מחיקת טורנט" + +msgctxt "#30233" +msgid "Pause session" +msgstr "השהיית פעולה" + +msgctxt "#30234" +msgid "Resume session" +msgstr "המשך פעולה" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "המשך טורנט" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "שוחררו לאחרונה" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "סדרות אחרונות" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "פרקים אחרונים" + +msgctxt "#30239" +msgid "Providers" +msgstr "ספקים" + +msgctxt "#30240" +msgid "Enable" +msgstr "מופעל" + +msgctxt "#30241" +msgid "Disable" +msgstr "כבוי" + +msgctxt "#30242" +msgid "Check" +msgstr "בדיקה" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "כישלונות ספקים" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "הגדרות ספקים" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "פופולרי ב־Trakt" + +msgctxt "#30246" +msgid "Trending" +msgstr "טרנדי" + +msgctxt "#30247" +msgid "Most Played" +msgstr "נוגנו הכי הרבה" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "נצפו הכי הרבה" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "נאספו הכי הרבה" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "הכי הרבה ציפיות" + +msgctxt "#30251" +msgid "Box Office" +msgstr "שוברי קופות" + +msgctxt "#30252" +msgid "Add to library" +msgstr "הוספה לספריה" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "הסרה מהספריה" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "רשימת צפייה" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "הוספה לרשימת צפייה" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "הסרה מרשימת צפייה" + +msgctxt "#30257" +msgid "Collection" +msgstr "אוסף" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "הוספה לאוסף" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "הסרה מהאוסף" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "הטורנט הזה כבר נבחר בעבר, האם להשתמש בו?" + +msgctxt "#30261" +msgid "Search history" +msgstr "היסטוריית חיפוש" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "האם להשתמש בהיסטוריית החיפוש?" + +msgctxt "#30263" +msgid "Lists" +msgstr "רשימות" + +msgctxt "#30264" +msgid "Reset clearances" +msgstr "איפוס הסיווגים" + +msgctxt "#30265" +msgid "Item already in library" +msgstr "הפריט כבר בספרייה" + +msgctxt "#30266" +msgid "Ignore duplicates" +msgstr "התעלמות מכפילויות" + +msgctxt "#30267" +msgid "Keep downloaded files?" +msgstr "האם לשמור את הקבצים שהורדו?" + +msgctxt "#30268" +msgid "Toggle watched" +msgstr "סימון כנצפה" + +msgctxt "#30269" +msgid "Delete downloaded files?" +msgstr "למחוק את הקבצים שהורדו?" + +msgctxt "#30270" +msgid "Match found in your active torrents, play it?" +msgstr "נמצאה התאמה ברשימת הטורנטים הפעילים, האם להשתמש בה?" + +msgctxt "#30271" +msgid "" +"There is now an official multi-provider for Quasar called [COLOR " +"FFFF6B00]Burst[/COLOR], would you like to install it now?" +msgstr "" +"כעת זמין להורדה מולטי-ספק רשמי בשם \"[COLOR FFFF6B00]Burst[/COLOR]\". האם " +"תרצו להתקינו כעת?" + +msgctxt "#30272" +msgid "Installation successful, enjoy Quasar [COLOR FFFF6B00]Burst[/COLOR]!" +msgstr "ההתקנה הצליחה. תיהנו מ Quasar [COLOR FFFF6B00]Burst[/COLOR] !" + +msgctxt "#30273" +msgid "" +"Shoot... It looks like we couldn't install [COLOR FFFF6B00]Burst[/COLOR] " +"automatically, head over to the Quasar Repository, then under the Program " +"add-ons section to install it." +msgstr "" +"נראה כי ההתקנה האוטומטית של [COLOR FFFF6B00]Burst[/COLOR] לא הצליחה. ניתן " +"להתקין מהמקור של Quasar, תחת \"הרחבות תוכנה\"." + +msgctxt "#30274" +msgid "Enable all" +msgstr "הפעלת כל הספקים" + +msgctxt "#30275" +msgid "Disable all" +msgstr "כיבוי כל הספקים" + +msgctxt "#30276" +msgid "Delete torrent and files" +msgstr "מחיקת כל הקבצים והטורנטים" + +msgctxt "#30277" +msgid "" +"%s added to library, do you want to rescan it?[CR]You can later use Kodi's " +"'Update library' feature instead." +msgstr "" +"%s נוסף לספריה. האם לסרוק אותה מחדש?[CR]אפשר להשתמש מאוחר יותר ב\"עדכון " +"ספריה של קודי" + +msgctxt "#30278" +msgid "" +"%s removed from library, do you want to clean it?[CR]You can later use " +"Kodi's 'Clean library' feature instead." +msgstr "" +"%s הוסרה מהספריה, האם לנקות אותה?[CR]אפשר להשתמש מאוחר יותר גם באפשרות " +"המובנית בקודי \"ניקוי ספריה\"" + +msgctxt "#30279" +msgid "Watchlist added to library" +msgstr "רשימת צפיה נוספה לספרייה" + +msgctxt "#30280" +msgid "Collection added to library" +msgstr "האוספים נוספות לספריה" + +msgctxt "#30281" +msgid "List added to library" +msgstr "הרשימות נוספו לספריה" + +msgctxt "#30282" +msgid "Nothing left to remove from Quasar" +msgstr "לא נשאר דבר להסיר מQuasar" + +msgctxt "#30283" +msgid "Merge to library" +msgstr "מיזוג לספריה" + +msgctxt "#30284" +msgid "Show unaired seasons" +msgstr "הצגת עונות שטרם שודרו" + +msgctxt "#30285" +msgid "Show unaired episodes" +msgstr "הצגת פרקים שטרם שודרו" + +msgctxt "#30286" +msgid "" +"%s merged to library, do you want to rescan it?[CR]You can later use Kodi's " +"'Update library' feature instead." +msgstr "" +"%s מוזגה לספריה, האם לסרוק אותה מחדש?[CR]אפשר גם להשתמש מאוחר יותר ב\"עדכון " +"ספריה\" של קודי" + +msgctxt "#30287" +msgid "%s already in library" +msgstr "%s כבר בספריה" + +msgctxt "#30288" +msgid "" +"Library updated, do you want to rescan it?[CR]You can later use Kodi's " +"'Update library' feature instead." +msgstr "" +"הספריה עודכנה, האם לסרוק אותה מחדש?[CR]ניתן לעשות זאת מאוחר יותר באמצעות " +"\"עדכון ספריה\" של קודי" + +msgctxt "#30289" +msgid "Genres" +msgstr "ז'אנרים" + +msgctxt "#30290" +msgid "Calendars" +msgstr "לוחות שנה" + +msgctxt "#30291" +msgid "My Movies" +msgstr "הסרטים שלי" + +msgctxt "#30292" +msgid "My Releases" +msgstr "השחרורים שלי" + +msgctxt "#30293" +msgid "All Movies" +msgstr "כל הסרטים" + +msgctxt "#30294" +msgid "All Releases" +msgstr "כל השחרורים" + +msgctxt "#30295" +msgid "My Shows" +msgstr "הסדרות שלי" + +msgctxt "#30296" +msgid "My New Shows" +msgstr "הסדרות החדשות שלי" + +msgctxt "#30297" +msgid "My Premieres" +msgstr "הבכורות שלי" + +msgctxt "#30298" +msgid "All Shows" +msgstr "כל הסדרות" + +msgctxt "#30299" +msgid "All New Shows" +msgstr "כל הסדרות החדשות" + +msgctxt "#30300" +msgid "All Premieres" +msgstr "כל הבכורות" + +msgctxt "#30301" +msgid "Move finished downloads to separate folders" +msgstr "העברת קבצים בסיום ההורדה לתיקיה נפרדת" + +msgctxt "#30302" +msgid "" +"Files will only be moved after seeding is finished (see[CR]- BitTorrent " +"settings), and will wait if currently playing" +msgstr "" +"הקבצים יועברו רק לאחר שזריעת הקבצים הסתיימה (ראו[CR]בהגדרות BitTorrent), " +"וימתינו לסיום הניגון" + +msgctxt "#30303" +msgid "" +"RAR archive detected. Download will need to be completed before playback can " +"start and will require around twice the amount of space, continue?" +msgstr "" +"זוהתה הורדה של ארכיון RAR. ההורדה חייבת להסתיים לפני שאפשר יהיה להתחיל לנגן, " +"ותדרוש כפול מקום פנוי. להמשיך?" + +msgctxt "#30304" +msgid "Error creating output pipe for 'unrar' command" +msgstr "שגיאה בעת יצירת פלט של הפקודה unrar" + +msgctxt "#30305" +msgid "Error starting 'unrar' command" +msgstr "שגיאה בהפעלת פקודת 'unrar'" + +msgctxt "#30306" +msgid "Error waiting for 'unrar' command" +msgstr "לא נמצאה פקודת 'unrar'" + +msgctxt "#30307" +msgid "Error reading from destination folder" +msgstr "שגיאה בקריאת תיקיית היעד" + +msgctxt "#30308" +msgid "Move completed" +msgstr "העברה הושלמה" + +#~ msgctxt "#30025" +#~ msgid "Limit rates after buffering only" +#~ msgstr "הגבלת קצב לאחר התחלת הניגון" + +#~ msgctxt "#30103" +#~ msgid "Unable to find Quasar binary" +#~ msgstr "אין אפשרות למצוא את קובץ ההרצה של Quasar" + +#~ msgctxt "#30093" +#~ msgid "Do Not Disturb mode" +#~ msgstr "מצב נא לא להפריע" + +#~ msgctxt "#30028" +#~ msgid "Background handling of torrents" +#~ msgstr "ניהול הורדת בטורנטים ברקע" + +#~ msgctxt "#30021" +#~ msgid "Enable pagination" +#~ msgstr "הפעלת עימוד" diff --git a/resources/language/Hungarian/strings.po b/resources/language/Hungarian/strings.po new file mode 100644 index 000000000..da91f3f1f --- /dev/null +++ b/resources/language/Hungarian/strings.po @@ -0,0 +1,980 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-27 19:53+0200\n" +"PO-Revision-Date: 2017-04-18 10:13+0200\n" +"Last-Translator: Mr Dini \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + + +# Settings + +msgctxt "#30000" +msgid "General" +msgstr "Általános" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Letöltés helye (nem FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Őrizze meg a fájlokat a lejátszás/letöltés végeztével" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Pufferméret (MB)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Max feltöltési sebesség (kB/s)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Max letöltési sebesség (kB/s)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Figyelés min portja" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Figyelés max portja" + +msgctxt "#30008" +msgid "Proxy" +msgstr "Proxy" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "SOCKS v5 Konfiguráció" + +msgctxt "#30010" +msgid "Enabled" +msgstr "Engedélyezve" + +msgctxt "#30011" +msgid "Host" +msgstr "Hoszt" + +msgctxt "#30012" +msgid "Port" +msgstr "Port" + +msgctxt "#30013" +msgid "Login" +msgstr "Felhasználónév" + +msgctxt "#30014" +msgid "Password" +msgstr "Jelszó" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Haladó" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Egyedi kiszolgáló időkorlát" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Engedélyezve (használat csak saját felelősségre)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Időkorlát másodpercekben" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Karbantartás" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Gyorsítótár megtisztítása" + +msgctxt "#30021" +msgid "Results per page" +msgstr "Találatok száma oldalanként" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Borító mód engedélyezése" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Stream automatikus választása" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Kiadás előtti verziófrissítések letöltése" + +msgctxt "#30025" +msgid "Limit rates after initial buffering only" +msgstr "Sebességkorlátozás érvénybe lépése csak az első pufferelést követően" + +msgctxt "#30026" +msgid "Library path" +msgstr "Könyvtár útvonal" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Kapcsolatszám korlátozás" + +msgctxt "#30028" +msgid "Do not ask to keep downloading" +msgstr "Ne kérdezze a letöltés folytatását" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Munkamenet mentés gyakorisága (másodpercekben)" + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "Borító függőleges eltolása" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "Nem naprakész kiszolgálók letiltása" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "Engedélyezett hibás próbálkozások a kiszolgáló letiltása előtt" + +msgctxt "#30033" +msgid "Appearance" +msgstr "Megjelenés" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "Filmek alapértelmezett nézete" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "Sorozatok alapértelmezett nézete" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "Évadok alapértelmezett nézete" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "Epizódok alapértelmezett nézete" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "Eredeti cím előnyben részesítése" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "TheMovieDB" + +msgctxt "#30040" +msgid "API key" +msgstr "API kulcs" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "Stream rendezés" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "Filmek rendezése" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "Sorozatok rendezése" + +msgctxt "#30044" +msgid "By seeders" +msgstr "Seederek szerint" + +msgctxt "#30045" +msgid "By resolution" +msgstr "Felbontás szerint" + +msgctxt "#30046" +msgid "Balanced" +msgstr "Kiegyensúlyozott" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "Filmek felbontási beállítása" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "Sorozatok felbontási beállítása" + +msgctxt "#30049" +msgid "Percentage of additional seeders required before choosing next resolution" +msgstr "További seederek százalékos aránya, mielőtt a következő felbontást választaná" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "DHT letiltása" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "Megosztási ráta korlátozás (százalékban)" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "Seed idő korlátozás (százalékban)" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "Seed idő korlátozás (órákban)" + +msgctxt "#30054" +msgid "Update library" +msgstr "Könyvtár frissítése" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "Speciális epizódok könyvtárához adása" + +msgctxt "#30056" +msgid "Trakt" +msgstr "Trakt" + +msgctxt "#30057" +msgid "Username" +msgstr "Felhasználónév" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "Quasar felhatalmazása" + +msgctxt "#30059" +msgid "Library update delay on startup (seconds)" +msgstr "Könyvtár frissítési késleltetés induláskor (másodpercekben)" + +msgctxt "#30060" +msgid "Library update frequency (hours)" +msgstr "Könyvtár frissítési időköz (órákban)" + +msgctxt "#30061" +msgid "Sync frequency of Trakt lists to library (hours)" +msgstr "Trakt listák helyi könyvtárába szinkronizálása (órákban)" + +msgctxt "#30062" +msgid "Ask to keep the files after streaming" +msgstr "Kérdezzen rá a fájlok megőrzési szándékára a stream befejezését követően" + +msgctxt "#30063" +msgid "Disable UPNP & NATPMP" +msgstr "UPNP és NATPMP letiltása" + +msgctxt "#30064" +msgid "Encryption policy" +msgstr "Titkosítási irányelv" + +msgctxt "#30065" +msgid "Disabled" +msgstr "Letiltva" + +msgctxt "#30066" +msgid "Forced" +msgstr "Kényszerített" + +msgctxt "#30067" +msgid "Proxy type" +msgstr "Proxy típus" + +msgctxt "#30068" +msgid "SOCKS4" +msgstr "SOCKS4" + +msgctxt "#30069" +msgid "SOCKS5" +msgstr "SOCKS5" + +msgctxt "#30070" +msgid "SOCKS5 password" +msgstr "SOCKS5 jelszó" + +msgctxt "#30071" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30072" +msgid "HTTP password" +msgstr "HTTP jelszó" + +msgctxt "#30073" +msgid "i2p" +msgstr "i2p" + +msgctxt "#30074" +msgid "Spoof user agent (highly inadvisable)" +msgstr "User agent átejtés (nagyon nem ajánlott)" + +msgctxt "#30075" +msgid "Default from libtorrent (acceptable)" +msgstr "libtorrentből alapértelmezetten (elfogadható)" + +msgctxt "#30076" +msgid "libtorrent (Rasterbar) 1.1.0" +msgstr "" + +msgctxt "#30077" +msgid "BitTorrent 7.5.0" +msgstr "" + +msgctxt "#30078" +msgid "BitTorrent 7.4.3" +msgstr "" + +msgctxt "#30079" +msgid "µTorrent 3.4.9" +msgstr "" + +msgctxt "#30080" +msgid "µTorrent 3.2.0" +msgstr "" + +msgctxt "#30081" +msgid "µTorrent 2.2.1" +msgstr "" + +msgctxt "#30082" +msgid "Transmission 2.92" +msgstr "" + +msgctxt "#30083" +msgid "Deluge 1.3.6.0" +msgstr "" + +msgctxt "#30084" +msgid "Deluge 1.3.12.0" +msgstr "" + +msgctxt "#30085" +msgid "Vuze 5.7.3.0" +msgstr "" + +msgctxt "#30086" +msgid "Enable tuned storage settings" +msgstr "Összehangolt tárhelybeállítások engedélyezése" + +msgctxt "#30087" +msgid "Ask to delete the files after streaming" +msgstr "Kérdezzen rá a fájlok törlési szándékára a stream befejezését követően" + +msgctxt "#30088" +msgid "Initial buffering timeout (seconds)" +msgstr "Kezdeti puffer időkorlát (másodpercekben)" + +msgctxt "#30089" +msgid "Automatically re-scan Kodi library after updates" +msgstr "Kodi könyvtár automatikus átvizsgálása a frissítések után" + +msgctxt "#30090" +msgid "Listen interfaces" +msgstr "Figyelt interfész-ek" + +msgctxt "#30091" +msgid "Outgoing interfaces" +msgstr "Kifelé irányuló interfész-ek" + +msgctxt "#30092" +msgid "Use default fanart" +msgstr "Alapértelmezett fanart használata" + +msgctxt "#30093" +msgid "Disable notification sound" +msgstr "Értesítési hang letiltása" + +msgctxt "#30094" +msgid "Disable background progress dialog" +msgstr "Háttérben futó folyamatot jelző ablak letiltása" + +msgctxt "#30095" +msgid "Resume playback from library integration" +msgstr "Lejátszás folytatása a helyi könyvtárból" + +msgctxt "#30096" +msgid "Never" +msgstr "Soha" + +msgctxt "#30097" +msgid "Always" +msgstr "Mindig" + +msgctxt "#30098" +msgid "Active torrents only" +msgstr "Csak aktív torrenteknél" + + +# Interface + +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "A Quasar összeomlott, újraindítás..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Kodi újraindítás szükséges a Quasar használata előtt" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Ez a kiegészítő csupán a Quasaron keresztül futtatható" + +msgctxt "#30103" +msgid "Unable to find Quasar binary[CR]Required platform:" +msgstr "Nem sikerült megtalálni a Quasar binárist[CR]Elvárt platform:" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Válasszon fájlt vagy URL-t" + +msgctxt "#30105" +msgid "URL" +msgstr "" + +msgctxt "#30106" +msgid "File" +msgstr "Fájl" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "Link választása" + +msgctxt "#30108" +msgid "File path" +msgstr "Fájl elérési útvonala" + +msgctxt "#30109" +msgid "OK" +msgstr "" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "Túl sok összeomlás történt! Megszakítás..." + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "Kiszolgáló csatlakozás túl sokszor sikertelen. Letiltás..." + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "Nem sikerült letiltani a kiszolgálót" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "Letöltési útvonal nincs megadva, ellenőrizze a beállításokat" + +msgctxt "#30114" +msgid "TheTVDB" +msgstr "" + +msgctxt "#30115" +msgid "TV show scraper used by Kodi library" +msgstr "Sorozat scrappelése Kodin keresztül" + +msgctxt "#30116" +msgid "Looks like Quasar is still starting up, give it a few seconds..." +msgstr "Úgy tűnik, hogy a Quasar éppen elindulni készül, kérem várjon pár másodpercet..." + +msgctxt "#30117" +msgid "Resolving torrent files..." +msgstr "Torrent fájlok feloldása..." + +msgctxt "#30118" +msgid "Scraping trackers..." +msgstr "Trackerek scrappelése..." + +msgctxt "#30141" +msgid "Please support Quasar development by visiting https://quasar.surge.sh/donate" +msgstr "Kérjük támogassa a Quasar fejlesztését a https://quasar.surge.sh/donate oldal meglátogatásával" + +msgctxt "#30142" +msgid "Default view for menus in Movies" +msgstr "Alapértelmezett film menü nézet" + +msgctxt "#30143" +msgid "Default view for menus in TV Shows" +msgstr "Alapértelmezett sorozat nézet" + +msgctxt "#30144" +msgid "Default view for movie genres" +msgstr "Alapértelmezett film műfaj nézet" + +msgctxt "#30145" +msgid "Default view for TV show genres" +msgstr "Alapértelmezett sorozat műfaj nézet" + +msgctxt "#30146" +msgid "Keep downloading?" +msgstr "Folytassa a letöltést?" + +msgctxt "#30147" +msgid "Caches are still warming up, give it a minute or two..." +msgstr "A gyórsítótárak előkészítése folyamatban van! Kérem várjon egy-két percet..." + +msgctxt "#30148" +msgid "Caches warmed up" +msgstr "Gyorsítótárak előkészítve" + +msgctxt "#30149" +msgid "Trakt username not set, check your settings" +msgstr "Trakt felhasználónév nincs beállítva, ellenőrizze a beállításokat" + +msgctxt "#30199" +msgid "No available JSON-RPC connection to Kodi.[CR]Enable both Application control options in Service settings / Control and restart Kodi." +msgstr "JSON-RPC csatlakozás a Kodihoz nem lehetséges.[CR]Engedélyezze mindkét applikáció irányító opciót a Szolgáltatásbeállítások / Vezérlés menüpont alatt, majd indítsa újra a Kodit!" + + +# Quasar daemon + +msgctxt "#30200" +msgid "Cache cleared" +msgstr "Gyorsítótár megtisztítva" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Sorozatok keresése" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Válasszon streamet..." + +msgctxt "#30203" +msgid "Show information" +msgstr "Információk megjelenítése" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "Nem sikerült egy kiszolgálót sem találni" + +msgctxt "#30205" +msgid "No links were found" +msgstr "Nem sikerült egy linket sem találni" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Filmek keresése" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "Nincs elég szabad hely a letöltési útvonal alatt." + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "A Quasar daemon elindult" + +msgctxt "#30209" +msgid "Search" +msgstr "Keresés" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Legnépszerűbb" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "Legjobbra értékelt" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Legtöbb szavazatot kapott" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "" + +msgctxt "#30214" +msgid "Movies" +msgstr "Filmek" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "Sorozatok" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Torrent hozzáadása" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Magnet link vagy URL beillesztése" + +msgctxt "#30218" +msgid "Next page" +msgstr "Következő oldal" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "Hozzáad / Eltávolít a könyvtárából" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "Könyvtár elérési útvonal nincs megadva" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Elem sikeresen hozzáadva a könyvtárához" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Elem sikeresen eltávolítva a könyvtárából" + +msgctxt "#30223" +msgid "Files" +msgstr "Fájlok" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Kiszolgáló hiba" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Navigációs hiba" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Daemon hiba" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Hiba a Quasar daemon frissítése során" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Elérhető streamek a következő kifejezésre:" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Torrentek" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "Torrent elindítása / folytatása" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Torrent szüneteltetése" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Torrent törlése" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Munkamenet szüneteltetése" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Munkamenet folytatása" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "Torrent folytatása" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Új megjelenések" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Legújabb sorozatok" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Legújabb epizódok" + +msgctxt "#30239" +msgid "Providers" +msgstr "Kiszolgálók" + +msgctxt "#30240" +msgid "Enable" +msgstr "Engedélyezés" + +msgctxt "#30241" +msgid "Disable" +msgstr "Letiltás" + +msgctxt "#30242" +msgid "Check" +msgstr "Ellenőrzés" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "Kiszolgáló hibák" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "Kiszolgáló beállítások" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "Népszerű a Trakton" + +msgctxt "#30246" +msgid "Trending" +msgstr "Feltörekvő" + +msgctxt "#30247" +msgid "Most Played" +msgstr "Legtöbbet játszott" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "Legtöbbet megtekintett" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "Legtöbbet összegyűjtött" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "Legjobban várt" + +msgctxt "#30251" +msgid "Box Office" +msgstr "Legnagyobb bevételek" + +msgctxt "#30252" +msgid "Add to library" +msgstr "Hozzáadás a könyvtárához" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "Eltávolítás a könyvtárából" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "Figyelőlista" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "Hozzáadás a figyelőlistához" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "Eltávolítás a figyelőlistáról" + +msgctxt "#30257" +msgid "Collection" +msgstr "Gyűjtemény" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "Hozzáadás a gyűjteményhez" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "Eltávolítás a gyűjteményből" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "Egy torrent előzőleg már ki lett választva, kívánja használni azt?" + +msgctxt "#30261" +msgid "Search history" +msgstr "Keresési előzmények" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "Szeretné használni a keresési előzményeket?" + +msgctxt "#30263" +msgid "Lists" +msgstr "Listák" + +msgctxt "#30264" +msgid "Reset clearances" +msgstr "Alapértelmezés visszaállítása" + +msgctxt "#30265" +msgid "Item already in library" +msgstr "Ez az elem már a könyvtára részét képezi" + +msgctxt "#30266" +msgid "Ignore duplicates" +msgstr "Dupla elemek figyelmen kívül hagyása" + +msgctxt "#30267" +msgid "Keep downloaded files?" +msgstr "Megőrizze a letöltött fájlokat?" + +msgctxt "#30268" +msgid "Toggle watched" +msgstr "Látottnak jelölés" + +msgctxt "#30269" +msgid "Delete downloaded files?" +msgstr "Törölje a letöltött fájlokat?" + +msgctxt "#30270" +msgid "Match found in your active torrents, play it?" +msgstr "Találat az aktív torrentjei közt, le szeretné játszani?" + +msgctxt "#30271" +msgid "There is now an official multi-provider for Quasar called [COLOR FFFF6B00]Burst[/COLOR], would you like to install it now?" +msgstr "Megjelent egy hivatalos multi-kiszolgáló a Quasarhoz, a [COLOR FFFF6B00]Burst[/COLOR]. Szeretné most telepíteni?" + +msgctxt "#30272" +msgid "Installation successful, enjoy Quasar [COLOR FFFF6B00]Burst[/COLOR]!" +msgstr "Telepítés sikeres! Élvezze a Quasar [COLOR FFFF6B00]Burst[/COLOR]öt!" + +msgctxt "#30273" +msgid "Shoot... It looks like we couldn't install [COLOR FFFF6B00]Burst[/COLOR] automatically, head over to the Quasar Repository, then under the Program add-ons section to install it." +msgstr "Ajjaj... Úgy tűnik, hogy nem sikerült a [COLOR FFFF6B00]Burst[/COLOR] automatikus telepítése. Kérem látogasson el a Quasar Repositoryhoz, majd a Program kiegészítők szekcióból telepítse kézzel!" + +msgctxt "#30274" +msgid "Enable all" +msgstr "Összes engedélyezése" + +msgctxt "#30275" +msgid "Disable all" +msgstr "Összes letiltása" + +msgctxt "#30276" +msgid "Delete torrent and files" +msgstr "Torrent és adatok törlése" + +msgctxt "#30277" +msgid "%s added to library, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "%s a könyvtárához adva. Szeretné átvizsgálni újra most?[CR]Később tudja használni a Kodi 'Könyvtár frissítése' funkcióját helyette." + +msgctxt "#30278" +msgid "%s removed from library, do you want to clean it?[CR]You can later use Kodi's 'Clean library' feature instead." +msgstr "%s eltávolítva a könyvtárából. Szeretné megtisztítani a könytárat most?[CR]Később tudja használni a Kodi 'Könyvtár megtisztítása' funkcióját helyette." + +msgctxt "#30279" +msgid "Watchlist added to library" +msgstr "Figyelőlista hozzáadva a könyvtárához" + +msgctxt "#30280" +msgid "Collection added to library" +msgstr "Gyűjtemény hozzáadva a könyvtárához" + +msgctxt "#30281" +msgid "List added to library" +msgstr "Lista hozzáadva a könyvtárához" + +msgctxt "#30282" +msgid "Nothing left to remove from Quasar" +msgstr "Nem maradt más eltávolítható a Quasarból" + +msgctxt "#30283" +msgid "Merge to library" +msgstr "Könyvtárak összefűzése" + +msgctxt "#30284" +msgid "Show unaired seasons" +msgstr "Mutassa a nem megjelent évadokat" + +msgctxt "#30285" +msgid "Show unaired episodes" +msgstr "Mutassa a nem megjelent epizódokat" + +msgctxt "#30286" +msgid "%s merged to library, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "%s a könyvtárába fésülve. Szeretné átvizsgálni újra most?[CR]Később tudja használni a Kodi 'Könyvtár frissítése' funkcióját helyette." + +msgctxt "#30287" +msgid "%s already in library" +msgstr "%s már a könyvtára részét képezi" + +msgctxt "#30288" +msgid "Library updated, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "A könyvtára sikeresen frissítve lett. Szeretné átvizsgálni újra most?[CR]Később tudja használni a Kodi 'Könyvtár frissítése' funkcióját helyette." + +msgctxt "#30289" +msgid "Genres" +msgstr "Műfajok" + +msgctxt "#30290" +msgid "Calendars" +msgstr "Naptárak" + +msgctxt "#30291" +msgid "My Movies" +msgstr "Kedvenc filmek" + +msgctxt "#30292" +msgid "My Releases" +msgstr "Kedvenc megjelenések" + +msgctxt "#30293" +msgid "All Movies" +msgstr "Összes film" + +msgctxt "#30294" +msgid "Összes megjelenés" +msgstr "" + +msgctxt "#30295" +msgid "My Shows" +msgstr "Kedvenc sorozatok" + +msgctxt "#30296" +msgid "My New Shows" +msgstr "Kedvenc új sorozatok" + +msgctxt "#30297" +msgid "My Premieres" +msgstr "Kedvenc premierek" + +msgctxt "#30298" +msgid "All Shows" +msgstr "Összes sorozat" + +msgctxt "#30299" +msgid "All New Shows" +msgstr "Összes új sorozat" + +msgctxt "#30300" +msgid "All Premieres" +msgstr "Összes premier" + +msgctxt "#30301" +msgid "Move finished downloads to separate folders" +msgstr "Mozgassa át a kész letöltéseket elkülönített mappákba" + +msgctxt "#30302" +msgid "Files will only be moved after seeding is finished (see[CR]" +"- BitTorrent settings), and will wait if currently playing" +msgstr "A fájlok csak a seed befejezése után kerülnek mozgatásra (lássa a[CR]" +"- BitTorrent beállításokat), és vár abban az esetben, ha éppen aktív a lejátszás" + +msgctxt "#30303" +msgid "RAR archive detected. Download will need to be completed before" +" playback can start and will require around twice the amount of" +" space, continue?" +msgstr "RAR archívum észlelve. A lejátszáshoz meg kell várni" +" az egész torrent letöltődését és körülbelül kétszer annyi" +" tárhely szükséges hozzá. Folytatja?" + +msgctxt "#30304" +msgid "Error creating output pipe for 'unrar' command" +msgstr "Hiba az 'unrar' parancs kimeneti jelének létrehozása során" + +msgctxt "#30305" +msgid "Error starting 'unrar' command" +msgstr "Hiba az 'unrar' parancs futtatása során" + +msgctxt "#30306" +msgid "Error waiting for 'unrar' command" +msgstr "Hiba az 'unrar' parancsra várakozás során" + +msgctxt "#30307" +msgid "Error reading from destination folder" +msgstr "Hiba! Nem sikerült a célmappából olvasni" + +msgctxt "#30308" +msgid "Move completed" +msgstr "Átmozgatás befejezve!" diff --git a/resources/language/Italian/strings.po b/resources/language/Italian/strings.po new file mode 100644 index 000000000..56a370e9d --- /dev/null +++ b/resources/language/Italian/strings.po @@ -0,0 +1,723 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"POT-Creation-Date: 2016-01-27 19:53+0200\n" +"PO-Revision-Date: 2016-05-02 21:41+0200\n" +"Last-Translator: greenbaburu \n" +"Language: it\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" + + + + + +# Settings + +msgctxt "#30000" +msgid "General" +msgstr "Generale" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Percorso di archiviazione (non FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Archivia i file dopo la riproduzione / download" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Dimensione buffer (MB)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Velocità massima di upload (kbB/s)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Velocità massima di download (kB/s)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Porta in ascolto min" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Porta in ascolto max" + +msgctxt "#30008" +msgid "Proxy" +msgstr "Proxy" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "Configurazione SOCKS v5" + +msgctxt "#30010" +msgid "Enabled" +msgstr "Abilita" + +msgctxt "#30011" +msgid "Host" +msgstr "Host" + +msgctxt "#30012" +msgid "Port" +msgstr "Porta" + +msgctxt "#30013" +msgid "Login" +msgstr "Login" + +msgctxt "#30014" +msgid "Password" +msgstr "Password" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Avanzato" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Imposta tempo limite del provider" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Abilita (a tuo rischio)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Tempo limite in secondi" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Manutenzione" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Svuota cache" + +msgctxt "#30021" +msgid "Enable pagination" +msgstr "Abilita impaginazione" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Abilita modalità sovraimpressione" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Scegli fonte automaticamente" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Abilita aggiornamenti di anteprime" + +msgctxt "#30025" +msgid "Limit rates after buffering only" +msgstr "Limita banda dopo il buffering" + +msgctxt "#30026" +msgid "Library path" +msgstr "Percorso libreria" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Limite connessioni" + +msgctxt "#30028" +msgid "Background handling of torrents" +msgstr "Gestione dei torrent in background" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Frequenza di salvataggio sessione (secondi)" + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "Posizionamento verticale modalità sovraimpressione" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "Disabilità provider in cattivo stato" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "Tentativi prima di disabilitare il provider" + +msgctxt "#30033" +msgid "Appearance" +msgstr "Aspetto" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "Vista predefinita per film" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "Vista predefinita per serie TV" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "Vista predefinita per stagioni" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "Vista predefinita per episodi" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "Utilizza il titolo originale" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "TheMovieDB" + +msgctxt "#30040" +msgid "API key" +msgstr "API key" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "Ordinamento fonti" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "Modalità di ordinamento film" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "Modalità di ordinamento serie TV" + +msgctxt "#30044" +msgid "By seeders" +msgstr "Per seeder" + +msgctxt "#30045" +msgid "By resolution" +msgstr "Per risoluzione" + +msgctxt "#30046" +msgid "Balanced" +msgstr "Bilanciata" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "Preferenze risoluzione per film" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "Preferenze risoluzione per serie TV" + +msgctxt "#30049" +msgid "Percentage of additional seeders required before choosing next resolution" +msgstr "Percentuale supplementare di seeder richiesta, prima di scegliere la risoluzione successiva" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "Disabilita DHT" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "Limite rapporto di condivisione (percentuale)" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "Limite rapporto tempo di seeding (percentuale)" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "Tempo limite di seeding (ore)" + +msgctxt "#30054" +msgid "Update library" +msgstr "Aggiorna libreria" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "Aggiungi gli Special alla libreria" + +msgctxt "#30056" +msgid "Trakt" +msgstr "Trakt" + +msgctxt "#30057" +msgid "Username" +msgstr "Username" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "Autorizzare Quasar" + +msgctxt "#30059" +msgid "Library update delay on startup (seconds)" +msgstr "Ritarda aggiornamento della libreria all'avvio (secondi)" + +msgctxt "#30060" +msgid "Library update frequency (hours)" +msgstr "Frequenza d'aggiornamento della libreria (ore)" + +msgctxt "#30061" +msgid "Sync frequency of Trakt lists to library (hours)" +msgstr "Frequenza di sincronizzazione tra le liste di Trakt e la libreria (ore)" + +msgctxt "#30062" +msgid "Ask to keep the files after streaming" +msgstr "Chiedi se conservare il file dopo lo streaming" + +msgctxt "#30063" +msgid "Disable UPNP & NATPMP" +msgstr "Disabilita UPNP & NATPMP" + +msgctxt "#30064" +msgid "Encryption policy" +msgstr "Criterio di crittografia" + +msgctxt "#30065" +msgid "Disabled" +msgstr "Disabilitato" + +msgctxt "#30066" +msgid "Forced" +msgstr "Forzato" + +msgctxt "#30067" +msgid "Proxy type" +msgstr "Tipo di proxy" + +msgctxt "#30068" +msgid "SOCKS4" +msgstr "SOCKS4" + +msgctxt "#30069" +msgid "SOCKS5" +msgstr "SOCKS5" + +msgctxt "#30070" +msgid "SOCKS5 password" +msgstr "SOCKS5 password" + +msgctxt "#30071" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30072" +msgid "HTTP password" +msgstr "HTTP password" + +msgctxt "#30073" +msgid "i2p" +msgstr "i2p" + +msgctxt "#30074" +msgid "Spoof user agent (highly inadvisable)" +msgstr "Falsifica user agent (altamente sconsigliato)" + +msgctxt "#30075" +msgid "Default from libtorrent (acceptable)" +msgstr "Default da libtorrent (accettabile)" + +msgctxt "#30076" +msgid "libtorrent (Rasterbar) 1.1.0" +msgstr "libtorrent (Rasterbar) 1.1.0" + +msgctxt "#30077" +msgid "BitTorrent 7.5.0" +msgstr "BitTorrent 7.5.0" + +msgctxt "#30078" +msgid "BitTorrent 7.4.3" +msgstr "BitTorrent 7.4.3" + +msgctxt "#30079" +msgid "µTorrent 3.4.9" +msgstr "µTorrent 3.4.9" + +msgctxt "#30080" +msgid "µTorrent 3.2.0" +msgstr "µTorrent 3.2.0" + +msgctxt "#30081" +msgid "µTorrent 2.2.1" +msgstr "µTorrent 2.2.1" + +msgctxt "#30082" +msgid "Transmission 2.92" +msgstr "Transmission 2.92" + +msgctxt "#30083" +msgid "Deluge 1.3.6.0" +msgstr "Deluge 1.3.6.0" + +msgctxt "#30084" +msgid "Deluge 1.3.12.0" +msgstr "Deluge 1.3.12.0" + +msgctxt "#30085" +msgid "Vuze 5.7.3.0" +msgstr "Vuze 5.7.3.0" + +msgctxt "#30086" +msgid "Enable tuned storage settings" +msgstr "Abilità impostazioni d'archiviazione ottimizzate" + +msgctxt "#30087" +msgid "Ask to delete the files after streaming" +msgstr "Chiedi se cancellare i file dopo lo streaming" + + +# Interface + +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Quasar si è interrotto, sta riavviando..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Riavvia Kodi prima di usare Quasar" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Questo add-on funziona solo con Quasar avviato" + +msgctxt "#30103" +msgid "Unable to find Quasar binary" +msgstr "Binario di Quasar non trovato" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Inserisci file o URL" + +msgctxt "#30105" +msgid "URL" +msgstr "URL" + +msgctxt "#30106" +msgid "File" +msgstr "File" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "Inserisci URL" + +msgctxt "#30108" +msgid "File path" +msgstr "Percorso file" + +msgctxt "#30109" +msgid "OK" +msgstr "OK" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "Troppi tentativi falliti, sta abbandonando..." + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "Troppi fallimenti del provider, sta disabilitando..." + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "Impossibile disabilitare il provider" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "Percorso d'archiviazione non impostato, controlla la configurazione" + +msgctxt "#30114" +msgid "TheTVDB" +msgstr "TheTVDB" + +msgctxt "#30115" +msgid "TV show scraper used by Kodi library" +msgstr "TV scraper utilizzato dalla libreria" + + +# Quasar daemon + +msgctxt "#30200" +msgid "Cache cleared" +msgstr "Cache svuotata" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Cerca serie TV" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Scegli fonte..." + +msgctxt "#30203" +msgid "Show information" +msgstr "Visualizza informazioni" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "Nessun provider è stato trovato" + +msgctxt "#30205" +msgid "No links were found" +msgstr "Nessun collegamento trovato" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Cerca film" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "Spazio nel percorso di archiviazione insufficiente." + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "Quasar daemon si è avviato" + +msgctxt "#30209" +msgid "Search" +msgstr "Cerca" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Popolari" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "Miglior voto" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Più votati" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "Migliori 250 di IMDB" + +msgctxt "#30214" +msgid "Movies" +msgstr "Film" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "Serie TV" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Incolla URL" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Incolla magnet o URL" + +msgctxt "#30218" +msgid "Next page" +msgstr "Pagina successiva" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "Aggiungi / Rimuovi dalla Libreria" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "Percorso libreria non impostato" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Oggetto aggiunto alla libreria" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Oggetto rimosso dalla libreria" + +msgctxt "#30223" +msgid "Files" +msgstr "File" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Errore del provider" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Errore di navigazione" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Errore del Daemon" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Errore aggiornamento Quasar daemon" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Stream disponibile per" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Torrent" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "Avvia / riprendi torrent" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Sospendi torrent" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Elimina torrent" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Sospendi sessione" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Riprendi sessione" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "Riprendi torrent" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Uscite recenti" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Serie recenti" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Episodi recenti" + +msgctxt "#30239" +msgid "Providers" +msgstr "Provider" + +msgctxt "#30240" +msgid "Enable" +msgstr "Abilita" + +msgctxt "#30241" +msgid "Disable" +msgstr "Disabilita" + +msgctxt "#30242" +msgid "Check" +msgstr "Controlla" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "Fallimenti provider" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "Impostazioni provider" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "Popolari su Trakt" + +msgctxt "#30246" +msgid "Trending" +msgstr "Di tendenza" + +msgctxt "#30247" +msgid "Most Played" +msgstr "Più cliccati" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "Più visti" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "Maggior incasso" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "Più attesi" + +msgctxt "#30251" +msgid "Box Office" +msgstr "Al botteghino" + +msgctxt "#30252" +msgid "Add to library" +msgstr "Aggiungi alla libreria" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "Rimuovi dalla libreria" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "Elenco" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "Aggiungi all'elenco" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "Rimuovi dall'elenco" + +msgctxt "#30257" +msgid "Collection" +msgstr "Collezione" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "Aggiungi alla collezione" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "Rimuovi dalla collezione" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "Utilizzare il torrent scelto precedentemente?" + +msgctxt "#30261" +msgid "Search history" +msgstr "Cronologia di ricerca" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "Usare cronologia di ricerca?" + +msgctxt "#30263" +msgid "Lists" +msgstr "Liste" + +msgctxt "#30264" +msgid "Reset clearances" +msgstr "Resetta credenziali" + +msgctxt "#30265" +msgid "Item already in library" +msgstr "Oggetto già presente nella libreria" + +msgctxt "#30266" +msgid "Ignore duplicates" +msgstr "Ignora duplicati" + +msgctxt "#30267" +msgid "Keep downloaded files?" +msgstr "Vuoi salvare i file scaricati?" + +msgctxt "#30268" +msgid "Toggle watched" +msgstr "Segna come visto" + +msgctxt "#30269" +msgid "Delete downloaded files?" +msgstr "Vuoi eliminare i file scaricati?" diff --git a/resources/language/Portuguese (Brazil)/strings.po b/resources/language/Portuguese (Brazil)/strings.po new file mode 100644 index 000000000..7d07f261f --- /dev/null +++ b/resources/language/Portuguese (Brazil)/strings.po @@ -0,0 +1,949 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"POT-Creation-Date: 2016-02-01 12:00-0300\n" +"PO-Revision-Date: 2017-03-03 21:00-0300\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + + +# Settings + +msgctxt "#30000" +msgid "General" +msgstr "Geral" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Local de download (menos FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Manter arquivos após o fim do download/reprodução" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Tamanho do buffer (MB)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Taxa de upload máx. (kB/s)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Taxa de download máx. (kB/S)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Porta mín." + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Porta máx." + +msgctxt "#30008" +msgid "Proxy" +msgstr "Proxy" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "Configuração SOCKS v5" + +msgctxt "#30010" +msgid "Enabled" +msgstr "Habilitado" + +msgctxt "#30011" +msgid "Host" +msgstr "Host" + +msgctxt "#30012" +msgid "Port" +msgstr "Porta" + +msgctxt "#30013" +msgid "Login" +msgstr "Login" + +msgctxt "#30014" +msgid "Password" +msgstr "Senha" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Avançado" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Tempo limite do provedor" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Habilitado (use por sua conta e risco)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Tempo limite em segundos" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Manutenção" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Apagar cache" + +msgctxt "#30021" +msgid "Results per page" +msgstr "Resultados por página" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Permitir status sobreposto" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Escolher fonte automaticamente" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Receber atualizações de pré-lançamentos" + +msgctxt "#30025" +msgid "Limit rates after buffering only" +msgstr "Limitar taxas apenas ao completar o buffer" + +msgctxt "#30026" +msgid "Library path" +msgstr "Local da biblioteca" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Limite de conexões" + +msgctxt "#30028" +msgid "Background handling of torrents" +msgstr "Baixar torrents em segundo plano" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Frequência de salvamento da sessão (segundos)" + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "Ajustar altura do status sobreposto" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "Desabilitar provedores com falhas" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "Falhas permitidas antes de desabilitar provedor" + +msgctxt "#30033" +msgid "Appearance" +msgstr "Aparência" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "Vista padrão para Filmes" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "Vista padrão para Seriados" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "Vista padrão para Temporadas" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "Vista padrão para Episódios" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "Preferir usar título original" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "TheMovieDB" + +msgctxt "#30040" +msgid "API key" +msgstr "API key" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "Ordem das fontes" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "Ordem das fontes para Filmes" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "Ordem das fontes para Seriados" + +msgctxt "#30044" +msgid "By seeders" +msgstr "Pelo número de seeds" + +msgctxt "#30045" +msgid "By resolution" +msgstr "Pela resolução" + +msgctxt "#30046" +msgid "Balanced" +msgstr "Balanceado" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "Preferência de resolução para Filmes" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "Preferência de resolução para Seriados" + +msgctxt "#30049" +msgid "Percentage of additional seeders required before choosing next resolution" +msgstr "Porcentagem adicional de seeds necessários antes de mudar resolução" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "Desabilitar DHT" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "Limite do Ratio (porcentagem)" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "Tempo limite do Ratio de Semear (porcentagem)" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "Limite do tempo de semear (horas)" + +msgctxt "#30054" +msgid "Update library" +msgstr "Atualizar biblioteca" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "Adicionar Especiais para biblioteca" + +msgctxt "#30056" +msgid "Trakt" +msgstr "Trakt" + +msgctxt "#30057" +msgid "Username" +msgstr "Usuário" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "Autorizar Quasar" + +msgctxt "#30059" +msgid "Library update delay on startup (seconds)" +msgstr "Atraso da atualização da biblioteca ao inciar (segundos)" + +msgctxt "#30060" +msgid "Library update frequency (hours)" +msgstr "Frequência de atualização da biblioteca (horas)" + +msgctxt "#30061" +msgid "Sync frequency of Trakt lists to library (hours)" +msgstr "Frequência de sincronização das listas do Trakt (horas)" + +msgctxt "#30062" +msgid "Ask to keep the files after streaming" +msgstr "Perguntar se quer manter arquivo após visualização" + +msgctxt "#30063" +msgid "Disable UPNP & NATPMP" +msgstr "Desabilitar UPNP & NATPMP" + +msgctxt "#30064" +msgid "Encryption policy" +msgstr "Politica de criptografia" + +msgctxt "#30065" +msgid "Disabled" +msgstr "Desabilitado" + +msgctxt "#30066" +msgid "Forced" +msgstr "Forçado" + +msgctxt "#30067" +msgid "Proxy type" +msgstr "Tipo de Proxy" + +msgctxt "#30068" +msgid "SOCKS4" +msgstr "" + +msgctxt "#30069" +msgid "SOCKS5" +msgstr "" + +msgctxt "#30070" +msgid "SOCKS5 password" +msgstr "Senha SOCKS5" + +msgctxt "#30071" +msgid "HTTP" +msgstr "" + +msgctxt "#30072" +msgid "HTTP password" +msgstr "Senha HTTP" + +msgctxt "#30073" +msgid "i2p" +msgstr "" + +msgctxt "#30074" +msgid "Spoof user agent (highly inadvisable)" +msgstr "Imitar outro agente (desaconselhável)" + +msgctxt "#30075" +msgid "Default from libtorrent (acceptable)" +msgstr "Padrão libtorrent (aceitável)" + +msgctxt "#30076" +msgid "libtorrent (Rasterbar) 1.1.0" +msgstr "" + +msgctxt "#30077" +msgid "BitTorrent 7.5.0" +msgstr "" + +msgctxt "#30078" +msgid "BitTorrent 7.4.3" +msgstr "" + +msgctxt "#30079" +msgid "µTorrent 3.4.9" +msgstr "" + +msgctxt "#30080" +msgid "µTorrent 3.2.0" +msgstr "" + +msgctxt "#30081" +msgid "µTorrent 2.2.1" +msgstr "" + +msgctxt "#30082" +msgid "Transmission 2.92" +msgstr "" + +msgctxt "#30083" +msgid "Deluge 1.3.6.0" +msgstr "" + +msgctxt "#30084" +msgid "Deluge 1.3.12.0" +msgstr "" + +msgctxt "#30085" +msgid "Vuze 5.7.3.0" +msgstr "" + +msgctxt "#30086" +msgid "Enable tuned storage settings" +msgstr "Habilitar configuração fina de armazenamento" + +msgctxt "#30087" +msgid "Ask to delete the files after streaming" +msgstr "Perguntar se deseja deletar arquivo após exibição" + +msgctxt "#30088" +msgid "Initial buffering timeout (seconds)" +msgstr "Limite de tempo para carregamento (segundos)" + +msgctxt "#30089" +msgid "Automatically re-scan Kodi library after updates" +msgstr "Re-escanear biblioteca do Kodi após atualização" + +msgctxt "#30090" +msgid "Listen interfaces" +msgstr "" + +msgctxt "#30091" +msgid "Outgoing interfaces" +msgstr "" + +msgctxt "#30092" +msgid "Use default fanart" +msgstr "" + +msgctxt "#30093" +msgid "Disable notification sound" +msgstr "Desabilitar som de notificação" + +msgctxt "#30094" +msgid "Disable background progress dialog" +msgstr "Desabilitar diálogo de progresso" + +msgctxt "#30095" +msgid "Resume playback from library integration" +msgstr "Resumir reprodução na biblioteca" + +msgctxt "#30096" +msgid "Never" +msgstr "Nunca" + +msgctxt "#30097" +msgid "Always" +msgstr "Sempre" + +msgctxt "#30098" +msgid "Active torrents only" +msgstr "Apenas torrent ativo" + + +# Interface + +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Quasar parou de funcionar. Reiniciando..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Você precisa reiniciar o Kodi antes de usar o Quasar" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Este addon só pode ser executado pelo Quasar" + +msgctxt "#30103" +msgid "Unable to find Quasar binary" +msgstr "Não foi possível encontrar o programa Quasar" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Informe arquivo ou URL" + +msgctxt "#30105" +msgid "URL" +msgstr "URL" + +msgctxt "#30106" +msgid "File" +msgstr "Arquivo" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "Informe a URL" + +msgctxt "#30108" +msgid "File path" +msgstr "Local do arquivo" + +msgctxt "#30109" +msgid "OK" +msgstr "OK" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "Falhou diversas vezes, cancelando..." + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "Provedor falhou diversas vezes, desabilitando..." + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "Não foi possível desabilitar o provedor" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "Local de download não definido, verifique suas configurações" + +msgctxt "#30114" +msgid "TheTVDB" +msgstr "TheTVDB" + +msgctxt "#30115" +msgid "TV show scraper used by Kodi library" +msgstr "TV scraper usada na biblioteca" + +msgctxt "#30116" +msgid "Looks like Quasar is still starting up, give it a few seconds..." +msgstr "Quasar ainda está iniciando, aguarde alguns segundos..." + +msgctxt "#30117" +msgid "Resolving torrent files..." +msgstr "Verificando arquivos do torrent..." + +msgctxt "#30118" +msgid "Scraping trackers..." +msgstr "Verificando trackers..." + +msgctxt "#30141" +msgid "Please support Quasar development by visiting https://quasar.surge.sh/donate" +msgstr "Por favor apoie o desenvolvimento do Quasar visitando https://quasar.surge.sh/donate" + +msgctxt "#30142" +msgid "Default view for menus in Movies" +msgstr "Vista padrão para Menu em Filmes" + +msgctxt "#30143" +msgid "Default view for menus in TV Shows" +msgstr "Vista padrão para Menu em Séries" + +msgctxt "#30144" +msgid "Default view for movie genres" +msgstr "Vista padrão para genero de Filmes" + +msgctxt "#30145" +msgid "Default view for TV show genres" +msgstr "Vista padrão para genero de Séries" + +msgctxt "#30146" +msgid "Keep downloading?" +msgstr "Continuar o download?" + +msgctxt "#30147" +msgid "Caches are still warming up, give it a minute or two..." +msgstr "Cache ainda está sendo preenchido, aguarde uns minutos" + +msgctxt "#30148" +msgid "Caches warmed up" +msgstr "Cache preenchido" + +msgctxt "#30149" +msgid "Trakt username not set, check your settings" +msgstr "Usuario do Trakt não definido, veja suas configurações" + +msgctxt "#30199" +msgid "No available JSON-RPC connection to Kodi.[CR]Enable both Application control options in Service settings / Control and restart Kodi." +msgstr "" + + + +# Quasar daemon + +msgctxt "#30200" +msgid "Cache cleared" +msgstr "Cache apagado" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Pesquisar Séries" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Escolher fonte..." + +msgctxt "#30203" +msgid "Show information" +msgstr "Mostrar informação" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "Não foi possível encontrar provedores" + +msgctxt "#30205" +msgid "No links were found" +msgstr "Nenhum link foi encontrado" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Pesquisar Filmes" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "Não há espaço suficiente no local de download." + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "O serviço Quasar iniciou" + +msgctxt "#30209" +msgid "Search" +msgstr "Pesquisar" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Mais Populares" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "Melhores Avaliados" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Mais Votados" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "IMDB Top 250" + +msgctxt "#30214" +msgid "Movies" +msgstr "Filmes" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "Séries" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Adicionar Torrent" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Inserir Magnet ou URL" + +msgctxt "#30218" +msgid "Next page" +msgstr "Próxima página" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "Adicionar / Remover da biblioteca" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "Local da biblioteca não definido" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Item adicionado à biblioteca" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Item removido da biblioteca" + +msgctxt "#30223" +msgid "Files" +msgstr "Arquivos" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Erro no provedor" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Erro na navegação" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Erro no serviço" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Erro ao atualizar o serviço Quasar" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Fontes encontradas para" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Torrents" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "Reproduzir / retomar torrent" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Pausar torrent" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Excluir torrent" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Pausar sessão" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Retomar sessão" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "Retomar torrent" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Lançados Recentemente" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Séries Recentes" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Episódios Recentes" + +msgctxt "#30239" +msgid "Providers" +msgstr "Provedores" + +msgctxt "#30240" +msgid "Enable" +msgstr "Ativar" + +msgctxt "#30241" +msgid "Disable" +msgstr "Desativar" + +msgctxt "#30242" +msgid "Check" +msgstr "Conferir" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "Falhas do provedor" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "Configurações do provedor" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "Popular no Trakt" + +msgctxt "#30246" +msgid "Trending" +msgstr "Tendências" + +msgctxt "#30247" +msgid "Most Played" +msgstr "Mais Tocados" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "Mais Vistos" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "Mais Coletados" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "Mais Aguardados" + +msgctxt "#30251" +msgid "Box Office" +msgstr "Maiores Bilheterias" + +msgctxt "#30252" +msgid "Add to library" +msgstr "Adicionar à biblioteca" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "Remover da biblioteca" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "Minha Lista" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "Adicionar para Minha Lista" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "Remover da Minha Lista" + +msgctxt "#30257" +msgid "Collection" +msgstr "Coleção" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "Adicionar à coleção" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "Remover da coleção" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "Gostaria de usar o último Torrent selecionado?" + +msgctxt "#30261" +msgid "Search history" +msgstr "Histórico de pesquisa" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "Usar o histórico de pesquisa?" + +msgctxt "#30263" +msgid "Lists" +msgstr "Listas" + +msgctxt "#30264" +msgid "Reset clearances" +msgstr "Resetar mudanças" + +msgctxt "#30265" +msgid "Item already in library" +msgstr "Item já existe na biblioteca" + +msgctxt "#30266" +msgid "Ignore duplicates" +msgstr "Ignorar duplicados" + +msgctxt "#30267" +msgid "Keep downloaded files?" +msgstr "Manter o arquivo carregado?" + +msgctxt "#30268" +msgid "Toggle watched" +msgstr "Alternar marcador de Visto" + +msgctxt "#30269" +msgid "Delete downloaded files?" +msgstr "Excluir arquivos baixados?" + +msgctxt "#30270" +msgid "Match found in your active torrents, play it?" +msgstr "Encontrado em seus torrents ativos, reproduzir?" + +msgctxt "#30271" +msgid "There is now an official multi-provider for Quasar called [COLOR FFFF6B00]Burst[/COLOR], would you like to install it now?" +msgstr "Já existe um multi-provedor oficial para o Quasar chamado [COLOR FFFF6B00]Burst[/COLOR], você gostaria de instalá-lo agora?" + +msgctxt "#30272" +msgid "Installation successful, enjoy Quasar [COLOR FFFF6B00]Burst[/COLOR]!" +msgstr "Instalação bem sucedida, aproveite o Quasar [COLOR FFFF6B00]Burst[/COLOR]!" + +msgctxt "#30273" +msgid "Shoot... It looks like we couldn't install [COLOR FFFF6B00]Burst[/COLOR] automatically, head over to the Quasar Repository, then under the Program add-ons section to install it." +msgstr "Parece que não foi possível instalar [COLOR FFFF6B00]Burst[/COLOR] automaticamente, vá ao Repositório do Quasar, e depois na seção Add-ons de programas para instalá-lo." + +msgctxt "#30274" +msgid "Enable all" +msgstr "Habilitar todos" + +msgctxt "#30275" +msgid "Disable all" +msgstr "Desabilitar todos" + +msgctxt "#30276" +msgid "Delete torrent and files" +msgstr "Excluir torrent e arquivos" + +msgctxt "#30277" +msgid "%s added to library, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "%s adicionado à biblioteca, fazer outra varredura?[CR]Você também pode usar o recurso 'Atualizar biblioteca' do Kodi em vez disso." + +msgctxt "#30278" +msgid "%s removed from library, do you want to clean it?[CR]You can later use Kodi's 'Clean library' feature instead." +msgstr "%s removido da biblioteca, quer limpá-la?[CR]Você também pode usar o recurso 'Limpar biblioteca' do Kodi em vez disso." + +msgctxt "#30279" +msgid "Watchlist added to library" +msgstr "Minha Lista adicionada à biblioteca" + +msgctxt "#30280" +msgid "Collection added to library" +msgstr "Coleção adicionada à biblioteca" + +msgctxt "#30281" +msgid "List added to library" +msgstr "Lista adicionada à biblioteca" + +msgctxt "#30282" +msgid "Nothing left to remove from Quasar" +msgstr "Não há mais nada para remover do Quasar" + +msgctxt "#30283" +msgid "Merge to library" +msgstr "Mesclar à biblioteca" + +msgctxt "#30284" +msgid "Show unaired seasons" +msgstr "Mostrar temporadas não exibidas" + +msgctxt "#30285" +msgid "Show unaired episodes" +msgstr "Mostrar episódios não exibidos" + +msgctxt "#30286" +msgid "%s merged to library, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "%s mesclado à biblioteca, fazer outra varredura?[CR]Você também pode usar o recurso 'Atualizar biblioteca' do Kodi em vez disso." + +msgctxt "#30287" +msgid "%s already in library" +msgstr "%s já está na biblioteca" + +msgctxt "#30288" +msgid "Library updated, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "Biblioteca atualizada, fazer outra varredura?[CR]Você também pode usar o recurso 'Atualizar biblioteca' do Kodi em vez disso." + +msgctxt "#30289" +msgid "Genres" +msgstr "Gêneros" + +msgctxt "#30290" +msgid "Calendars" +msgstr "Calendários" + +msgctxt "#30291" +msgid "My Movies" +msgstr "Meus Filmes" + +msgctxt "#30292" +msgid "My Releases" +msgstr "Meus Lançamentos" + +msgctxt "#30293" +msgid "All Movies" +msgstr "Todos os Filmes" + +msgctxt "#30294" +msgid "All Releases" +msgstr "Todos os Lançamentos" + +msgctxt "#30295" +msgid "My Shows" +msgstr "Meus Shows" + +msgctxt "#30296" +msgid "My New Shows" +msgstr "Meus Novos Shows" + +msgctxt "#30297" +msgid "My Premieres" +msgstr "Minhas Estreias" + +msgctxt "#30298" +msgid "All Shows" +msgstr "Todos os Shows" + +msgctxt "#30299" +msgid "All New Shows" +msgstr "Todos os Novos Shows" + +msgctxt "#30300" +msgid "All Premieres" +msgstr "Todas as Estreias" + +msgctxt "#30301" +msgid "Move finished downloads to separate folders" +msgstr "Mover arquivos baixados para uma nova pasta" + +msgctxt "#30302" +msgid "Files will only be moved after seeding is finished (see[CR]" +"- BitTorrent settings), and will wait if currently playing" +msgstr "Arquivos serão movidos quando a reprodução e tempo de semear terminarem" diff --git a/resources/language/Portuguese/strings.po b/resources/language/Portuguese/strings.po new file mode 100644 index 000000000..641d42a16 --- /dev/null +++ b/resources/language/Portuguese/strings.po @@ -0,0 +1,751 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2017-01-22 15:00+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + + +# Settings + +msgctxt "#30000" +msgid "General" +msgstr "Geral" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Pasta de transferências (não FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Manter ficheiros depois da reprodução/transferência parar" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Tamanho do buffer (MB)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Taxa máxima de upload (kB/s)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Taxa máxima de transferência (kB/S)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Porta Min" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Porta Max" + +msgctxt "#30008" +msgid "Proxy" +msgstr "Proxy" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "Configuração SOCKS v5" + +msgctxt "#30010" +msgid "Enabled" +msgstr "Ativo" + +msgctxt "#30011" +msgid "Host" +msgstr "Host" + +msgctxt "#30012" +msgid "Port" +msgstr "Porta" + +msgctxt "#30013" +msgid "Login" +msgstr "Autenticação" + +msgctxt "#30014" +msgid "Password" +msgstr "Senha" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Avançado" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Timeout do provedor" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Ativo (use à sua responsabilidade)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Timeout em segundos" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Manutenção" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Apagar cache" + +msgctxt "#30021" +msgid "Results per page" +msgstr "Resultados por página" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Ativar overlay de informação" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Escolher stream automaticamente" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Obter atualizações de teste" + +msgctxt "#30025" +msgid "Limit rates after buffering only" +msgstr "Limitar taxas apenas depois do buffering" + +msgctxt "#30026" +msgid "Library path" +msgstr "Pasta da biblioteca" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Limite de conexões" + +msgctxt "#30028" +msgid "Background handling of torrents" +msgstr "Processar torrents em segundo plano" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Frequência de gravação da sessão (segundos)" + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "Deslocamento vertical do overlay" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "Desativar provedores que falhem o teste" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "Falhas permitidas antes do provedor ser desativado" + +msgctxt "#30033" +msgid "Appearance" +msgstr "Aparência" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "Vista padrão para Filmes" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "Vista padrão para Séries" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "Vista padrão para Temporadas" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "Vista padrão para Episódios" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "Preferir titulo original" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "TheMovieDB" + +msgctxt "#30040" +msgid "API key" +msgstr "Chave API" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "Ordenação dos streams" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "Modo de ordenação dos Filmes" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "Modo de ordenação das Séries" + +msgctxt "#30044" +msgid "By seeders" +msgstr "Por seeders" + +msgctxt "#30045" +msgid "By resolution" +msgstr "Por resolução" + +msgctxt "#30046" +msgid "Balanced" +msgstr "Equilibrado" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "Preferência de resolução para Filmes" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "Preferência de resolução para Séries" + +msgctxt "#30049" +msgid "Percentage of additional seeders required before choosing next resolution" +msgstr "Percentagem de seeders adicionais antes de ser escolhida a próxima resolução" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "Desativar DHT" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "Limite do rácio de partilha (percentagem)" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "Limite do rácio de tempo de seed (percentagem)" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "Limite de tempo de seed (horas)" + +msgctxt "#30054" +msgid "Update library" +msgstr "Atualizar biblioteca" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "Adicionar Specials à biblioteca" + +msgctxt "#30056" +msgid "Trakt" +msgstr "Trakt" + +msgctxt "#30057" +msgid "Username" +msgstr "Utilizador" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "Autorizar Quasar" + +msgctxt "#30059" +msgid "Library update delay on startup (seconds)" +msgstr "Atraso na atualização da biblioteca ao iniciar (segundos)" + +msgctxt "#30060" +msgid "Library update frequency (hours)" +msgstr "Frequência de atualização da biblioteca (horas)" + +msgctxt "#30061" +msgid "Sync frequency of Trakt lists to library (hours)" +msgstr "Frequência de sincronização das listas Trakt para a biblioteca (horas)" + +msgctxt "#30062" +msgid "Ask to keep the files after streaming" +msgstr "Perguntar para guardar os ficheiros depois do stream" + +msgctxt "#30114" +msgid "TheTVDB" +msgstr "TheTVDB" + +msgctxt "#30115" +msgid "TV show scraper used by Kodi library" +msgstr "Scraper de TV usado pela biblioteca" + +msgctxt "#30063" +msgid "Disable UPNP & NATPMP" +msgstr "Desativar UPNP e NATPMP" + +msgctxt "#30064" +msgid "Encryption policy" +msgstr "Política de Encriptação" + +msgctxt "#30065" +msgid "Disabled" +msgstr "Desativado" + +msgctxt "#30066" +msgid "Forced" +msgstr "Forçado" + +msgctxt "#30067" +msgid "Proxy type" +msgstr "Tipo de Proxy" + +msgctxt "#30068" +msgid "SOCKS4" +msgstr "SOCKS4" + +msgctxt "#30069" +msgid "SOCKS5" +msgstr "SOCKS5" + +msgctxt "#30070" +msgid "SOCKS5 password" +msgstr "Senha SOCKS5" + +msgctxt "#30071" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30072" +msgid "HTTP password" +msgstr "Senha HTTP" + +msgctxt "#30073" +msgid "i2p" +msgstr "i2p" + +msgctxt "#30074" +msgid "Spoof user agent (highly inadvisable)" +msgstr "Identidade Falsa (altamente desaconselhável)" + +msgctxt "#30075" +msgid "Default from libtorrent (acceptable)" +msgstr "Padrão do libtorrent (aceitável)" + +msgctxt "#30076" +msgid "libtorrent (Rasterbar) 1.1.0" +msgstr "libtorrent (Rasterbar) 1.1.0" + +msgctxt "#30077" +msgid "BitTorrent 7.5.0" +msgstr "BitTorrent 7.5.0" + +msgctxt "#30078" +msgid "BitTorrent 7.4.3" +msgstr "BitTorrent 7.4.3" + +msgctxt "#30079" +msgid "µTorrent 3.4.9" +msgstr "µTorrent 3.4.9" + +msgctxt "#30080" +msgid "µTorrent 3.2.0" +msgstr "µTorrent 3.2.0" + +msgctxt "#30081" +msgid "µTorrent 2.2.1" +msgstr "µTorrent 2.2.1" + +msgctxt "#30082" +msgid "Transmission 2.92" +msgstr "Transmission 2.92" + +msgctxt "#30083" +msgid "Deluge 1.3.6.0" +msgstr "Deluge 1.3.6.0" + +msgctxt "#30084" +msgid "Deluge 1.3.12.0" +msgstr "Deluge 1.3.12.0" + +msgctxt "#30085" +msgid "Vuze 5.7.3.0" +msgstr "Vuze 5.7.3.0" + +msgctxt "#30086" +msgid "Enable tuned storage settings" +msgstr "Ativar configurações de armazenamento afinadas" + +msgctxt "#30087" +msgid "Ask to delete the files after streaming" +msgstr "Perguntar para apagar os ficheiros depois do stream" + +msgctxt "#30088" +msgid "Initial buffering timeout (seconds)" +msgstr "Timeout de buffering inicial (segundos)" + + +# Interface + +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Quasar fechou de forma inesperada, a reiniciar..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Deve reiniciar o Kodi antes de usar o Quasar" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Este addon apenas pode ser corrido pelo Quasar" + +msgctxt "#30103" +msgid "Unable to find Quasar binary" +msgstr "Binário do Quasar não encontrado" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Inserir ficheiro ou URL" + +msgctxt "#30105" +msgid "URL" +msgstr "URL" + +msgctxt "#30106" +msgid "File" +msgstr "Ficheiro" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "Inserir URL" + +msgctxt "#30108" +msgid "File path" +msgstr "Caminho do ficheiro" + +msgctxt "#30109" +msgid "OK" +msgstr "OK" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "Falhou demasiadas vezes, a abortar..." + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "Provedor falhou demasiadas vezes, a desativar..." + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "Não é possível desativar o provedor" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "Pasta de transferência não foi definida, verifique as configurações" + + +# Quasar daemon + +msgctxt "#30200" +msgid "Cache cleared" +msgstr "Cache apagada" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Pesquisar Séries" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Escolher stream..." + +msgctxt "#30203" +msgid "Show information" +msgstr "Mostrar informação" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "Não foi possível encontrar provedores" + +msgctxt "#30205" +msgid "No links were found" +msgstr "Não foram encontrados links" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Pesquisar Filmes" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "Sem espaço disponível na pasta de transferência." + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "Quasar daemon foi iniciado" + +msgctxt "#30209" +msgid "Search" +msgstr "Pesquisar" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Mais Populares" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "Melhor Votados" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Mais Votados" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "IMDB Top 250" + +msgctxt "#30214" +msgid "Movies" +msgstr "Filmes" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "Séries" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Adicionar Torrent" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Insira o Magnet ou URL" + +msgctxt "#30218" +msgid "Next page" +msgstr "Próxima página" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "Adicionar/Remover da biblioteca" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "Pasta da biblioteca não definida" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Item adicionado com sucesso à biblioteca" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Item removido da biblioteca" + +msgctxt "#30223" +msgid "Files" +msgstr "Ficheiros" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Erro de provedor" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Erro de navegação" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Erro do daemon" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Erro ao atualizar o Quasar daemon" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Streams disponíveis para" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Torrents" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "Reproduzir/retomar torrent" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Pausar torrent" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Apagar torrent" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Pausar sessão" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Retomar sessão" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "Retomar torrent" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Lançamentos Recentes" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Séries Recentes" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Episódios Recentes" + +msgctxt "#30239" +msgid "Providers" +msgstr "Provedores" + +msgctxt "#30240" +msgid "Enable" +msgstr "Ativar" + +msgctxt "#30241" +msgid "Disable" +msgstr "Desativar" + +msgctxt "#30242" +msgid "Check" +msgstr "Testar" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "Falhas no provedor" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "Configurações do provedor" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "Popular no Trakt" + +msgctxt "#30246" +msgid "Trending" +msgstr "Tendências" + +msgctxt "#30247" +msgid "Most Played" +msgstr "Mais Reproduzidos" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "Mais Assistidos" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "Mais Colecionados" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "Mais Antecipados" + +msgctxt "#30251" +msgid "Box Office" +msgstr "Campeões de Bilheteira" + +msgctxt "#30252" +msgid "Add to library" +msgstr "Adicionar à biblioteca" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "Remover da biblioteca" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "Watchlist" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "Adicionar à watchlist" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "Remover da watchlist" + +msgctxt "#30257" +msgid "Collection" +msgstr "Coleção" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "Adicionar à coleção" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "Remover da coleção" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "Usar torrent escolhido anteriormente?" + +msgctxt "#30261" +msgid "Search history" +msgstr "Histórico de pesquisas" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "Utilizar histórico de pesquisas?" + +msgctxt "#30263" +msgid "Lists" +msgstr "Listas" + +msgctxt "#30264" +msgid "Reset clearances" +msgstr "Restaurar permissões" + +msgctxt "#30265" +msgid "Item already in library" +msgstr "Item já se encontra na biblioteca" + +msgctxt "#30266" +msgid "Ignore duplicates" +msgstr "Ignorar duplicados" + +msgctxt "#30267" +msgid "Keep downloaded files?" +msgstr "Manter ficheiros transferidos?" + +msgctxt "#30268" +msgid "Toggle watched" +msgstr "Alternar assistido" + +msgctxt "#30269" +msgid "Delete downloaded files?" +msgstr "Apagar ficheiros transferidos?" + +msgctxt "#30270" +msgid "Match found in your active torrents, play it?" +msgstr "Correspondência encontrada nos torrents ativos, reproduzi-la?" + +msgctxt "#30271" +msgid "There is now an official multi-provider for Quasar called [COLOR FFFF6B00]Burst[/COLOR], would you like to install it now?" +msgstr "Há agora um multi-provedor oficial para o Quasar chamado [COLOR FFFF6B00]Burst[/COLOR], gostaria de o instalar agora?" + +msgctxt "#30272" +msgid "Installation successful, enjoy Quasar [COLOR FFFF6B00]Burst[/COLOR]!" +msgstr "Instalação terminou com sucesso, desfrute do Quasar [COLOR FFFF6B00]Burst[/COLOR]!" + +msgctxt "#30273" +msgid "Shoot... It looks like we couldn't install [COLOR FFFF6B00]Burst[/COLOR] automatically, head over to the Quasar Repository, then under the Program add-ons section to install it." +msgstr "Bolas... Parece que não conseguimos instalar o [COLOR FFFF6B00]Burst[/COLOR] automaticamente, dirija-se à secção Program add-ons no repositório do Quasar para o instalar." + +msgctxt "#30274" +msgid "Enable all" +msgstr "Ativar todos" + +msgctxt "#30275" +msgid "Disable all" +msgstr "Desativar todos" + +msgctxt "#30276" +msgid "Delete torrent and files" +msgstr "Apagar torrent e ficheiros" diff --git a/resources/language/Romanian/strings.po b/resources/language/Romanian/strings.po new file mode 100644 index 000000000..a0c4e28b8 --- /dev/null +++ b/resources/language/Romanian/strings.po @@ -0,0 +1,762 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2017-01-22 14:36+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: ro\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" +"X-Generator: Poedit 1.8.11\n" + +# Settings +msgctxt "#30000" +msgid "General" +msgstr "General" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Calea pentru descărcare (nu FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Păstrează fișierele după terminarea redării / descărcarii" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Mărime tampon(buffer) (MB)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Rată maximă de încărcare (kB/s)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Rată maximă de descărcare (kB/S)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Ascultă port min" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Ascultă port max" + +msgctxt "#30008" +msgid "Proxy" +msgstr "Proxy" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "Configurare SOCKS v5" + +msgctxt "#30010" +msgid "Enabled" +msgstr "Activat" + +msgctxt "#30011" +msgid "Host" +msgstr "Gazdă" + +msgctxt "#30012" +msgid "Port" +msgstr "Port" + +msgctxt "#30013" +msgid "Login" +msgstr "Autentificare" + +msgctxt "#30014" +msgid "Password" +msgstr "Parolă" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Avansat" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Timp așteptare furnizor" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Activat (utilizați pe risc propriu)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Timp răspuns în secunde" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Mentenență" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Șterge cache" + +msgctxt "#30021" +msgid "Results per page" +msgstr "Rezultate per pagina" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Activează bara de stare" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Selectați fluxul automat" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Obține actualizări pentru versiunile în teste" + +msgctxt "#30025" +msgid "Limit rates after buffering only" +msgstr "Limitează viteza doar după terminarea descărcării" + +msgctxt "#30026" +msgid "Library path" +msgstr "Cale librărie" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Limita conexiunilor" + +msgctxt "#30028" +msgid "Background handling of torrents" +msgstr "Manipularea torentelor în fundal" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Frecvența salvare sesiune (secunde) " + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "Poziția verticală a barei de stare" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "Dezactivează furnizorii în urma verificărilor" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "Eșecuri permise pană la dezactivarea furnizorului " + +msgctxt "#30033" +msgid "Appearance" +msgstr "Aspect" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "Afișare implicită pentru Filme" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "Afișare implicită pentru Seriale" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "Afișare implicită pentru Sezoane" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "Afișare implicită pentru Episoade" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "Preferă titlul original" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "TheMovieDB" + +msgctxt "#30040" +msgid "API key" +msgstr "Cheie API" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "Sortarea fluxurilor" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "Sortare pentru Filme" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "Sortare pentru Seriale" + +msgctxt "#30044" +msgid "By seeders" +msgstr "După surse" + +msgctxt "#30045" +msgid "By resolution" +msgstr "După rezoluție" + +msgctxt "#30046" +msgid "Balanced" +msgstr "Echilibrat" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "Rezoluția preferată pentru Filme" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "Rezoluția preferată pentru Seriale" + +msgctxt "#30049" +msgid "" +"Percentage of additional seeders required before choosing next resolution" +msgstr "Procentul de surse necesare înainte de-a alege următoarea rezoluție" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "Dezactivează DHT" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "Limita raportului de partajare (procent)" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "Limita raportului de încărcare (procent)" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "Limita raportului de încărcare (ore)" + +msgctxt "#30054" +msgid "Update library" +msgstr "Actualizează librăria" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "Adaugă episoadele Speciale in librărie" + +msgctxt "#30056" +msgid "Trakt" +msgstr "Trakt" + +msgctxt "#30057" +msgid "Username" +msgstr "Nume" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "Autorizează Quasar" + +msgctxt "#30059" +msgid "Library update delay on startup (seconds)" +msgstr "Întârziere actualizare librărie la pornire (secunde)" + +msgctxt "#30060" +msgid "Library update frequency (hours)" +msgstr "Frecvența actualizării librăriei" + +msgctxt "#30061" +msgid "Sync frequency of Trakt lists to library (hours)" +msgstr "Frecvența sincronizării listelor Trakt in librărie" + +msgctxt "#30062" +msgid "Ask to keep the files after streaming" +msgstr "Întreabă dacă păstrează fișierele după redare" + +msgctxt "#30114" +msgid "TheTVDB" +msgstr "TheTVDB" + +msgctxt "#30115" +msgid "TV show scraper used by Kodi library" +msgstr "Scraper TV folosit de librărie" + +msgctxt "#30063" +msgid "Disable UPNP & NATPMP" +msgstr "Dezactivează UPNP & NATPMP" + +msgctxt "#30064" +msgid "Encryption policy" +msgstr "Politica de criptare" + +msgctxt "#30065" +msgid "Disabled" +msgstr "Dezactivat" + +msgctxt "#30066" +msgid "Forced" +msgstr "Forțat" + +msgctxt "#30067" +msgid "Proxy type" +msgstr "Tip proxy" + +msgctxt "#30068" +msgid "SOCKS4" +msgstr "SOCKS4" + +msgctxt "#30069" +msgid "SOCKS5" +msgstr "SOCKS5" + +msgctxt "#30070" +msgid "SOCKS5 password" +msgstr "Parola SOCKS5" + +msgctxt "#30071" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30072" +msgid "HTTP password" +msgstr "Parolă HTTP" + +msgctxt "#30073" +msgid "i2p" +msgstr "i2p" + +msgctxt "#30074" +msgid "Spoof user agent (highly inadvisable)" +msgstr "Păcălește user agent-ul (nu este recomandat)" + +msgctxt "#30075" +msgid "Default from libtorrent (acceptable)" +msgstr "Implicit de la libtorrent (acceptabil)" + +msgctxt "#30076" +msgid "libtorrent (Rasterbar) 1.1.0" +msgstr "libtorrent (Rasterbar) 1.1.0" + +msgctxt "#30077" +msgid "BitTorrent 7.5.0" +msgstr "BitTorrent 7.5.0" + +msgctxt "#30078" +msgid "BitTorrent 7.4.3" +msgstr "BitTorrent 7.4.3" + +msgctxt "#30079" +msgid "µTorrent 3.4.9" +msgstr "µTorrent 3.4.9" + +msgctxt "#30080" +msgid "µTorrent 3.2.0" +msgstr "µTorrent 3.2.0" + +msgctxt "#30081" +msgid "µTorrent 2.2.1" +msgstr "µTorrent 2.2.1" + +msgctxt "#30082" +msgid "Transmission 2.92" +msgstr "Transmission 2.92" + +msgctxt "#30083" +msgid "Deluge 1.3.6.0" +msgstr "Deluge 1.3.6.0" + +msgctxt "#30084" +msgid "Deluge 1.3.12.0" +msgstr "Deluge 1.3.12.0" + +msgctxt "#30085" +msgid "Vuze 5.7.3.0" +msgstr "Vuze 5.7.3.0" + +msgctxt "#30086" +msgid "Enable tuned storage settings" +msgstr "Activează setările optimizate pentru stocare" + +msgctxt "#30087" +msgid "Ask to delete the files after streaming" +msgstr "Întreabă dacă păstrează fișierele după redare" + +msgctxt "#30088" +msgid "Initial buffering timeout (seconds)" +msgstr "Timp răspuns în secunde" + +# Interface +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Quasar a întâmpinat probleme, se repornește..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Este necesar să reporniți Kodi înainte de utilizarea Quasar" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Acesta extensie poate fi rulată doar din Quasar" + +msgctxt "#30103" +msgid "Unable to find Quasar binary" +msgstr "Nu se găsește binarul Quasar" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Inserează fișier sau URL" + +msgctxt "#30105" +msgid "URL" +msgstr "URL" + +msgctxt "#30106" +msgid "File" +msgstr "Fișier" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "Inserează URL" + +msgctxt "#30108" +msgid "File path" +msgstr "Cale fișier" + +msgctxt "#30109" +msgid "OK" +msgstr "OK" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "Pornire eșuată de prea multe ori, abandonare..." + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "Furnizorul a eșuat de prea multe ori, dezactivare..." + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "Nu se poate dezactiva furnizor" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "Calea pentru descărcare nu a fost setata, verificați setările" + +# Quasar daemon +msgctxt "#30200" +msgid "Cache cleared" +msgstr "Cache-ul a fost șters" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Caută Seriale" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Alege flux..." + +msgctxt "#30203" +msgid "Show information" +msgstr "Arată informațiile" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "Nu a fost găsit niciun furnizor" + +msgctxt "#30205" +msgid "No links were found" +msgstr "Nu a fost găsită nicio legătură" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Caută filme" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "Loc insuficient în calea pentru descărcare" + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "Serviciul Quasar a pornit" + +msgctxt "#30209" +msgid "Search" +msgstr "Caută" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Cele mai populare" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "Cele mai apreciate" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Cele mai votate" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "Top 250 IMDB" + +msgctxt "#30214" +msgid "Movies" +msgstr "Filme" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "Seriale" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Adaugă torrent" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Adaugă Magnet sau URL" + +msgctxt "#30218" +msgid "Next page" +msgstr "Pagina următoare" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "Adaugă / Șterge din librărie" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "Calea către librărie nu a fost setată" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Elementul a fost adăugat cu succes în librărie" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Elementul a fost șters din librărie" + +msgctxt "#30223" +msgid "Files" +msgstr "Fișiere" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Eroare furnizor" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Eroare de navigare" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Eroare serviciu" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Eroare în actualizarea serviciului Quasar" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Fluxuri disponibile pentru" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Torente" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "Redă / Reia torent" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Întrerupe torent" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Șterge torent" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Întrerupe sesiunea" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Reia sesiune" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "Reia torent" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Lansat recent" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Seriale recente" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Episoade recente" + +msgctxt "#30239" +msgid "Providers" +msgstr "Furnizori" + +msgctxt "#30240" +msgid "Enable" +msgstr "Activează" + +msgctxt "#30241" +msgid "Disable" +msgstr "Dezactivează" + +msgctxt "#30242" +msgid "Check" +msgstr "Verifică" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "Eșecuri furnizor" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "Setări furnizor" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "Popular pe Trakt" + +msgctxt "#30246" +msgid "Trending" +msgstr "În tendințe" + +msgctxt "#30247" +msgid "Most Played" +msgstr "Cele mai redate" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "Cele mai vizionate" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "Cele mai colecționate" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "Cele mai anticipate" + +msgctxt "#30251" +msgid "Box Office" +msgstr "Box Office" + +msgctxt "#30252" +msgid "Add to library" +msgstr "Adaugă în librărie" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "Șterge din librărie" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "Listă de vizionat" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "Adaugă în lista de vizionat" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "Șterge din lista de vizionat" + +msgctxt "#30257" +msgid "Collection" +msgstr "Colecție" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "Adaugă în colecție" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "Șterge din colecție" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "Un torent a fost ales anterior, îl folosesc?" + +msgctxt "#30261" +msgid "Search history" +msgstr "Istoricul cautărilor" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "Folosește istoricul căutărilor?" + +msgctxt "#30263" +msgid "Lists" +msgstr "Liste" + +msgctxt "#30264" +msgid "Reset clearances" +msgstr "Șterge permisiunile" + +msgctxt "#30265" +msgid "Item already in library" +msgstr "Exista deja în librărie" + +msgctxt "#30266" +msgid "Ignore duplicates" +msgstr "Ignoră duplicatele" + +msgctxt "#30267" +msgid "Keep downloaded files?" +msgstr "Păstrează fișierele descărcate?" + +msgctxt "#30268" +msgid "Toggle watched" +msgstr "Comutare vizionare" + +msgctxt "#30269" +msgid "Delete downloaded files?" +msgstr "Păstrează fișierele descărcate?" + +msgctxt "#30270" +msgid "Match found in your active torrents, play it?" +msgstr "S-a găsit un fișier asemănător in torentele tale active, îl redau?" + +msgctxt "#30271" +msgid "" +"There is now an official multi-provider for Quasar called [COLOR " +"FFFF6B00]Burst[/COLOR], would you like to install it now?" +msgstr "" +"Există un multi furnizor oficial pentru Quasar numit [COLOR " +"FFFF6B00]Burst[/COLOR], vrei să-l instalezi acum?" + +msgctxt "#30272" +msgid "Installation successful, enjoy Quasar [COLOR FFFF6B00]Burst[/COLOR]!" +msgstr "" +"Instalarea s-a efectuat cu succes, bucură-te de Quasar [COLOR " +"FFFF6B00]Burst[/COLOR] !" + +msgctxt "#30273" +msgid "" +"Shoot... It looks like we couldn't install [COLOR FFFF6B00]Burst[/COLOR] " +"automatically, head over to the Quasar Repository, then under the Program " +"add-ons section to install it." +msgstr "" +"Opa... Se pare ca nu s-a putut instala [COLOR FFFF6B00]Burst[/COLOR] " +"automat. Instalează-l manual din Repository-ul Quasar, secțiunea Program " +"add-ons" + +msgctxt "#30274" +msgid "Enable all" +msgstr "Activează-le pe toate" + +msgctxt "#30275" +msgid "Disable all" +msgstr "Dezactivează-le pe toate" + +msgctxt "#30276" +msgid "Delete torrent and files" +msgstr "Șterge torentele si fișierele" diff --git a/resources/language/Russian/strings.po b/resources/language/Russian/strings.po new file mode 100644 index 000000000..7efa85498 --- /dev/null +++ b/resources/language/Russian/strings.po @@ -0,0 +1,942 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-27 19:53+0200\n" +"PO-Revision-Date: 2017-02-13 10:13+03:00\n" +"Last-Translator: elgatito \n" +"Language: ru\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" + +# Settings +msgctxt "#30000" +msgid "General" +msgstr "Общие" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Путь для загрузок (кроме FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Сохранять файлы после просмотра" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Размер буфера (МБ)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Максимальная скорость отдачи (кБ/с)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Максимальная скорость скачивания (кБ/с)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Порт (минимальный)" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Порт (максимальный)" + +msgctxt "#30008" +msgid "Proxy" +msgstr "Прокси" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "SOCKS v5" + +msgctxt "#30010" +msgid "Enabled" +msgstr "Включить" + +msgctxt "#30011" +msgid "Host" +msgstr "Хост" + +msgctxt "#30012" +msgid "Port" +msgstr "Порт" + +msgctxt "#30013" +msgid "Login" +msgstr "Логин" + +msgctxt "#30014" +msgid "Password" +msgstr "Пароль" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Дополнительно" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Пользовательский тайм-аут провайдера" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Включить (используйте на ваш риск)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Тайм-аут в секундах" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Обслуживание" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Очистить кеш" + +msgctxt "#30021" +msgid "Results per page" +msgstr "Результатов на странице" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Показывать статус загрузки" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Выбрать стрим автоматически" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Получать обновления для пре-релизов" + +msgctxt "#30025" +msgid "Limit rates after buffering only" +msgstr "Ограничить скорость только после буферизации" + +msgctxt "#30026" +msgid "Library path" +msgstr "Папка для библиотеки" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Лимит подключений" + +msgctxt "#30028" +msgid "Do not ask to keep downloading" +msgstr "Не спрашивать продолжать скачивание" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Частота сохранений сессии (секунд)" + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "Позиция статуса загрузки по вертикали" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "Отключать провайдеров не прошедших проверку" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "Допустимое число сбоев провайдера:" + +msgctxt "#30033" +msgid "Appearance" +msgstr "Внешний вид" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "Вид по-умолчанию для фильмов" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "Вид по-умолчанию для сериалов" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "Вид по-умолчанию для сезонов" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "Вид по-умолчанию для эпизодов" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "Только оригинальные названия" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "TheMovieDB" + +msgctxt "#30040" +msgid "API key" +msgstr "ключ API" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "Сортировка стримов" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "Сортировка фильмов" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "Сортировка сериалов" + +msgctxt "#30044" +msgid "By seeders" +msgstr "по колич. сидов" + +msgctxt "#30045" +msgid "By resolution" +msgstr "по разрешениям" + +msgctxt "#30046" +msgid "Balanced" +msgstr "баланс" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "Предпочтительное разрешение для фильмов" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "Предпочтительное резрешение для сериалов" + +msgctxt "#30049" +msgid "Percentage of additional seeders required before choosing next resolution" +msgstr "Процент дополнительных сидов перед выбором следующего разрешения" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "Отключить DHT" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "Лимит соотношения раздачи (проценты)" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "Лимит соотношения времени сидирования (проценты)" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "Лимит времени сидирования (часов)" + +msgctxt "#30054" +msgid "Update library" +msgstr "Обновить библиотеку" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "Добавлять Specials в библиотеку" + +msgctxt "#30056" +msgid "Trakt" +msgstr "Trakt" + +msgctxt "#30057" +msgid "Username" +msgstr "Пользователь" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "Авторизовать Trakt" + +msgctxt "#30059" +msgid "Library update delay on startup (seconds)" +msgstr "Задержка обновления библиотеки при запуске (секунд)" + +msgctxt "#30060" +msgid "Library update frequency (hours)" +msgstr "Частота обновления библиотеки (часов)" + +msgctxt "#30061" +msgid "Sync frequency of Trakt lists to library (hours)" +msgstr "Частота синхронизации списков Trakt в библиотеку (часов)" + +msgctxt "#30062" +msgid "Ask to keep the files after streaming" +msgstr "Спрашивать оставлять файлы после просмотра" + +msgctxt "#30063" +msgid "Disable UPNP & NATPMP" +msgstr "Отключить UPNP & NATPMP" + +msgctxt "#30064" +msgid "Encryption policy" +msgstr "Политика шифрования" + +msgctxt "#30065" +msgid "Disabled" +msgstr "Отключено" + +msgctxt "#30066" +msgid "Forced" +msgstr "Принудительно" + +msgctxt "#30067" +msgid "Proxy type" +msgstr "Тип прокси" + +msgctxt "#30068" +msgid "SOCKS4" +msgstr "Socks4" + +msgctxt "#30069" +msgid "SOCKS5" +msgstr "Socks5" + +msgctxt "#30070" +msgid "SOCKS5 password" +msgstr "Socks5 пароль" + +msgctxt "#30071" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30072" +msgid "HTTP password" +msgstr "Пароль HTTP" + +msgctxt "#30073" +msgid "i2p" +msgstr "i2p" + +msgctxt "#30074" +msgid "Spoof user agent (highly inadvisable)" +msgstr "" + +msgctxt "#30075" +msgid "Default from libtorrent (acceptable)" +msgstr "По-умолчанию из libtorrent" + +msgctxt "#30076" +msgid "libtorrent (Rasterbar) 1.1.0" +msgstr "" + +msgctxt "#30077" +msgid "BitTorrent 7.5.0" +msgstr "" + +msgctxt "#30078" +msgid "BitTorrent 7.4.3" +msgstr "" + +msgctxt "#30079" +msgid "µTorrent 3.4.9" +msgstr "" + +msgctxt "#30080" +msgid "µTorrent 3.2.0" +msgstr "" + +msgctxt "#30081" +msgid "µTorrent 2.2.1" +msgstr "" + +msgctxt "#30082" +msgid "Transmission 2.92" +msgstr "" + +msgctxt "#30083" +msgid "Deluge 1.3.6.0" +msgstr "" + +msgctxt "#30084" +msgid "Deluge 1.3.12.0" +msgstr "" + +msgctxt "#30085" +msgid "Vuze 5.7.3.0" +msgstr "" + +msgctxt "#30086" +msgid "Enable tuned storage settings" +msgstr "Использовать модифицированные настройки хранения" + +msgctxt "#30087" +msgid "Ask to delete the files after streaming" +msgstr "Спрашивать об удалении файлов после просмотра" + +msgctxt "#30088" +msgid "Initial buffering timeout (seconds)" +msgstr "Тайм-аут предварительной буфферизации (секунд)" + +msgctxt "#30089" +msgid "Automatically re-scan Kodi library after updates" +msgstr "Автоматически запускать сканирование Kodi после обновлений" + +msgctxt "#30090" +msgid "Listen interfaces" +msgstr "Прослушивание интерфейсов" + +msgctxt "#30091" +msgid "Outgoing interfaces" +msgstr "Исходящие интерфейсы" + +msgctxt "#30092" +msgid "Use default fanart" +msgstr "Использовать фанарт по-умолчанию" + +msgctxt "#30093" +msgid "Do Not Disturb mode" +msgstr "Режим 'Не беспокоить'" + +# Interface +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Упс, перезапуск..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Перезапустите Kodi" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Это дополниние можно запустить только через Quasar" + +msgctxt "#30103" +msgid "Unable to find Quasar binary[CR]Required platform:" +msgstr "Quasar binary не найден[CR]Требуемая платформа:" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Вставить файл или URL" + +msgctxt "#30105" +msgid "URL" +msgstr "URL" + +msgctxt "#30106" +msgid "File" +msgstr "Файл" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "Вставить URL" + +msgctxt "#30108" +msgid "File path" +msgstr "Путь к файлу" + +msgctxt "#30109" +msgid "OK" +msgstr "ОК" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "Много ошибок, отказ..." + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "Слишком много сбоев провайдера, отключение..." + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "Невозможно отключить провайдера" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "Не настроен путь для Загрузок" + +msgctxt "#30114" +msgid "TheTVDB" +msgstr "" + +msgctxt "#30115" +msgid "TV show scraper used by Kodi library" +msgstr "Скреппер для Сериалов, используемый в библиотеке Kodi" + +msgctxt "#30116" +msgid "Looks like Quasar is still starting up, give it a few seconds..." +msgstr "Похоже Quasar еще стартует, подождите еще пару секунд..." + +msgctxt "#30117" +msgid "Resolving torrent files..." +msgstr "Проверяем торрент-файлы..." + +msgctxt "#30118" +msgid "Scraping trackers..." +msgstr "Запрашиваем трекеры..." + +msgctxt "#30141" +msgid "Please support Quasar development by visiting https://quasar.surge.sh/donate" +msgstr "Пожалуйста, поддержите разработку Quasar посещением https://quasar.surge.sh/donate" + +msgctxt "#30142" +msgid "Default view for menus in Movies" +msgstr "Вид по-умолчанию в меню для Фильмов" + +msgctxt "#30143" +msgid "Default view for menus in TV Shows" +msgstr "Вид по-умолчанию в меню для Сериалов" + +msgctxt "#30144" +msgid "Default view for movie genres" +msgstr "Вид по-умолчанию для жанров Фильмов" + +msgctxt "#30145" +msgid "Default view for TV show genres" +msgstr "Вид по-умолчанию для жанров Сериалов" + +msgctxt "#30146" +msgid "Keep downloading?" +msgstr "Продолжать скачивание?" + +msgctxt "#30147" +msgid "Caches are still warming up, give it a minute or two..." +msgstr "Кеш еще не заполнился, подождите минуту или две..." + +msgctxt "#30148" +msgid "Caches warmed up" +msgstr "Кеш заполнился" + +msgctxt "#30199" +msgid "No available JSON-RPC connection to Kodi.[CR]Enable both Application control " +"options in Service settings / Control and restart Kodi." +msgstr "Нет доступного соединения JSON-RPC.[CR]Включите обе опции Контроль приложения " +"в разделе Сервисные настройки / Управление и перезапустите Kodi" + +# Quasar daemon +msgctxt "#30200" +msgid "Cache cleared" +msgstr "Кеш очищен" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Искать Сериал" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Выбрать стрим..." + +msgctxt "#30203" +msgid "Show information" +msgstr "Информация" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "Нет провайдеров" + +msgctxt "#30205" +msgid "No links were found" +msgstr "Стримы не найдены" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Искать Фильм" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "Недостаточно места в папке для загрузок." + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "Quasar запустился" + +msgctxt "#30209" +msgid "Search" +msgstr "Поиск" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Самые популярные" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "С лучшим рейтингом" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Самые оцениваемые" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "IMDB Топ 250" + +msgctxt "#30214" +msgid "Movies" +msgstr "Фильмы" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "Сериалы" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Добавить торрент" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Вставить Magnet или URL" + +msgctxt "#30218" +msgid "Next page" +msgstr "Следующая страница" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "Добавить / Удалить из библиотеки" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "Путь к библиотеке не назначен" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Обьект успешно добавлен в библиотеку" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Обьект удален из библиотеки" + +msgctxt "#30223" +msgid "Files" +msgstr "Файлы" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Ошибка провайдера" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Ошибка навигации" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Ошибка Quasar daemon" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Ошибка обновления Quasar daemon" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Стримы |" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Торренты" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "Проиграть / возобновить торрент" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Приостановить торрент" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Удалить торрент" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Приостановить загрузку" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Возобновить загрузку" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "Возобновить проигрывание" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Новинки" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Новинки" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Новые эпизоды" + +msgctxt "#30239" +msgid "Providers" +msgstr "Провайдеры" + +msgctxt "#30240" +msgid "Enable" +msgstr "Включить" + +msgctxt "#30241" +msgid "Disable" +msgstr "Отключить" + +msgctxt "#30242" +msgid "Check" +msgstr "Проверить" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "Сбоев" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "Настройки провайдера" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "Популярное" + +msgctxt "#30246" +msgid "Trending" +msgstr "В тренде" + +msgctxt "#30247" +msgid "Most Played" +msgstr "В топе" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "Самые просматриваемые" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "В избранном" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "Самые ожидаемые" + +msgctxt "#30251" +msgid "Box Office" +msgstr "В прокате" + +msgctxt "#30252" +msgid "Add to library" +msgstr "Добавить в библиотеку" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "Удалить из библиотеки" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "Просматриваемые" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "Добавить в просматриваемые" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "Удалить из просматриваемых" + +msgctxt "#30257" +msgid "Collection" +msgstr "Коллекция" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "Добавить в коллекцию" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "Удалить из коллекции" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "Торрент был выбран перед этим, использовать его?" + +msgctxt "#30261" +msgid "Search history" +msgstr "История поиска" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "Использовать историю поиска?" + +msgctxt "#30263" +msgid "Lists" +msgstr "Списки" + +msgctxt "#30264" +msgid "Reset clearances" +msgstr "" + +msgctxt "#30265" +msgid "Item already in library" +msgstr "Уже в библиотеке" + +msgctxt "#30266" +msgid "Ignore duplicates" +msgstr "Игнорировать дубликаты" + +msgctxt "#30267" +msgid "Keep downloaded files?" +msgstr "Оставить скачанные файлы?" + +msgctxt "#30268" +msgid "Toggle watched" +msgstr "Переключить 'Посмотренный'" + +msgctxt "#30269" +msgid "Delete downloaded files?" +msgstr "Удалить скачанные файлы?" + +msgctxt "#30270" +msgid "Match found in your active torrents, play it?" +msgstr "Найдено совпадение в ваших активных торрентах, воспроизвести его?" + +msgctxt "#30271" +msgid "There is now an official multi-provider for Quasar called [COLOR " +"FFFF6B00]Burst[/COLOR], would you like to install it now?" +msgstr "Сейчас есть официальный мульти-провайдер для Quasar под названием [COLOR " +"FFFF6B00]Burst[/COLOR], хотите установить его?" + +msgctxt "#30272" +msgid "Installation successful, enjoy Quasar [COLOR FFFF6B00]Burst[/COLOR]!" +msgstr "Установка прошла успешно, наслаждайтесь Quasar [COLOR FFFF6B00]Burst[/COLOR]!" + +msgctxt "#30273" +msgid "Shoot... It looks like we couldn't install [COLOR FFFF6B00]Burst[/COLOR] " +"automatically, head over to the Quasar Repository, then under the Program " +"add-ons section to install it." +msgstr "Похоже мы не смогли установить [COLOR FFFF6B00]Burst[/COLOR] автоматически, " +"пройдите в Репозиторий Quasar, в Дополнениях - Установить из репозитория для ручной установки." + +msgctxt "#30274" +msgid "Enable all" +msgstr "Включить все" + +msgctxt "#30275" +msgid "Disable all" +msgstr "Выключить все" + +msgctxt "#30276" +msgid "Delete torrent and files" +msgstr "Удалить торрент и файлы" + +msgctxt "#30277" +msgid "%s added to library, do you want to rescan it?[CR]You can later use Kodi's " +"'Update library' feature instead." +msgstr "%s добавлен в библиотеку, хотите пересканировать её?[CR]Вы можете запустить 'Обновить библиотеку' " +"в Kodi позже" + +msgctxt "#30278" +msgid "%s removed from library, do you want to clean it?[CR]You can later use " +"Kodi's 'Clean library' feature instead." +msgstr "%s удален из библиотеки, хотите пересканировать её?[CR]Вы можете запустить 'Очистить библиотеку' " +"в Kodi позже" + +msgctxt "#30279" +msgid "Watchlist added to library" +msgstr "Просматриваемые добавлены в библиотеку" + +msgctxt "#30280" +msgid "Collection added to library" +msgstr "Коллекция добавлена в библиотеку" + +msgctxt "#30281" +msgid "List added to library" +msgstr "Список добавлен в библиотеку" + +msgctxt "#30282" +msgid "Nothing left to remove from Quasar" +msgstr "Нечего удалять из Quasar" + +msgctxt "#30283" +msgid "Merge to library" +msgstr "Обновить в библиотеке" + +msgctxt "#30284" +msgid "Show unaired seasons" +msgstr "Показывать невышедшие сезоны" + +msgctxt "#30285" +msgid "Show unaired episodes" +msgstr "Показывать невышедшие эпизоды" + +msgctxt "#30286" +msgid "%s merged to library, do you want to rescan it?[CR]You can later use Kodi's " +"'Update library' feature instead." +msgstr "%s обновлен в библиотеке, хотите пересканировать её?[CR]Вы можете запустить 'Обновить библиотеку' " +"в Kodi позже" + +msgctxt "#30287" +msgid "%s already in library" +msgstr "%s уже в библиотеке" + +msgctxt "#30288" +msgid "Library updated, do you want to rescan it?[CR]You can later use Kodi's " +"'Update library' feature instead." +msgstr "Библиотека обновлена, вы хотите пересканировать её?[CR]Вы можете запустить 'Обновить библиотеку' " +"в Kodi позже" + +msgctxt "#30289" +msgid "Genres" +msgstr "Жанры" + +msgctxt "#30290" +msgid "Calendars" +msgstr "Календари" + +msgctxt "#30291" +msgid "My Movies" +msgstr "Мои Фильмы" + +msgctxt "#30292" +msgid "My Releases" +msgstr "Мои Релизы" + +msgctxt "#30293" +msgid "All Movies" +msgstr "Все Фильмы" + +msgctxt "#30294" +msgid "All Releases" +msgstr "Все Релизы" + +msgctxt "#30295" +msgid "My Shows" +msgstr "Мои Сериалы" + +msgctxt "#30296" +msgid "My New Shows" +msgstr "Мои Новые Сериалы" + +msgctxt "#30297" +msgid "My Premieres" +msgstr "Мои Премьеры" + +msgctxt "#30298" +msgid "All Shows" +msgstr "Все Сериалы" + +msgctxt "#30299" +msgid "All New Shows" +msgstr "Все Новые Сериалы" + +msgctxt "#30300" +msgid "All Premieres" +msgstr "Все Премьеры" + +#~ msgctxt "#30021" +#~ msgid "Enable pagination" +#~ msgstr "Выводить фильмы и сериалы постранично" + +#~ msgctxt "#30028" +#~ msgid "Background handling of torrents" +#~ msgstr "Фоновая обработка торрентов" + +#~ msgctxt "#30219" +#~ msgid "Add/Remove from library" +#~ msgstr "Добавить/удалить с библиотеки" + +#~ msgctxt "#30230" +#~ msgid "Play/resume torrent" +#~ msgstr "Играть/возобновить торрент" diff --git a/resources/language/Slovak/strings.po b/resources/language/Slovak/strings.po new file mode 100644 index 000000000..bf29c5536 --- /dev/null +++ b/resources/language/Slovak/strings.po @@ -0,0 +1,337 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"POT-Creation-Date: 2016-02-06 16:35+01:00\n" +"PO-Revision-Date: 2016-02-10 14:35+01:00\n" +"Last-Translator: Sonics007 \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +# Settings + +msgctxt "#30000" +msgid "General" +msgstr "Všeobecné" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Download cesta (nie FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Ponechať súbor po prehratí/stiahnutí" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Veľkosť dočasnej pamäte (MB)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Max hodnota odosielania (kB/s)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Max hodnota sťahovania (kB/s)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Listen port min" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Listen port max" + +msgctxt "#30008" +msgid "Proxy" +msgstr "Proxy" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "SOCKS v5 konfigurácia" + +msgctxt "#30010" +msgid "Enabled" +msgstr "povolené" + +msgctxt "#30011" +msgid "Host" +msgstr "Host" + +msgctxt "#30012" +msgid "Port" +msgstr "Port" + +msgctxt "#30013" +msgid "Login" +msgstr "Meno" + +msgctxt "#30014" +msgid "Password" +msgstr "Heslo" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Pokročilé" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Vlastný timeout providera" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Povoliť (iba na vlastné riziko)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Timeout v sekundách" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Údržba" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Vymazať cache" + +msgctxt "#30021" +msgid "Enable pagination" +msgstr "Zapnúť stránkovanie" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Povoliť status prekrytia" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Automatický výber streamu" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Získať aktualizácie z pre-release" + +msgctxt "#30025" +msgid "Limit rates after buffering only" +msgstr "Limit hodnôt iba po bufferingu" + +msgctxt "#30026" +msgid "Library path" +msgstr "Adresa knižnice" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Limit pripojenia" + +msgctxt "#30028" +msgid "Background handling of torrents" +msgstr "Spracavanie torrentov na pozadí" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Frekvencia ukladania relácie (seconds)" + +# Interface + +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Quasar spadol, reštartovanie..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Prosím reštartujte Kodi pred spustením Qualsara" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Tento doplnok je možné spustiť len cez Quasar" + +msgctxt "#30103" +msgid "Unable to find Quasar binary" +msgstr "Quasar binary nenájdený" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Vložit súbor alebo URL adresu" + +msgctxt "#30105" +msgid "URL" +msgstr "URL adresa" + +msgctxt "#30106" +msgid "File" +msgstr "Súbor" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "Vložiť url adresu" + +msgctxt "#30108" +msgid "File path" +msgstr "cesta k súboru" + +msgctxt "#30109" +msgid "OK" +msgstr "Potvrdiť" + +# Quasar daemon + +msgctxt "#30200" +msgid "Cache cleared" +msgstr "Cache vymazaná" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Vyhľadať TV seriál" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Vybrať stream..." + +msgctxt "#30203" +msgid "Show information" +msgstr "Zobraz informácie" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "Žiaden provider najdený" + +msgctxt "#30205" +msgid "No links were found" +msgstr "Žiadne linky najdené" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Vyhľadat filmy" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "Nedostatok miesta pre uloženie ." + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "Quasar daemon sa práve spustil" + +msgctxt "#30209" +msgid "Search" +msgstr "Vyhľadať" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Najpopulárnejšie filmyr" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "Filmy s najvačším hodnotením" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Filmy s najvačším hlasovním" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "IMDB Top 250" + +msgctxt "#30214" +msgid "Movies" +msgstr "Filmy" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "TV seriály" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Vložit URL" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Vložiť Magnet alebo URL" + +msgctxt "#30218" +msgid "Next page" +msgstr "Ďaľšia strana" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "Pridať/Odobrať z knižnice" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "Cesta knižnice nenastavená" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Objekt úspenšne pridaný do knižnice" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Objekt odstránený z knižnice" + +msgctxt "#30223" +msgid "Files" +msgstr "Súbory" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Chyba providera" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Chyba navigacie" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Chyba daemona " + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Chyba updatovania Quasar daemona" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Dostupné streamy pre" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Torrenty" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "Prehrať/pokračovať torrent" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Pozastaviť torrent" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Vymazať torrent" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Pozastaviť reláciu" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Obnoviť reláciu" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "obnovit torrent" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Nedávno vydané" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Aktuálne Seriály" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Aktuálne Epizódy" diff --git a/resources/language/Spanish (Mexico)/strings.po b/resources/language/Spanish (Mexico)/strings.po new file mode 100755 index 000000000..85c83aa89 --- /dev/null +++ b/resources/language/Spanish (Mexico)/strings.po @@ -0,0 +1,336 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es_MX\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +# Settings + +msgctxt "#30000" +msgid "General" +msgstr "General" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Ruta para descargar (NO FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Mantener archivos después de reproducirlos" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Tamaño buffer (MB)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Tasa máxima de upload (kB/s)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Tasa máxima de download (kB/S)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Puerto min" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Puerto max" + +msgctxt "#30008" +msgid "Proxy" +msgstr "Proxy" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "Configuración SOCKS v5" + +msgctxt "#30010" +msgid "Enabled" +msgstr "Activado" + +msgctxt "#30011" +msgid "Host" +msgstr "Host" + +msgctxt "#30012" +msgid "Port" +msgstr "Puerto" + +msgctxt "#30013" +msgid "Login" +msgstr "Usuario" + +msgctxt "#30014" +msgid "Password" +msgstr "Clave" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Avanzado" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Timeout provider" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Activado (use bajo su responsabilidad)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Timeout en segundos" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Mantenimiento" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Borrar cache" + +msgctxt "#30021" +msgid "Enable pagination" +msgstr "Activar paginación" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Activar barra de estado" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Seleccionar fuente automáticamente" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Obtener actualizaciones de pre-releases" + +msgctxt "#30025" +msgid "Limit rates after buffering only" +msgstr "Limitar tasas después de hacer buffering" + +msgctxt "#30026" +msgid "Library path" +msgstr "Ruta de la librería" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Límite de conexiones" + +msgctxt "#30028" +msgid "Background handling of torrents" +msgstr "Procesar torrents en segundo plano" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Frecuencia para grabar sesiones (segundos)" + +# Interface + +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Quasar se ha cerrado insperadamente, reiniciando..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Debe reiniciar Kodi antes de usar Quasar" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Este complemento solo puede ser utilizado desde Quasar" + +msgctxt "#30103" +msgid "Unable to find Quasar binary" +msgstr "No se ha encontrado el binario de Quasar" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Insertar archivo o URL" + +msgctxt "#30105" +msgid "URL" +msgstr "URL" + +msgctxt "#30106" +msgid "File" +msgstr "Archivo" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "Insertar URL" + +msgctxt "#30108" +msgid "File path" +msgstr "Ruta del archivo" + +msgctxt "#30109" +msgid "OK" +msgstr "OK" + +# Quasar daemon + +msgctxt "#30200" +msgid "Cache cleared" +msgstr "El cache se ha borrado" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Buscar Series de TV" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Seleccione fuente..." + +msgctxt "#30203" +msgid "Show information" +msgstr "Mostrar información" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "No se han encontrado providers" + +msgctxt "#30205" +msgid "No links were found" +msgstr "No se han encontrado fuentes" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Buscar Películas" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "No hay suficiente espacio disponible en la ruta de descarga." + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "Quasar daemon ha iniciado" + +msgctxt "#30209" +msgid "Search" +msgstr "Buscar" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Más Populares" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "Más Valoradas" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Más Votadas" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "IMDB Top 250" + +msgctxt "#30214" +msgid "Movies" +msgstr "Películas" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "Series de TV" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Insertar URL" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Ingresar Magnet o URL" + +msgctxt "#30218" +msgid "Next page" +msgstr "Siguiente página" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "Agregar / Eliminar de librería" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "No se ha configurado la ruta de la librería" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Se agregado correctamente a la librería" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Se ha eliminado de la librería" + +msgctxt "#30223" +msgid "Files" +msgstr "Archivos" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Error del provider" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Error de navegación" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Error del daemon" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Error al actualizar Quasar daemon" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Fuentes disponibles para" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Torrents" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "Reproducir / resumir torrent" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Pausar torrent" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Borrar torrent" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Pausar sesión" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Resumir sesión" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "Resumir torrent" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Lanzadas recientemente" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Series Recientes" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Episodios Recientes" diff --git a/resources/language/Spanish/strings.po b/resources/language/Spanish/strings.po new file mode 100755 index 000000000..1938ae5e6 --- /dev/null +++ b/resources/language/Spanish/strings.po @@ -0,0 +1,432 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +# Settings + +msgctxt "#30000" +msgid "General" +msgstr "General" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Ruta para descargar (NO FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Mantener archivos después de reproducirlos" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Tamaño buffer (MB)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Tasa máxima de upload (kB/s)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Tasa máxima de download (kB/S)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Puerto min" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Puerto max" + +msgctxt "#30008" +msgid "Proxy" +msgstr "Proxy" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "Configuración SOCKS v5" + +msgctxt "#30010" +msgid "Enabled" +msgstr "Activado" + +msgctxt "#30011" +msgid "Host" +msgstr "Host" + +msgctxt "#30012" +msgid "Port" +msgstr "Puerto" + +msgctxt "#30013" +msgid "Login" +msgstr "Usuario" + +msgctxt "#30014" +msgid "Password" +msgstr "Clave" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Avanzado" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Timeout provider" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Activado (use bajo su responsabilidad)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Timeout en segundos" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Mantenimiento" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Borrar cache" + +msgctxt "#30021" +msgid "Enable pagination" +msgstr "Activar paginación" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Activar barra de estado" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Seleccionar fuente automáticamente" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Obtener actualizaciones de pre-releases" + +msgctxt "#30025" +msgid "Limit rates after buffering only" +msgstr "Limitar tasas después de hacer buffering" + +msgctxt "#30026" +msgid "Library path" +msgstr "Ruta de la librería" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Límite de conexiones" + +msgctxt "#30028" +msgid "Background handling of torrents" +msgstr "Procesar torrents en segundo plano" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Frecuencia para grabar sesiones (segundos)" + +# Interface + +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Quasar se ha cerrado insperadamente, reiniciando..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Debe reiniciar Kodi antes de usar Quasar" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Este complemento solo puede ser utilizado desde Quasar" + +msgctxt "#30103" +msgid "Unable to find Quasar binary" +msgstr "No se ha encontrado el binario de Quasar" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Insertar archivo o URL" + +msgctxt "#30105" +msgid "URL" +msgstr "URL" + +msgctxt "#30106" +msgid "File" +msgstr "Archivo" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "Insertar URL" + +msgctxt "#30108" +msgid "File path" +msgstr "Ruta del archivo" + +msgctxt "#30109" +msgid "OK" +msgstr "OK" + +# Quasar daemon + +msgctxt "#30200" +msgid "Cache cleared" +msgstr "El cache se ha borrado" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Buscar Series de TV" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Seleccione fuente..." + +msgctxt "#30203" +msgid "Show information" +msgstr "Mostrar información" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "No se han encontrado providers" + +msgctxt "#30205" +msgid "No links were found" +msgstr "No se han encontrado fuentes" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Buscar Películas" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "No hay suficiente espacio disponible en la ruta de descarga." + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "Quasar daemon ha iniciado" + +msgctxt "#30209" +msgid "Search" +msgstr "Buscar" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Más Populares" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "Más Valoradas" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Más Votadas" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "IMDB Top 250" + +msgctxt "#30214" +msgid "Movies" +msgstr "Películas" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "Series de TV" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Insertar URL" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Ingresar Magnet o URL" + +msgctxt "#30218" +msgid "Next page" +msgstr "Siguiente página" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "Agregar / Eliminar de librería" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "No se ha configurado la ruta de la librería" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Se agregado correctamente a la librería" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Se ha eliminado de la librería" + +msgctxt "#30223" +msgid "Files" +msgstr "Archivos" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Error del provider" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Error de navegación" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Error del daemon" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Error al actualizar Quasar daemon" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Fuentes disponibles para" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Torrents" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "Reproducir / resumir torrent" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Pausar torrent" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Borrar torrent" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Pausar sesión" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Resumir sesión" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "Resumir torrent" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Lanzadas recientemente" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Series Recientes" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Episodios Recientes" + +msgctxt "#30239" +msgid "Providers" +msgstr "Proovedores" + +msgctxt "#30240" +msgid "Enable" +msgstr "Activar" + +msgctxt "#30241" +msgid "Disable" +msgstr "Desactivar" + +msgctxt "#30242" +msgid "Check" +msgstr "Chequear" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "Fallas de Proovedor" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "Configuracion de Proovedores" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "Populares en Trakt" + +msgctxt "#30246" +msgid "Trending" +msgstr "Tendencia" + +msgctxt "#30247" +msgid "Most Played" +msgstr "Mas Reproducidas" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "Mas Vistas" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "Mas Recolectadas" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "Mas Anticipadas" + +msgctxt "#30251" +msgid "Box Office" +msgstr "Box Office" + +msgctxt "#30252" +msgid "Add to library" +msgstr "Añadir a Librería" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "Eliminar de Librería" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "Watchlist" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "Añadir a watchlist" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "Eliminar de watchlist" + +msgctxt "#30257" +msgid "Collection" +msgstr "Colección" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "Añadir a Colección" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "Eliminar de Colección" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "Anteriormente fue seleccionado un torrent, desea usarlo?" + +msgctxt "#30261" +msgid "Search history" +msgstr "Historial de Búsqueda" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "Usar historial de búsqueda?" diff --git a/resources/language/Ukrainian/strings.po b/resources/language/Ukrainian/strings.po new file mode 100644 index 000000000..f53d013de --- /dev/null +++ b/resources/language/Ukrainian/strings.po @@ -0,0 +1,942 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +msgid "" +msgstr "" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-27 19:53+0200\n" +"PO-Revision-Date: 2017-02-13 11:13+03:00\n" +"Last-Translator: elgatito \n" +"Language: ua\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" + +# Settings +msgctxt "#30000" +msgid "General" +msgstr "Загальні" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "Шлях до завантажень (окрім FAT32)" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "Зберігати файли післе перегляду" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "Розмір буферу (МБ)" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "Максимальна швидкість віддачі (кБ/с)" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "Максимальна швидкість завантаження (кБ/с)" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "Порт (мінимальний)" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "Порт (максимальний)" + +msgctxt "#30008" +msgid "Proxy" +msgstr "Проксі" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "SOCKS v5" + +msgctxt "#30010" +msgid "Enabled" +msgstr "Увімкнути" + +msgctxt "#30011" +msgid "Host" +msgstr "Хост" + +msgctxt "#30012" +msgid "Port" +msgstr "Порт" + +msgctxt "#30013" +msgid "Login" +msgstr "Логін" + +msgctxt "#30014" +msgid "Password" +msgstr "Пароль" + +msgctxt "#30015" +msgid "Advanced" +msgstr "Додатково" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "Довільний тайм-аут провайдера" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "Увімкнути (використовуйте на свій ризик)" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "Тайм-аут в секундах" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "Обслуговування" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "Очистити кеш" + +msgctxt "#30021" +msgid "Results per page" +msgstr "Результатів на сторінці" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "Показувати статус завантаження" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "Вибирати стрым автоматично" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "Отримувати оновлення для пре-релізів" + +msgctxt "#30025" +msgid "Limit rates after buffering only" +msgstr "Обмежити швидкість тольки після буферизації" + +msgctxt "#30026" +msgid "Library path" +msgstr "Папка для бібліотеки" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "Ліміт підключень" + +msgctxt "#30028" +msgid "Do not ask to keep downloading" +msgstr "Не запитувати продовжувати завантаження" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "Частота збережень сесії (секунд)" + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "Позиція статуса завантаження по вертикалі" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "Вимикати провайдерів не пройшовших перевірку" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "Дозволена кількість збоїв провайдера:" + +msgctxt "#30033" +msgid "Appearance" +msgstr "Зовнішній вигляд" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "Вигляд за замовчуванням для фільмів" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "Вигляд за замовчуванням для серіалів" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "Вигляд за замовчуванням для сезонів" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "Вигляд за замовчуванням для епизодів" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "Тільки оригінальні назви" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "TheMovieDB" + +msgctxt "#30040" +msgid "API key" +msgstr "ключ API" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "Сортування стримів" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "Сортування фильмів" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "Сортування серіалів" + +msgctxt "#30044" +msgid "By seeders" +msgstr "по кільк. сідів" + +msgctxt "#30045" +msgid "By resolution" +msgstr "по розширенню" + +msgctxt "#30046" +msgid "Balanced" +msgstr "оптимальне" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "Бажане розширення для фільмів" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "Бажане розширення для серіалів" + +msgctxt "#30049" +msgid "Percentage of additional seeders required before choosing next resolution" +msgstr "Процент додаткових сідів перед вибором наступного розширення" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "Вимкнути DHT" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "Ліміт співвідношення роздачі (проценти)" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "Ліміт співвідношення часу сидування (проценти)" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "Ліміт часу сидування (часів)" + +msgctxt "#30054" +msgid "Update library" +msgstr "Оновити біблиотеку" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "Добавляти Specials в біблиотеку" + +msgctxt "#30056" +msgid "Trakt" +msgstr "Trakt" + +msgctxt "#30057" +msgid "Username" +msgstr "Користувач" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "Авторизувати Trakt" + +msgctxt "#30059" +msgid "Library update delay on startup (seconds)" +msgstr "Затримка оновлення біблиотеки під час запуска (секунд)" + +msgctxt "#30060" +msgid "Library update frequency (hours)" +msgstr "Частота оновлення біблиотеки (часів)" + +msgctxt "#30061" +msgid "Sync frequency of Trakt lists to library (hours)" +msgstr "Частота синхронізації списків Trakt в біблиотеку (часів)" + +msgctxt "#30062" +msgid "Ask to keep the files after streaming" +msgstr "Запитувати залишати файли після перегляду" + +msgctxt "#30063" +msgid "Disable UPNP & NATPMP" +msgstr "Вимкнути UPNP & NATPMP" + +msgctxt "#30064" +msgid "Encryption policy" +msgstr "Політика шифрування" + +msgctxt "#30065" +msgid "Disabled" +msgstr "Вимкнено" + +msgctxt "#30066" +msgid "Forced" +msgstr "Примусово" + +msgctxt "#30067" +msgid "Proxy type" +msgstr "Тип проксі" + +msgctxt "#30068" +msgid "SOCKS4" +msgstr "Socks4" + +msgctxt "#30069" +msgid "SOCKS5" +msgstr "Socks5" + +msgctxt "#30070" +msgid "SOCKS5 password" +msgstr "Socks5 пароль" + +msgctxt "#30071" +msgid "HTTP" +msgstr "HTTP" + +msgctxt "#30072" +msgid "HTTP password" +msgstr "Пароль HTTP" + +msgctxt "#30073" +msgid "i2p" +msgstr "i2p" + +msgctxt "#30074" +msgid "Spoof user agent (highly inadvisable)" +msgstr "" + +msgctxt "#30075" +msgid "Default from libtorrent (acceptable)" +msgstr "За замовчуванням з libtorrent" + +msgctxt "#30076" +msgid "libtorrent (Rasterbar) 1.1.0" +msgstr "" + +msgctxt "#30077" +msgid "BitTorrent 7.5.0" +msgstr "" + +msgctxt "#30078" +msgid "BitTorrent 7.4.3" +msgstr "" + +msgctxt "#30079" +msgid "µTorrent 3.4.9" +msgstr "" + +msgctxt "#30080" +msgid "µTorrent 3.2.0" +msgstr "" + +msgctxt "#30081" +msgid "µTorrent 2.2.1" +msgstr "" + +msgctxt "#30082" +msgid "Transmission 2.92" +msgstr "" + +msgctxt "#30083" +msgid "Deluge 1.3.6.0" +msgstr "" + +msgctxt "#30084" +msgid "Deluge 1.3.12.0" +msgstr "" + +msgctxt "#30085" +msgid "Vuze 5.7.3.0" +msgstr "" + +msgctxt "#30086" +msgid "Enable tuned storage settings" +msgstr "Використовувати модифіковані настройки зберігання" + +msgctxt "#30087" +msgid "Ask to delete the files after streaming" +msgstr "Запитувати видаляти файли післ перегляду" + +msgctxt "#30088" +msgid "Initial buffering timeout (seconds)" +msgstr "Тайм-аут попередньої буферизації (секунд)" + +msgctxt "#30089" +msgid "Automatically re-scan Kodi library after updates" +msgstr "Автоматично запускати сканування Kodi після оновлення" + +msgctxt "#30090" +msgid "Listen interfaces" +msgstr "Прослушування інтерфейсів" + +msgctxt "#30091" +msgid "Outgoing interfaces" +msgstr "Вихідні інтерфейси" + +msgctxt "#30092" +msgid "Use default fanart" +msgstr "Використовувати фанарт за замовчуванням" + +msgctxt "#30093" +msgid "Do Not Disturb mode" +msgstr "Режим 'Не турбувати'" + +# Interface +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "Упс, перезапуск..." + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "Перезапустіть Kodi" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "Це доповнення можна запустити тілько через Quasar" + +msgctxt "#30103" +msgid "Unable to find Quasar binary[CR]Required platform:" +msgstr "Quasar binary не знайдений[CR]Необхідна платформа:" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "Вставте файл чи URL" + +msgctxt "#30105" +msgid "URL" +msgstr "URL" + +msgctxt "#30106" +msgid "File" +msgstr "Файл" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "Вставити URL" + +msgctxt "#30108" +msgid "File path" +msgstr "Путь до файлу" + +msgctxt "#30109" +msgid "OK" +msgstr "ОК" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "Багато помилок, відмова..." + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "Забагато збоїв провайдерів, віключення..." + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "Неможливо відключити провайдера" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "Не настроєний путь для Завантажень" + +msgctxt "#30114" +msgid "TheTVDB" +msgstr "" + +msgctxt "#30115" +msgid "TV show scraper used by Kodi library" +msgstr "Скреппер для Серіалів, в користуванні библиотеки Kodi" + +msgctxt "#30116" +msgid "Looks like Quasar is still starting up, give it a few seconds..." +msgstr "Схоже Quasar ще стартує, зачекайте ще декілька секунд..." + +msgctxt "#30117" +msgid "Resolving torrent files..." +msgstr "Перевіряємо торрент-файли..." + +msgctxt "#30118" +msgid "Scraping trackers..." +msgstr "Скануємо трекери..." + +msgctxt "#30141" +msgid "Please support Quasar development by visiting https://quasar.surge.sh/donate" +msgstr "Будь ласка, підтримайте розробку Quasar відвідуванням https://quasar.surge.sh/donate" + +msgctxt "#30142" +msgid "Default view for menus in Movies" +msgstr "Вид за замовчуванням в меню для Фільмів" + +msgctxt "#30143" +msgid "Default view for menus in TV Shows" +msgstr "Вид за замовчуванням в меню для Серіалів" + +msgctxt "#30144" +msgid "Default view for movie genres" +msgstr "Вид за замовчуванням для жанрів Фільмів" + +msgctxt "#30145" +msgid "Default view for TV show genres" +msgstr "Вид за замовчуванням для жанрів Серіалів" + +msgctxt "#30146" +msgid "Keep downloading?" +msgstr "Продовжувати завантаження?" + +msgctxt "#30147" +msgid "Caches are still warming up, give it a minute or two..." +msgstr "Кеш ще не заповнився, зачекайте хвилинку чи дві..." + +msgctxt "#30148" +msgid "Caches warmed up" +msgstr "Кеш заповнився" + +msgctxt "#30199" +msgid "No available JSON-RPC connection to Kodi.[CR]Enable both Application control " +"options in Service settings / Control and restart Kodi." +msgstr "Нема доступного з'єднання JSON-RPC.[CR]Увімкніть обидві опції Контроль приложения " +"в розділі Сервисні налаштування / Управління і перезапустіть Kodi" + +# Quasar daemon +msgctxt "#30200" +msgid "Cache cleared" +msgstr "Кеш очищений" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "Шукати Серіал" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "Вибрати стрім..." + +msgctxt "#30203" +msgid "Show information" +msgstr "Інформація" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "Нема провайдерів" + +msgctxt "#30205" +msgid "No links were found" +msgstr "Стріми не знайдені" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "Шукати Фільм" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "Недостатньо місця в папці для завантажень." + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "Quasar запустився" + +msgctxt "#30209" +msgid "Search" +msgstr "Пошук" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "Самі популярні" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "С кращим рейтингом" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "Самі оцінюванні" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "IMDB Топ 250" + +msgctxt "#30214" +msgid "Movies" +msgstr "Фільми" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "Серіали" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "Додати торрент" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "Вставити Magnet чи URL" + +msgctxt "#30218" +msgid "Next page" +msgstr "Наступна сторінка" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "Додати / Видалити з бібліотеки" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "Шлях до бібліотеки не визначено" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "Об'єкт успішно доданий в бібліотеку" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "Об'єкт відалений з бібліотеки" + +msgctxt "#30223" +msgid "Files" +msgstr "Файли" + +msgctxt "#30224" +msgid "Provider error" +msgstr "Помилка провайдера" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "Помилка навігації" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "Помилка Quasar daemon" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "Помилка оновлення Quasar daemon" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "Стріми |" + +msgctxt "#30229" +msgid "Torrents" +msgstr "Торренти" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "Програти / відновити торрент" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "Призупинити торрент" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "Видалити торрент" + +msgctxt "#30233" +msgid "Pause session" +msgstr "Призупинити завантаження" + +msgctxt "#30234" +msgid "Resume session" +msgstr "Відновити завантаження" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "Відновити програвання" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "Новинки" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "Новинки" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "Нові епізоди" + +msgctxt "#30239" +msgid "Providers" +msgstr "Провайдери" + +msgctxt "#30240" +msgid "Enable" +msgstr "Увімкнути" + +msgctxt "#30241" +msgid "Disable" +msgstr "Вимкнути" + +msgctxt "#30242" +msgid "Check" +msgstr "Перевірити" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "Збоїв провайдерів" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "Налаштування провайдера" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "Популярні" + +msgctxt "#30246" +msgid "Trending" +msgstr "В тренді" + +msgctxt "#30247" +msgid "Most Played" +msgstr "В топі" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "Самі переглядувані" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "В обраному" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "Самі очікувані" + +msgctxt "#30251" +msgid "Box Office" +msgstr "В прокаті" + +msgctxt "#30252" +msgid "Add to library" +msgstr "Додати в бібліотеку" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "Видалити з бібліотеки" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "Переглядувані" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "Додати в переглядувані" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "Видалити з переглядуваних" + +msgctxt "#30257" +msgid "Collection" +msgstr "Колекція" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "Додати в колекцію" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "Видалити з колекції" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "Торрент був обраний перед цім, використати його?" + +msgctxt "#30261" +msgid "Search history" +msgstr "Історія пошуку" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "Використати історію пошуку?" + +msgctxt "#30263" +msgid "Lists" +msgstr "Списки" + +msgctxt "#30264" +msgid "Reset clearances" +msgstr "" + +msgctxt "#30265" +msgid "Item already in library" +msgstr "Вже в бібліотеці" + +msgctxt "#30266" +msgid "Ignore duplicates" +msgstr "Ігнорувати дублікати" + +msgctxt "#30267" +msgid "Keep downloaded files?" +msgstr "Залишити завантажені файли?" + +msgctxt "#30268" +msgid "Toggle watched" +msgstr "Переключити 'Переглянутий'" + +msgctxt "#30269" +msgid "Delete downloaded files?" +msgstr "Видалити завантажені файли?" + +msgctxt "#30270" +msgid "Match found in your active torrents, play it?" +msgstr "Знайдено співпадіння в ваших активних торрентах, переглянути його?" + +msgctxt "#30271" +msgid "There is now an official multi-provider for Quasar called [COLOR " +"FFFF6B00]Burst[/COLOR], would you like to install it now?" +msgstr "Зараз є офіційний мульти-провайдер для Quasar під назвою [COLOR " +"FFFF6B00]Burst[/COLOR], хочете завантажити його?" + +msgctxt "#30272" +msgid "Installation successful, enjoy Quasar [COLOR FFFF6B00]Burst[/COLOR]!" +msgstr "Встановлювання пройшло успішно, насолоджуйтесь Quasar [COLOR FFFF6B00]Burst[/COLOR]!" + +msgctxt "#30273" +msgid "Shoot... It looks like we couldn't install [COLOR FFFF6B00]Burst[/COLOR] " +"automatically, head over to the Quasar Repository, then under the Program " +"add-ons section to install it." +msgstr "Схоже ми не змогли встановити [COLOR FFFF6B00]Burst[/COLOR] автоматично, " +"пройдіть в Репозиторій Quasar, в Доповненнях - Встановити з репозиторія для ручного встановлення." + +msgctxt "#30274" +msgid "Enable all" +msgstr "Увімкнути все" + +msgctxt "#30275" +msgid "Disable all" +msgstr "Вимкнути все" + +msgctxt "#30276" +msgid "Delete torrent and files" +msgstr "Видалити торрент і файли" + +msgctxt "#30277" +msgid "%s added to library, do you want to rescan it?[CR]You can later use Kodi's " +"'Update library' feature instead." +msgstr "%s доданий в бібліотеку, хочете пересканувати її?[CR]Ви можете запустити 'Оновити бібліотеку' " +"в Kodi пізже" + +msgctxt "#30278" +msgid "%s removed from library, do you want to clean it?[CR]You can later use " +"Kodi's 'Clean library' feature instead." +msgstr "%s видалений з бібліотеки, хочете пересканувати її?[CR]Ви можете запустити 'Очистити бібліотеку' " +"в Kodi пізже" + +msgctxt "#30279" +msgid "Watchlist added to library" +msgstr "Переглядувані додані в бібліотеку" + +msgctxt "#30280" +msgid "Collection added to library" +msgstr "Колекція додана в бібліотеку" + +msgctxt "#30281" +msgid "List added to library" +msgstr "Список доданий в бібліотеку" + +msgctxt "#30282" +msgid "Nothing left to remove from Quasar" +msgstr "Ничого видаляти з Quasar" + +msgctxt "#30283" +msgid "Merge to library" +msgstr "Оновити в бібліотеці" + +msgctxt "#30284" +msgid "Show unaired seasons" +msgstr "Показувати невийшовші сезони" + +msgctxt "#30285" +msgid "Show unaired episodes" +msgstr "Показувати невийшовші епизоди" + +msgctxt "#30286" +msgid "%s merged to library, do you want to rescan it?[CR]You can later use Kodi's " +"'Update library' feature instead." +msgstr "%s оновлений в бібліотеці, хочете пересканувати її?[CR]Ви можете запустити 'Оновити бібліотеку' " +"в Kodi пізже" + +msgctxt "#30287" +msgid "%s already in library" +msgstr "%s уже в библиотеке" + +msgctxt "#30288" +msgid "Library updated, do you want to rescan it?[CR]You can later use Kodi's " +"'Update library' feature instead." +msgstr "Бібліотека оновлена, хочете пересканувати її?[CR]Ви можете запустити 'Оновити бібліотеку' " +"в Kodi пізже" + +msgctxt "#30289" +msgid "Genres" +msgstr "Жанри" + +msgctxt "#30290" +msgid "Calendars" +msgstr "Календарі" + +msgctxt "#30291" +msgid "My Movies" +msgstr "Мої Фільми" + +msgctxt "#30292" +msgid "My Releases" +msgstr "Мої Релизи" + +msgctxt "#30293" +msgid "All Movies" +msgstr "Всі Фільми" + +msgctxt "#30294" +msgid "All Releases" +msgstr "Всі Релізи" + +msgctxt "#30295" +msgid "My Shows" +msgstr "Мої Серіали" + +msgctxt "#30296" +msgid "My New Shows" +msgstr "Мої Нові Серіали" + +msgctxt "#30297" +msgid "My Premieres" +msgstr "Мої Прем'єри" + +msgctxt "#30298" +msgid "All Shows" +msgstr "Всі Серіали" + +msgctxt "#30299" +msgid "All New Shows" +msgstr "Всі Нові Серіали" + +msgctxt "#30300" +msgid "All Premieres" +msgstr "Всі Прем'єри" + +#~ msgctxt "#30021" +#~ msgid "Enable pagination" +#~ msgstr "Виводити фільми і серіали посторінково" + +#~ msgctxt "#30028" +#~ msgid "Background handling of torrents" +#~ msgstr "Фонова обробка торрентів" + +#~ msgctxt "#30219" +#~ msgid "Add/Remove from library" +#~ msgstr "Додати/Видалити з бібліотеки" + +#~ msgctxt "#30230" +#~ msgid "Play/resume torrent" +#~ msgstr "Програти/відновити торрент" diff --git a/resources/language/messages.pot b/resources/language/messages.pot new file mode 100644 index 000000000..7e368533d --- /dev/null +++ b/resources/language/messages.pot @@ -0,0 +1,978 @@ +# Kodi Media Center language file +# Addon Name: Quasar +# Addon id: plugin.video.quasar +# Addon Provider: scakemyer +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-27 19:53+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + + +# Settings + +msgctxt "#30000" +msgid "General" +msgstr "" + +msgctxt "#30001" +msgid "Download path (not FAT32)" +msgstr "" + +msgctxt "#30002" +msgid "Keep files after playback/download stops" +msgstr "" + +msgctxt "#30003" +msgid "Buffer size (MB)" +msgstr "" + +msgctxt "#30004" +msgid "Max upload rate (kB/s)" +msgstr "" + +msgctxt "#30005" +msgid "Max download rate (kB/s)" +msgstr "" + +msgctxt "#30006" +msgid "Listen port min" +msgstr "" + +msgctxt "#30007" +msgid "Listen port max" +msgstr "" + +msgctxt "#30008" +msgid "Proxy" +msgstr "" + +msgctxt "#30009" +msgid "SOCKS v5 Configuration" +msgstr "" + +msgctxt "#30010" +msgid "Enabled" +msgstr "" + +msgctxt "#30011" +msgid "Host" +msgstr "" + +msgctxt "#30012" +msgid "Port" +msgstr "" + +msgctxt "#30013" +msgid "Login" +msgstr "" + +msgctxt "#30014" +msgid "Password" +msgstr "" + +msgctxt "#30015" +msgid "Advanced" +msgstr "" + +msgctxt "#30016" +msgid "Custom provider timeout" +msgstr "" + +msgctxt "#30017" +msgid "Enabled (use at your own risk)" +msgstr "" + +msgctxt "#30018" +msgid "Timeout in seconds" +msgstr "" + +msgctxt "#30019" +msgid "Maintenance" +msgstr "" + +msgctxt "#30020" +msgid "Clear cache" +msgstr "" + +msgctxt "#30021" +msgid "Results per page" +msgstr "" + +msgctxt "#30022" +msgid "Enable overlay status" +msgstr "" + +msgctxt "#30023" +msgid "Choose stream automatically" +msgstr "" + +msgctxt "#30024" +msgid "Get updates for pre-releases" +msgstr "" + +msgctxt "#30025" +msgid "Limit rates after initial buffering only" +msgstr "" + +msgctxt "#30026" +msgid "Library path" +msgstr "" + +msgctxt "#30027" +msgid "Connections limit" +msgstr "" + +msgctxt "#30028" +msgid "Do not ask to keep downloading" +msgstr "" + +msgctxt "#30029" +msgid "Session saving frequency (seconds)" +msgstr "" + +msgctxt "#30030" +msgid "Overlay status vertical offset" +msgstr "" + +msgctxt "#30031" +msgid "Disable providers failing health check" +msgstr "" + +msgctxt "#30032" +msgid "Allowed failures before provider is disabled" +msgstr "" + +msgctxt "#30033" +msgid "Appearance" +msgstr "" + +msgctxt "#30034" +msgid "Default view for Movies" +msgstr "" + +msgctxt "#30035" +msgid "Default view for TV Shows" +msgstr "" + +msgctxt "#30036" +msgid "Default view for Seasons" +msgstr "" + +msgctxt "#30037" +msgid "Default view for Episodes" +msgstr "" + +msgctxt "#30038" +msgid "Prefer use of original title" +msgstr "" + +msgctxt "#30039" +msgid "TheMovieDB" +msgstr "" + +msgctxt "#30040" +msgid "API key" +msgstr "" + +msgctxt "#30041" +msgid "Stream sorting" +msgstr "" + +msgctxt "#30042" +msgid "Sorting mode for Movies" +msgstr "" + +msgctxt "#30043" +msgid "Sorting mode for TV Shows" +msgstr "" + +msgctxt "#30044" +msgid "By seeders" +msgstr "" + +msgctxt "#30045" +msgid "By resolution" +msgstr "" + +msgctxt "#30046" +msgid "Balanced" +msgstr "" + +msgctxt "#30047" +msgid "Resolution preference for Movies" +msgstr "" + +msgctxt "#30048" +msgid "Resolution preference for TV Shows" +msgstr "" + +msgctxt "#30049" +msgid "Percentage of additional seeders required before choosing next resolution" +msgstr "" + +msgctxt "#30050" +msgid "Disable DHT" +msgstr "" + +msgctxt "#30051" +msgid "Share ratio limit (percent)" +msgstr "" + +msgctxt "#30052" +msgid "Seed time ratio limit (percent)" +msgstr "" + +msgctxt "#30053" +msgid "Seed time limit (hours)" +msgstr "" + +msgctxt "#30054" +msgid "Update library" +msgstr "" + +msgctxt "#30055" +msgid "Add Specials to library" +msgstr "" + +msgctxt "#30056" +msgid "Trakt" +msgstr "" + +msgctxt "#30057" +msgid "Username" +msgstr "" + +msgctxt "#30058" +msgid "Authorize Quasar" +msgstr "" + +msgctxt "#30059" +msgid "Library update delay on startup (seconds)" +msgstr "" + +msgctxt "#30060" +msgid "Library update frequency (hours)" +msgstr "" + +msgctxt "#30061" +msgid "Sync frequency of Trakt lists to library (hours)" +msgstr "" + +msgctxt "#30062" +msgid "Ask to keep the files after streaming" +msgstr "" + +msgctxt "#30063" +msgid "Disable UPNP & NATPMP" +msgstr "" + +msgctxt "#30064" +msgid "Encryption policy" +msgstr "" + +msgctxt "#30065" +msgid "Disabled" +msgstr "" + +msgctxt "#30066" +msgid "Forced" +msgstr "" + +msgctxt "#30067" +msgid "Proxy type" +msgstr "" + +msgctxt "#30068" +msgid "SOCKS4" +msgstr "" + +msgctxt "#30069" +msgid "SOCKS5" +msgstr "" + +msgctxt "#30070" +msgid "SOCKS5 password" +msgstr "" + +msgctxt "#30071" +msgid "HTTP" +msgstr "" + +msgctxt "#30072" +msgid "HTTP password" +msgstr "" + +msgctxt "#30073" +msgid "i2p" +msgstr "" + +msgctxt "#30074" +msgid "Spoof user agent (highly inadvisable)" +msgstr "" + +msgctxt "#30075" +msgid "Default from libtorrent (acceptable)" +msgstr "" + +msgctxt "#30076" +msgid "libtorrent (Rasterbar) 1.1.0" +msgstr "" + +msgctxt "#30077" +msgid "BitTorrent 7.5.0" +msgstr "" + +msgctxt "#30078" +msgid "BitTorrent 7.4.3" +msgstr "" + +msgctxt "#30079" +msgid "µTorrent 3.4.9" +msgstr "" + +msgctxt "#30080" +msgid "µTorrent 3.2.0" +msgstr "" + +msgctxt "#30081" +msgid "µTorrent 2.2.1" +msgstr "" + +msgctxt "#30082" +msgid "Transmission 2.92" +msgstr "" + +msgctxt "#30083" +msgid "Deluge 1.3.6.0" +msgstr "" + +msgctxt "#30084" +msgid "Deluge 1.3.12.0" +msgstr "" + +msgctxt "#30085" +msgid "Vuze 5.7.3.0" +msgstr "" + +msgctxt "#30086" +msgid "Enable tuned storage settings" +msgstr "" + +msgctxt "#30087" +msgid "Ask to delete the files after streaming" +msgstr "" + +msgctxt "#30088" +msgid "Initial buffering timeout (seconds)" +msgstr "" + +msgctxt "#30089" +msgid "Automatically re-scan Kodi library after updates" +msgstr "" + +msgctxt "#30090" +msgid "Listen interfaces" +msgstr "" + +msgctxt "#30091" +msgid "Outgoing interfaces" +msgstr "" + +msgctxt "#30092" +msgid "Use default fanart" +msgstr "" + +msgctxt "#30093" +msgid "Disable notification sound" +msgstr "" + +msgctxt "#30094" +msgid "Disable background progress dialog" +msgstr "" + +msgctxt "#30095" +msgid "Resume playback from library integration" +msgstr "" + +msgctxt "#30096" +msgid "Never" +msgstr "" + +msgctxt "#30097" +msgid "Always" +msgstr "" + +msgctxt "#30098" +msgid "Active torrents only" +msgstr "" + + +# Interface + +msgctxt "#30100" +msgid "Quasar has crashed, restarting..." +msgstr "" + +msgctxt "#30101" +msgid "You must restart Kodi before using Quasar" +msgstr "" + +msgctxt "#30102" +msgid "This add-on can only be run from within Quasar" +msgstr "" + +msgctxt "#30103" +msgid "Unable to find Quasar binary[CR]Required platform:" +msgstr "" + +msgctxt "#30104" +msgid "Insert file or URL" +msgstr "" + +msgctxt "#30105" +msgid "URL" +msgstr "" + +msgctxt "#30106" +msgid "File" +msgstr "" + +msgctxt "#30107" +msgid "Insert URL" +msgstr "" + +msgctxt "#30108" +msgid "File path" +msgstr "" + +msgctxt "#30109" +msgid "OK" +msgstr "" + +msgctxt "#30110" +msgid "Crashed too many times, aborting..." +msgstr "" + +msgctxt "#30111" +msgid "Provider failed too many times, disabling..." +msgstr "" + +msgctxt "#30112" +msgid "Unable to disable provider" +msgstr "" + +msgctxt "#30113" +msgid "Download path not set, check your settings" +msgstr "" + +msgctxt "#30114" +msgid "TheTVDB" +msgstr "" + +msgctxt "#30115" +msgid "TV show scraper used by Kodi library" +msgstr "" + +msgctxt "#30116" +msgid "Looks like Quasar is still starting up, give it a few seconds..." +msgstr "" + +msgctxt "#30117" +msgid "Resolving torrent files..." +msgstr "" + +msgctxt "#30118" +msgid "Scraping trackers..." +msgstr "" + +msgctxt "#30141" +msgid "Please support Quasar development by visiting https://quasar.surge.sh/donate" +msgstr "" + +msgctxt "#30142" +msgid "Default view for menus in Movies" +msgstr "" + +msgctxt "#30143" +msgid "Default view for menus in TV Shows" +msgstr "" + +msgctxt "#30144" +msgid "Default view for movie genres" +msgstr "" + +msgctxt "#30145" +msgid "Default view for TV show genres" +msgstr "" + +msgctxt "#30146" +msgid "Keep downloading?" +msgstr "" + +msgctxt "#30147" +msgid "Caches are still warming up, give it a minute or two..." +msgstr "" + +msgctxt "#30148" +msgid "Caches warmed up" +msgstr "" + +msgctxt "#30149" +msgid "Trakt username not set, check your settings" +msgstr "" + +msgctxt "#30199" +msgid "No available JSON-RPC connection to Kodi.[CR]Enable both Application control options in Service settings / Control and restart Kodi." +msgstr "" + + +# Quasar daemon + +msgctxt "#30200" +msgid "Cache cleared" +msgstr "" + +msgctxt "#30201" +msgid "Search TV Shows" +msgstr "" + +msgctxt "#30202" +msgid "Choose stream..." +msgstr "" + +msgctxt "#30203" +msgid "Show information" +msgstr "" + +msgctxt "#30204" +msgid "Unable to find any providers" +msgstr "" + +msgctxt "#30205" +msgid "No links were found" +msgstr "" + +msgctxt "#30206" +msgid "Search Movies" +msgstr "" + +msgctxt "#30207" +msgid "Not enough space available on the download path." +msgstr "" + +msgctxt "#30208" +msgid "Quasar daemon has started" +msgstr "" + +msgctxt "#30209" +msgid "Search" +msgstr "" + +msgctxt "#30210" +msgid "Most Popular" +msgstr "" + +msgctxt "#30211" +msgid "Top Rated" +msgstr "" + +msgctxt "#30212" +msgid "Most Voted" +msgstr "" + +msgctxt "#30213" +msgid "IMDB Top 250" +msgstr "" + +msgctxt "#30214" +msgid "Movies" +msgstr "" + +msgctxt "#30215" +msgid "TV Shows" +msgstr "" + +msgctxt "#30216" +msgid "Add Torrent" +msgstr "" + +msgctxt "#30217" +msgid "Paste Magnet or URL" +msgstr "" + +msgctxt "#30218" +msgid "Next page" +msgstr "" + +msgctxt "#30219" +msgid "Add / Remove from library" +msgstr "" + +msgctxt "#30220" +msgid "Library path not set" +msgstr "" + +msgctxt "#30221" +msgid "Item successfully added to library" +msgstr "" + +msgctxt "#30222" +msgid "Item removed from library" +msgstr "" + +msgctxt "#30223" +msgid "Files" +msgstr "" + +msgctxt "#30224" +msgid "Provider error" +msgstr "" + +msgctxt "#30225" +msgid "Navigation error" +msgstr "" + +msgctxt "#30226" +msgid "Daemon error" +msgstr "" + +msgctxt "#30227" +msgid "Error updating Quasar daemon" +msgstr "" + +msgctxt "#30228" +msgid "Available streams for" +msgstr "" + +msgctxt "#30229" +msgid "Torrents" +msgstr "" + +msgctxt "#30230" +msgid "Play / resume torrent" +msgstr "" + +msgctxt "#30231" +msgid "Pause torrent" +msgstr "" + +msgctxt "#30232" +msgid "Delete torrent" +msgstr "" + +msgctxt "#30233" +msgid "Pause session" +msgstr "" + +msgctxt "#30234" +msgid "Resume session" +msgstr "" + +msgctxt "#30235" +msgid "Resume torrent" +msgstr "" + +msgctxt "#30236" +msgid "Recently Released" +msgstr "" + +msgctxt "#30237" +msgid "Recent Shows" +msgstr "" + +msgctxt "#30238" +msgid "Recent Episodes" +msgstr "" + +msgctxt "#30239" +msgid "Providers" +msgstr "" + +msgctxt "#30240" +msgid "Enable" +msgstr "" + +msgctxt "#30241" +msgid "Disable" +msgstr "" + +msgctxt "#30242" +msgid "Check" +msgstr "" + +msgctxt "#30243" +msgid "Provider failures" +msgstr "" + +msgctxt "#30244" +msgid "Provider settings" +msgstr "" + +msgctxt "#30245" +msgid "Popular on Trakt" +msgstr "" + +msgctxt "#30246" +msgid "Trending" +msgstr "" + +msgctxt "#30247" +msgid "Most Played" +msgstr "" + +msgctxt "#30248" +msgid "Most Watched" +msgstr "" + +msgctxt "#30249" +msgid "Most Collected" +msgstr "" + +msgctxt "#30250" +msgid "Most Anticipated" +msgstr "" + +msgctxt "#30251" +msgid "Box Office" +msgstr "" + +msgctxt "#30252" +msgid "Add to library" +msgstr "" + +msgctxt "#30253" +msgid "Remove from library" +msgstr "" + +msgctxt "#30254" +msgid "Watchlist" +msgstr "" + +msgctxt "#30255" +msgid "Add to watchlist" +msgstr "" + +msgctxt "#30256" +msgid "Remove from watchlist" +msgstr "" + +msgctxt "#30257" +msgid "Collection" +msgstr "" + +msgctxt "#30258" +msgid "Add to collection" +msgstr "" + +msgctxt "#30259" +msgid "Remove from collection" +msgstr "" + +msgctxt "#30260" +msgid "A torrent was previously chosen, use it?" +msgstr "" + +msgctxt "#30261" +msgid "Search history" +msgstr "" + +msgctxt "#30262" +msgid "Use search history?" +msgstr "" + +msgctxt "#30263" +msgid "Lists" +msgstr "" + +msgctxt "#30264" +msgid "Reset clearances" +msgstr "" + +msgctxt "#30265" +msgid "Item already in library" +msgstr "" + +msgctxt "#30266" +msgid "Ignore duplicates" +msgstr "" + +msgctxt "#30267" +msgid "Keep downloaded files?" +msgstr "" + +msgctxt "#30268" +msgid "Toggle watched" +msgstr "" + +msgctxt "#30269" +msgid "Delete downloaded files?" +msgstr "" + +msgctxt "#30270" +msgid "Match found in your active torrents, play it?" +msgstr "" + +msgctxt "#30271" +msgid "There is now an official multi-provider for Quasar called [COLOR FFFF6B00]Burst[/COLOR], would you like to install it now?" +msgstr "" + +msgctxt "#30272" +msgid "Installation successful, enjoy Quasar [COLOR FFFF6B00]Burst[/COLOR]!" +msgstr "" + +msgctxt "#30273" +msgid "Shoot... It looks like we couldn't install [COLOR FFFF6B00]Burst[/COLOR] automatically, head over to the Quasar Repository, then under the Program add-ons section to install it." +msgstr "" + +msgctxt "#30274" +msgid "Enable all" +msgstr "" + +msgctxt "#30275" +msgid "Disable all" +msgstr "" + +msgctxt "#30276" +msgid "Delete torrent and files" +msgstr "" + +msgctxt "#30277" +msgid "%s added to library, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "" + +msgctxt "#30278" +msgid "%s removed from library, do you want to clean it?[CR]You can later use Kodi's 'Clean library' feature instead." +msgstr "" + +msgctxt "#30279" +msgid "Watchlist added to library" +msgstr "" + +msgctxt "#30280" +msgid "Collection added to library" +msgstr "" + +msgctxt "#30281" +msgid "List added to library" +msgstr "" + +msgctxt "#30282" +msgid "Nothing left to remove from Quasar" +msgstr "" + +msgctxt "#30283" +msgid "Merge to library" +msgstr "" + +msgctxt "#30284" +msgid "Show unaired seasons" +msgstr "" + +msgctxt "#30285" +msgid "Show unaired episodes" +msgstr "" + +msgctxt "#30286" +msgid "%s merged to library, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "" + +msgctxt "#30287" +msgid "%s already in library" +msgstr "" + +msgctxt "#30288" +msgid "Library updated, do you want to rescan it?[CR]You can later use Kodi's 'Update library' feature instead." +msgstr "" + +msgctxt "#30289" +msgid "Genres" +msgstr "" + +msgctxt "#30290" +msgid "Calendars" +msgstr "" + +msgctxt "#30291" +msgid "My Movies" +msgstr "" + +msgctxt "#30292" +msgid "My Releases" +msgstr "" + +msgctxt "#30293" +msgid "All Movies" +msgstr "" + +msgctxt "#30294" +msgid "All Releases" +msgstr "" + +msgctxt "#30295" +msgid "My Shows" +msgstr "" + +msgctxt "#30296" +msgid "My New Shows" +msgstr "" + +msgctxt "#30297" +msgid "My Premieres" +msgstr "" + +msgctxt "#30298" +msgid "All Shows" +msgstr "" + +msgctxt "#30299" +msgid "All New Shows" +msgstr "" + +msgctxt "#30300" +msgid "All Premieres" +msgstr "" + +msgctxt "#30301" +msgid "Move finished downloads to separate folders" +msgstr "" + +msgctxt "#30302" +msgid "Files will only be moved after seeding is finished (see[CR]" +"- BitTorrent settings), and will wait if currently playing" +msgstr "" + +msgctxt "#30303" +msgid "RAR archive detected. Download will need to be completed before" +" playback can start and will require around twice the amount of" +" space, continue?" +msgstr "" + +msgctxt "#30304" +msgid "Error creating output pipe for 'unrar' command" +msgstr "" + +msgctxt "#30305" +msgid "Error starting 'unrar' command" +msgstr "" + +msgctxt "#30306" +msgid "Error waiting for 'unrar' command" +msgstr "" + +msgctxt "#30307" +msgid "Error reading from destination folder" +msgstr "" + +msgctxt "#30308" +msgid "Move completed" +msgstr "" diff --git a/resources/screenshots/home.jpg b/resources/screenshots/home.jpg new file mode 100644 index 000000000..1239223ba Binary files /dev/null and b/resources/screenshots/home.jpg differ diff --git a/resources/screenshots/movies.jpg b/resources/screenshots/movies.jpg new file mode 100644 index 000000000..ffb31d049 Binary files /dev/null and b/resources/screenshots/movies.jpg differ diff --git a/resources/screenshots/webui.png b/resources/screenshots/webui.png new file mode 100644 index 000000000..90abc4e04 Binary files /dev/null and b/resources/screenshots/webui.png differ diff --git a/resources/settings.xml b/resources/settings.xml index c6dfcddfb..8d1112b8f 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -1,14 +1,118 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/site-packages/bjsonrpc/__init__.py b/resources/site-packages/bjsonrpc/__init__.py index 1eeb9b823..2370b35a1 100644 --- a/resources/site-packages/bjsonrpc/__init__.py +++ b/resources/site-packages/bjsonrpc/__init__.py @@ -1,8 +1,7 @@ - # Copyright (c) 2010 David Martinez Marti # All rights reserved. # -# Licensed under 3-clause BSD License. +# Licensed under 3-clause BSD License. # See LICENSE.txt for the full license text. @@ -13,7 +12,7 @@ """Release number of the library as a string with the format X.Y.Z""" -__all__ = [ +__all__ = [ # NOQA "createserver", "connect", "server", @@ -26,17 +25,16 @@ ] bjsonrpc_options = { - 'threaded' : False + 'threaded': False } """ -Dictionary with global options for the library. +Dictionary with global options for the library. **threaded** - (Default: False) When is set to True, threads will be created for handling + (Default: False) When is set to True, threads will be created for handling each incoming item. """ - from bjsonrpc.main import createserver, connect import bjsonrpc.server @@ -45,5 +43,4 @@ import bjsonrpc.handlers import bjsonrpc.proxies import bjsonrpc.jsonlib -import bjsonrpc.exceptions - +import bjsonrpc.exceptions # NOQA diff --git a/resources/site-packages/bjsonrpc/connection.py b/resources/site-packages/bjsonrpc/connection.py index b39f75484..a4342318d 100644 --- a/resources/site-packages/bjsonrpc/connection.py +++ b/resources/site-packages/bjsonrpc/connection.py @@ -34,9 +34,11 @@ # Local changes: import errno -import logging import inspect -import socket, traceback, sys, threading +import socket +import traceback +import sys +import threading from types import MethodType, FunctionType from bjsonrpc.proxies import Proxy @@ -47,9 +49,7 @@ import bjsonrpc.jsonlib as json import select - -_log = logging.getLogger(__name__) - +from quasar.logger import log as _log class RemoteObject(object): """ @@ -144,8 +144,7 @@ def close(self): return self._close() - -class Connection(object): # TODO: Split this class in simple ones +class Connection(object): # TODO: Split this class in simple ones """ Represents a communiation tunnel between two parties. @@ -179,13 +178,13 @@ class Connection(object): # TODO: Split this class in simple ones """ _maxtimeout = { - 'read' : 60, # default maximum read timeout. - 'write' : 60, # default maximum write timeout. + 'read': 60, # default maximum read timeout. + 'write': 60, # default maximum write timeout. } _SOCKET_COMM_ERRORS = (errno.ECONNABORTED, errno.ECONNREFUSED, - errno.ECONNRESET, errno.ENETDOWN, - errno.ENETRESET, errno.ENETUNREACH) + errno.ECONNRESET, errno.ENETDOWN, + errno.ENETRESET, errno.ENETUNREACH) call = None method = None @@ -231,8 +230,7 @@ def getmaxtimeout(cls, operation): return cls._maxtimeout[operation] - - def __init__(self, sck, address = None, handler_factory = None): + def __init__(self, sck, address=None, handler_factory=None): self._debug_socket = False self._debug_dispatch = False self._buffer = b'' @@ -352,11 +350,11 @@ def dump_object(self, obj): """ # object of unknown type - if type(obj) is FunctionType or type(obj) is MethodType : + if type(obj) is FunctionType or type(obj) is MethodType: conn = getattr(obj, '_conn', None) if conn != self: raise TypeError("Tried to serialize as JSON a handler for " - "another connection!") + "another connection!") return self._dump_functionreference(obj) if not isinstance(obj, object): @@ -365,7 +363,7 @@ def dump_object(self, obj): if not hasattr(obj, '__class__'): raise TypeError("JSON objects must be instances, not types") - if obj.__class__.__name__ == 'Decimal': # Probably is just a float. + if obj.__class__.__name__ == 'Decimal': # Probably is just a float. return float(obj) if isinstance(obj, RemoteObject): @@ -375,15 +373,15 @@ def dump_object(self, obj): return self._dump_remoteobject(obj) raise TypeError("Python object %s laks a 'get_method' and " - "is not serializable!" % repr(obj)) + "is not serializable!" % repr(obj)) def _dump_functionreference(self, obj): """ Converts obj to a JSON hinted-class functionreference""" - return { '__functionreference__' : obj.__name__ } + return {'__functionreference__': obj.__name__} def _dump_objectreference(self, obj): """ Converts obj to a JSON hinted-class objectreference""" - return { '__objectreference__' : obj.name } + return {'__objectreference__': obj.name} def _dump_remoteobject(self, obj): """ @@ -405,14 +403,14 @@ def _dump_remoteobject(self, obj): instancename = "%s_%04x" % (classname.lower(), self.get_id()) self._objects[instancename] = obj obj.__remoteobjects__[self] = instancename - return { '__remoteobject__' : instancename } + return {'__remoteobject__': instancename} def _format_exception(self, obj, method, args, kw, exc): etype, evalue, etb = exc funargs = ", ".join( [repr(x) for x in args] + ["%s=%r" % (k, kw[k]) for k in kw] - ) + ) if len(funargs) > 40: funargs = funargs[:37] + "..." @@ -420,13 +418,12 @@ def _format_exception(self, obj, method, args, kw, exc): obj.__class__.__module__, obj.__class__.__name__, method, - funargs - ) - _log.debug("\n".join([ "%s::%s:%d %s" % ( + funargs) + _log.debug("\n".join(["%s::%s:%d %s" % ( filename, fnname, lineno, srcline) for filename, lineno, fnname, srcline - in traceback.extract_tb(etb)[1:] ])) + in traceback.extract_tb(etb)[1:]])) _log.error("Unhandled error: %s: %s", etype.__name__, evalue) del etb return '%s: %s' % (etype.__name__, evalue) @@ -453,7 +450,7 @@ def _extract_params(self, request): return req_method, req_args, req_kwargs def _find_object(self, req_method, req_args, req_kwargs): - if '.' in req_method: # local-object. + if '.' in req_method: # local-object. objectname, req_method = req_method.split('.')[:2] if objectname not in self._objects: raise ValueError("Invalid object identifier") @@ -490,12 +487,13 @@ def dispatch_until_empty(self): any more messages that can be processed, it returns. """ ready_to_read = select.select( - [self._sck], # read - [], [], # write, errors - 0 # timeout - )[0] + [self._sck], # read + [], [], # write, errors + 0 # timeout + )[0] - if not ready_to_read: return 0 + if not ready_to_read: + return 0 newline_idx = 0 count = 0 @@ -528,7 +526,7 @@ def read_and_dispatch(self, timeout=None, thread=True, condition=None): self.reading_event.set() try: if condition: - if condition() == False: + if condition() is False: return False if thread: dispatch_item = self.dispatch_item_threaded @@ -540,16 +538,16 @@ def read_and_dispatch(self, timeout=None, thread=True, condition=None): return False try: item = json.loads(data, self) - if type(item) is list: # batch call + if type(item) is list: # batch call for i in item: dispatch_item(i) - elif type(item) is dict: # std call + elif type(item) is dict: # std call if 'result' in item: self.dispatch_item_single(item) else: dispatch_item(item) - else: # Unknown format :-( - _log.debug("Received message with unknown format type: %s" , type(item)) + else: # Unknown format :-( + _log.debug("Received message with unknown format type: %s", type(item)) return False except Exception: _log.debug(traceback.format_exc()) @@ -565,7 +563,7 @@ def dispatch_item_threaded(self, item): each item received and returns without blocking. """ if self.threaded: - th1 = threading.Thread(target = self.dispatch_item_single, args = [ item ] ) + th1 = threading.Thread(target=self.dispatch_item_single, args=[item]) th1.start() return True else: @@ -579,9 +577,8 @@ def _send(self, response): _log.error("An unexpected error ocurred when trying to create the message: %r", e) response = { 'result': None, - 'error': "InternalServerError: " + repr(e), - 'id': item['id'] - } + 'error': "InternalServerError: " + repr(e) + } txtResponse = json.dumps(response, self) try: self.write(txtResponse) @@ -591,12 +588,12 @@ def _send(self, response): def _send_response(self, item, response): if item.get('id') is not None: - ret = { 'result': response, 'error': None, 'id': item['id'] } + ret = {'result': response, 'error': None, 'id': item['id']} self._send(ret) def _send_error(self, item, err): if item.get('id') is not None: - ret = { 'result': None, 'error': err, 'id': item['id'] } + ret = {'result': None, 'error': err, 'id': item['id']} self._send(ret) def dispatch_item_single(self, item): @@ -610,7 +607,8 @@ def dispatch_item_single(self, item): if 'method' in item: method, args, kw = self._extract_params(item) obj = self._find_object(method, args, kw) - if obj is None: return + if obj is None: + return fn = self._find_method(obj, method, args, kw) try: if inspect.isgeneratorfunction(fn): @@ -661,7 +659,7 @@ def proxy(self, sync_type, name, args, kwargs): else: data['kwparams'] = kwargs - if sync_type == 2: # short-circuit for speed! + if sync_type == 2: # short-circuit for speed! self.write(json.dumps(data, self)) return None @@ -676,13 +674,14 @@ def close(self): """ Close the connection and the socket. """ - if self.connection_status == "closed": return + if self.connection_status == "closed": + return item = { - 'abort' : True, - 'event' : threading.Event() + 'abort': True, + 'event': threading.Event() } self.write_thread_queue.append(item) - self.write_thread_semaphore.release() # notify new item. + self.write_thread_semaphore.release() # notify new item. item['event'].wait(1) if not item['event'].isSet(): _log.warning("write thread doesn't process our abort command") @@ -728,12 +727,12 @@ def write_line(self, data): sbytes = self._sck.send(self._wbuffer) except IOError: _log.debug("Read socket error: IOError (timeout: %r)", - self._sck.gettimeout()) + self._sck.gettimeout()) _log.debug(traceback.format_exc(0)) return 0 except socket.error: _log.debug("Read socket error: socket.error (timeout: %r)", - self._sck.gettimeout()) + self._sck.gettimeout()) _log.debug(traceback.format_exc(0)) return 0 except: @@ -747,8 +746,6 @@ def write_line(self, data): finally: self.write_lock.release() - - def read_line(self): """ Read a line of *data* from socket. It removes the `\\n` at @@ -785,47 +782,47 @@ def settimeout(self, operation, timeout): self._sck.settimeout(timeout) - def write_thread(self): abort = False while not abort: self.write_thread_semaphore.acquire() try: item = self.write_thread_queue.pop(0) - except IndexError: # pop from empty list? + except IndexError: # pop from empty list? _log.warning("write queue was empty??") continue abort = item.get("abort", False) event = item.get("event") - write_data = item.get("write_data") - if write_data: item["result"] = self.write_now(write_data) - if event: event.set() + write_data = item.get("write_data") + if write_data: + item["result"] = self.write_now(write_data) + if event: + event.set() if self._debug_socket: _log.debug("Writing thread finished.") - - def write(self, data, timeout = None): + def write(self, data, timeout=None): item = { - 'write_data' : data + 'write_data': data } self.write_thread_queue.append(item) - self.write_thread_semaphore.release() # notify new item. + self.write_thread_semaphore.release() # notify new item. - def write_now(self, data, timeout = None): + def write_now(self, data, timeout=None): """ Standard function to write to the socket which by default points to write_line """ - #self.scklock.acquire() + # self.scklock.acquire() self.settimeout("write", timeout) ret = None - #try: + # try: ret = self.write_line(data) - #finally: - # self.scklock.release() + # finally: + # self.scklock.release() return ret - def read(self, timeout = None): + def read(self, timeout=None): """ Standard function to read from the socket which by default points to read_line @@ -845,45 +842,45 @@ def _readn(self): """ streambuffer = self._buffer pos = streambuffer.find(b'\n') - #_log.debug("read...") - #retry = 0 + # _log.debug("read...") + # retry = 0 while pos == -1: data = b'' try: data = self._sck.recv(2048) except IOError as inst: _log.debug("Read socket error: IOError%r (timeout: %r)", - inst.args, self._sck.gettimeout()) + inst.args, self._sck.gettimeout()) if inst.errno in (errno.EAGAIN, errno.EWOULDBLOCK): - if self._sck.gettimeout() == 0: # if it was too fast + if self._sck.gettimeout() == 0: # if it was too fast self._sck.settimeout(5) continue - #time.sleep(0.5) - #retry += 1 - #if retry < 10: - # _log.debug("Retry %s", retry) - # continue - #_log.debug(traceback.format_exc(0)) + # time.sleep(0.5) + # retry += 1 + # if retry < 10: + # _log.debug("Retry %s", retry) + # continue + # _log.debug(traceback.format_exc(0)) if inst.errno in self._SOCKET_COMM_ERRORS: raise EofError(len(streambuffer)) return b'' except socket.error as inst: _log.error("Read socket error: socket.error%r (timeout: %r)", - inst.args, self._sck.gettimeout()) - #_log.debug(traceback.format_exc(0)) + inst.args, self._sck.gettimeout()) + # _log.debug(traceback.format_exc(0)) return b'' except: raise if not data: raise EofError(len(streambuffer)) - #_log.debug("readbuf+: %r", data) + # _log.debug("readbuf+: %r", data) streambuffer += data pos = streambuffer.find(b'\n') self._buffer = streambuffer[pos + 1:] streambuffer = streambuffer[:pos] - #_log.debug("read: %r", buffer) + # _log.debug("read: %r", buffer) return streambuffer def serve(self): diff --git a/resources/site-packages/bjsonrpc/exceptions.py b/resources/site-packages/bjsonrpc/exceptions.py index 7f29bcf89..264f2b336 100644 --- a/resources/site-packages/bjsonrpc/exceptions.py +++ b/resources/site-packages/bjsonrpc/exceptions.py @@ -1,8 +1,8 @@ """ bjson/exceptions.py - + Asynchronous Bidirectional JSON-RPC protocol implementation over TCP/IP - + Copyright (c) 2010 David Martinez Marti All rights reserved. @@ -33,7 +33,7 @@ """ class ServerError(Exception): """ - Exception raised whenever an error occurs in the other end handling + Exception raised whenever an error occurs in the other end handling your request. You may create your own versions of this class to send custom exceptions through RPC. """ @@ -41,8 +41,8 @@ class ServerError(Exception): class EofError(Exception): """ - End-of-file error raised whenever the socket reaches the + End-of-file error raised whenever the socket reaches the end of the sream. In normal operation, this error never is sent to the developer. If you get this error, it may be a bug. """ - pass \ No newline at end of file + pass diff --git a/resources/site-packages/bjsonrpc/handlers.py b/resources/site-packages/bjsonrpc/handlers.py index 9b8c4464b..b646a14a8 100644 --- a/resources/site-packages/bjsonrpc/handlers.py +++ b/resources/site-packages/bjsonrpc/handlers.py @@ -33,7 +33,7 @@ """ import re from types import MethodType -from bjsonrpc.exceptions import ServerError +from bjsonrpc.exceptions import ServerError class BaseHandler(object): """ @@ -73,7 +73,7 @@ def getcount(self): return c "_factory", "add_method", "get_method", - ] + ] # List of method names that never should be published @classmethod @@ -100,9 +100,9 @@ def handler_factory(connection): def __init__(self, connection, *args, **kwargs): self._conn = connection - if hasattr(self._conn,"connection"): + if hasattr(self._conn, "connection"): self._conn = self._conn.connection - if hasattr(self._conn,"_conn"): + if hasattr(self._conn, "_conn"): self._conn = self._conn._conn self._methods = {} @@ -112,9 +112,9 @@ def __init__(self, connection, *args, **kwargs): if isinstance(function, MethodType): self.add_method(function) - self._setup(*args,**kwargs) + self._setup(*args, **kwargs) - def _setup(self,*args,**kwargs): + def _setup(self, *args, **kwargs): """ Empty method to ease inheritance. Overload it with your needs, it will be called after __init__. @@ -127,7 +127,7 @@ def _shutdown(self): You should add cleanup code here. Remember to call the parent function. """ - pass # In the future, here we could have some internal clean-up code. + self.close() def close(self): """ @@ -135,6 +135,7 @@ def close(self): manually from connection whenever a handler is going to be deleted. """ self._methods = {} + self._conn = None def add_method(self, *args, **kwargs): """ @@ -177,4 +178,3 @@ class NullHandler(BaseHandler): don't want to publish any function. """ pass - diff --git a/resources/site-packages/bjsonrpc/jsonlib.py b/resources/site-packages/bjsonrpc/jsonlib.py index d19726843..6bc5ef36f 100644 --- a/resources/site-packages/bjsonrpc/jsonlib.py +++ b/resources/site-packages/bjsonrpc/jsonlib.py @@ -1,8 +1,8 @@ """ bjson/jsonlib.py - + Asynchronous Bidirectional JSON-RPC protocol implementation over TCP/IP - + Copyright (c) 2010 David Martinez Marti All rights reserved. @@ -48,17 +48,17 @@ def dumps(argobj, conn): """ ret = None try: - ret = j.dumps(argobj, separators = (',', ':'), default=conn.dump_object) + ret = j.dumps(argobj, separators=(',', ':'), default=conn.dump_object) except TypeError: pprint(argobj) raise - #raise TypeError("The Python object is not serializable to JSON!") + # raise TypeError("The Python object is not serializable to JSON!") return ret def loads(argobj, conn): """ - loads json object using *Connection.load_object* to convert json hinted - objects to real objects. + loads json object using *Connection.load_object* to convert json hinted + objects to real objects. """ ret = None try: @@ -66,6 +66,6 @@ def loads(argobj, conn): except ValueError: pprint(argobj) raise - #raise ValueError("The String object is not a valid JSON data!") - + # raise ValueError("The String object is not a valid JSON data!") + return ret diff --git a/resources/site-packages/bjsonrpc/main.py b/resources/site-packages/bjsonrpc/main.py index 82051423f..28bc8b5dc 100644 --- a/resources/site-packages/bjsonrpc/main.py +++ b/resources/site-packages/bjsonrpc/main.py @@ -1,14 +1,13 @@ """ bjson/main.py - + Copyright (c) 2010 David Martinez Marti All rights reserved. - Licensed under 3-clause BSD License. + Licensed under 3-clause BSD License. See LICENSE.txt for the full license text. """ - import socket import bjsonrpc.server @@ -20,79 +19,72 @@ "connect", ] -def createserver(host="127.0.0.1", port=10123, - handler_factory=bjsonrpc.handlers.NullHandler): +def createserver(host="127.0.0.1", port=10123, handler_factory=bjsonrpc.handlers.NullHandler): """ Creates a *bjson.server.Server* object linked to a listening socket. - + Parameters: - + **host** Address (IP or Host Name) to listen to as in *socket.bind*. - Use "0.0.0.0" to listen to all address. By default this points to + Use "0.0.0.0" to listen to all address. By default this points to 127.0.0.1 to avoid security flaws. - + **port** Port number to bind the socket. In Unix, port numbers less - than 1024 requires special permissions. - + than 1024 requires special permissions. + **handler_factory** Class to instantiate to publish remote functions. - + **(return value)** A *bjson.server.Server* instance or raises an exception. - + Servers are usually created this way:: - + import bjsonrpc - + server = bjsonrpc.createserver("0.0.0.0") server.serve() - + Check :ref:`bjsonrpc.server` documentation """ sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sck.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sck.bind((host, port)) - sck.listen(3) + sck.listen(3) return bjsonrpc.server.Server(sck, handler_factory=handler_factory) - - -def connect(host="127.0.0.1", port=10123, - handler_factory=bjsonrpc.handlers.NullHandler): + + +def connect(host="127.0.0.1", port=10123, handler_factory=bjsonrpc.handlers.NullHandler): """ Creates a *bjson.connection.Connection* object linked to a connected socket. - + Parameters: - + **host** Address (IP or Host Name) to connect to. - + **port** Port number to connect to. - + **handler_factory** - Class to instantiate to publish remote functions to the server. + Class to instantiate to publish remote functions to the server. By default this is *NullHandler* which means that no functions are executable by the server. - + **(return value)** A *bjson.connection.Connection* instance or raises an exception. - + Connections are usually created this way:: - + import bjsonrpc - + conn = bjsonrpc.connect("rpc.host.net") print conn.call.some_method_in_server_side() """ sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sck.connect((host, port)) - return bjsonrpc.connection.Connection(sck, - handler_factory=handler_factory) - - - - + return bjsonrpc.connection.Connection(sck, handler_factory=handler_factory) diff --git a/resources/site-packages/bjsonrpc/proxies.py b/resources/site-packages/bjsonrpc/proxies.py index db8a55ac1..b5611e8d6 100644 --- a/resources/site-packages/bjsonrpc/proxies.py +++ b/resources/site-packages/bjsonrpc/proxies.py @@ -1,10 +1,10 @@ """ bjson/proxies.py - + Copyright (c) 2010 David Martinez Marti All rights reserved. - Licensed under 3-clause BSD License. + Licensed under 3-clause BSD License. See LICENSE.txt for the full license text. """ @@ -14,21 +14,21 @@ class Proxy(object): """ Object that forwards calls to the remote. This class is intended to be instantiated from Connection class. - + Parameters: - + **conn** Connection object to forward calls. - + **sync_type** synchronization type. 0-synchronous. 1-asynchronous. 2-notification. - + **obj** = None - optional. Object name to call their functions, (used to proxy + optional. Object name to call their functions, (used to proxy functions of *RemoteObject*) - + """ - def __init__(self, conn, sync_type, obj = None): + def __init__(self, conn, sync_type, obj=None): self._conn = conn self._obj = obj self.sync_type = sync_type @@ -36,17 +36,16 @@ def __init__(self, conn, sync_type, obj = None): def __getattr__(self, name): if self._obj: name = "%s.%s" % (self._obj, name) - + def function(*args, **kwargs): """ - Decorator-like function that forwards all calls to proxy + Decorator-like function that forwards all calls to proxy method of connection. """ return self._conn.proxy(self.sync_type, name, args, kwargs) - #print name + # print name function.__name__ = str(name) function._conn = self._conn # function.sync_type = self.sync_type - - return function + return function diff --git a/resources/site-packages/bjsonrpc/request.py b/resources/site-packages/bjsonrpc/request.py index 0568cbfcf..37bcb0f82 100644 --- a/resources/site-packages/bjsonrpc/request.py +++ b/resources/site-packages/bjsonrpc/request.py @@ -1,8 +1,8 @@ """ bjson/request.py - + Asynchronous Bidirectional JSON-RPC protocol implementation over TCP/IP - + Copyright (c) 2010 David Martinez Marti All rights reserved. @@ -31,48 +31,46 @@ POSSIBILITY OF SUCH DAMAGE. """ - try: from Queue import Queue except ImportError: from queue import Queue -import logging + from threading import Event import traceback from bjsonrpc.exceptions import ServerError import bjsonrpc.jsonlib as json - -_log = logging.getLogger(__name__) +from quasar.logger import log as _log class Request(object): """ Represents a request to the other end which may be not be completed yet. This class is automatically created by *method* Proxy. - + Parameters: - + **conn** - Connection instance which this Request belongs to. + Connection instance which this Request belongs to. (internally stored as Request.conn) - - **request_data** + + **request_data** Dictionary object to serialize as JSON to send to the other end. (internally stored as Request.data) - - + + Attributes: - + **responses** Queue of JSON Objects of the response, each as a dictionary. If - no response has been received, this is empty. - + no response has been received, this is empty. + **event_response** - A threading.Event object, which is set to true when a response has + A threading.Event object, which is set to true when a response has been received. Useful to wake up threads or to wait exactly until the response is received. - + **callbacks** List array where the developer can append functions to call when the response is received. The function will get the Request object @@ -82,7 +80,7 @@ class Request(object): Number of ID that identifies the call. For notifications this is None. Be careful because it may be not an integer. Strings and other objects may be valid for other implementations. - + """ def __init__(self, conn, request_data): self.conn = conn @@ -94,59 +92,60 @@ def __init__(self, conn, request_data): self.thread_wait = self.event_response.wait self.request_id = None self.auto_close = False - if 'id' in self.data: + if 'id' in self.data: self.request_id = self.data['id'] - + if self.request_id: self.auto_close = True self.conn.addrequest(self) - + data = json.dumps(self.data, self.conn) self.conn.write(data) - + def hasresponse(self): """ Method thet checks if there's a response or not. Returns True if there it is or False if it haven't arrived yet. """ - if not self.responses.empty(): return True + if not self.responses.empty(): + return True self.conn.dispatch_until_empty() return not self.responses.empty() - + def setresponse(self, value): """ Method used by Connection instance to tell Request that a Response - is available to this request. - + is available to this request. + Parameters: - + **value** Value (JSON decoded) received from socket. """ self.responses.put(value) - for callback in self.callbacks: + for callback in self.callbacks: try: callback(self) except Exception as exc: _log.error("Error on callback: %r", exc) _log.debug(traceback.format_exc()) - - self.event_response.set() # helper for threads. + + self.event_response.set() # helper for threads. if self.auto_close: self.close() - + def wait(self): """ Block until there is a response. Will manage the socket and dispatch messages until the response is found. """ - #if self.response is None: - # self.conn.read_ensure_thread() - + # if self.response is None: + # self.conn.read_ensure_thread() + while self.responses.empty(): self.conn.read_and_dispatch(condition=lambda: self.responses.empty()) - + def __call__(self): return self.value @@ -166,20 +165,20 @@ def close(self): def __del__(self): self.close() - + @property def value(self): """ Property to get value response. If the response is not available, it waits to it (see *wait* method). If the response contains an Error, this method raises *exceptions.ServerError* with the error text inside. - + From version 0.2.0 you can also call the class itself to get the value:: - + req_stime = rpcconn.method.getServerTime() - print req_stime.value + print req_stime.value print req_stime() # equivalent to the prior line. - + """ self.wait() response = self.responses.get() diff --git a/resources/site-packages/bjsonrpc/server.py b/resources/site-packages/bjsonrpc/server.py index 7b7fab884..9ed0c239c 100644 --- a/resources/site-packages/bjsonrpc/server.py +++ b/resources/site-packages/bjsonrpc/server.py @@ -31,7 +31,9 @@ POSSIBILITY OF SUCH DAMAGE. """ -import socket, select +import xbmc +import socket +import select from bjsonrpc.connection import Connection from bjsonrpc.exceptions import EofError @@ -70,7 +72,7 @@ def stop(self): """ self._serve = False - def debug_socket(self, value = None): + def debug_socket(self, value=None): """ Sets or retrieves the internal debug_socket value. @@ -86,7 +88,7 @@ def debug_socket(self, value = None): return retval - def debug_dispatch(self, value = None): + def debug_dispatch(self, value=None): """ Sets or retrieves the internal debug_dispatch value. @@ -102,9 +104,6 @@ def debug_dispatch(self, value = None): return ret - def _do_serve(self): - return self._serve - def serve(self): """ Starts the forever-serving loop. This function only exits when an @@ -120,21 +119,21 @@ def serve(self): sockets = [] connections = [] connidx = {} - while self._do_serve(): + while not xbmc.abortRequested: try: ready_to_read = select.select( - [self._lstsck]+sockets, # read - [], [], # write, errors - 1 # timeout - )[0] + [self._lstsck] + sockets, # read + [], [], # write, errors + 1 # timeout + )[0] except Exception: # Probably a socket is no longer valid. - a = self._lstsck.fileno() # if this is not valid, raise Exception, exit. + a = self._lstsck.fileno() # if this is not valid, raise Exception, exit. newsockets = [] for sck in sockets: try: - a = sck.fileno() - h = sck.getpeername() + a = sck.fileno() # NOQA + h = sck.getpeername() # NOQA except Exception: continue newsockets.append(sck) @@ -148,9 +147,9 @@ def serve(self): sockets.append(clientsck) conn = Connection( - sck = clientsck, address = clientaddr, - handler_factory = self._handler - ) + sck=clientsck, address=clientaddr, + handler_factory=self._handler + ) connidx[clientsck.fileno()] = conn conn._debug_socket = self._debug_socket conn._debug_dispatch = self._debug_socket @@ -170,8 +169,7 @@ def serve(self): conn.close() sockets.remove(conn.socket) connections.remove(conn) - #print "Closing client conn." - + # print "Closing client conn." finally: for conn in connections: diff --git a/resources/site-packages/bjsonrpc/varsync/__init__.py b/resources/site-packages/bjsonrpc/varsync/__init__.py index 1f831bf13..db6f7b257 100644 --- a/resources/site-packages/bjsonrpc/varsync/__init__.py +++ b/resources/site-packages/bjsonrpc/varsync/__init__.py @@ -3,44 +3,44 @@ """ Variables Syncronized over json-rpc at both ends. - + This package has several datatypes to ease variable-sharing across peers. - + Proposed Utils: - + * FIFOBuffer: streams lists of bytes/numbers/etc over network. - - + + Proposed Types: - + * FloatSync: floating point number synced over network - - sync_mode: fixed master-slave, dynamic master-slave, + - sync_mode: fixed master-slave, dynamic master-slave, queued master-master - get, set(value) - apply(operator, value) -- sum 3, mult 1.5, set 6 ... - addcallback(fn), removecallback(fn) - + * TupleSync: Tuple synced over network - - sync_mode: fixed master-slave, dynamic master-slave, + - sync_mode: fixed master-slave, dynamic master-slave, queued master-master - get, set(value) - addcallback(fn), removecallback(fn) - + * StringSync: (small) String synced over network - - sync_mode: fixed master-slave, dynamic master-slave, + - sync_mode: fixed master-slave, dynamic master-slave, queued master-master - get, set(value) - addcallback(fn), removecallback(fn) - + * DictSync: dict of elements synced over network - - sync_mode: fixed master-slave, dynamic master-slave, + - sync_mode: fixed master-slave, dynamic master-slave, queued master-master - get(x), set(x,value) - - apply(x, operator, value) + - apply(x, operator, value) - addcallback(fn), removecallback(fn) * ListSync: list of elements synced over network. - - sync_mode: fixed master-slave, dynamic master-slave, + - sync_mode: fixed master-slave, dynamic master-slave, queued master-master - primary_key: index, full-item, dict-column, list-index - item_style: single-object, list, dict @@ -49,6 +49,6 @@ - remove(x),pop(x) - update(x,value) - addcallback(fn), removecallback(fn) - -""" \ No newline at end of file + +""" diff --git a/resources/site-packages/pulsar/addon.py b/resources/site-packages/pulsar/addon.py deleted file mode 100644 index d23755e5a..000000000 --- a/resources/site-packages/pulsar/addon.py +++ /dev/null @@ -1,4 +0,0 @@ -import xbmcaddon - - -ADDON = xbmcaddon.Addon() diff --git a/resources/site-packages/pulsar/config.py b/resources/site-packages/pulsar/config.py deleted file mode 100644 index 6b3f33b04..000000000 --- a/resources/site-packages/pulsar/config.py +++ /dev/null @@ -1,2 +0,0 @@ -JSONRPC_EXT_PORT = 9091 -PULSARD_HOST = "http://localhost:10001" diff --git a/resources/site-packages/pulsar/daemon.py b/resources/site-packages/pulsar/daemon.py deleted file mode 100644 index 1695f80cf..000000000 --- a/resources/site-packages/pulsar/daemon.py +++ /dev/null @@ -1,93 +0,0 @@ -import sys -import subprocess -import os -import signal -import stat -import xbmc -import xbmcaddon -import urllib2 -import threading -import time -from pulsar.config import PULSARD_HOST -from pulsar.platform import PLATFORM -from pulsar.util import notify - - -SW_HIDE = 0 -STARTF_USESHOWWINDOW = 1 - - -def ensure_exec_perms(file_): - st = os.stat(file_) - os.chmod(file_, st.st_mode | stat.S_IEXEC) - return file_ - - -def android_get_current_appid(): - uid = os.getuid() - with open("/proc/%d/cmdline", uid) as fp: - return fp.read().rstrip() - - -def get_pulsar_binary(): - binary = "pulsar" + (PLATFORM["os"] == "windows" and ".exe" or "") - - platform = PLATFORM.copy() - if platform["os"] == "darwin": # 64 bits anyway on Darwin - platform["arch"] = "x64" - elif platform["os"] == "windows": # 32 bits anyway on Windows - platform["arch"] = "x86" - - binary_dir = os.path.join(os.path.dirname(__file__), "..", "..", "bin", "%(os)s_%(arch)s" % platform) - binary_path = os.path.join(binary_dir, binary) - - # On Android, we need to copy pulsard to ext4, since the sdcard is noexec - if platform["os"] == "android": - app_id = android_get_current_appid() - xbmc_data_path = os.path.join("/data", "data", app_id) - if os.path.exists(xbmc_data_path) and uid == os.stat(xbmc_data_path).st_uid: - android_binary_dir = os.path.join(xbmc_data_path, "files", ADDON.getAddonInfo("id")) - - if not os.path.exists(android_binary_dir): - os.makedirs(android_binary_dir) - android_binary_path = os.path.join(android_binary_dir, binary) - # Testing for size to see if update is needed. This is a poor test indeed, but it's sufficient. - if not os.path.exists(android_binary_path) or os.path.getsize(android_binary_path) != os.path.getsize(binary_path): - import shutil - shutil.copy2(binary_path, android_binary_path) - binary_path = android_binary_path - binary_dir = android_binary_dir - - return binary_dir, ensure_exec_perms(binary_path) - - -def start_pulsard(**kwargs): - pulsar_dir, pulsar_binary = get_pulsar_binary() - args = [pulsar_binary] - kwargs["cwd"] = pulsar_dir - if PLATFORM["os"] == "windows": - si = subprocess.STARTUPINFO() - si.dwFlags = STARTF_USESHOWWINDOW - si.wShowWindow = SW_HIDE - kwargs["startupinfo"] = si - return subprocess.Popen(args, **kwargs) - - -def wait_for_abortRequested(proc): - while not xbmc.abortRequested: - time.sleep(1) - xbmc.log("pulsard: exiting pulsard daemon") - proc.terminate() - xbmc.log("pulsard: pulsard daemon exited") - - -def pulsard_thread(): - while not xbmc.abortRequested: - xbmc.log("pulsard: starting pulsard") - proc = start_pulsard(stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - threading.Thread(target=wait_for_abortRequested, args=[proc]).start() - while proc.poll() is None: - xbmc.log(proc.stdout.readline()) - if proc.returncode == 0 or xbmc.abortRequested: - break - notify("Pulsar has crashed, restarting...", time=1000) diff --git a/resources/site-packages/pulsar/main.py b/resources/site-packages/pulsar/main.py deleted file mode 100644 index be13930a8..000000000 --- a/resources/site-packages/pulsar/main.py +++ /dev/null @@ -1,25 +0,0 @@ -import threading -import xbmc -from pulsar.rpc import server_thread -from pulsar.monitor import PulsarMonitor -from pulsar.daemon import pulsard_thread - - -def main(): - # Make sure the XBMC jsonrpc server is started. - xbmc.startServer(xbmc.SERVER_JSONRPCSERVER, True) - - # Start the JSONRPC thread - threading.Thread(target=server_thread).start() - - # Start the Pulsard thread - threading.Thread(target=pulsard_thread).start() - - # Get the monitor - monitor = PulsarMonitor() - - # XBMC loop - while not xbmc.abortRequested: - xbmc.sleep(1000) - - xbmc.log("pulsar: exiting pulsard") diff --git a/resources/site-packages/pulsar/monitor.py b/resources/site-packages/pulsar/monitor.py deleted file mode 100644 index cbf275f50..000000000 --- a/resources/site-packages/pulsar/monitor.py +++ /dev/null @@ -1,11 +0,0 @@ -import xbmc -import urllib2 -from pulsar.config import PULSARD_HOST - - -class PulsarMonitor(xbmc.Monitor): - def onSettingsChanged(self): - try: - urllib2.urlopen("%s/reload" % PULSARD_HOST) - except: - pass diff --git a/resources/site-packages/pulsar/platform.py b/resources/site-packages/pulsar/platform.py deleted file mode 100644 index 0a12053db..000000000 --- a/resources/site-packages/pulsar/platform.py +++ /dev/null @@ -1,30 +0,0 @@ -import xbmc -import sys - - -def get_platform(): - ret = { - "arch": sys.maxsize > 2**32 and "x64" or "x86", - } - if xbmc.getCondVisibility("system.platform.android"): - ret["os"] = "android" - if "arm" in os.uname()[4]: - ret["arch"] = "arm" - elif xbmc.getCondVisibility("system.platform.linux"): - ret["os"] = "linux" - if "arm" in os.uname()[4]: - ret["arch"] = "arm" - elif xbmc.getCondVisibility("system.platform.xbox"): - system_platform = "xbox" - ret["arch"] = "" - elif xbmc.getCondVisibility("system.platform.windows"): - ret["os"] = "windows" - elif xbmc.getCondVisibility("system.platform.osx"): - ret["os"] = "darwin" - elif xbmc.getCondVisibility("system.platform.ios"): - ret["os"] = "ios" - ret["arch"] = "arm" - return ret - - -PLATFORM = get_platform() diff --git a/resources/site-packages/pulsar/rpc.py b/resources/site-packages/pulsar/rpc.py deleted file mode 100644 index 84577bac7..000000000 --- a/resources/site-packages/pulsar/rpc.py +++ /dev/null @@ -1,98 +0,0 @@ -import xbmc -import xbmcaddon -import xbmcgui -import xbmcplugin -import bjsonrpc -import platform -from bjsonrpc.handlers import BaseHandler -from pulsar.addon import ADDON -from pulsar.config import JSONRPC_EXT_PORT -from pulsar.platform import PLATFORM - - -XBMC_PLAYER = xbmc.Player() - - -class PulsarRPCServer(BaseHandler): - public_methods_pattern = r'^[A-Za-z]\w+$' - - _objects = {} - - def Reset(self): - self._objects = {} - - def Keyboard(self, default="", heading="", hidden=False): - keyboard = xbmc.Keyboard(default, heading, hidden) - keyboard.doModal() - if keyboard.isConfirmed(): - return keyboard.getText() - - def Dialog_Select(self, title, items): - dialog = xbmcgui.Dialog() - return dialog.select(title, items) - - def Player_IsPlaying(self, *args, **kwargs): - return XBMC_PLAYER.isPlaying(*args, **kwargs) - - def GetPlatform(): - return PLATFORM - - def GetAddonInfo(self): - info = {} - for key in ("author", "changelog", "description", "disclaimer", - "fanart", "icon", "id", "name", "path", "profile", "stars", - "summary", "type", "version"): - info[key] = ADDON.getAddonInfo(key) - return info - - def GetSetting(self, *args, **kwargs): - return ADDON.getSetting(*args, **kwargs) - - def SetSetting(self, *args, **kwargs): - return ADDON.setSetting(*args, **kwargs) - - def TranslatePath(self, *args, **kwargs): - return xbmc.translatePath(*args, **kwargs) - - def Log(self, *args, **kwargs): - return xbmc.log(*args, **kwargs) - - ########################################################################### - # DialogProgress - ########################################################################### - def DialogProgress_Create(self, *args, **kwargs): - dialog = xbmcgui.DialogProgress() - self._objects[id(dialog)] = dialog - dialog.create(*args, **kwargs) - return id(dialog) - - def DialogProgress_IsCanceled(self, hwnd, *args, **kwargs): - return self._objects[hwnd].iscanceled(*args, **kwargs) - - def DialogProgress_Update(self, hwnd, *args, **kwargs): - return self._objects[hwnd].update(*args, **kwargs) - - def DialogProgress_Close(self, hwnd, *args, **kwargs): - dialog = self._objects.pop(hwnd) - dialog.close() - del dialog - - def __del__(self): - for hwnd, obj in self._objects.items(): - if isinstance(obj, xbmc.Dialog) or isinstance(obj, xbmc.DialogProgress): - obj.close() - - -def server_thread(): - import xbmc - import bjsonrpc - try: - s = bjsonrpc.createserver(port=JSONRPC_EXT_PORT, handler_factory=PulsarRPCServer) - s._do_serve = lambda: (not xbmc.abortRequested) - xbmc.log("pulsar: starting jsonrpc service") - s.serve() - xbmc.log("pulsar: exiting jsonrpc service") - except Exception, e: - import traceback - map(xbmc.log, traceback.format_exc().split("\n")) - raise diff --git a/resources/site-packages/pulsar/util.py b/resources/site-packages/pulsar/util.py deleted file mode 100644 index 9ae58f630..000000000 --- a/resources/site-packages/pulsar/util.py +++ /dev/null @@ -1,9 +0,0 @@ -import xbmc -from pulsar.addon import ADDON - - -def notify(message='', header=None, time=5000, image=''): - if header is None: - header = ADDON.getAddonInfo("name") - xbmc.executebuiltin('Notification("%s", "%s", "%d", "%s")' % - (header, message, time, image)) diff --git a/resources/site-packages/pulsar/__init__.py b/resources/site-packages/quasar/__init__.py similarity index 100% rename from resources/site-packages/pulsar/__init__.py rename to resources/site-packages/quasar/__init__.py diff --git a/resources/site-packages/quasar/addon.py b/resources/site-packages/quasar/addon.py new file mode 100644 index 000000000..7f09130b8 --- /dev/null +++ b/resources/site-packages/quasar/addon.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +import os +import sys +import xbmcaddon + +ADDON = xbmcaddon.Addon() +ADDON_ID = ADDON.getAddonInfo("id") +ADDON_NAME = ADDON.getAddonInfo("name") +ADDON_ICON = ADDON.getAddonInfo("icon").decode('utf-8') +try: + ADDON_PATH = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__).decode(sys.getfilesystemencoding(), 'ignore')), "..", "..", "..")) +except: + ADDON_PATH = ADDON.getAddonInfo("path").decode('utf-8') diff --git a/resources/site-packages/quasar/config.py b/resources/site-packages/quasar/config.py new file mode 100644 index 000000000..313a8414f --- /dev/null +++ b/resources/site-packages/quasar/config.py @@ -0,0 +1,2 @@ +JSONRPC_EXT_PORT = 65252 +QUASARD_HOST = "http://localhost:65251" diff --git a/resources/site-packages/quasar/daemon.py b/resources/site-packages/quasar/daemon.py new file mode 100644 index 000000000..05562df80 --- /dev/null +++ b/resources/site-packages/quasar/daemon.py @@ -0,0 +1,258 @@ +import os +import stat +import time +import xbmc +import shutil +import socket +import urllib2 +import xbmcgui +import threading +import subprocess +from quasar.logger import log +from quasar.osarch import PLATFORM +from quasar.config import QUASARD_HOST +from quasar.addon import ADDON, ADDON_ID, ADDON_PATH +from quasar.util import notify, system_information, getLocalizedString, getWindowsShortPath + +def ensure_exec_perms(file_): + st = os.stat(file_) + os.chmod(file_, st.st_mode | stat.S_IEXEC) + return file_ + +def android_get_current_appid(): + with open("/proc/%d/cmdline" % os.getpid()) as fp: + return fp.read().rstrip("\0") + +def get_quasard_checksum(path): + with open(path) as fp: + fp.seek(-40, os.SEEK_END) # we put a sha1 there + return fp.read() + +def get_quasar_binary(): + binary = "quasar" + (PLATFORM["os"] == "windows" and ".exe" or "") + + binary_dir = os.path.join(ADDON_PATH, "resources", "bin", "%(os)s_%(arch)s" % PLATFORM) + if PLATFORM["os"] == "android": + log.info("Detected binary folder: %s" % binary_dir) + binary_dir_legacy = binary_dir.replace("/storage/emulated/0", "/storage/emulated/legacy") + if os.path.exists(binary_dir_legacy): + binary_dir = binary_dir_legacy + log.info("Using binary folder: %s" % binary_dir) + app_id = android_get_current_appid() + xbmc_data_path = os.path.join("/data", "data", app_id) + dest_binary_dir = os.path.join(xbmc_data_path, "files", ADDON_ID, "bin", "%(os)s_%(arch)s" % PLATFORM) + else: + dest_binary_dir = os.path.join(xbmc.translatePath(ADDON.getAddonInfo("profile")).decode('utf-8'), "bin", "%(os)s_%(arch)s" % PLATFORM) + + binary_path = os.path.join(binary_dir, binary) + dest_binary_path = os.path.join(dest_binary_dir, binary) + + if not os.path.exists(binary_path): + notify((getLocalizedString(30103) + " %(os)s_%(arch)s" % PLATFORM), time=7000) + system_information() + return False, False + + if os.path.isdir(dest_binary_path): + log.warning("Destination path is a directory, expected previous binary file, removing...") + try: + shutil.rmtree(dest_binary_path) + except Exception as e: + log.error("Unable to remove destination path for update: %s" % e) + system_information() + return False, False + + if not os.path.exists(dest_binary_path) or get_quasard_checksum(dest_binary_path) != get_quasard_checksum(binary_path): + log.info("Updating quasar daemon...") + try: + os.makedirs(dest_binary_dir) + except OSError: + pass + try: + shutil.rmtree(dest_binary_dir) + except Exception as e: + log.error("Unable to remove destination path for update: %s" % e) + system_information() + pass + try: + shutil.copytree(binary_dir, dest_binary_dir) + except Exception as e: + log.error("Unable to copy to destination path for update: %s" % e) + system_information() + return False, False + + # Clean stale files in the directory, as this can cause headaches on + # Android when they are unreachable + dest_files = set(os.listdir(dest_binary_dir)) + orig_files = set(os.listdir(binary_dir)) + log.info("Deleting stale files %s" % (dest_files - orig_files)) + for file_ in (dest_files - orig_files): + path = os.path.join(dest_binary_dir, file_) + if os.path.isdir(path): + shutil.rmtree(path) + else: + os.remove(path) + + return dest_binary_dir, ensure_exec_perms(dest_binary_path) + +def clear_fd_inherit_flags(): + # Ensure the spawned quasar binary doesn't inherit open files from Kodi + # which can break things like addon updates. [WINDOWS ONLY] + from ctypes import windll + + HANDLE_RANGE = xrange(0, 65536) + HANDLE_FLAG_INHERIT = 1 + FILE_TYPE_DISK = 1 + + for hd in HANDLE_RANGE: + if windll.kernel32.GetFileType(hd) == FILE_TYPE_DISK: + if not windll.kernel32.SetHandleInformation(hd, HANDLE_FLAG_INHERIT, 0): + log.error("Error clearing inherit flag, disk file handle %x" % hd) + +def jsonrpc_enabled(notify=False): + try: + s = socket.socket() + s.connect(('127.0.0.1', 9090)) + s.close() + log.info("Kodi's JSON-RPC service is available, starting up...") + del s + return True + except Exception as e: + log.error(repr(e)) + if notify: + xbmc.executebuiltin("ActivateWindow(ServiceSettings)") + dialog = xbmcgui.Dialog() + dialog.ok("Quasar", getLocalizedString(30199)) + return False + +def start_quasard(**kwargs): + jsonrpc_failures = 0 + while jsonrpc_enabled() is False: + jsonrpc_failures += 1 + log.warning("Unable to connect to Kodi's JSON-RPC service, retrying...") + if jsonrpc_failures > 1: + time.sleep(5) + if not jsonrpc_enabled(notify=True): + log.error("Unable to reach Kodi's JSON-RPC service, aborting...") + return False + else: + break + time.sleep(3) + + quasar_dir, quasar_binary = get_quasar_binary() + + if quasar_dir is False or quasar_binary is False: + return False + + lockfile = os.path.join(ADDON_PATH, ".lockfile") + if os.path.exists(lockfile): + log.warning("Existing process found from lockfile, killing...") + try: + with open(lockfile) as lf: + pid = int(lf.read().rstrip(" \t\r\n\0")) + os.kill(pid, 9) + except Exception as e: + log.error(repr(e)) + + if PLATFORM["os"] == "windows": + log.warning("Removing library.db.lock file...") + try: + library_lockfile = os.path.join(xbmc.translatePath(ADDON.getAddonInfo("profile")).decode('utf-8'), "library.db.lock") + os.remove(library_lockfile) + except Exception as e: + log.error(repr(e)) + + SW_HIDE = 0 + STARTF_USESHOWWINDOW = 1 + + args = [quasar_binary] + kwargs["cwd"] = quasar_dir + + if PLATFORM["os"] == "windows": + args[0] = getWindowsShortPath(quasar_binary) + kwargs["cwd"] = getWindowsShortPath(quasar_dir) + si = subprocess.STARTUPINFO() + si.dwFlags = STARTF_USESHOWWINDOW + si.wShowWindow = SW_HIDE + clear_fd_inherit_flags() + kwargs["startupinfo"] = si + else: + env = os.environ.copy() + env["LD_LIBRARY_PATH"] = "%s:%s" % (quasar_dir, env.get("LD_LIBRARY_PATH", "")) + kwargs["env"] = env + kwargs["close_fds"] = True + + wait_counter = 1 + while xbmc.getCondVisibility('Window.IsVisible(10140)'): + if wait_counter == 1: + log.info('Add-on settings currently opened, waiting before starting...') + if wait_counter > 300: + break + time.sleep(1) + + return subprocess.Popen(args, **kwargs) + +def shutdown(): + try: + urllib2.urlopen(QUASARD_HOST + "/shutdown") + except: + pass + +def wait_for_abortRequested(proc, monitor): + monitor.closing.wait() + log.info("quasard: exiting quasard daemon") + try: + proc.terminate() + except OSError: + pass # Process already exited, nothing to terminate + log.info("quasard: quasard daemon exited") + +def quasard_thread(monitor): + crash_count = 0 + try: + while not xbmc.abortRequested: + log.info("quasard: starting quasard") + proc = start_quasard(stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + if not proc: + break + threading.Thread(target=wait_for_abortRequested, args=[proc, monitor]).start() + + if PLATFORM["os"] == "windows": + while proc.poll() is None: + log.info(proc.stdout.readline()) + else: + # Kodi hangs on some Android (sigh...) systems when doing a blocking + # read. We count on the fact that Quasar daemon flushes its log + # output on \n, creating a pretty clean output + import fcntl + import select + fd = proc.stdout.fileno() + fl = fcntl.fcntl(fd, fcntl.F_GETFL) + fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NONBLOCK) + while proc.poll() is None: + try: + to_read, _, _ = select.select([proc.stdout], [], []) + for ro in to_read: + line = ro.readline() + if line == "": # write end is closed + break + log.info(line) + except IOError: + time.sleep(1) # nothing to read, sleep + + if proc.returncode == 0 or xbmc.abortRequested: + break + + crash_count += 1 + notify(getLocalizedString(30100), time=3000) + xbmc.executebuiltin("Dialog.Close(all, true)") + system_information() + time.sleep(5) + if crash_count >= 3: + notify(getLocalizedString(30110), time=3000) + break + + except Exception as e: + import traceback + map(log.error, traceback.format_exc().split("\n")) + notify("%s: %s" % (getLocalizedString(30226), repr(e).encode('utf-8'))) + raise diff --git a/resources/site-packages/quasar/dialog.py b/resources/site-packages/quasar/dialog.py new file mode 100644 index 000000000..bee361146 --- /dev/null +++ b/resources/site-packages/quasar/dialog.py @@ -0,0 +1,21 @@ +# Constants +ACTION_LEFT = 1 +ACTION_RIGHT = 2 +ACTION_UP = 3 +ACTION_DOWN = 4 +ACTION_PAGE_UP = 5 +ACTION_PAGE_DOWN = 6 +ACTION_SELECT_ITEM = 7 +ACTION_PARENT_DIR = 9 +ACTION_PREVIOUS_MENU = 10 +ACTION_SHOW_INFO = 11 +ACTION_NEXT_ITEM = 14 +ACTION_PREV_ITEM = 15 + +ACTION_MOUSE_WHEEL_UP = 104 +ACTION_MOUSE_WHEEL_DOWN = 105 +ACTION_MOUSE_MOVE = 107 + +KEY_NAV_BACK = 92 +KEY_CONTEXT_MENU = 117 +KEY_HOME = 159 diff --git a/resources/site-packages/quasar/dialog_insert.py b/resources/site-packages/quasar/dialog_insert.py new file mode 100644 index 000000000..84b8c98f2 --- /dev/null +++ b/resources/site-packages/quasar/dialog_insert.py @@ -0,0 +1,74 @@ +import xbmcgui +from dialog import * # NOQA + +class DialogInsert(xbmcgui.WindowXMLDialog): + def __init__(self, *args, **kwargs): + xbmcgui.WindowXML.__init__(self) + + def onInit(self): + self.setOption1() + self.retval = "" + + def onClick(self, controlId): + if controlId == 32500: + # Close Button + self.cancelled() + elif controlId == 32501: + # Radio Button 1 + self.setOption1() + elif controlId == 32502: + # Radio Button 2 + self.setOption2() + elif controlId == 32508: + # OK button + self.OK() + elif controlId == 32505: + # Option 1 url button + self.setURL() + elif controlId == 32507: + # Option 2 path button + self.setPath() + + def onAction(self, action): + if action.getId() in [ACTION_PARENT_DIR, KEY_NAV_BACK, ACTION_PREVIOUS_MENU]: # NOQA + self.cancelled() + + def setOption1(self): + self.getControl(32501).setSelected(True) # Radio Button 1 + self.getControl(32502).setSelected(False) # Radio Button 2 + self.type = 1 + + def getURL(self): + # return self.getControl(32505).getText() + return self.getControl(32505).getLabel() + + def setOption2(self): + self.getControl(32501).setSelected(False) # Radio Button 1 + self.getControl(32502).setSelected(True) # Radio Button 2 + self.type = 2 + + def setURL(self): + url = xbmcgui.Dialog().input("Quasar") + if url != "": + self.getControl(32505).setLabel(url) + + def setPath(self): + fn = xbmcgui.Dialog().browse(1, "Quasar", "files", ".torrent").decode('utf-8') + if fn != "": + self.getControl(32507).setLabel(fn) + + def getPath(self): + return self.getControl(32507).getLabel() + + def cancelled(self): + self.type = 0 + self.close() + + def OK(self): + if self.type == 1: + # Option 1 text input + self.retval = self.getURL() + elif self.type == 2: + # Option 2 text input + self.retval = self.getPath() + self.close() diff --git a/resources/site-packages/quasar/dialog_select.py b/resources/site-packages/quasar/dialog_select.py new file mode 100644 index 000000000..08525d5ac --- /dev/null +++ b/resources/site-packages/quasar/dialog_select.py @@ -0,0 +1,61 @@ +import os +import xbmcgui +from quasar.addon import ADDON_PATH +from dialog import * # NOQA + +class DialogSelect(xbmcgui.WindowXMLDialog): + def __init__(self, *args, **kwargs): + xbmcgui.WindowXML.__init__(self) + self.items = kwargs['items'] + self.title = kwargs['title'] + self.count = 0 + self.retval = -1 + + def onInit(self): + self.getControl(32501).setLabel(self.title) + for item in self.items: + labels = item.split('\n') + label1 = labels[0] + try: + label2 = labels[1] + except: + label2 = '' + try: + icon = labels[2] + except: + icon = None + try: + multi = labels[3] == 'multi' + except: + multi = False + self.addItem(label1, label2, icon, multi) + self.setFocusId(32503) + + def onClick(self, controlId): + if controlId == 32500: + # Close Button + self.close() + elif controlId == 32503: + # Panel + listControl = self.getControl(32503) + selected = listControl.getSelectedItem() + self.retval = int(selected.getProperty('index')) + self.close() + + def onAction(self, action): + if action.getId() in [ACTION_PARENT_DIR, KEY_NAV_BACK, ACTION_PREVIOUS_MENU]: # NOQA + self.close() + + def addItem(self, label1, label2, icon=None, multi=False): + listControl = self.getControl(32503) + item = xbmcgui.ListItem(label1, label2) + item.setProperty('index', str(self.count)) + if multi: + item.setIconImage(os.path.join(ADDON_PATH, "resources", "img", "multi-cloud.png")) + else: + if icon: + item.setIconImage(icon) + else: + item.setIconImage(os.path.join(ADDON_PATH, "resources", "img", "cloud.png")) + listControl.addItem(item) + self.count += 1 diff --git a/resources/site-packages/quasar/logger.py b/resources/site-packages/quasar/logger.py new file mode 100644 index 000000000..34f3acc78 --- /dev/null +++ b/resources/site-packages/quasar/logger.py @@ -0,0 +1,38 @@ +# Borrowed and modified from xbmcswift +import logging +import xbmc +from quasar.addon import ADDON_ID + +class XBMCHandler(logging.StreamHandler): + xbmc_levels = { + 'DEBUG': 0, + 'INFO': 2, + 'WARNING': 3, + 'ERROR': 4, + 'LOGCRITICAL': 5, + } + + def emit(self, record): + xbmc_level = self.xbmc_levels.get(record.levelname) + if isinstance(record.msg, unicode): + record.msg = record.msg.encode('utf-8') + xbmc.log(self.format(record), xbmc_level) + + +loggers = {} + +def _get_logger(name): + global loggers + + if loggers.get(name): + return loggers.get(name) + else: + logger = logging.getLogger(ADDON_ID) + logger.setLevel(logging.DEBUG) + handler = XBMCHandler() + handler.setFormatter(logging.Formatter('[%(name)s] %(message)s')) + logger.addHandler(handler) + return logger + + +log = _get_logger(__name__) diff --git a/resources/site-packages/quasar/monitor.py b/resources/site-packages/quasar/monitor.py new file mode 100644 index 000000000..746614a7c --- /dev/null +++ b/resources/site-packages/quasar/monitor.py @@ -0,0 +1,46 @@ +import os +import xbmc +import base64 +import urllib2 +import threading +from quasar.daemon import shutdown +from quasar.config import QUASARD_HOST + + +class QuasarMonitor(xbmc.Monitor): + def __init__(self): + self._closing = threading.Event() + + @property + def closing(self): + return self._closing + + def onAbortRequested(self): + # Only when closing Kodi + if xbmc.abortRequested: + xbmc.executebuiltin("Dialog.Close(all, true)") + shutdown() + try: + self._closing.set() + self._closing.clear() + except SystemExit as e: + if e.code != 0: + os._exit(0) + pass + + def onSettingsChanged(self): + try: + urllib2.urlopen("%s/reload" % QUASARD_HOST) + urllib2.urlopen("%s/cmd/clear_page_cache" % QUASARD_HOST) + except: + pass + + def onNotification(self, sender, method, data): + try: + urllib2.urlopen("%s/notification?sender=%s&method=%s&data=%s" % ( + QUASARD_HOST, + sender, + method, + base64.b64encode(data))) + except: + pass diff --git a/resources/site-packages/quasar/navigation.py b/resources/site-packages/quasar/navigation.py new file mode 100644 index 000000000..b8c4d9e6b --- /dev/null +++ b/resources/site-packages/quasar/navigation.py @@ -0,0 +1,257 @@ +import os +import sys +import socket +import urllib2 +import urlparse +import xbmc +import xbmcgui +import xbmcplugin +from quasar.logger import log +from quasar.config import QUASARD_HOST +from quasar.addon import ADDON, ADDON_ID, ADDON_PATH +from quasar.util import notify, getLocalizedString, getLocalizedLabel, system_information + +try: + import simplejson as json +except ImportError: + import json + + +HANDLE = int(sys.argv[1]) + + +class InfoLabels(dict): + def __init__(self, *args, **kwargs): + self.update(*args, **kwargs) + + def __getitem__(self, key): + return dict.get(self, key.lower()) + + def __setitem__(self, key, val): + dict.__setitem__(self, key.lower(), val) + + def update(self, *args, **kwargs): + for k, v in dict(*args, **kwargs).iteritems(): + self[k] = v + + +class closing(object): + def __init__(self, thing): + self.thing = thing + + def __enter__(self): + return self.thing + + def __exit__(self, *exc_info): + self.thing.close() + + +class NoRedirectHandler(urllib2.HTTPRedirectHandler): + def http_error_302(self, req, fp, code, msg, headers): + import urllib + infourl = urllib.addinfourl(fp, headers, headers["Location"]) + infourl.status = code + infourl.code = code + return infourl + http_error_300 = http_error_302 + http_error_301 = http_error_302 + http_error_303 = http_error_302 + http_error_307 = http_error_302 + + +def getInfoLabels(): + id_list = [int(s) for s in sys.argv[0].split("/") if s.isdigit()] + tmdb_id = id_list[0] if id_list else None + + if not tmdb_id: + parsed_url = urlparse.urlparse(sys.argv[0] + sys.argv[2]) + query = urlparse.parse_qs(parsed_url.query) + log.debug("Parsed URL: %s, Query: %s", repr(parsed_url), repr(query)) + if 'tmdb' in query and 'show' not in query: + tmdb_id = query['tmdb'][0] + url = "%s/movie/%s/infolabels" % (QUASARD_HOST, tmdb_id) + elif 'show' in query: + tmdb_id = query['show'][0] + if 'season' in query and 'episode' in query: + url = "%s/show/%s/season/%s/episode/%s/infolabels" % (QUASARD_HOST, tmdb_id, query['season'][0], query['episode'][0]) + else: + url = "%s/show/%s/infolabels" % (QUASARD_HOST, tmdb_id) + else: + url = "%s/infolabels" % (QUASARD_HOST) + elif 'movie' in sys.argv[0]: + url = "%s/movie/%s/infolabels" % (QUASARD_HOST, tmdb_id) + elif ('episode' in sys.argv[0] or 'show' in sys.argv[0]) and len(id_list) > 2: + url = "%s/show/%s/season/%s/episode/%s/infolabels" % (QUASARD_HOST, tmdb_id, id_list[1], id_list[2]) + elif 'show' in sys.argv[0] and len(id_list) == 2: + url = "%s/show/%s/season/%s/episode/%s/infolabels" % (QUASARD_HOST, tmdb_id, id_list[1], 1) + else: + url = "%s/infolabels" % (QUASARD_HOST) + + log.debug("Resolving TMDB item by calling %s for %s" % (url, repr(sys.argv))) + + try: + with closing(urllib2.urlopen(url)) as response: + resolved = json.loads(response.read()) + if not resolved: + return {} + + if 'info' in resolved and resolved['info']: + resolved.update(resolved['info']) + + if 'art' in resolved and resolved['art']: + resolved['artbanner'] = '' + for k, v in resolved['art'].items(): + resolved['art' + k] = v + + if 'info' in resolved: + del resolved['info'] + if 'art' in resolved: + del resolved['art'] + if 'stream_info' in resolved: + del resolved['stream_info'] + + if 'DBTYPE' not in resolved: + resolved['DBTYPE'] = 'video' + if 'Mediatype' not in resolved: + resolved['Mediatype'] = 'video' + + return resolved + except: + log.debug("Could not resolve TMDB item: %s" % tmdb_id) + return {} + + +def _json(url): + with closing(urllib2.urlopen(url)) as response: + if response.code >= 300 and response.code <= 307: + _infoLabels = InfoLabels(getInfoLabels()) + + item = xbmcgui.ListItem( + path=response.geturl(), + label=_infoLabels["label"], + label2=_infoLabels["label2"], + thumbnailImage=_infoLabels["thumbnail"]) + + item.setArt({ + "poster": _infoLabels["artposter"], + "banner": _infoLabels["artbanner"], + "fanart": _infoLabels["artfanart"] + }) + + item.setInfo(type='Video', infoLabels=_infoLabels) + xbmcplugin.setResolvedUrl(HANDLE, True, item) + return + + payload = response.read() + + try: + if payload: + return json.loads(payload) + except: + raise Exception(payload) + + +def run(url_suffix=""): + if not os.path.exists(os.path.join(ADDON_PATH, ".firstrun")): + notify(getLocalizedString(30101)) + system_information() + return + + donatePath = os.path.join(ADDON_PATH, ".donate") + if not os.path.exists(donatePath): + with open(donatePath, "w"): + os.utime(donatePath, None) + dialog = xbmcgui.Dialog() + dialog.ok("Quasar", getLocalizedString(30141)) + + socket.setdefaulttimeout(int(ADDON.getSetting("buffer_timeout"))) + urllib2.install_opener(urllib2.build_opener(NoRedirectHandler())) + + # Pause currently playing Quasar file to avoid doubling requests + if xbmc.Player().isPlaying() and ADDON_ID in xbmc.Player().getPlayingFile(): + xbmc.Player().pause() + + url = sys.argv[0].replace("plugin://%s" % ADDON_ID, QUASARD_HOST + url_suffix) + sys.argv[2] + log.debug("Requesting %s from %s" % (url, repr(sys.argv))) + + try: + data = _json(url) + except urllib2.URLError as e: + if 'Connection refused' in e.reason: + notify(getLocalizedString(30116), time=7000) + else: + import traceback + map(log.error, traceback.format_exc().split("\n")) + notify(e.reason, time=7000) + return + except Exception as e: + import traceback + map(log.error, traceback.format_exc().split("\n")) + try: + msg = unicode(e) + except: + try: + msg = str(e) + except: + msg = repr(e) + notify(getLocalizedLabel(msg), time=7000) + return + + if not data: + return + + if data["content_type"]: + content_type = data["content_type"] + if data["content_type"].startswith("menus"): + content_type = data["content_type"].split("_")[1] + + xbmcplugin.addSortMethod(HANDLE, xbmcplugin.SORT_METHOD_UNSORTED) + if content_type != "tvshows": + xbmcplugin.addSortMethod(HANDLE, xbmcplugin.SORT_METHOD_LABEL_IGNORE_THE) + xbmcplugin.addSortMethod(HANDLE, xbmcplugin.SORT_METHOD_DATE) + xbmcplugin.addSortMethod(HANDLE, xbmcplugin.SORT_METHOD_GENRE) + xbmcplugin.setContent(HANDLE, content_type) + + listitems = range(len(data["items"])) + for i, item in enumerate(data["items"]): + # Translate labels + if item["label"][0:8] == "LOCALIZE": + item["label"] = unicode(getLocalizedLabel(item["label"]), 'utf-8') + if item["label2"][0:8] == "LOCALIZE": + item["label2"] = getLocalizedLabel(item["label2"]) + + listItem = xbmcgui.ListItem(label=item["label"], label2=item["label2"], iconImage=item["icon"], thumbnailImage=item["thumbnail"]) + if item.get("info"): + listItem.setInfo("video", item["info"]) + if item.get("stream_info"): + for type_, values in item["stream_info"].items(): + listItem.addStreamInfo(type_, values) + if item.get("art"): + listItem.setArt(item["art"]) + elif ADDON.getSetting('default_fanart') == 'true' and item["label"] != unicode(getLocalizedString(30218), 'utf-8'): + fanart = os.path.join(ADDON_PATH, "fanart.jpg") + listItem.setArt({'fanart': fanart}) + if item.get("context_menu"): + # Translate context menus + for m, menu in enumerate(item["context_menu"]): + if menu[0][0:8] == "LOCALIZE": + menu[0] = getLocalizedLabel(menu[0]) + listItem.addContextMenuItems(item["context_menu"]) + listItem.setProperty("isPlayable", item["is_playable"] and "true" or "false") + if item.get("properties"): + for k, v in item["properties"].items(): + listItem.setProperty(k, v) + listitems[i] = (item["path"], listItem, not item["is_playable"]) + + xbmcplugin.addDirectoryItems(HANDLE, listitems, totalItems=len(listitems)) + + # Set ViewMode + if data["content_type"]: + viewMode = ADDON.getSetting("viewmode_%s" % data["content_type"]) + if viewMode: + try: + xbmc.executebuiltin('Container.SetViewMode(%s)' % viewMode) + except Exception as e: + log.warning("Unable to SetViewMode(%s): %s" % (viewMode, repr(e))) + + xbmcplugin.endOfDirectory(HANDLE, succeeded=True, updateListing=False, cacheToDisc=True) diff --git a/resources/site-packages/quasar/osarch.py b/resources/site-packages/quasar/osarch.py new file mode 100644 index 000000000..1e16aa0bf --- /dev/null +++ b/resources/site-packages/quasar/osarch.py @@ -0,0 +1,48 @@ +import xbmc +import sys +import platform + +def get_platform(): + build = xbmc.getInfoLabel("System.BuildVersion") + kodi_version = int(build.split()[0][:2]) + ret = { + "arch": sys.maxsize > 2 ** 32 and "x64" or "x86", + "os": "", + "version": platform.release(), + "kodi": kodi_version, + "build": build + } + if xbmc.getCondVisibility("system.platform.android"): + ret["os"] = "android" + if "arm" in platform.machine() or "aarch" in platform.machine(): + ret["arch"] = "arm" + elif xbmc.getCondVisibility("system.platform.linux"): + ret["os"] = "linux" + if "aarch" in platform.machine() or "arm64" in platform.machine(): + if xbmc.getCondVisibility("system.platform.linux.raspberrypi"): + ret["arch"] = "armv7" + elif platform.architecture()[0].startswith("32"): + ret["arch"] = "arm" + else: + ret["arch"] = "arm64" + elif "armv7" in platform.machine(): + ret["arch"] = "armv7" + elif "arm" in platform.machine(): + ret["arch"] = "arm" + elif xbmc.getCondVisibility("system.platform.xbox"): + ret["os"] = "windows" + ret["arch"] = "x64" + elif xbmc.getCondVisibility("system.platform.windows"): + ret["os"] = "windows" + if platform.machine().endswith('64'): + ret["arch"] = "x64" + elif xbmc.getCondVisibility("system.platform.osx"): + ret["os"] = "darwin" + ret["arch"] = "x64" + elif xbmc.getCondVisibility("system.platform.ios"): + ret["os"] = "ios" + ret["arch"] = "arm" + return ret + + +PLATFORM = get_platform() diff --git a/resources/site-packages/quasar/overlay.py b/resources/site-packages/quasar/overlay.py new file mode 100644 index 000000000..318ecd0f6 --- /dev/null +++ b/resources/site-packages/quasar/overlay.py @@ -0,0 +1,63 @@ +import os +import xbmc +import xbmcgui +from quasar.addon import ADDON, ADDON_PATH + +XBFONT_CENTER_X = 0x00000002 +XBFONT_CENTER_Y = 0x00000004 +WINDOW_FULLSCREEN_VIDEO = 12005 +VIEWPORT_WIDTH = 1920.0 +VIEWPORT_HEIGHT = 1088.0 +OVERLAY_WIDTH = int(VIEWPORT_WIDTH * 0.7) # 70% size +OVERLAY_HEIGHT = 150 + +class OverlayText(object): + def __init__(self, w=OVERLAY_WIDTH, h=OVERLAY_HEIGHT, *args, **kwargs): + self.window = xbmcgui.Window(WINDOW_FULLSCREEN_VIDEO) + viewport_w, viewport_h = self._get_skin_resolution() + # Adjust size based on viewport, we are using 1080p coordinates + w = int(w * viewport_w / VIEWPORT_WIDTH) + h = int(h * viewport_h / VIEWPORT_HEIGHT) + x = (viewport_w - w) / 2 + y = (viewport_h - h) / 2 + int(ADDON.getSetting(id="overlay_status_offset")) + self._shown = False + self._text = "" + self._label = xbmcgui.ControlLabel(x, y, w, h, self._text, + alignment=XBFONT_CENTER_X | XBFONT_CENTER_Y, *args, **kwargs) + self._shadow = xbmcgui.ControlLabel(x + 1, y + 1, w, h, self._text, + textColor='0xD0000000', + alignment=XBFONT_CENTER_X | XBFONT_CENTER_Y, *args, **kwargs) + self._background = xbmcgui.ControlImage(x, y, w, h, os.path.join(ADDON_PATH, "resources", "img", "black.png").encode('utf-8')) + self._background.setColorDiffuse("0xD0000000") + + def show(self): + if not self._shown: + self.window.addControls([self._background, self._shadow, self._label]) + self._shown = True + + def hide(self): + if self._shown: + self._shown = False + self.window.removeControls([self._background, self._shadow, self._label]) + + def close(self): + self.hide() + + @property + def text(self): + return self._text + + @text.setter + def text(self, text): + self._text = text + if self._shown: + self._shadow.setLabel(self._text) + self._label.setLabel(self._text) + + # This is so hackish it hurts. + def _get_skin_resolution(self): + import xml.etree.ElementTree as ET + skin_path = xbmc.translatePath("special://skin/") + tree = ET.parse(os.path.join(skin_path, "addon.xml")) + res = tree.findall("./extension/res")[0] + return int(res.attrib["width"]), int(res.attrib["height"]) diff --git a/resources/site-packages/quasar/provider.py b/resources/site-packages/quasar/provider.py new file mode 100644 index 000000000..4c00c3445 --- /dev/null +++ b/resources/site-packages/quasar/provider.py @@ -0,0 +1,190 @@ +import sys +import json +import base64 +import urllib2 +from urllib import urlencode +from quasar.util import notify, getLocalizedString +from quasar.logger import log +from quasar.config import QUASARD_HOST +from quasar.addon import ADDON, ADDON_ID +from cookielib import CookieJar + + +RESOLUTION_UNKNOWN = 0 +RESOLUTION_480P = 1 +RESOLUTION_720P = 2 +RESOLUTION_1080P = 3 +RESOLUTION_1440P = 4 +RESOLUTION_4K2K = 5 + +RIP_UNKNOWN = 0 +RIP_CAM = 1 +RIP_TS = 2 +RIP_TC = 3 +RIP_SCR = 4 +RIP_DVDSCR = 5 +RIP_DVD = 6 +RIP_HDTV = 7 +RIP_WEB = 8 +RIP_BLURAY = 9 + +RATING_UNKNOWN = 0 +RATING_PROPER = 1 +RATING_NUKED = 2 + +CODEC_UNKNOWN = 0 +CODEC_XVID = 1 +CODEC_H264 = 2 +CODEC_H265 = 3 +CODEC_MP3 = 4 +CODEC_AAC = 5 +CODEC_AC3 = 6 +CODEC_DTS = 7 +CODEC_DTSHD = 8 +CODEC_DTSHDMA = 9 + +USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.66 Safari/537.36" + +COOKIE_JAR = CookieJar() +urllib2.install_opener(urllib2.build_opener(urllib2.HTTPCookieProcessor(COOKIE_JAR))) + + +class closing(object): + def __init__(self, thing): + self.thing = thing + + def __enter__(self): + return self.thing + + def __exit__(self, *exc_info): + self.thing.close() + + +def parse_json(data): + try: + import simplejson as json + except ImportError: + import json + return json.loads(data) + + +def parse_xml(data): + import xml.etree.ElementTree as ET + return ET.fromstring(data) + + +def request(url, params={}, headers={}, data=None, method=None): + if params: + url = "".join([url, "?", urlencode(params)]) + + req = urllib2.Request(url) + if method: + req.get_method = lambda: method + req.add_header("User-Agent", USER_AGENT) + req.add_header("Accept-Encoding", "gzip") + for k, v in headers.items(): + req.add_header(k, v) + if data: + req.add_data(data) + try: + with closing(urllib2.urlopen(req)) as response: + data = response.read() + if response.headers.get("Content-Encoding", "") == "gzip": + import zlib + data = zlib.decompressobj(16 + zlib.MAX_WBITS).decompress(data) + response.data = data + response.json = lambda: parse_json(data) + response.xml = lambda: parse_xml(data) + return response + except Exception as e: + import traceback + map(log.error, traceback.format_exc().split("\n")) + notify("%s: %s" % (getLocalizedString(30224), repr(e).encode('utf-8'))) + return None, None + + +HEAD = lambda *args, **kwargs: request(*args, method="HEAD", **kwargs) +GET = lambda *args, **kwargs: request(*args, method="GET", **kwargs) +POST = lambda *args, **kwargs: request(*args, method="POST", **kwargs) +PUT = lambda *args, **kwargs: request(*args, method="PUT", **kwargs) +DELETE = lambda *args, **kwargs: request(*args, method="DELETE", **kwargs) + + +def append_headers(uri, headers): + return uri + "|" + "|".join(["%s=%s" % h for h in headers.items()]) + + +def with_cookies(uri): + return uri + "|Cookie=" + "; ".join(["%s=%s" % (c.name, c.value) for c in COOKIE_JAR]) + + +def extract_magnets(data): + import re + for magnet in re.findall(r'magnet:\?[^\'"\s<>\[\]]+', data): + yield {"uri": magnet} + + +# Borrowed from xbmcswift2 +def get_setting(key, converter=str, choices=None): + value = ADDON.getSetting(id=key) + if converter is str: + return value + elif converter is unicode: + return value.decode('utf-8') + elif converter is bool: + return value == 'true' + elif converter is int: + return int(value) + elif isinstance(choices, (list, tuple)): + return choices[int(value)] + else: + raise TypeError('Acceptable converters are str, unicode, bool and ' + 'int. Acceptable choices are instances of list ' + ' or tuple.') + + +def set_setting(key, val): + return ADDON.setSetting(id=key, value=val) + + +def register(search, search_movie, search_episode, search_season=None): + try: + payload = json.loads(base64.b64decode(sys.argv[1])) + except: + notify(getLocalizedString(30102), time=1000) + return + + results = () + method = { + "search": search, + "search_movie": search_movie, + "search_season": search_season, + "search_episode": search_episode, + }.get(payload["method"]) or (lambda *a, **kw: []) + try: + results = () + try: + objects = method(payload["search_object"]) + if objects is not None: + results = tuple(objects) + except Exception as e: + import traceback + map(log.error, traceback.format_exc().split("\n")) + notify("%s: %s" % (getLocalizedString(30224), repr(e).encode('utf-8'))) + try: + urllib2.urlopen("%s/provider/%s/failure" % (QUASARD_HOST, ADDON_ID)) + except: + pass + finally: + try: + req = urllib2.Request(payload["callback_url"], data=json.dumps(results)) + with closing(urllib2.urlopen(req)) as response: + log.debug("callback returned: %d" % response.getcode()) + except Exception as e: + import traceback + map(log.error, traceback.format_exc().split("\n")) + notify("%s: %s" % (getLocalizedString(30224), repr(e).encode('utf-8'))) + try: + urllib2.urlopen("%s/provider/%s/failure" % (QUASARD_HOST, ADDON_ID)) + except: + pass diff --git a/resources/site-packages/quasar/rpc.py b/resources/site-packages/quasar/rpc.py new file mode 100644 index 000000000..82b364ed0 --- /dev/null +++ b/resources/site-packages/quasar/rpc.py @@ -0,0 +1,335 @@ +import os +import re +import time +import xbmc +import xbmcvfs +import xbmcgui +import urllib2 +import bjsonrpc +from bjsonrpc.handlers import BaseHandler +from quasar.addon import ADDON, ADDON_PATH +from quasar.logger import log +from quasar.config import JSONRPC_EXT_PORT, QUASARD_HOST +from quasar.osarch import PLATFORM +from quasar.util import toUtf8, notify, getLocalizedString, getLocalizedLabel, system_information +from quasar.overlay import OverlayText +from quasar.dialog_select import DialogSelect +from quasar.dialog_insert import DialogInsert + +XBMC_PLAYER = xbmc.Player() + +class QuasarRPCServer(BaseHandler): + public_methods_pattern = r'^[A-Za-z]\w+$' + + _objects = {} + _failures = {} + + def Reset(self): + for i in self._objects: + try: + self._objects[i].hide() + except: + pass + log.info("Resetting RPC objects...") + self._objects = {} + + def Refresh(self): + return xbmc.executebuiltin("Container.Refresh") + + def InstallAddon(self, addonId): + return xbmc.executebuiltin("InstallAddon(%s)" % addonId) + + def UpdateLocalAddons(self): + return xbmc.executebuiltin("UpdateLocalAddons") + + def UpdateAddonRepos(self): + return xbmc.executebuiltin("UpdateAddonRepos") + + def SystemInformation(self): + return system_information() + + def Notify(self, header, message, image): + return notify(getLocalizedLabel(message), header, 3000, image) + + def Keyboard(self, default="", heading="", hidden=False): + keyboard = xbmc.Keyboard(default, getLocalizedLabel(heading), hidden) + keyboard.doModal() + if keyboard.isConfirmed(): + return keyboard.getText() + + def Dialog(self, title, message): + dialog = xbmcgui.Dialog() + return dialog.ok(getLocalizedLabel(title), getLocalizedLabel(message)) + + def Dialog_Confirm(self, title, message): + dialog = xbmcgui.Dialog() + return dialog.yesno(getLocalizedLabel(title), getLocalizedLabel(message)) + + def Dialog_Select(self, title, items): + dialog = xbmcgui.Dialog() + return dialog.select(getLocalizedLabel(title), items) + + def Dialog_Select_Large(self, title, subject, items): + title_encoded = "%s %s" % (getLocalizedLabel(title), toUtf8(subject)) + + # For Kodi <= 16 + if PLATFORM['kodi'] <= 16: + window = DialogSelect("DialogSelectLargeLegacy.xml", + ADDON_PATH, + "Default", + title=title_encoded, + items=items) + # For Kodi >= 17 + else: + window = DialogSelect("DialogSelectLarge.xml", + ADDON_PATH, + "Default", + title=title_encoded, + items=items) + window.doModal() + retval = window.retval + del window + + return retval + + def Player_Open(self, item): + return XBMC_PLAYER.play(item) + + def Player_GetPlayingFile(self, *args, **kwargs): + return XBMC_PLAYER.getPlayingFile() + + def Player_IsPlaying(self, *args, **kwargs): + return XBMC_PLAYER.isPlaying(*args, **kwargs) + + def Player_IsPaused(self): + return xbmc.getCondVisibility("Player.Paused") + + def Player_WatchTimes(self): + error = "" + watchedTime = "0" + videoDuration = "0" + try: + watchedTime = str(XBMC_PLAYER.getTime()) + videoDuration = str(XBMC_PLAYER.getTotalTime()) + log.debug("Watched: %s, duration: %s" % (watchedTime, videoDuration)) + except Exception as e: + error = "Stopped playing: %s" % repr(e) + + watchTimes = { + "watchedTime": watchedTime, + "videoDuration": videoDuration, + "error": error + } + return watchTimes + + def Player_Seek(self, position): + ret = "" + try: + XBMC_PLAYER.seekTime(position) + except Exception as e: + ret = repr(e) + return ret + + def Player_SetSubtitles(self, url): + return XBMC_PLAYER.setSubtitles(url) + + def ConvertLanguage(self, *args, **kwargs): + return xbmc.convertLanguage(*args, **kwargs) + + def GetPlatform(self): + return PLATFORM + + def GetAddonInfo(self): + info = {} + for key in ("author", "changelog", "description", "disclaimer", + "fanart", "icon", "id", "name", "profile", "stars", + "summary", "type", "version"): + info[key] = ADDON.getAddonInfo(key) + info['path'] = ADDON_PATH + return info + + def AddonFailure(self, addonId): + if ADDON.getSetting("provider_disable_failing") == u"false": + return 0 + + if addonId in self._failures: + self._failures[addonId] += 1 + else: + self._failures[addonId] = 1 + + log.warning("Recorded failure %d for %s" % (self._failures[addonId], addonId)) + + if self._failures[addonId] > int(ADDON.getSetting("provider_allowed_failures")): + try: + time.sleep(10) + notify(getLocalizedString(30111)) + urllib2.urlopen("%s/provider/%s/disable" % (QUASARD_HOST, addonId)) + except: + notify(getLocalizedString(30112)) + return 0 + return self._failures[addonId] + + def AddonCheck(self, addonId): + if addonId in self._failures: + return self._failures[addonId] + return 0 + + def AddonSettings(self, addonId): + return xbmc.executebuiltin("Addon.OpenSettings(%s)" % addonId) + + def GetLanguage(self, *args, **kwargs): + return xbmc.getLanguage(*args, **kwargs) + + def GetLocalizedString(self, *args, **kwargs): + return ADDON.getLocalizedString(*args, **kwargs).encode('utf-8', 'ignore') + + def GetSetting(self, *args, **kwargs): + return ADDON.getSetting(*args, **kwargs) + + def GetAllSettings(self): + settings = [] + settingsFile = os.path.join(ADDON_PATH, "resources", "settings.xml") + with open(settingsFile, 'r') as settingsStr: + fileContent = settingsStr.read() + keyType = re.findall(r".*id=\"(\w+)\".*type=\"(\w+)\"(.*option=\"(\w+)\")?", fileContent) + for key, _type, optgroup, option in keyType: + settings.append({ + "key": key, + "type": _type, + "option": option, + "value": ADDON.getSetting(key) + }) + return settings + + def SetSetting(self, *args, **kwargs): + return ADDON.setSetting(*args, **kwargs) + + def GetWindowProperty(self, k): + window = xbmcgui.Window(10000) + return window.getProperty(k) + + def SetWindowProperty(self, k, v): + window = xbmcgui.Window(10000) + window.setProperty(k, v if v else "") + + def GetCurrentView(self): + skinPath = xbmc.translatePath('special://skin/') + xml = os.path.join(skinPath, 'addon.xml') + f = xbmcvfs.File(xml) + read = f.read() + f.close() + try: + src = re.search('defaultresolution="([^"]+)', read, re.DOTALL).group(1) + except: + src = re.search('([^<]+)', read, re.DOTALL) + if match: + views = match.group(1) + log.info("Skin's ViewModes: %s" % views) + for view in views.split(','): + if xbmc.getInfoLabel('Control.GetLabel(%s)' % view): + return view + + def TranslatePath(self, *args, **kwargs): + return xbmc.translatePath(*args, **kwargs) + + def Log(self, *args, **kwargs): + return xbmc.log(*args, **kwargs) + + def Dialog_CloseAll(self, *args, **kwargs): + return xbmc.executebuiltin("Dialog.Close(all, true)") + + def DialogInsert(self, *args, **kwargs): + if PLATFORM['kodi'] <= 16: + window = DialogInsert("DialogInsertLegacy.xml", ADDON_PATH, "Default") + else: + window = DialogInsert("DialogInsert.xml", ADDON_PATH, "Default") + window.doModal() + retval = {"type": ("cancelled", "url", "file")[window.type], "path": window.retval} + del window + return retval + + ########################################################################### + # DialogProgress + ########################################################################### + def DialogProgress_Create(self, *args, **kwargs): + dialog = xbmcgui.DialogProgress() + self._objects[id(dialog)] = dialog + dialog.create(*args, **kwargs) + return id(dialog) + + def DialogProgress_IsCanceled(self, hwnd, *args, **kwargs): + return self._objects[hwnd].iscanceled(*args, **kwargs) + + def DialogProgress_Update(self, hwnd, *args, **kwargs): + return self._objects[hwnd].update(*args, **kwargs) + + def DialogProgress_Close(self, hwnd, *args, **kwargs): + dialog = self._objects.pop(hwnd) + dialog.close() + del dialog + + # Background DialogProgress + def DialogProgressBG_Create(self, title, message, *args): + dialog = xbmcgui.DialogProgressBG() + dialogId = id(dialog) + self._objects[dialogId] = dialog + if args and isinstance(args[0], list): + self._objects["%s-i18n" % dialogId] = {} + for translation in args[0]: + self._objects["%s-i18n" % dialogId][translation] = getLocalizedLabel(translation) + dialog.create(title, getLocalizedLabel(message)) + return dialogId + + def DialogProgressBG_IsFinished(self, hwnd): + return self._objects[hwnd].isFinished() + + def DialogProgressBG_Update(self, hwnd, percent, heading, message): + if message.startswith("LOCALIZE"): + message = self._objects["%s-i18n" % hwnd][message] + return self._objects[hwnd].update(percent, heading, message) + + def DialogProgressBG_Close(self, hwnd): + dialog = self._objects.pop(hwnd) + if "%s-i18n" % hwnd in self._objects: + self._objects.pop("%s-i18n" % hwnd) + dialog.close() + del dialog + + # Overlay status + def OverlayStatus_Create(self): + overlay = OverlayText() + overlayId = id(overlay) + self._objects[overlayId] = overlay + return overlayId + + def OverlayStatus_Update(self, hwnd, percent, line1, line2, line3): + text = "\n".join([line1, line2, line3]) + self._objects[hwnd].text = text + + def OverlayStatus_Show(self, hwnd): + self._objects[hwnd].show() + + def OverlayStatus_Hide(self, hwnd): + self._objects[hwnd].hide() + + def OverlayStatus_Close(self, hwnd): + overlay = self._objects.pop(hwnd) + overlay.hide() + del overlay + + +def server_thread(): + try: + s = bjsonrpc.createserver(port=JSONRPC_EXT_PORT, handler_factory=QuasarRPCServer) + log.info("quasar: starting jsonrpc service") + s.serve() + log.info("quasar: exiting jsonrpc service") + except Exception: + import traceback + map(log.error, traceback.format_exc().split("\n")) + raise diff --git a/resources/site-packages/quasar/service.py b/resources/site-packages/quasar/service.py new file mode 100644 index 000000000..f5d91a89a --- /dev/null +++ b/resources/site-packages/quasar/service.py @@ -0,0 +1,28 @@ +import xbmc +import threading +from quasar.logger import log +from quasar.rpc import server_thread +from quasar.monitor import QuasarMonitor +from quasar.daemon import quasard_thread + + +def run(): + # Make sure the XBMC jsonrpc server is started. + xbmc.startServer(xbmc.SERVER_JSONRPCSERVER, True) + + # Make the monitor + monitor = QuasarMonitor() + + threads = [ + threading.Thread(target=server_thread), # JSONRPC thread + threading.Thread(target=quasard_thread, args=[monitor]), # Quasard thread + ] + for t in threads: + t.daemon = True + t.start() + + # XBMC loop + while not xbmc.abortRequested: + xbmc.sleep(1000) + + log.info("quasar: exiting quasard") diff --git a/resources/site-packages/quasar/util.py b/resources/site-packages/quasar/util.py new file mode 100644 index 000000000..17f551cf9 --- /dev/null +++ b/resources/site-packages/quasar/util.py @@ -0,0 +1,69 @@ +import platform +import xbmc +import xbmcgui +from quasar.logger import log +from quasar.osarch import PLATFORM +from quasar.addon import ADDON, ADDON_NAME, ADDON_ICON + + +def notify(message, header=ADDON_NAME, time=5000, image=ADDON_ICON): + sound = ADDON.getSetting('do_not_disturb') == 'false' + dialog = xbmcgui.Dialog() + return dialog.notification(toUtf8(header), toUtf8(message), toUtf8(image), time, sound) + +def getLocalizedLabel(label): + try: + if "LOCALIZE" not in label: + return label + if ";;" not in label and label.endswith(']'): + return getLocalizedString(int(label[9:-1])) + else: + parts = label.split(";;") + translation = getLocalizedString(int(parts[0][9:14])) + for i, part in enumerate(parts[1:]): + if part[0:8] == "LOCALIZE": + parts[i + 1] = getLocalizedString(int(part[9:14])) + + return (translation.decode('utf-8', 'replace') % tuple(parts[1:])).encode('utf-8', 'ignore') + except: + return label + +def getLocalizedString(stringId): + try: + return ADDON.getLocalizedString(stringId).encode('utf-8', 'ignore') + except: + return stringId + +def toUtf8(string): + if isinstance(string, unicode): + return string.encode('utf-8', 'ignore') + return string + +def system_information(): + build = xbmc.getInfoLabel("System.BuildVersion") + log.info("System information: %(os)s_%(arch)s %(version)s" % PLATFORM) + log.info("Kodi build version: %s" % build) + log.info("OS type: %s" % platform.system()) + log.info("uname: %s" % repr(platform.uname())) + return PLATFORM + +def getShortPath(path): + if PLATFORM["os"] == "windows": + return getWindowsShortPath(path) + return path + +def getWindowsShortPath(path): + import ctypes + import ctypes.wintypes + + ctypes.windll.kernel32.GetShortPathNameW.argtypes = [ + ctypes.wintypes.LPCWSTR, # lpszLongPath + ctypes.wintypes.LPWSTR, # lpszShortPath + ctypes.wintypes.DWORD # cchBuffer + ] + ctypes.windll.kernel32.GetShortPathNameW.restype = ctypes.wintypes.DWORD + + buf = ctypes.create_unicode_buffer(1024) # adjust buffer size, if necessary + ctypes.windll.kernel32.GetShortPathNameW(path, buf, len(buf)) + + return buf.value diff --git a/resources/site-packages/simplejson/__init__.py b/resources/site-packages/simplejson/__init__.py new file mode 100644 index 000000000..8c0b698a6 --- /dev/null +++ b/resources/site-packages/simplejson/__init__.py @@ -0,0 +1,564 @@ +r"""JSON (JavaScript Object Notation) is a subset of +JavaScript syntax (ECMA-262 3rd edition) used as a lightweight data +interchange format. + +:mod:`simplejson` exposes an API familiar to users of the standard library +:mod:`marshal` and :mod:`pickle` modules. It is the externally maintained +version of the :mod:`json` library contained in Python 2.6, but maintains +compatibility with Python 2.4 and Python 2.5 and (currently) has +significant performance advantages, even without using the optional C +extension for speedups. + +Encoding basic Python object hierarchies:: + + >>> import simplejson as json + >>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}]) + '["foo", {"bar": ["baz", null, 1.0, 2]}]' + >>> print(json.dumps("\"foo\bar")) + "\"foo\bar" + >>> print(json.dumps(u'\u1234')) + "\u1234" + >>> print(json.dumps('\\')) + "\\" + >>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)) + {"a": 0, "b": 0, "c": 0} + >>> from simplejson.compat import StringIO + >>> io = StringIO() + >>> json.dump(['streaming API'], io) + >>> io.getvalue() + '["streaming API"]' + +Compact encoding:: + + >>> import simplejson as json + >>> obj = [1,2,3,{'4': 5, '6': 7}] + >>> json.dumps(obj, separators=(',',':'), sort_keys=True) + '[1,2,3,{"4":5,"6":7}]' + +Pretty printing:: + + >>> import simplejson as json + >>> print(json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=' ')) + { + "4": 5, + "6": 7 + } + +Decoding JSON:: + + >>> import simplejson as json + >>> obj = [u'foo', {u'bar': [u'baz', None, 1.0, 2]}] + >>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]') == obj + True + >>> json.loads('"\\"foo\\bar"') == u'"foo\x08ar' + True + >>> from simplejson.compat import StringIO + >>> io = StringIO('["streaming API"]') + >>> json.load(io)[0] == 'streaming API' + True + +Specializing JSON object decoding:: + + >>> import simplejson as json + >>> def as_complex(dct): + ... if '__complex__' in dct: + ... return complex(dct['real'], dct['imag']) + ... return dct + ... + >>> json.loads('{"__complex__": true, "real": 1, "imag": 2}', + ... object_hook=as_complex) + (1+2j) + >>> from decimal import Decimal + >>> json.loads('1.1', parse_float=Decimal) == Decimal('1.1') + True + +Specializing JSON object encoding:: + + >>> import simplejson as json + >>> def encode_complex(obj): + ... if isinstance(obj, complex): + ... return [obj.real, obj.imag] + ... raise TypeError(repr(o) + " is not JSON serializable") + ... + >>> json.dumps(2 + 1j, default=encode_complex) + '[2.0, 1.0]' + >>> json.JSONEncoder(default=encode_complex).encode(2 + 1j) + '[2.0, 1.0]' + >>> ''.join(json.JSONEncoder(default=encode_complex).iterencode(2 + 1j)) + '[2.0, 1.0]' + + +Using simplejson.tool from the shell to validate and pretty-print:: + + $ echo '{"json":"obj"}' | python -m simplejson.tool + { + "json": "obj" + } + $ echo '{ 1.2:3.4}' | python -m simplejson.tool + Expecting property name: line 1 column 3 (char 2) +""" +from __future__ import absolute_import +__version__ = '3.6.5' +__all__ = [ + 'dump', 'dumps', 'load', 'loads', + 'JSONDecoder', 'JSONDecodeError', 'JSONEncoder', + 'OrderedDict', 'simple_first', +] + +__author__ = 'Bob Ippolito ' + +from decimal import Decimal + +from .scanner import JSONDecodeError +from .decoder import JSONDecoder +from .encoder import JSONEncoder, JSONEncoderForHTML +def _import_OrderedDict(): + import collections + try: + return collections.OrderedDict + except AttributeError: + from . import ordered_dict + return ordered_dict.OrderedDict +OrderedDict = _import_OrderedDict() + +def _import_c_make_encoder(): + try: + from ._speedups import make_encoder + return make_encoder + except ImportError: + return None + +_default_encoder = JSONEncoder( + skipkeys=False, + ensure_ascii=True, + check_circular=True, + allow_nan=True, + indent=None, + separators=None, + encoding='utf-8', + default=None, + use_decimal=True, + namedtuple_as_object=True, + tuple_as_array=True, + bigint_as_string=False, + item_sort_key=None, + for_json=False, + ignore_nan=False, + int_as_string_bitcount=None, +) + +def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, + allow_nan=True, cls=None, indent=None, separators=None, + encoding='utf-8', default=None, use_decimal=True, + namedtuple_as_object=True, tuple_as_array=True, + bigint_as_string=False, sort_keys=False, item_sort_key=None, + for_json=False, ignore_nan=False, int_as_string_bitcount=None, **kw): + """Serialize ``obj`` as a JSON formatted stream to ``fp`` (a + ``.write()``-supporting file-like object). + + If *skipkeys* is true then ``dict`` keys that are not basic types + (``str``, ``unicode``, ``int``, ``long``, ``float``, ``bool``, ``None``) + will be skipped instead of raising a ``TypeError``. + + If *ensure_ascii* is false, then the some chunks written to ``fp`` + may be ``unicode`` instances, subject to normal Python ``str`` to + ``unicode`` coercion rules. Unless ``fp.write()`` explicitly + understands ``unicode`` (as in ``codecs.getwriter()``) this is likely + to cause an error. + + If *check_circular* is false, then the circular reference check + for container types will be skipped and a circular reference will + result in an ``OverflowError`` (or worse). + + If *allow_nan* is false, then it will be a ``ValueError`` to + serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``) + in strict compliance of the original JSON specification, instead of using + the JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``). See + *ignore_nan* for ECMA-262 compliant behavior. + + If *indent* is a string, then JSON array elements and object members + will be pretty-printed with a newline followed by that string repeated + for each level of nesting. ``None`` (the default) selects the most compact + representation without any newlines. For backwards compatibility with + versions of simplejson earlier than 2.1.0, an integer is also accepted + and is converted to a string with that many spaces. + + If specified, *separators* should be an + ``(item_separator, key_separator)`` tuple. The default is ``(', ', ': ')`` + if *indent* is ``None`` and ``(',', ': ')`` otherwise. To get the most + compact JSON representation, you should specify ``(',', ':')`` to eliminate + whitespace. + + *encoding* is the character encoding for str instances, default is UTF-8. + + *default(obj)* is a function that should return a serializable version + of obj or raise ``TypeError``. The default simply raises ``TypeError``. + + If *use_decimal* is true (default: ``True``) then decimal.Decimal + will be natively serialized to JSON with full precision. + + If *namedtuple_as_object* is true (default: ``True``), + :class:`tuple` subclasses with ``_asdict()`` methods will be encoded + as JSON objects. + + If *tuple_as_array* is true (default: ``True``), + :class:`tuple` (and subclasses) will be encoded as JSON arrays. + + If *bigint_as_string* is true (default: ``False``), ints 2**53 and higher + or lower than -2**53 will be encoded as strings. This is to avoid the + rounding that happens in Javascript otherwise. Note that this is still a + lossy operation that will not round-trip correctly and should be used + sparingly. + + If *int_as_string_bitcount* is a positive number (n), then int of size + greater than or equal to 2**n or lower than or equal to -2**n will be + encoded as strings. + + If specified, *item_sort_key* is a callable used to sort the items in + each dictionary. This is useful if you want to sort items other than + in alphabetical order by key. This option takes precedence over + *sort_keys*. + + If *sort_keys* is true (default: ``False``), the output of dictionaries + will be sorted by item. + + If *for_json* is true (default: ``False``), objects with a ``for_json()`` + method will use the return value of that method for encoding as JSON + instead of the object. + + If *ignore_nan* is true (default: ``False``), then out of range + :class:`float` values (``nan``, ``inf``, ``-inf``) will be serialized as + ``null`` in compliance with the ECMA-262 specification. If true, this will + override *allow_nan*. + + To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the + ``.default()`` method to serialize additional types), specify it with + the ``cls`` kwarg. NOTE: You should use *default* or *for_json* instead + of subclassing whenever possible. + + """ + # cached encoder + if (not skipkeys and ensure_ascii and + check_circular and allow_nan and + cls is None and indent is None and separators is None and + encoding == 'utf-8' and default is None and use_decimal + and namedtuple_as_object and tuple_as_array + and not bigint_as_string and not sort_keys + and not item_sort_key and not for_json + and not ignore_nan and int_as_string_bitcount is None + and not kw + ): + iterable = _default_encoder.iterencode(obj) + else: + if cls is None: + cls = JSONEncoder + iterable = cls(skipkeys=skipkeys, ensure_ascii=ensure_ascii, + check_circular=check_circular, allow_nan=allow_nan, indent=indent, + separators=separators, encoding=encoding, + default=default, use_decimal=use_decimal, + namedtuple_as_object=namedtuple_as_object, + tuple_as_array=tuple_as_array, + bigint_as_string=bigint_as_string, + sort_keys=sort_keys, + item_sort_key=item_sort_key, + for_json=for_json, + ignore_nan=ignore_nan, + int_as_string_bitcount=int_as_string_bitcount, + **kw).iterencode(obj) + # could accelerate with writelines in some versions of Python, at + # a debuggability cost + for chunk in iterable: + fp.write(chunk) + + +def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, + allow_nan=True, cls=None, indent=None, separators=None, + encoding='utf-8', default=None, use_decimal=True, + namedtuple_as_object=True, tuple_as_array=True, + bigint_as_string=False, sort_keys=False, item_sort_key=None, + for_json=False, ignore_nan=False, int_as_string_bitcount=None, **kw): + """Serialize ``obj`` to a JSON formatted ``str``. + + If ``skipkeys`` is false then ``dict`` keys that are not basic types + (``str``, ``unicode``, ``int``, ``long``, ``float``, ``bool``, ``None``) + will be skipped instead of raising a ``TypeError``. + + If ``ensure_ascii`` is false, then the return value will be a + ``unicode`` instance subject to normal Python ``str`` to ``unicode`` + coercion rules instead of being escaped to an ASCII ``str``. + + If ``check_circular`` is false, then the circular reference check + for container types will be skipped and a circular reference will + result in an ``OverflowError`` (or worse). + + If ``allow_nan`` is false, then it will be a ``ValueError`` to + serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``) in + strict compliance of the JSON specification, instead of using the + JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``). + + If ``indent`` is a string, then JSON array elements and object members + will be pretty-printed with a newline followed by that string repeated + for each level of nesting. ``None`` (the default) selects the most compact + representation without any newlines. For backwards compatibility with + versions of simplejson earlier than 2.1.0, an integer is also accepted + and is converted to a string with that many spaces. + + If specified, ``separators`` should be an + ``(item_separator, key_separator)`` tuple. The default is ``(', ', ': ')`` + if *indent* is ``None`` and ``(',', ': ')`` otherwise. To get the most + compact JSON representation, you should specify ``(',', ':')`` to eliminate + whitespace. + + ``encoding`` is the character encoding for str instances, default is UTF-8. + + ``default(obj)`` is a function that should return a serializable version + of obj or raise TypeError. The default simply raises TypeError. + + If *use_decimal* is true (default: ``True``) then decimal.Decimal + will be natively serialized to JSON with full precision. + + If *namedtuple_as_object* is true (default: ``True``), + :class:`tuple` subclasses with ``_asdict()`` methods will be encoded + as JSON objects. + + If *tuple_as_array* is true (default: ``True``), + :class:`tuple` (and subclasses) will be encoded as JSON arrays. + + If *bigint_as_string* is true (not the default), ints 2**53 and higher + or lower than -2**53 will be encoded as strings. This is to avoid the + rounding that happens in Javascript otherwise. + + If *int_as_string_bitcount* is a positive number (n), then int of size + greater than or equal to 2**n or lower than or equal to -2**n will be + encoded as strings. + + If specified, *item_sort_key* is a callable used to sort the items in + each dictionary. This is useful if you want to sort items other than + in alphabetical order by key. This option takes precendence over + *sort_keys*. + + If *sort_keys* is true (default: ``False``), the output of dictionaries + will be sorted by item. + + If *for_json* is true (default: ``False``), objects with a ``for_json()`` + method will use the return value of that method for encoding as JSON + instead of the object. + + If *ignore_nan* is true (default: ``False``), then out of range + :class:`float` values (``nan``, ``inf``, ``-inf``) will be serialized as + ``null`` in compliance with the ECMA-262 specification. If true, this will + override *allow_nan*. + + To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the + ``.default()`` method to serialize additional types), specify it with + the ``cls`` kwarg. NOTE: You should use *default* instead of subclassing + whenever possible. + + """ + # cached encoder + if ( + not skipkeys and ensure_ascii and + check_circular and allow_nan and + cls is None and indent is None and separators is None and + encoding == 'utf-8' and default is None and use_decimal + and namedtuple_as_object and tuple_as_array + and not bigint_as_string and not sort_keys + and not item_sort_key and not for_json + and not ignore_nan and int_as_string_bitcount is None + and not kw + ): + return _default_encoder.encode(obj) + if cls is None: + cls = JSONEncoder + return cls( + skipkeys=skipkeys, ensure_ascii=ensure_ascii, + check_circular=check_circular, allow_nan=allow_nan, indent=indent, + separators=separators, encoding=encoding, default=default, + use_decimal=use_decimal, + namedtuple_as_object=namedtuple_as_object, + tuple_as_array=tuple_as_array, + bigint_as_string=bigint_as_string, + sort_keys=sort_keys, + item_sort_key=item_sort_key, + for_json=for_json, + ignore_nan=ignore_nan, + int_as_string_bitcount=int_as_string_bitcount, + **kw).encode(obj) + + +_default_decoder = JSONDecoder(encoding=None, object_hook=None, + object_pairs_hook=None) + + +def load(fp, encoding=None, cls=None, object_hook=None, parse_float=None, + parse_int=None, parse_constant=None, object_pairs_hook=None, + use_decimal=False, namedtuple_as_object=True, tuple_as_array=True, + **kw): + """Deserialize ``fp`` (a ``.read()``-supporting file-like object containing + a JSON document) to a Python object. + + *encoding* determines the encoding used to interpret any + :class:`str` objects decoded by this instance (``'utf-8'`` by + default). It has no effect when decoding :class:`unicode` objects. + + Note that currently only encodings that are a superset of ASCII work, + strings of other encodings should be passed in as :class:`unicode`. + + *object_hook*, if specified, will be called with the result of every + JSON object decoded and its return value will be used in place of the + given :class:`dict`. This can be used to provide custom + deserializations (e.g. to support JSON-RPC class hinting). + + *object_pairs_hook* is an optional function that will be called with + the result of any object literal decode with an ordered list of pairs. + The return value of *object_pairs_hook* will be used instead of the + :class:`dict`. This feature can be used to implement custom decoders + that rely on the order that the key and value pairs are decoded (for + example, :func:`collections.OrderedDict` will remember the order of + insertion). If *object_hook* is also defined, the *object_pairs_hook* + takes priority. + + *parse_float*, if specified, will be called with the string of every + JSON float to be decoded. By default, this is equivalent to + ``float(num_str)``. This can be used to use another datatype or parser + for JSON floats (e.g. :class:`decimal.Decimal`). + + *parse_int*, if specified, will be called with the string of every + JSON int to be decoded. By default, this is equivalent to + ``int(num_str)``. This can be used to use another datatype or parser + for JSON integers (e.g. :class:`float`). + + *parse_constant*, if specified, will be called with one of the + following strings: ``'-Infinity'``, ``'Infinity'``, ``'NaN'``. This + can be used to raise an exception if invalid JSON numbers are + encountered. + + If *use_decimal* is true (default: ``False``) then it implies + parse_float=decimal.Decimal for parity with ``dump``. + + To use a custom ``JSONDecoder`` subclass, specify it with the ``cls`` + kwarg. NOTE: You should use *object_hook* or *object_pairs_hook* instead + of subclassing whenever possible. + + """ + return loads(fp.read(), + encoding=encoding, cls=cls, object_hook=object_hook, + parse_float=parse_float, parse_int=parse_int, + parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, + use_decimal=use_decimal, **kw) + + +def loads(s, encoding=None, cls=None, object_hook=None, parse_float=None, + parse_int=None, parse_constant=None, object_pairs_hook=None, + use_decimal=False, **kw): + """Deserialize ``s`` (a ``str`` or ``unicode`` instance containing a JSON + document) to a Python object. + + *encoding* determines the encoding used to interpret any + :class:`str` objects decoded by this instance (``'utf-8'`` by + default). It has no effect when decoding :class:`unicode` objects. + + Note that currently only encodings that are a superset of ASCII work, + strings of other encodings should be passed in as :class:`unicode`. + + *object_hook*, if specified, will be called with the result of every + JSON object decoded and its return value will be used in place of the + given :class:`dict`. This can be used to provide custom + deserializations (e.g. to support JSON-RPC class hinting). + + *object_pairs_hook* is an optional function that will be called with + the result of any object literal decode with an ordered list of pairs. + The return value of *object_pairs_hook* will be used instead of the + :class:`dict`. This feature can be used to implement custom decoders + that rely on the order that the key and value pairs are decoded (for + example, :func:`collections.OrderedDict` will remember the order of + insertion). If *object_hook* is also defined, the *object_pairs_hook* + takes priority. + + *parse_float*, if specified, will be called with the string of every + JSON float to be decoded. By default, this is equivalent to + ``float(num_str)``. This can be used to use another datatype or parser + for JSON floats (e.g. :class:`decimal.Decimal`). + + *parse_int*, if specified, will be called with the string of every + JSON int to be decoded. By default, this is equivalent to + ``int(num_str)``. This can be used to use another datatype or parser + for JSON integers (e.g. :class:`float`). + + *parse_constant*, if specified, will be called with one of the + following strings: ``'-Infinity'``, ``'Infinity'``, ``'NaN'``. This + can be used to raise an exception if invalid JSON numbers are + encountered. + + If *use_decimal* is true (default: ``False``) then it implies + parse_float=decimal.Decimal for parity with ``dump``. + + To use a custom ``JSONDecoder`` subclass, specify it with the ``cls`` + kwarg. NOTE: You should use *object_hook* or *object_pairs_hook* instead + of subclassing whenever possible. + + """ + if (cls is None and encoding is None and object_hook is None and + parse_int is None and parse_float is None and + parse_constant is None and object_pairs_hook is None + and not use_decimal and not kw): + return _default_decoder.decode(s) + if cls is None: + cls = JSONDecoder + if object_hook is not None: + kw['object_hook'] = object_hook + if object_pairs_hook is not None: + kw['object_pairs_hook'] = object_pairs_hook + if parse_float is not None: + kw['parse_float'] = parse_float + if parse_int is not None: + kw['parse_int'] = parse_int + if parse_constant is not None: + kw['parse_constant'] = parse_constant + if use_decimal: + if parse_float is not None: + raise TypeError("use_decimal=True implies parse_float=Decimal") + kw['parse_float'] = Decimal + return cls(encoding=encoding, **kw).decode(s) + + +def _toggle_speedups(enabled): + from . import decoder as dec + from . import encoder as enc + from . import scanner as scan + c_make_encoder = _import_c_make_encoder() + if enabled: + dec.scanstring = dec.c_scanstring or dec.py_scanstring + enc.c_make_encoder = c_make_encoder + enc.encode_basestring_ascii = (enc.c_encode_basestring_ascii or + enc.py_encode_basestring_ascii) + scan.make_scanner = scan.c_make_scanner or scan.py_make_scanner + else: + dec.scanstring = dec.py_scanstring + enc.c_make_encoder = None + enc.encode_basestring_ascii = enc.py_encode_basestring_ascii + scan.make_scanner = scan.py_make_scanner + dec.make_scanner = scan.make_scanner + global _default_decoder + _default_decoder = JSONDecoder( + encoding=None, + object_hook=None, + object_pairs_hook=None, + ) + global _default_encoder + _default_encoder = JSONEncoder( + skipkeys=False, + ensure_ascii=True, + check_circular=True, + allow_nan=True, + indent=None, + separators=None, + encoding='utf-8', + default=None, + ) + +def simple_first(kv): + """Helper function to pass to item_sort_key to sort simple + elements to the top, then container elements. + """ + return (isinstance(kv[1], (list, dict, tuple)), kv[0]) diff --git a/resources/site-packages/simplejson/compat.py b/resources/site-packages/simplejson/compat.py new file mode 100644 index 000000000..a0af4a1cb --- /dev/null +++ b/resources/site-packages/simplejson/compat.py @@ -0,0 +1,46 @@ +"""Python 3 compatibility shims +""" +import sys +if sys.version_info[0] < 3: + PY3 = False + def b(s): + return s + def u(s): + return unicode(s, 'unicode_escape') + import cStringIO as StringIO + StringIO = BytesIO = StringIO.StringIO + text_type = unicode + binary_type = str + string_types = (basestring,) + integer_types = (int, long) + unichr = unichr + reload_module = reload + def fromhex(s): + return s.decode('hex') + +else: + PY3 = True + if sys.version_info[:2] >= (3, 4): + from importlib import reload as reload_module + else: + from imp import reload as reload_module + import codecs + def b(s): + return codecs.latin_1_encode(s)[0] + def u(s): + return s + import io + StringIO = io.StringIO + BytesIO = io.BytesIO + text_type = str + binary_type = bytes + string_types = (str,) + integer_types = (int,) + + def unichr(s): + return u(chr(s)) + + def fromhex(s): + return bytes.fromhex(s) + +long_type = integer_types[-1] diff --git a/resources/site-packages/simplejson/decoder.py b/resources/site-packages/simplejson/decoder.py new file mode 100644 index 000000000..545e65877 --- /dev/null +++ b/resources/site-packages/simplejson/decoder.py @@ -0,0 +1,400 @@ +"""Implementation of JSONDecoder +""" +from __future__ import absolute_import +import re +import sys +import struct +from .compat import fromhex, b, u, text_type, binary_type, PY3, unichr +from .scanner import make_scanner, JSONDecodeError + +def _import_c_scanstring(): + try: + from ._speedups import scanstring + return scanstring + except ImportError: + return None +c_scanstring = _import_c_scanstring() + +# NOTE (3.1.0): JSONDecodeError may still be imported from this module for +# compatibility, but it was never in the __all__ +__all__ = ['JSONDecoder'] + +FLAGS = re.VERBOSE | re.MULTILINE | re.DOTALL + +def _floatconstants(): + _BYTES = fromhex('7FF80000000000007FF0000000000000') + # The struct module in Python 2.4 would get frexp() out of range here + # when an endian is specified in the format string. Fixed in Python 2.5+ + if sys.byteorder != 'big': + _BYTES = _BYTES[:8][::-1] + _BYTES[8:][::-1] + nan, inf = struct.unpack('dd', _BYTES) + return nan, inf, -inf + +NaN, PosInf, NegInf = _floatconstants() + +_CONSTANTS = { + '-Infinity': NegInf, + 'Infinity': PosInf, + 'NaN': NaN, +} + +STRINGCHUNK = re.compile(r'(.*?)(["\\\x00-\x1f])', FLAGS) +BACKSLASH = { + '"': u('"'), '\\': u('\u005c'), '/': u('/'), + 'b': u('\b'), 'f': u('\f'), 'n': u('\n'), 'r': u('\r'), 't': u('\t'), +} + +DEFAULT_ENCODING = "utf-8" + +def py_scanstring(s, end, encoding=None, strict=True, + _b=BACKSLASH, _m=STRINGCHUNK.match, _join=u('').join, + _PY3=PY3, _maxunicode=sys.maxunicode): + """Scan the string s for a JSON string. End is the index of the + character in s after the quote that started the JSON string. + Unescapes all valid JSON string escape sequences and raises ValueError + on attempt to decode an invalid string. If strict is False then literal + control characters are allowed in the string. + + Returns a tuple of the decoded string and the index of the character in s + after the end quote.""" + if encoding is None: + encoding = DEFAULT_ENCODING + chunks = [] + _append = chunks.append + begin = end - 1 + while 1: + chunk = _m(s, end) + if chunk is None: + raise JSONDecodeError( + "Unterminated string starting at", s, begin) + end = chunk.end() + content, terminator = chunk.groups() + # Content is contains zero or more unescaped string characters + if content: + if not _PY3 and not isinstance(content, text_type): + content = text_type(content, encoding) + _append(content) + # Terminator is the end of string, a literal control character, + # or a backslash denoting that an escape sequence follows + if terminator == '"': + break + elif terminator != '\\': + if strict: + msg = "Invalid control character %r at" + raise JSONDecodeError(msg, s, end) + else: + _append(terminator) + continue + try: + esc = s[end] + except IndexError: + raise JSONDecodeError( + "Unterminated string starting at", s, begin) + # If not a unicode escape sequence, must be in the lookup table + if esc != 'u': + try: + char = _b[esc] + except KeyError: + msg = "Invalid \\X escape sequence %r" + raise JSONDecodeError(msg, s, end) + end += 1 + else: + # Unicode escape sequence + msg = "Invalid \\uXXXX escape sequence" + esc = s[end + 1:end + 5] + escX = esc[1:2] + if len(esc) != 4 or escX == 'x' or escX == 'X': + raise JSONDecodeError(msg, s, end - 1) + try: + uni = int(esc, 16) + except ValueError: + raise JSONDecodeError(msg, s, end - 1) + end += 5 + # Check for surrogate pair on UCS-4 systems + # Note that this will join high/low surrogate pairs + # but will also pass unpaired surrogates through + if (_maxunicode > 65535 and + uni & 0xfc00 == 0xd800 and + s[end:end + 2] == '\\u'): + esc2 = s[end + 2:end + 6] + escX = esc2[1:2] + if len(esc2) == 4 and not (escX == 'x' or escX == 'X'): + try: + uni2 = int(esc2, 16) + except ValueError: + raise JSONDecodeError(msg, s, end) + if uni2 & 0xfc00 == 0xdc00: + uni = 0x10000 + (((uni - 0xd800) << 10) | + (uni2 - 0xdc00)) + end += 6 + char = unichr(uni) + # Append the unescaped character + _append(char) + return _join(chunks), end + + +# Use speedup if available +scanstring = c_scanstring or py_scanstring + +WHITESPACE = re.compile(r'[ \t\n\r]*', FLAGS) +WHITESPACE_STR = ' \t\n\r' + +def JSONObject(state, encoding, strict, scan_once, object_hook, + object_pairs_hook, memo=None, + _w=WHITESPACE.match, _ws=WHITESPACE_STR): + (s, end) = state + # Backwards compatibility + if memo is None: + memo = {} + memo_get = memo.setdefault + pairs = [] + # Use a slice to prevent IndexError from being raised, the following + # check will raise a more specific ValueError if the string is empty + nextchar = s[end:end + 1] + # Normally we expect nextchar == '"' + if nextchar != '"': + if nextchar in _ws: + end = _w(s, end).end() + nextchar = s[end:end + 1] + # Trivial empty object + if nextchar == '}': + if object_pairs_hook is not None: + result = object_pairs_hook(pairs) + return result, end + 1 + pairs = {} + if object_hook is not None: + pairs = object_hook(pairs) + return pairs, end + 1 + elif nextchar != '"': + raise JSONDecodeError( + "Expecting property name enclosed in double quotes", + s, end) + end += 1 + while True: + key, end = scanstring(s, end, encoding, strict) + key = memo_get(key, key) + + # To skip some function call overhead we optimize the fast paths where + # the JSON key separator is ": " or just ":". + if s[end:end + 1] != ':': + end = _w(s, end).end() + if s[end:end + 1] != ':': + raise JSONDecodeError("Expecting ':' delimiter", s, end) + + end += 1 + + try: + if s[end] in _ws: + end += 1 + if s[end] in _ws: + end = _w(s, end + 1).end() + except IndexError: + pass + + value, end = scan_once(s, end) + pairs.append((key, value)) + + try: + nextchar = s[end] + if nextchar in _ws: + end = _w(s, end + 1).end() + nextchar = s[end] + except IndexError: + nextchar = '' + end += 1 + + if nextchar == '}': + break + elif nextchar != ',': + raise JSONDecodeError("Expecting ',' delimiter or '}'", s, end - 1) + + try: + nextchar = s[end] + if nextchar in _ws: + end += 1 + nextchar = s[end] + if nextchar in _ws: + end = _w(s, end + 1).end() + nextchar = s[end] + except IndexError: + nextchar = '' + + end += 1 + if nextchar != '"': + raise JSONDecodeError( + "Expecting property name enclosed in double quotes", + s, end - 1) + + if object_pairs_hook is not None: + result = object_pairs_hook(pairs) + return result, end + pairs = dict(pairs) + if object_hook is not None: + pairs = object_hook(pairs) + return pairs, end + +def JSONArray(state, scan_once, _w=WHITESPACE.match, _ws=WHITESPACE_STR): + (s, end) = state + values = [] + nextchar = s[end:end + 1] + if nextchar in _ws: + end = _w(s, end + 1).end() + nextchar = s[end:end + 1] + # Look-ahead for trivial empty array + if nextchar == ']': + return values, end + 1 + elif nextchar == '': + raise JSONDecodeError("Expecting value or ']'", s, end) + _append = values.append + while True: + value, end = scan_once(s, end) + _append(value) + nextchar = s[end:end + 1] + if nextchar in _ws: + end = _w(s, end + 1).end() + nextchar = s[end:end + 1] + end += 1 + if nextchar == ']': + break + elif nextchar != ',': + raise JSONDecodeError("Expecting ',' delimiter or ']'", s, end - 1) + + try: + if s[end] in _ws: + end += 1 + if s[end] in _ws: + end = _w(s, end + 1).end() + except IndexError: + pass + + return values, end + +class JSONDecoder(object): + """Simple JSON decoder + + Performs the following translations in decoding by default: + + +---------------+-------------------+ + | JSON | Python | + +===============+===================+ + | object | dict | + +---------------+-------------------+ + | array | list | + +---------------+-------------------+ + | string | str, unicode | + +---------------+-------------------+ + | number (int) | int, long | + +---------------+-------------------+ + | number (real) | float | + +---------------+-------------------+ + | true | True | + +---------------+-------------------+ + | false | False | + +---------------+-------------------+ + | null | None | + +---------------+-------------------+ + + It also understands ``NaN``, ``Infinity``, and ``-Infinity`` as + their corresponding ``float`` values, which is outside the JSON spec. + + """ + + def __init__(self, encoding=None, object_hook=None, parse_float=None, + parse_int=None, parse_constant=None, strict=True, + object_pairs_hook=None): + """ + *encoding* determines the encoding used to interpret any + :class:`str` objects decoded by this instance (``'utf-8'`` by + default). It has no effect when decoding :class:`unicode` objects. + + Note that currently only encodings that are a superset of ASCII work, + strings of other encodings should be passed in as :class:`unicode`. + + *object_hook*, if specified, will be called with the result of every + JSON object decoded and its return value will be used in place of the + given :class:`dict`. This can be used to provide custom + deserializations (e.g. to support JSON-RPC class hinting). + + *object_pairs_hook* is an optional function that will be called with + the result of any object literal decode with an ordered list of pairs. + The return value of *object_pairs_hook* will be used instead of the + :class:`dict`. This feature can be used to implement custom decoders + that rely on the order that the key and value pairs are decoded (for + example, :func:`collections.OrderedDict` will remember the order of + insertion). If *object_hook* is also defined, the *object_pairs_hook* + takes priority. + + *parse_float*, if specified, will be called with the string of every + JSON float to be decoded. By default, this is equivalent to + ``float(num_str)``. This can be used to use another datatype or parser + for JSON floats (e.g. :class:`decimal.Decimal`). + + *parse_int*, if specified, will be called with the string of every + JSON int to be decoded. By default, this is equivalent to + ``int(num_str)``. This can be used to use another datatype or parser + for JSON integers (e.g. :class:`float`). + + *parse_constant*, if specified, will be called with one of the + following strings: ``'-Infinity'``, ``'Infinity'``, ``'NaN'``. This + can be used to raise an exception if invalid JSON numbers are + encountered. + + *strict* controls the parser's behavior when it encounters an + invalid control character in a string. The default setting of + ``True`` means that unescaped control characters are parse errors, if + ``False`` then control characters will be allowed in strings. + + """ + if encoding is None: + encoding = DEFAULT_ENCODING + self.encoding = encoding + self.object_hook = object_hook + self.object_pairs_hook = object_pairs_hook + self.parse_float = parse_float or float + self.parse_int = parse_int or int + self.parse_constant = parse_constant or _CONSTANTS.__getitem__ + self.strict = strict + self.parse_object = JSONObject + self.parse_array = JSONArray + self.parse_string = scanstring + self.memo = {} + self.scan_once = make_scanner(self) + + def decode(self, s, _w=WHITESPACE.match, _PY3=PY3): + """Return the Python representation of ``s`` (a ``str`` or ``unicode`` + instance containing a JSON document) + + """ + if _PY3 and isinstance(s, binary_type): + s = s.decode(self.encoding) + obj, end = self.raw_decode(s) + end = _w(s, end).end() + if end != len(s): + raise JSONDecodeError("Extra data", s, end, len(s)) + return obj + + def raw_decode(self, s, idx=0, _w=WHITESPACE.match, _PY3=PY3): + """Decode a JSON document from ``s`` (a ``str`` or ``unicode`` + beginning with a JSON document) and return a 2-tuple of the Python + representation and the index in ``s`` where the document ended. + Optionally, ``idx`` can be used to specify an offset in ``s`` where + the JSON document begins. + + This can be used to decode a JSON document from a string that may + have extraneous data at the end. + + """ + if idx < 0: + # Ensure that raw_decode bails on negative indexes, the regex + # would otherwise mask this behavior. #98 + raise JSONDecodeError('Expecting value', s, idx) + if _PY3 and not isinstance(s, text_type): + raise TypeError("Input string must be text, not bytes") + # strip UTF-8 bom + if len(s) > idx: + ord0 = ord(s[idx]) + if ord0 == 0xfeff: + idx += 1 + elif ord0 == 0xef and s[idx:idx + 3] == '\xef\xbb\xbf': + idx += 3 + return self.scan_once(s, idx=_w(s, idx).end()) diff --git a/resources/site-packages/simplejson/encoder.py b/resources/site-packages/simplejson/encoder.py new file mode 100644 index 000000000..db18244ec --- /dev/null +++ b/resources/site-packages/simplejson/encoder.py @@ -0,0 +1,648 @@ +"""Implementation of JSONEncoder +""" +from __future__ import absolute_import +import re +from operator import itemgetter +from decimal import Decimal +from .compat import u, unichr, binary_type, string_types, integer_types, PY3 +def _import_speedups(): + try: + from . import _speedups + return _speedups.encode_basestring_ascii, _speedups.make_encoder + except ImportError: + return None, None +c_encode_basestring_ascii, c_make_encoder = _import_speedups() + +from simplejson.decoder import PosInf + +#ESCAPE = re.compile(ur'[\x00-\x1f\\"\b\f\n\r\t\u2028\u2029]') +# This is required because u() will mangle the string and ur'' isn't valid +# python3 syntax +ESCAPE = re.compile(u'[\\x00-\\x1f\\\\"\\b\\f\\n\\r\\t\u2028\u2029]') +ESCAPE_ASCII = re.compile(r'([\\"]|[^\ -~])') +HAS_UTF8 = re.compile(r'[\x80-\xff]') +ESCAPE_DCT = { + '\\': '\\\\', + '"': '\\"', + '\b': '\\b', + '\f': '\\f', + '\n': '\\n', + '\r': '\\r', + '\t': '\\t', +} +for i in range(0x20): + #ESCAPE_DCT.setdefault(chr(i), '\\u{0:04x}'.format(i)) + ESCAPE_DCT.setdefault(chr(i), '\\u%04x' % (i,)) +for i in [0x2028, 0x2029]: + ESCAPE_DCT.setdefault(unichr(i), '\\u%04x' % (i,)) + +FLOAT_REPR = repr + +def encode_basestring(s, _PY3=PY3, _q=u('"')): + """Return a JSON representation of a Python string + + """ + if _PY3: + if isinstance(s, binary_type): + s = s.decode('utf-8') + else: + if isinstance(s, str) and HAS_UTF8.search(s) is not None: + s = s.decode('utf-8') + def replace(match): + return ESCAPE_DCT[match.group(0)] + return _q + ESCAPE.sub(replace, s) + _q + + +def py_encode_basestring_ascii(s, _PY3=PY3): + """Return an ASCII-only JSON representation of a Python string + + """ + if _PY3: + if isinstance(s, binary_type): + s = s.decode('utf-8') + else: + if isinstance(s, str) and HAS_UTF8.search(s) is not None: + s = s.decode('utf-8') + def replace(match): + s = match.group(0) + try: + return ESCAPE_DCT[s] + except KeyError: + n = ord(s) + if n < 0x10000: + #return '\\u{0:04x}'.format(n) + return '\\u%04x' % (n,) + else: + # surrogate pair + n -= 0x10000 + s1 = 0xd800 | ((n >> 10) & 0x3ff) + s2 = 0xdc00 | (n & 0x3ff) + #return '\\u{0:04x}\\u{1:04x}'.format(s1, s2) + return '\\u%04x\\u%04x' % (s1, s2) + return '"' + str(ESCAPE_ASCII.sub(replace, s)) + '"' + + +encode_basestring_ascii = ( + c_encode_basestring_ascii or py_encode_basestring_ascii) + +class JSONEncoder(object): + """Extensible JSON encoder for Python data structures. + + Supports the following objects and types by default: + + +-------------------+---------------+ + | Python | JSON | + +===================+===============+ + | dict, namedtuple | object | + +-------------------+---------------+ + | list, tuple | array | + +-------------------+---------------+ + | str, unicode | string | + +-------------------+---------------+ + | int, long, float | number | + +-------------------+---------------+ + | True | true | + +-------------------+---------------+ + | False | false | + +-------------------+---------------+ + | None | null | + +-------------------+---------------+ + + To extend this to recognize other objects, subclass and implement a + ``.default()`` method with another method that returns a serializable + object for ``o`` if possible, otherwise it should call the superclass + implementation (to raise ``TypeError``). + + """ + item_separator = ', ' + key_separator = ': ' + + def __init__(self, skipkeys=False, ensure_ascii=True, + check_circular=True, allow_nan=True, sort_keys=False, + indent=None, separators=None, encoding='utf-8', default=None, + use_decimal=True, namedtuple_as_object=True, + tuple_as_array=True, bigint_as_string=False, + item_sort_key=None, for_json=False, ignore_nan=False, + int_as_string_bitcount=None): + """Constructor for JSONEncoder, with sensible defaults. + + If skipkeys is false, then it is a TypeError to attempt + encoding of keys that are not str, int, long, float or None. If + skipkeys is True, such items are simply skipped. + + If ensure_ascii is true, the output is guaranteed to be str + objects with all incoming unicode characters escaped. If + ensure_ascii is false, the output will be unicode object. + + If check_circular is true, then lists, dicts, and custom encoded + objects will be checked for circular references during encoding to + prevent an infinite recursion (which would cause an OverflowError). + Otherwise, no such check takes place. + + If allow_nan is true, then NaN, Infinity, and -Infinity will be + encoded as such. This behavior is not JSON specification compliant, + but is consistent with most JavaScript based encoders and decoders. + Otherwise, it will be a ValueError to encode such floats. + + If sort_keys is true, then the output of dictionaries will be + sorted by key; this is useful for regression tests to ensure + that JSON serializations can be compared on a day-to-day basis. + + If indent is a string, then JSON array elements and object members + will be pretty-printed with a newline followed by that string repeated + for each level of nesting. ``None`` (the default) selects the most compact + representation without any newlines. For backwards compatibility with + versions of simplejson earlier than 2.1.0, an integer is also accepted + and is converted to a string with that many spaces. + + If specified, separators should be an (item_separator, key_separator) + tuple. The default is (', ', ': ') if *indent* is ``None`` and + (',', ': ') otherwise. To get the most compact JSON representation, + you should specify (',', ':') to eliminate whitespace. + + If specified, default is a function that gets called for objects + that can't otherwise be serialized. It should return a JSON encodable + version of the object or raise a ``TypeError``. + + If encoding is not None, then all input strings will be + transformed into unicode using that encoding prior to JSON-encoding. + The default is UTF-8. + + If use_decimal is true (not the default), ``decimal.Decimal`` will + be supported directly by the encoder. For the inverse, decode JSON + with ``parse_float=decimal.Decimal``. + + If namedtuple_as_object is true (the default), objects with + ``_asdict()`` methods will be encoded as JSON objects. + + If tuple_as_array is true (the default), tuple (and subclasses) will + be encoded as JSON arrays. + + If bigint_as_string is true (not the default), ints 2**53 and higher + or lower than -2**53 will be encoded as strings. This is to avoid the + rounding that happens in Javascript otherwise. + + If int_as_string_bitcount is a positive number (n), then int of size + greater than or equal to 2**n or lower than or equal to -2**n will be + encoded as strings. + + If specified, item_sort_key is a callable used to sort the items in + each dictionary. This is useful if you want to sort items other than + in alphabetical order by key. + + If for_json is true (not the default), objects with a ``for_json()`` + method will use the return value of that method for encoding as JSON + instead of the object. + + If *ignore_nan* is true (default: ``False``), then out of range + :class:`float` values (``nan``, ``inf``, ``-inf``) will be serialized + as ``null`` in compliance with the ECMA-262 specification. If true, + this will override *allow_nan*. + + """ + + self.skipkeys = skipkeys + self.ensure_ascii = ensure_ascii + self.check_circular = check_circular + self.allow_nan = allow_nan + self.sort_keys = sort_keys + self.use_decimal = use_decimal + self.namedtuple_as_object = namedtuple_as_object + self.tuple_as_array = tuple_as_array + self.bigint_as_string = bigint_as_string + self.item_sort_key = item_sort_key + self.for_json = for_json + self.ignore_nan = ignore_nan + self.int_as_string_bitcount = int_as_string_bitcount + if indent is not None and not isinstance(indent, string_types): + indent = indent * ' ' + self.indent = indent + if separators is not None: + self.item_separator, self.key_separator = separators + elif indent is not None: + self.item_separator = ',' + if default is not None: + self.default = default + self.encoding = encoding + + def default(self, o): + """Implement this method in a subclass such that it returns + a serializable object for ``o``, or calls the base implementation + (to raise a ``TypeError``). + + For example, to support arbitrary iterators, you could + implement default like this:: + + def default(self, o): + try: + iterable = iter(o) + except TypeError: + pass + else: + return list(iterable) + return JSONEncoder.default(self, o) + + """ + raise TypeError(repr(o) + " is not JSON serializable") + + def encode(self, o): + """Return a JSON string representation of a Python data structure. + + >>> from simplejson import JSONEncoder + >>> JSONEncoder().encode({"foo": ["bar", "baz"]}) + '{"foo": ["bar", "baz"]}' + + """ + # This is for extremely simple cases and benchmarks. + if isinstance(o, binary_type): + _encoding = self.encoding + if (_encoding is not None and not (_encoding == 'utf-8')): + o = o.decode(_encoding) + if isinstance(o, string_types): + if self.ensure_ascii: + return encode_basestring_ascii(o) + else: + return encode_basestring(o) + # This doesn't pass the iterator directly to ''.join() because the + # exceptions aren't as detailed. The list call should be roughly + # equivalent to the PySequence_Fast that ''.join() would do. + chunks = self.iterencode(o, _one_shot=True) + if not isinstance(chunks, (list, tuple)): + chunks = list(chunks) + if self.ensure_ascii: + return ''.join(chunks) + else: + return u''.join(chunks) + + def iterencode(self, o, _one_shot=False): + """Encode the given object and yield each string + representation as available. + + For example:: + + for chunk in JSONEncoder().iterencode(bigobject): + mysocket.write(chunk) + + """ + if self.check_circular: + markers = {} + else: + markers = None + if self.ensure_ascii: + _encoder = encode_basestring_ascii + else: + _encoder = encode_basestring + if self.encoding != 'utf-8': + def _encoder(o, _orig_encoder=_encoder, _encoding=self.encoding): + if isinstance(o, binary_type): + o = o.decode(_encoding) + return _orig_encoder(o) + + def floatstr(o, allow_nan=self.allow_nan, ignore_nan=self.ignore_nan, + _repr=FLOAT_REPR, _inf=PosInf, _neginf=-PosInf): + # Check for specials. Note that this type of test is processor + # and/or platform-specific, so do tests which don't depend on + # the internals. + + if o != o: + text = 'NaN' + elif o == _inf: + text = 'Infinity' + elif o == _neginf: + text = '-Infinity' + else: + return _repr(o) + + if ignore_nan: + text = 'null' + elif not allow_nan: + raise ValueError( + "Out of range float values are not JSON compliant: " + + repr(o)) + + return text + + key_memo = {} + int_as_string_bitcount = ( + 53 if self.bigint_as_string else self.int_as_string_bitcount) + if (_one_shot and c_make_encoder is not None + and self.indent is None): + _iterencode = c_make_encoder( + markers, self.default, _encoder, self.indent, + self.key_separator, self.item_separator, self.sort_keys, + self.skipkeys, self.allow_nan, key_memo, self.use_decimal, + self.namedtuple_as_object, self.tuple_as_array, + int_as_string_bitcount, + self.item_sort_key, self.encoding, self.for_json, + self.ignore_nan, Decimal) + else: + _iterencode = _make_iterencode( + markers, self.default, _encoder, self.indent, floatstr, + self.key_separator, self.item_separator, self.sort_keys, + self.skipkeys, _one_shot, self.use_decimal, + self.namedtuple_as_object, self.tuple_as_array, + int_as_string_bitcount, + self.item_sort_key, self.encoding, self.for_json, + Decimal=Decimal) + try: + return _iterencode(o, 0) + finally: + key_memo.clear() + + +class JSONEncoderForHTML(JSONEncoder): + """An encoder that produces JSON safe to embed in HTML. + + To embed JSON content in, say, a script tag on a web page, the + characters &, < and > should be escaped. They cannot be escaped + with the usual entities (e.g. &) because they are not expanded + within \ No newline at end of file diff --git a/resources/web/static/css/main.e9dfa71b.css b/resources/web/static/css/main.e9dfa71b.css new file mode 100644 index 000000000..011ff6c8d --- /dev/null +++ b/resources/web/static/css/main.e9dfa71b.css @@ -0,0 +1,149 @@ +/*! + * # Semantic UI 2.2.9 - Reset + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */*,:after,:before{box-sizing:inherit}html{box-sizing:border-box}input[type=email],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;-moz-appearance:none} + +/*! normalize.css v3.0.1 | MIT License | git.io/normalize */ +/*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! + * # Semantic UI 2.2.9 - Grid + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.grid{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;-webkit-align-items:stretch;align-items:stretch;padding:0;margin:-1rem}.ui.relaxed.grid{margin-left:-1.5rem;margin-right:-1.5rem}.ui[class*="very relaxed"].grid{margin-left:-2.5rem;margin-right:-2.5rem}.ui.grid+.grid{margin-top:1rem}.ui.grid>.column:not(.row),.ui.grid>.row>.column{position:relative;display:inline-block;width:6.25%;padding-left:1rem;padding-right:1rem;vertical-align:top}.ui.grid>*{padding-left:1rem;padding-right:1rem}.ui.grid>.row{position:relative;display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:inherit;-ms-flex-pack:inherit;-webkit-justify-content:inherit;justify-content:inherit;-webkit-box-align:stretch;-ms-flex-align:stretch;-webkit-align-items:stretch;align-items:stretch;width:100%!important;padding:0;padding-top:1rem;padding-bottom:1rem}.ui.grid>.column:not(.row){padding-top:1rem;padding-bottom:1rem}.ui.grid>.row>.column{margin-top:0;margin-bottom:0}.ui.grid>.row>.column>img,.ui.grid>.row>img{max-width:100%}.ui.grid>.ui.grid:first-child{margin-top:0}.ui.grid>.ui.grid:last-child{margin-bottom:0}.ui.aligned.grid .column>.segment:not(.compact):not(.attached),.ui.grid .aligned.row>.column>.segment:not(.compact):not(.attached){width:100%}.ui.grid .row+.ui.divider{-webkit-box-flex:1;-ms-flex-positive:1;-webkit-flex-grow:1;flex-grow:1;margin:1rem}.ui.grid .column+.ui.vertical.divider{height:calc(50% - 1rem)}.ui.grid>.column:last-child>.horizontal.segment,.ui.grid>.row>.column:last-child>.horizontal.segment{box-shadow:none}@media only screen and (max-width:767px){.ui.page.grid{width:auto;padding-left:0;padding-right:0;margin-left:0;margin-right:0}}@media only screen and (min-width:768px) and (max-width:991px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:2em;padding-right:2em}}@media only screen and (min-width:992px) and (max-width:1199px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:3%;padding-right:3%}}@media only screen and (min-width:1200px) and (max-width:1919px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:15%;padding-right:15%}}@media only screen and (min-width:1920px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:23%;padding-right:23%}}.ui.grid>.column:only-child,.ui.grid>.row>.column:only-child,.ui[class*="one column"].grid>.column:not(.row),.ui[class*="one column"].grid>.row>.column{width:100%}.ui[class*="two column"].grid>.column:not(.row),.ui[class*="two column"].grid>.row>.column{width:50%}.ui[class*="three column"].grid>.column:not(.row),.ui[class*="three column"].grid>.row>.column{width:33.33333333%}.ui[class*="four column"].grid>.column:not(.row),.ui[class*="four column"].grid>.row>.column{width:25%}.ui[class*="five column"].grid>.column:not(.row),.ui[class*="five column"].grid>.row>.column{width:20%}.ui[class*="six column"].grid>.column:not(.row),.ui[class*="six column"].grid>.row>.column{width:16.66666667%}.ui[class*="seven column"].grid>.column:not(.row),.ui[class*="seven column"].grid>.row>.column{width:14.28571429%}.ui[class*="eight column"].grid>.column:not(.row),.ui[class*="eight column"].grid>.row>.column{width:12.5%}.ui[class*="nine column"].grid>.column:not(.row),.ui[class*="nine column"].grid>.row>.column{width:11.11111111%}.ui[class*="ten column"].grid>.column:not(.row),.ui[class*="ten column"].grid>.row>.column{width:10%}.ui[class*="eleven column"].grid>.column:not(.row),.ui[class*="eleven column"].grid>.row>.column{width:9.09090909%}.ui[class*="twelve column"].grid>.column:not(.row),.ui[class*="twelve column"].grid>.row>.column{width:8.33333333%}.ui[class*="thirteen column"].grid>.column:not(.row),.ui[class*="thirteen column"].grid>.row>.column{width:7.69230769%}.ui[class*="fourteen column"].grid>.column:not(.row),.ui[class*="fourteen column"].grid>.row>.column{width:7.14285714%}.ui[class*="fifteen column"].grid>.column:not(.row),.ui[class*="fifteen column"].grid>.row>.column{width:6.66666667%}.ui[class*="sixteen column"].grid>.column:not(.row),.ui[class*="sixteen column"].grid>.row>.column{width:6.25%}.ui.grid>[class*="one column"].row>.column{width:100%!important}.ui.grid>[class*="two column"].row>.column{width:50%!important}.ui.grid>[class*="three column"].row>.column{width:33.33333333%!important}.ui.grid>[class*="four column"].row>.column{width:25%!important}.ui.grid>[class*="five column"].row>.column{width:20%!important}.ui.grid>[class*="six column"].row>.column{width:16.66666667%!important}.ui.grid>[class*="seven column"].row>.column{width:14.28571429%!important}.ui.grid>[class*="eight column"].row>.column{width:12.5%!important}.ui.grid>[class*="nine column"].row>.column{width:11.11111111%!important}.ui.grid>[class*="ten column"].row>.column{width:10%!important}.ui.grid>[class*="eleven column"].row>.column{width:9.09090909%!important}.ui.grid>[class*="twelve column"].row>.column{width:8.33333333%!important}.ui.grid>[class*="thirteen column"].row>.column{width:7.69230769%!important}.ui.grid>[class*="fourteen column"].row>.column{width:7.14285714%!important}.ui.grid>[class*="fifteen column"].row>.column{width:6.66666667%!important}.ui.grid>[class*="sixteen column"].row>.column{width:6.25%!important}.ui.celled.page.grid{box-shadow:none}.ui.column.grid>[class*="one wide"].column,.ui.grid>.column.row>[class*="one wide"].column,.ui.grid>.row>[class*="one wide"].column,.ui.grid>[class*="one wide"].column{width:6.25%!important}.ui.column.grid>[class*="two wide"].column,.ui.grid>.column.row>[class*="two wide"].column,.ui.grid>.row>[class*="two wide"].column,.ui.grid>[class*="two wide"].column{width:12.5%!important}.ui.column.grid>[class*="three wide"].column,.ui.grid>.column.row>[class*="three wide"].column,.ui.grid>.row>[class*="three wide"].column,.ui.grid>[class*="three wide"].column{width:18.75%!important}.ui.column.grid>[class*="four wide"].column,.ui.grid>.column.row>[class*="four wide"].column,.ui.grid>.row>[class*="four wide"].column,.ui.grid>[class*="four wide"].column{width:25%!important}.ui.column.grid>[class*="five wide"].column,.ui.grid>.column.row>[class*="five wide"].column,.ui.grid>.row>[class*="five wide"].column,.ui.grid>[class*="five wide"].column{width:31.25%!important}.ui.column.grid>[class*="six wide"].column,.ui.grid>.column.row>[class*="six wide"].column,.ui.grid>.row>[class*="six wide"].column,.ui.grid>[class*="six wide"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide"].column,.ui.grid>.column.row>[class*="seven wide"].column,.ui.grid>.row>[class*="seven wide"].column,.ui.grid>[class*="seven wide"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide"].column,.ui.grid>.column.row>[class*="eight wide"].column,.ui.grid>.row>[class*="eight wide"].column,.ui.grid>[class*="eight wide"].column{width:50%!important}.ui.column.grid>[class*="nine wide"].column,.ui.grid>.column.row>[class*="nine wide"].column,.ui.grid>.row>[class*="nine wide"].column,.ui.grid>[class*="nine wide"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide"].column,.ui.grid>.column.row>[class*="ten wide"].column,.ui.grid>.row>[class*="ten wide"].column,.ui.grid>[class*="ten wide"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide"].column,.ui.grid>.column.row>[class*="eleven wide"].column,.ui.grid>.row>[class*="eleven wide"].column,.ui.grid>[class*="eleven wide"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide"].column,.ui.grid>.column.row>[class*="twelve wide"].column,.ui.grid>.row>[class*="twelve wide"].column,.ui.grid>[class*="twelve wide"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide"].column,.ui.grid>.column.row>[class*="thirteen wide"].column,.ui.grid>.row>[class*="thirteen wide"].column,.ui.grid>[class*="thirteen wide"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide"].column,.ui.grid>.column.row>[class*="fourteen wide"].column,.ui.grid>.row>[class*="fourteen wide"].column,.ui.grid>[class*="fourteen wide"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide"].column,.ui.grid>.column.row>[class*="fifteen wide"].column,.ui.grid>.row>[class*="fifteen wide"].column,.ui.grid>[class*="fifteen wide"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide"].column,.ui.grid>.column.row>[class*="sixteen wide"].column,.ui.grid>.row>[class*="sixteen wide"].column,.ui.grid>[class*="sixteen wide"].column{width:100%!important}@media only screen and (min-width:320px) and (max-width:767px){.ui.column.grid>[class*="one wide mobile"].column,.ui.grid>.column.row>[class*="one wide mobile"].column,.ui.grid>.row>[class*="one wide mobile"].column,.ui.grid>[class*="one wide mobile"].column{width:6.25%!important}.ui.column.grid>[class*="two wide mobile"].column,.ui.grid>.column.row>[class*="two wide mobile"].column,.ui.grid>.row>[class*="two wide mobile"].column,.ui.grid>[class*="two wide mobile"].column{width:12.5%!important}.ui.column.grid>[class*="three wide mobile"].column,.ui.grid>.column.row>[class*="three wide mobile"].column,.ui.grid>.row>[class*="three wide mobile"].column,.ui.grid>[class*="three wide mobile"].column{width:18.75%!important}.ui.column.grid>[class*="four wide mobile"].column,.ui.grid>.column.row>[class*="four wide mobile"].column,.ui.grid>.row>[class*="four wide mobile"].column,.ui.grid>[class*="four wide mobile"].column{width:25%!important}.ui.column.grid>[class*="five wide mobile"].column,.ui.grid>.column.row>[class*="five wide mobile"].column,.ui.grid>.row>[class*="five wide mobile"].column,.ui.grid>[class*="five wide mobile"].column{width:31.25%!important}.ui.column.grid>[class*="six wide mobile"].column,.ui.grid>.column.row>[class*="six wide mobile"].column,.ui.grid>.row>[class*="six wide mobile"].column,.ui.grid>[class*="six wide mobile"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide mobile"].column,.ui.grid>.column.row>[class*="seven wide mobile"].column,.ui.grid>.row>[class*="seven wide mobile"].column,.ui.grid>[class*="seven wide mobile"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide mobile"].column,.ui.grid>.column.row>[class*="eight wide mobile"].column,.ui.grid>.row>[class*="eight wide mobile"].column,.ui.grid>[class*="eight wide mobile"].column{width:50%!important}.ui.column.grid>[class*="nine wide mobile"].column,.ui.grid>.column.row>[class*="nine wide mobile"].column,.ui.grid>.row>[class*="nine wide mobile"].column,.ui.grid>[class*="nine wide mobile"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide mobile"].column,.ui.grid>.column.row>[class*="ten wide mobile"].column,.ui.grid>.row>[class*="ten wide mobile"].column,.ui.grid>[class*="ten wide mobile"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide mobile"].column,.ui.grid>.column.row>[class*="eleven wide mobile"].column,.ui.grid>.row>[class*="eleven wide mobile"].column,.ui.grid>[class*="eleven wide mobile"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide mobile"].column,.ui.grid>.column.row>[class*="twelve wide mobile"].column,.ui.grid>.row>[class*="twelve wide mobile"].column,.ui.grid>[class*="twelve wide mobile"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide mobile"].column,.ui.grid>.column.row>[class*="thirteen wide mobile"].column,.ui.grid>.row>[class*="thirteen wide mobile"].column,.ui.grid>[class*="thirteen wide mobile"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide mobile"].column,.ui.grid>.column.row>[class*="fourteen wide mobile"].column,.ui.grid>.row>[class*="fourteen wide mobile"].column,.ui.grid>[class*="fourteen wide mobile"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide mobile"].column,.ui.grid>.column.row>[class*="fifteen wide mobile"].column,.ui.grid>.row>[class*="fifteen wide mobile"].column,.ui.grid>[class*="fifteen wide mobile"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide mobile"].column,.ui.grid>.column.row>[class*="sixteen wide mobile"].column,.ui.grid>.row>[class*="sixteen wide mobile"].column,.ui.grid>[class*="sixteen wide mobile"].column{width:100%!important}}@media only screen and (min-width:768px) and (max-width:991px){.ui.column.grid>[class*="one wide tablet"].column,.ui.grid>.column.row>[class*="one wide tablet"].column,.ui.grid>.row>[class*="one wide tablet"].column,.ui.grid>[class*="one wide tablet"].column{width:6.25%!important}.ui.column.grid>[class*="two wide tablet"].column,.ui.grid>.column.row>[class*="two wide tablet"].column,.ui.grid>.row>[class*="two wide tablet"].column,.ui.grid>[class*="two wide tablet"].column{width:12.5%!important}.ui.column.grid>[class*="three wide tablet"].column,.ui.grid>.column.row>[class*="three wide tablet"].column,.ui.grid>.row>[class*="three wide tablet"].column,.ui.grid>[class*="three wide tablet"].column{width:18.75%!important}.ui.column.grid>[class*="four wide tablet"].column,.ui.grid>.column.row>[class*="four wide tablet"].column,.ui.grid>.row>[class*="four wide tablet"].column,.ui.grid>[class*="four wide tablet"].column{width:25%!important}.ui.column.grid>[class*="five wide tablet"].column,.ui.grid>.column.row>[class*="five wide tablet"].column,.ui.grid>.row>[class*="five wide tablet"].column,.ui.grid>[class*="five wide tablet"].column{width:31.25%!important}.ui.column.grid>[class*="six wide tablet"].column,.ui.grid>.column.row>[class*="six wide tablet"].column,.ui.grid>.row>[class*="six wide tablet"].column,.ui.grid>[class*="six wide tablet"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide tablet"].column,.ui.grid>.column.row>[class*="seven wide tablet"].column,.ui.grid>.row>[class*="seven wide tablet"].column,.ui.grid>[class*="seven wide tablet"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide tablet"].column,.ui.grid>.column.row>[class*="eight wide tablet"].column,.ui.grid>.row>[class*="eight wide tablet"].column,.ui.grid>[class*="eight wide tablet"].column{width:50%!important}.ui.column.grid>[class*="nine wide tablet"].column,.ui.grid>.column.row>[class*="nine wide tablet"].column,.ui.grid>.row>[class*="nine wide tablet"].column,.ui.grid>[class*="nine wide tablet"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide tablet"].column,.ui.grid>.column.row>[class*="ten wide tablet"].column,.ui.grid>.row>[class*="ten wide tablet"].column,.ui.grid>[class*="ten wide tablet"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide tablet"].column,.ui.grid>.column.row>[class*="eleven wide tablet"].column,.ui.grid>.row>[class*="eleven wide tablet"].column,.ui.grid>[class*="eleven wide tablet"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide tablet"].column,.ui.grid>.column.row>[class*="twelve wide tablet"].column,.ui.grid>.row>[class*="twelve wide tablet"].column,.ui.grid>[class*="twelve wide tablet"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide tablet"].column,.ui.grid>.column.row>[class*="thirteen wide tablet"].column,.ui.grid>.row>[class*="thirteen wide tablet"].column,.ui.grid>[class*="thirteen wide tablet"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide tablet"].column,.ui.grid>.column.row>[class*="fourteen wide tablet"].column,.ui.grid>.row>[class*="fourteen wide tablet"].column,.ui.grid>[class*="fourteen wide tablet"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide tablet"].column,.ui.grid>.column.row>[class*="fifteen wide tablet"].column,.ui.grid>.row>[class*="fifteen wide tablet"].column,.ui.grid>[class*="fifteen wide tablet"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide tablet"].column,.ui.grid>.column.row>[class*="sixteen wide tablet"].column,.ui.grid>.row>[class*="sixteen wide tablet"].column,.ui.grid>[class*="sixteen wide tablet"].column{width:100%!important}}@media only screen and (min-width:992px){.ui.column.grid>[class*="one wide computer"].column,.ui.grid>.column.row>[class*="one wide computer"].column,.ui.grid>.row>[class*="one wide computer"].column,.ui.grid>[class*="one wide computer"].column{width:6.25%!important}.ui.column.grid>[class*="two wide computer"].column,.ui.grid>.column.row>[class*="two wide computer"].column,.ui.grid>.row>[class*="two wide computer"].column,.ui.grid>[class*="two wide computer"].column{width:12.5%!important}.ui.column.grid>[class*="three wide computer"].column,.ui.grid>.column.row>[class*="three wide computer"].column,.ui.grid>.row>[class*="three wide computer"].column,.ui.grid>[class*="three wide computer"].column{width:18.75%!important}.ui.column.grid>[class*="four wide computer"].column,.ui.grid>.column.row>[class*="four wide computer"].column,.ui.grid>.row>[class*="four wide computer"].column,.ui.grid>[class*="four wide computer"].column{width:25%!important}.ui.column.grid>[class*="five wide computer"].column,.ui.grid>.column.row>[class*="five wide computer"].column,.ui.grid>.row>[class*="five wide computer"].column,.ui.grid>[class*="five wide computer"].column{width:31.25%!important}.ui.column.grid>[class*="six wide computer"].column,.ui.grid>.column.row>[class*="six wide computer"].column,.ui.grid>.row>[class*="six wide computer"].column,.ui.grid>[class*="six wide computer"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide computer"].column,.ui.grid>.column.row>[class*="seven wide computer"].column,.ui.grid>.row>[class*="seven wide computer"].column,.ui.grid>[class*="seven wide computer"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide computer"].column,.ui.grid>.column.row>[class*="eight wide computer"].column,.ui.grid>.row>[class*="eight wide computer"].column,.ui.grid>[class*="eight wide computer"].column{width:50%!important}.ui.column.grid>[class*="nine wide computer"].column,.ui.grid>.column.row>[class*="nine wide computer"].column,.ui.grid>.row>[class*="nine wide computer"].column,.ui.grid>[class*="nine wide computer"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide computer"].column,.ui.grid>.column.row>[class*="ten wide computer"].column,.ui.grid>.row>[class*="ten wide computer"].column,.ui.grid>[class*="ten wide computer"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide computer"].column,.ui.grid>.column.row>[class*="eleven wide computer"].column,.ui.grid>.row>[class*="eleven wide computer"].column,.ui.grid>[class*="eleven wide computer"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide computer"].column,.ui.grid>.column.row>[class*="twelve wide computer"].column,.ui.grid>.row>[class*="twelve wide computer"].column,.ui.grid>[class*="twelve wide computer"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide computer"].column,.ui.grid>.column.row>[class*="thirteen wide computer"].column,.ui.grid>.row>[class*="thirteen wide computer"].column,.ui.grid>[class*="thirteen wide computer"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide computer"].column,.ui.grid>.column.row>[class*="fourteen wide computer"].column,.ui.grid>.row>[class*="fourteen wide computer"].column,.ui.grid>[class*="fourteen wide computer"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide computer"].column,.ui.grid>.column.row>[class*="fifteen wide computer"].column,.ui.grid>.row>[class*="fifteen wide computer"].column,.ui.grid>[class*="fifteen wide computer"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide computer"].column,.ui.grid>.column.row>[class*="sixteen wide computer"].column,.ui.grid>.row>[class*="sixteen wide computer"].column,.ui.grid>[class*="sixteen wide computer"].column{width:100%!important}}@media only screen and (min-width:1200px) and (max-width:1919px){.ui.column.grid>[class*="one wide large screen"].column,.ui.grid>.column.row>[class*="one wide large screen"].column,.ui.grid>.row>[class*="one wide large screen"].column,.ui.grid>[class*="one wide large screen"].column{width:6.25%!important}.ui.column.grid>[class*="two wide large screen"].column,.ui.grid>.column.row>[class*="two wide large screen"].column,.ui.grid>.row>[class*="two wide large screen"].column,.ui.grid>[class*="two wide large screen"].column{width:12.5%!important}.ui.column.grid>[class*="three wide large screen"].column,.ui.grid>.column.row>[class*="three wide large screen"].column,.ui.grid>.row>[class*="three wide large screen"].column,.ui.grid>[class*="three wide large screen"].column{width:18.75%!important}.ui.column.grid>[class*="four wide large screen"].column,.ui.grid>.column.row>[class*="four wide large screen"].column,.ui.grid>.row>[class*="four wide large screen"].column,.ui.grid>[class*="four wide large screen"].column{width:25%!important}.ui.column.grid>[class*="five wide large screen"].column,.ui.grid>.column.row>[class*="five wide large screen"].column,.ui.grid>.row>[class*="five wide large screen"].column,.ui.grid>[class*="five wide large screen"].column{width:31.25%!important}.ui.column.grid>[class*="six wide large screen"].column,.ui.grid>.column.row>[class*="six wide large screen"].column,.ui.grid>.row>[class*="six wide large screen"].column,.ui.grid>[class*="six wide large screen"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide large screen"].column,.ui.grid>.column.row>[class*="seven wide large screen"].column,.ui.grid>.row>[class*="seven wide large screen"].column,.ui.grid>[class*="seven wide large screen"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide large screen"].column,.ui.grid>.column.row>[class*="eight wide large screen"].column,.ui.grid>.row>[class*="eight wide large screen"].column,.ui.grid>[class*="eight wide large screen"].column{width:50%!important}.ui.column.grid>[class*="nine wide large screen"].column,.ui.grid>.column.row>[class*="nine wide large screen"].column,.ui.grid>.row>[class*="nine wide large screen"].column,.ui.grid>[class*="nine wide large screen"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide large screen"].column,.ui.grid>.column.row>[class*="ten wide large screen"].column,.ui.grid>.row>[class*="ten wide large screen"].column,.ui.grid>[class*="ten wide large screen"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide large screen"].column,.ui.grid>.column.row>[class*="eleven wide large screen"].column,.ui.grid>.row>[class*="eleven wide large screen"].column,.ui.grid>[class*="eleven wide large screen"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide large screen"].column,.ui.grid>.column.row>[class*="twelve wide large screen"].column,.ui.grid>.row>[class*="twelve wide large screen"].column,.ui.grid>[class*="twelve wide large screen"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide large screen"].column,.ui.grid>.column.row>[class*="thirteen wide large screen"].column,.ui.grid>.row>[class*="thirteen wide large screen"].column,.ui.grid>[class*="thirteen wide large screen"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide large screen"].column,.ui.grid>.column.row>[class*="fourteen wide large screen"].column,.ui.grid>.row>[class*="fourteen wide large screen"].column,.ui.grid>[class*="fourteen wide large screen"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide large screen"].column,.ui.grid>.column.row>[class*="fifteen wide large screen"].column,.ui.grid>.row>[class*="fifteen wide large screen"].column,.ui.grid>[class*="fifteen wide large screen"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide large screen"].column,.ui.grid>.column.row>[class*="sixteen wide large screen"].column,.ui.grid>.row>[class*="sixteen wide large screen"].column,.ui.grid>[class*="sixteen wide large screen"].column{width:100%!important}}@media only screen and (min-width:1920px){.ui.column.grid>[class*="one wide widescreen"].column,.ui.grid>.column.row>[class*="one wide widescreen"].column,.ui.grid>.row>[class*="one wide widescreen"].column,.ui.grid>[class*="one wide widescreen"].column{width:6.25%!important}.ui.column.grid>[class*="two wide widescreen"].column,.ui.grid>.column.row>[class*="two wide widescreen"].column,.ui.grid>.row>[class*="two wide widescreen"].column,.ui.grid>[class*="two wide widescreen"].column{width:12.5%!important}.ui.column.grid>[class*="three wide widescreen"].column,.ui.grid>.column.row>[class*="three wide widescreen"].column,.ui.grid>.row>[class*="three wide widescreen"].column,.ui.grid>[class*="three wide widescreen"].column{width:18.75%!important}.ui.column.grid>[class*="four wide widescreen"].column,.ui.grid>.column.row>[class*="four wide widescreen"].column,.ui.grid>.row>[class*="four wide widescreen"].column,.ui.grid>[class*="four wide widescreen"].column{width:25%!important}.ui.column.grid>[class*="five wide widescreen"].column,.ui.grid>.column.row>[class*="five wide widescreen"].column,.ui.grid>.row>[class*="five wide widescreen"].column,.ui.grid>[class*="five wide widescreen"].column{width:31.25%!important}.ui.column.grid>[class*="six wide widescreen"].column,.ui.grid>.column.row>[class*="six wide widescreen"].column,.ui.grid>.row>[class*="six wide widescreen"].column,.ui.grid>[class*="six wide widescreen"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide widescreen"].column,.ui.grid>.column.row>[class*="seven wide widescreen"].column,.ui.grid>.row>[class*="seven wide widescreen"].column,.ui.grid>[class*="seven wide widescreen"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide widescreen"].column,.ui.grid>.column.row>[class*="eight wide widescreen"].column,.ui.grid>.row>[class*="eight wide widescreen"].column,.ui.grid>[class*="eight wide widescreen"].column{width:50%!important}.ui.column.grid>[class*="nine wide widescreen"].column,.ui.grid>.column.row>[class*="nine wide widescreen"].column,.ui.grid>.row>[class*="nine wide widescreen"].column,.ui.grid>[class*="nine wide widescreen"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide widescreen"].column,.ui.grid>.column.row>[class*="ten wide widescreen"].column,.ui.grid>.row>[class*="ten wide widescreen"].column,.ui.grid>[class*="ten wide widescreen"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide widescreen"].column,.ui.grid>.column.row>[class*="eleven wide widescreen"].column,.ui.grid>.row>[class*="eleven wide widescreen"].column,.ui.grid>[class*="eleven wide widescreen"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide widescreen"].column,.ui.grid>.column.row>[class*="twelve wide widescreen"].column,.ui.grid>.row>[class*="twelve wide widescreen"].column,.ui.grid>[class*="twelve wide widescreen"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide widescreen"].column,.ui.grid>.column.row>[class*="thirteen wide widescreen"].column,.ui.grid>.row>[class*="thirteen wide widescreen"].column,.ui.grid>[class*="thirteen wide widescreen"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide widescreen"].column,.ui.grid>.column.row>[class*="fourteen wide widescreen"].column,.ui.grid>.row>[class*="fourteen wide widescreen"].column,.ui.grid>[class*="fourteen wide widescreen"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide widescreen"].column,.ui.grid>.column.row>[class*="fifteen wide widescreen"].column,.ui.grid>.row>[class*="fifteen wide widescreen"].column,.ui.grid>[class*="fifteen wide widescreen"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide widescreen"].column,.ui.grid>.column.row>[class*="sixteen wide widescreen"].column,.ui.grid>.row>[class*="sixteen wide widescreen"].column,.ui.grid>[class*="sixteen wide widescreen"].column{width:100%!important}}.ui.centered.grid,.ui.centered.grid>.row,.ui.grid>.centered.row{text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.ui.centered.grid>.column:not(.aligned):not(.justified):not(.row),.ui.centered.grid>.row>.column:not(.aligned):not(.justified),.ui.grid .centered.row>.column:not(.aligned):not(.justified){text-align:left}.ui.grid>.centered.column,.ui.grid>.row>.centered.column{display:block;margin-left:auto;margin-right:auto}.ui.grid>.relaxed.row>.column,.ui.relaxed.grid>.column:not(.row),.ui.relaxed.grid>.row>.column{padding-left:1.5rem;padding-right:1.5rem}.ui.grid>[class*="very relaxed"].row>.column,.ui[class*="very relaxed"].grid>.column:not(.row),.ui[class*="very relaxed"].grid>.row>.column{padding-left:2.5rem;padding-right:2.5rem}.ui.grid .relaxed.row+.ui.divider,.ui.relaxed.grid .row+.ui.divider{margin-left:1.5rem;margin-right:1.5rem}.ui.grid [class*="very relaxed"].row+.ui.divider,.ui[class*="very relaxed"].grid .row+.ui.divider{margin-left:2.5rem;margin-right:2.5rem}.ui.padded.grid:not(.vertically):not(.horizontally){margin:0!important}[class*="horizontally padded"].ui.grid{margin-left:0!important;margin-right:0!important}[class*="vertically padded"].ui.grid{margin-top:0!important;margin-bottom:0!important}.ui.grid [class*="left floated"].column{margin-right:auto}.ui.grid [class*="right floated"].column{margin-left:auto}.ui.divided.grid:not([class*="vertically divided"])>.column:not(.row),.ui.divided.grid:not([class*="vertically divided"])>.row>.column{box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="vertically divided"].grid>.column:not(.row),.ui[class*="vertically divided"].grid>.row>.column{margin-top:1rem;margin-bottom:1rem;padding-top:0;padding-bottom:0}.ui[class*="vertically divided"].grid>.row{margin-top:0;margin-bottom:0}.ui.divided.grid:not([class*="vertically divided"])>.column:first-child,.ui.divided.grid:not([class*="vertically divided"])>.row>.column:first-child{box-shadow:none}.ui[class*="vertically divided"].grid>.row:first-child>.column{margin-top:0}.ui.grid>.divided.row>.column{box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui.grid>.divided.row>.column:first-child{box-shadow:none}.ui[class*="vertically divided"].grid>.row{position:relative}.ui[class*="vertically divided"].grid>.row:before{position:absolute;content:"";top:0;left:0;width:calc(100% - 2rem);height:1px;margin:0 1rem;box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.padded.divided.grid:not(.vertically):not(.horizontally),[class*="horizontally padded"].ui.divided.grid{width:100%}.ui[class*="vertically divided"].grid>.row:first-child:before{box-shadow:none}.ui.inverted.divided.grid:not([class*="vertically divided"])>.column:not(.row),.ui.inverted.divided.grid:not([class*="vertically divided"])>.row>.column{box-shadow:-1px 0 0 0 hsla(0,0%,100%,.1)}.ui.inverted.divided.grid:not([class*="vertically divided"])>.column:not(.row):first-child,.ui.inverted.divided.grid:not([class*="vertically divided"])>.row>.column:first-child{box-shadow:none}.ui.inverted[class*="vertically divided"].grid>.row:before{box-shadow:0 -1px 0 0 hsla(0,0%,100%,.1)}.ui.relaxed[class*="vertically divided"].grid>.row:before{margin-left:1.5rem;margin-right:1.5rem;width:calc(100% - 3rem)}.ui[class*="very relaxed"][class*="vertically divided"].grid>.row:before{margin-left:5rem;margin-right:5rem;width:calc(100% - 5rem)}.ui.celled.grid{width:100%;margin:1em 0;box-shadow:0 0 0 1px #d4d4d5}.ui.celled.grid>.row{width:100%!important;margin:0;padding:0;box-shadow:0 -1px 0 0 #d4d4d5}.ui.celled.grid>.column:not(.row),.ui.celled.grid>.row>.column{box-shadow:-1px 0 0 0 #d4d4d5}.ui.celled.grid>.column:first-child,.ui.celled.grid>.row>.column:first-child{box-shadow:none}.ui.celled.grid>.column:not(.row),.ui.celled.grid>.row>.column{padding:1em}.ui.relaxed.celled.grid>.column:not(.row),.ui.relaxed.celled.grid>.row>.column{padding:1.5em}.ui[class*="very relaxed"].celled.grid>.column:not(.row),.ui[class*="very relaxed"].celled.grid>.row>.column{padding:2em}.ui[class*="internally celled"].grid{box-shadow:none;margin:0}.ui[class*="internally celled"].grid>.row:first-child,.ui[class*="internally celled"].grid>.row>.column:first-child{box-shadow:none}.ui.grid>.row>[class*="top aligned"].column,.ui.grid>[class*="top aligned"].column:not(.row),.ui.grid>[class*="top aligned"].row>.column,.ui[class*="top aligned"].grid>.column:not(.row),.ui[class*="top aligned"].grid>.row>.column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;vertical-align:top;-ms-flex-item-align:start!important;-webkit-align-self:flex-start!important;align-self:flex-start!important}.ui.grid>.row>[class*="middle aligned"].column,.ui.grid>[class*="middle aligned"].column:not(.row),.ui.grid>[class*="middle aligned"].row>.column,.ui[class*="middle aligned"].grid>.column:not(.row),.ui[class*="middle aligned"].grid>.row>.column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;vertical-align:middle;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;-webkit-align-self:center!important;align-self:center!important}.ui.grid>.row>[class*="bottom aligned"].column,.ui.grid>[class*="bottom aligned"].column:not(.row),.ui.grid>[class*="bottom aligned"].row>.column,.ui[class*="bottom aligned"].grid>.column:not(.row),.ui[class*="bottom aligned"].grid>.row>.column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;vertical-align:bottom;-ms-flex-item-align:end!important;-webkit-align-self:flex-end!important;align-self:flex-end!important}.ui.grid>.row>.stretched.column,.ui.grid>.stretched.column:not(.row),.ui.grid>.stretched.row>.column,.ui.stretched.grid>.column,.ui.stretched.grid>.row>.column{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:-webkit-inline-flex!important;display:inline-flex!important;-ms-flex-item-align:stretch;-webkit-align-self:stretch;align-self:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.ui.grid>.row>.stretched.column>*,.ui.grid>.stretched.column:not(.row)>*,.ui.grid>.stretched.row>.column>*,.ui.stretched.grid>.column>*,.ui.stretched.grid>.row>.column>*{-webkit-box-flex:1;-ms-flex-positive:1;-webkit-flex-grow:1;flex-grow:1}.ui.grid>.row>[class*="left aligned"].column.column,.ui.grid>[class*="left aligned"].column.column,.ui.grid>[class*="left aligned"].row>.column,.ui[class*="left aligned"].grid>.column,.ui[class*="left aligned"].grid>.row>.column{text-align:left;-ms-flex-item-align:inherit;-ms-grid-row-align:inherit;-webkit-align-self:inherit;align-self:inherit}.ui.grid>.row>[class*="center aligned"].column.column,.ui.grid>[class*="center aligned"].column.column,.ui.grid>[class*="center aligned"].row>.column,.ui[class*="center aligned"].grid>.column,.ui[class*="center aligned"].grid>.row>.column{text-align:center;-ms-flex-item-align:inherit;-ms-grid-row-align:inherit;-webkit-align-self:inherit;align-self:inherit}.ui[class*="center aligned"].grid{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.ui.grid>.row>[class*="right aligned"].column.column,.ui.grid>[class*="right aligned"].column.column,.ui.grid>[class*="right aligned"].row>.column,.ui[class*="right aligned"].grid>.column,.ui[class*="right aligned"].grid>.row>.column{text-align:right;-ms-flex-item-align:inherit;-ms-grid-row-align:inherit;-webkit-align-self:inherit;align-self:inherit}.ui.grid>.justified.column.column,.ui.grid>.justified.row>.column,.ui.grid>.row>.justified.column.column,.ui.justified.grid>.column,.ui.justified.grid>.row>.column{text-align:justify;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.ui.grid>.row>.black.column,.ui.grid>.row>.blue.column,.ui.grid>.row>.brown.column,.ui.grid>.row>.green.column,.ui.grid>.row>.grey.column,.ui.grid>.row>.olive.column,.ui.grid>.row>.orange.column,.ui.grid>.row>.pink.column,.ui.grid>.row>.purple.column,.ui.grid>.row>.red.column,.ui.grid>.row>.teal.column,.ui.grid>.row>.violet.column,.ui.grid>.row>.yellow.column{margin-top:-1rem;margin-bottom:-1rem;padding-top:1rem;padding-bottom:1rem}.ui.grid>.red.column,.ui.grid>.red.row,.ui.grid>.row>.red.column{background-color:#db2828!important;color:#fff}.ui.grid>.orange.column,.ui.grid>.orange.row,.ui.grid>.row>.orange.column{background-color:#f2711c!important;color:#fff}.ui.grid>.row>.yellow.column,.ui.grid>.yellow.column,.ui.grid>.yellow.row{background-color:#fbbd08!important;color:#fff}.ui.grid>.olive.column,.ui.grid>.olive.row,.ui.grid>.row>.olive.column{background-color:#b5cc18!important;color:#fff}.ui.grid>.green.column,.ui.grid>.green.row,.ui.grid>.row>.green.column{background-color:#21ba45!important;color:#fff}.ui.grid>.row>.teal.column,.ui.grid>.teal.column,.ui.grid>.teal.row{background-color:#00b5ad!important;color:#fff}.ui.grid>.blue.column,.ui.grid>.blue.row,.ui.grid>.row>.blue.column{background-color:#2185d0!important;color:#fff}.ui.grid>.row>.violet.column,.ui.grid>.violet.column,.ui.grid>.violet.row{background-color:#6435c9!important;color:#fff}.ui.grid>.purple.column,.ui.grid>.purple.row,.ui.grid>.row>.purple.column{background-color:#a333c8!important;color:#fff}.ui.grid>.pink.column,.ui.grid>.pink.row,.ui.grid>.row>.pink.column{background-color:#e03997!important;color:#fff}.ui.grid>.brown.column,.ui.grid>.brown.row,.ui.grid>.row>.brown.column{background-color:#a5673f!important;color:#fff}.ui.grid>.grey.column,.ui.grid>.grey.row,.ui.grid>.row>.grey.column{background-color:#767676!important;color:#fff}.ui.grid>.black.column,.ui.grid>.black.row,.ui.grid>.row>.black.column{background-color:#1b1c1d!important;color:#fff}.ui.grid>[class*="equal width"].row>.column,.ui[class*="equal width"].grid>.column:not(.row),.ui[class*="equal width"].grid>.row>.column{display:inline-block;-webkit-box-flex:1;-ms-flex-positive:1;-webkit-flex-grow:1;flex-grow:1}.ui.grid>[class*="equal width"].row>.wide.column,.ui[class*="equal width"].grid>.row>.wide.column,.ui[class*="equal width"].grid>.wide.column{-webkit-box-flex:0;-ms-flex-positive:0;-webkit-flex-grow:0;flex-grow:0}@media only screen and (max-width:767px){.ui.grid>[class*="mobile reversed"].row,.ui[class*="mobile reversed"].grid,.ui[class*="mobile reversed"].grid>.row{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.ui.stackable[class*="mobile reversed"],.ui[class*="mobile vertically reversed"].grid{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse}.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.column:first-child,.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:first-child{box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.column:last-child,.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:last-child{box-shadow:none}.ui.grid[class*="vertically divided"][class*="mobile vertically reversed"]>.row:first-child:before{box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.grid[class*="vertically divided"][class*="mobile vertically reversed"]>.row:last-child:before{box-shadow:none}.ui[class*="mobile reversed"].celled.grid>.row>.column:first-child{box-shadow:-1px 0 0 0 #d4d4d5}.ui[class*="mobile reversed"].celled.grid>.row>.column:last-child{box-shadow:none}}@media only screen and (min-width:768px) and (max-width:991px){.ui.grid>[class*="tablet reversed"].row,.ui[class*="tablet reversed"].grid,.ui[class*="tablet reversed"].grid>.row{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.ui[class*="tablet vertically reversed"].grid{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse}.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.column:first-child,.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:first-child{box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.column:last-child,.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:last-child{box-shadow:none}.ui.grid[class*="vertically divided"][class*="tablet vertically reversed"]>.row:first-child:before{box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.grid[class*="vertically divided"][class*="tablet vertically reversed"]>.row:last-child:before{box-shadow:none}.ui[class*="tablet reversed"].celled.grid>.row>.column:first-child{box-shadow:-1px 0 0 0 #d4d4d5}.ui[class*="tablet reversed"].celled.grid>.row>.column:last-child{box-shadow:none}}@media only screen and (min-width:992px){.ui.grid>[class*="computer reversed"].row,.ui[class*="computer reversed"].grid,.ui[class*="computer reversed"].grid>.row{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.ui[class*="computer vertically reversed"].grid{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse}.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.column:first-child,.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:first-child{box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.column:last-child,.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:last-child{box-shadow:none}.ui.grid[class*="vertically divided"][class*="computer vertically reversed"]>.row:first-child:before{box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.grid[class*="vertically divided"][class*="computer vertically reversed"]>.row:last-child:before{box-shadow:none}.ui[class*="computer reversed"].celled.grid>.row>.column:first-child{box-shadow:-1px 0 0 0 #d4d4d5}.ui[class*="computer reversed"].celled.grid>.row>.column:last-child{box-shadow:none}}@media only screen and (min-width:768px) and (max-width:991px){.ui.doubling.grid{width:auto}.ui.doubling.grid>.row,.ui.grid>.doubling.row{margin:0!important;padding:0!important}.ui.doubling.grid>.row>.column,.ui.grid>.doubling.row>.column{display:inline-block!important;padding-top:1rem!important;padding-bottom:1rem!important;box-shadow:none!important;margin:0}.ui.grid>[class*="two column"].doubling.row.row>.column,.ui[class*="two column"].doubling.grid>.column:not(.row),.ui[class*="two column"].doubling.grid>.row>.column{width:100%!important}.ui.grid>[class*="four column"].doubling.row.row>.column,.ui.grid>[class*="three column"].doubling.row.row>.column,.ui[class*="four column"].doubling.grid>.column:not(.row),.ui[class*="four column"].doubling.grid>.row>.column,.ui[class*="three column"].doubling.grid>.column:not(.row),.ui[class*="three column"].doubling.grid>.row>.column{width:50%!important}.ui.grid>[class*="five column"].doubling.row.row>.column,.ui.grid>[class*="seven column"].doubling.row.row>.column,.ui.grid>[class*="six column"].doubling.row.row>.column,.ui[class*="five column"].doubling.grid>.column:not(.row),.ui[class*="five column"].doubling.grid>.row>.column,.ui[class*="seven column"].doubling.grid>.column:not(.row),.ui[class*="seven column"].doubling.grid>.row>.column,.ui[class*="six column"].doubling.grid>.column:not(.row),.ui[class*="six column"].doubling.grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="eight column"].doubling.row.row>.column,.ui.grid>[class*="nine column"].doubling.row.row>.column,.ui[class*="eight column"].doubling.grid>.column:not(.row),.ui[class*="eight column"].doubling.grid>.row>.column,.ui[class*="nine column"].doubling.grid>.column:not(.row),.ui[class*="nine column"].doubling.grid>.row>.column{width:25%!important}.ui.grid>[class*="eleven column"].doubling.row.row>.column,.ui.grid>[class*="ten column"].doubling.row.row>.column,.ui[class*="eleven column"].doubling.grid>.column:not(.row),.ui[class*="eleven column"].doubling.grid>.row>.column,.ui[class*="ten column"].doubling.grid>.column:not(.row),.ui[class*="ten column"].doubling.grid>.row>.column{width:20%!important}.ui.grid>[class*="thirteen column"].doubling.row.row>.column,.ui.grid>[class*="twelve column"].doubling.row.row>.column,.ui[class*="thirteen column"].doubling.grid>.column:not(.row),.ui[class*="thirteen column"].doubling.grid>.row>.column,.ui[class*="twelve column"].doubling.grid>.column:not(.row),.ui[class*="twelve column"].doubling.grid>.row>.column{width:16.66666667%!important}.ui.grid>[class*="fifteen column"].doubling.row.row>.column,.ui.grid>[class*="fourteen column"].doubling.row.row>.column,.ui[class*="fifteen column"].doubling.grid>.column:not(.row),.ui[class*="fifteen column"].doubling.grid>.row>.column,.ui[class*="fourteen column"].doubling.grid>.column:not(.row),.ui[class*="fourteen column"].doubling.grid>.row>.column{width:14.28571429%!important}.ui.grid>[class*="sixteen column"].doubling.row.row>.column,.ui[class*="sixteen column"].doubling.grid>.column:not(.row),.ui[class*="sixteen column"].doubling.grid>.row>.column{width:12.5%!important}}@media only screen and (max-width:767px){.ui.doubling.grid>.row,.ui.grid>.doubling.row{margin:0!important;padding:0!important}.ui.doubling.grid>.row>.column,.ui.grid>.doubling.row>.column{padding-top:1rem!important;padding-bottom:1rem!important;margin:0!important;box-shadow:none!important}.ui.grid>[class*="two column"].doubling:not(.stackable).row.row>.column,.ui[class*="two column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="two column"].doubling:not(.stackable).grid>.row>.column{width:100%!important}.ui.grid>[class*="eight column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="five column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="four column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="seven column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="six column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="three column"].doubling:not(.stackable).row.row>.column,.ui[class*="eight column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="eight column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="five column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="five column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="four column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="four column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="seven column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="seven column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="six column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="six column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="three column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="three column"].doubling:not(.stackable).grid>.row>.column{width:50%!important}.ui.grid>[class*="eleven column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="nine column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="ten column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="thirteen column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="twelve column"].doubling:not(.stackable).row.row>.column,.ui[class*="eleven column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="eleven column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="nine column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="nine column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="ten column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="ten column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="thirteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="thirteen column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="twelve column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="twelve column"].doubling:not(.stackable).grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="fifteen column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="fourteen column"].doubling:not(.stackable).row.row>.column,.ui.grid>[class*="sixteen column"].doubling:not(.stackable).row.row>.column,.ui[class*="fifteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="fifteen column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="fourteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="fourteen column"].doubling:not(.stackable).grid>.row>.column,.ui[class*="sixteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="sixteen column"].doubling:not(.stackable).grid>.row>.column{width:25%!important}}@media only screen and (max-width:767px){.ui.stackable.grid{width:auto;margin-left:0!important;margin-right:0!important}.ui.grid>.stackable.stackable.row>.column,.ui.stackable.grid>.column.grid>.column,.ui.stackable.grid>.column.row>.column,.ui.stackable.grid>.column:not(.row),.ui.stackable.grid>.row>.column,.ui.stackable.grid>.row>.wide.column,.ui.stackable.grid>.wide.column{width:100%!important;margin:0!important;box-shadow:none!important;padding:1rem!important}.ui.stackable.grid:not(.vertically)>.row{margin:0;padding:0}.ui.container>.ui.stackable.grid>.column,.ui.container>.ui.stackable.grid>.row>.column{padding-left:0!important;padding-right:0!important}.ui.grid .ui.stackable.grid,.ui.segment:not(.vertical) .ui.stackable.page.grid{margin-left:-1rem!important;margin-right:-1rem!important}.ui.stackable.celled.grid>.column:not(.row):first-child,.ui.stackable.celled.grid>.row:first-child>.column:first-child,.ui.stackable.divided.grid>.column:not(.row):first-child,.ui.stackable.divided.grid>.row:first-child>.column:first-child{border-top:none!important}.ui.inverted.stackable.celled.grid>.column:not(.row),.ui.inverted.stackable.celled.grid>.row>.column,.ui.inverted.stackable.divided.grid>.column:not(.row),.ui.inverted.stackable.divided.grid>.row>.column{border-top:1px solid hsla(0,0%,100%,.1)}.ui.stackable.celled.grid>.column:not(.row),.ui.stackable.celled.grid>.row>.column,.ui.stackable.divided:not(.vertically).grid>.column:not(.row),.ui.stackable.divided:not(.vertically).grid>.row>.column{border-top:1px solid rgba(34,36,38,.15);box-shadow:none!important;padding-top:2rem!important;padding-bottom:2rem!important}.ui.stackable.celled.grid>.row{box-shadow:none!important}.ui.stackable.divided:not(.vertically).grid>.column:not(.row),.ui.stackable.divided:not(.vertically).grid>.row>.column{padding-left:0!important;padding-right:0!important}}@media only screen and (max-width:767px){.ui.grid.grid.grid>.row>[class*="computer only"].column:not(.mobile),.ui.grid.grid.grid>.row>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.mobile),.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="computer only"].column:not(.mobile),.ui.grid.grid.grid>[class*="computer only"].row:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].row:not(.mobile),.ui.grid.grid.grid>[class*="tablet only"].column:not(.mobile),.ui.grid.grid.grid>[class*="tablet only"].row:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui[class*="computer only"].grid.grid.grid:not(.mobile),.ui[class*="large screen only"].grid.grid.grid:not(.mobile),.ui[class*="tablet only"].grid.grid.grid:not(.mobile),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile){display:none!important}}@media only screen and (min-width:768px) and (max-width:991px){.ui.grid.grid.grid>.row>[class*="computer only"].column:not(.tablet),.ui.grid.grid.grid>.row>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.tablet),.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="computer only"].column:not(.tablet),.ui.grid.grid.grid>[class*="computer only"].row:not(.tablet),.ui.grid.grid.grid>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].row:not(.mobile),.ui.grid.grid.grid>[class*="mobile only"].column:not(.tablet),.ui.grid.grid.grid>[class*="mobile only"].row:not(.tablet),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui[class*="computer only"].grid.grid.grid:not(.tablet),.ui[class*="large screen only"].grid.grid.grid:not(.mobile),.ui[class*="mobile only"].grid.grid.grid:not(.tablet),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile){display:none!important}}@media only screen and (min-width:992px) and (max-width:1199px){.ui.grid.grid.grid>.row>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].row:not(.mobile),.ui.grid.grid.grid>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].row:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].row:not(.computer),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui[class*="large screen only"].grid.grid.grid:not(.mobile),.ui[class*="mobile only"].grid.grid.grid:not(.computer),.ui[class*="tablet only"].grid.grid.grid:not(.computer),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile){display:none!important}}@media only screen and (min-width:1200px) and (max-width:1919px){.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].row:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].row:not(.computer),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui[class*="mobile only"].grid.grid.grid:not(.computer),.ui[class*="tablet only"].grid.grid.grid:not(.computer),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile){display:none!important}}@media only screen and (min-width:1920px){.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].row:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].row:not(.computer),.ui[class*="mobile only"].grid.grid.grid:not(.computer),.ui[class*="tablet only"].grid.grid.grid:not(.computer){display:none!important}}/*! + * # Semantic UI 2.2.9 - Icon + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */@font-face{font-family:Icons;src:url(/web/static/media/icons.674f50d2.eot);src:url(/web/static/media/icons.674f50d2.eot?#iefix) format("embedded-opentype"),url(/web/static/media/icons.af7ae505.woff2) format("woff2"),url(/web/static/media/icons.fee66e71.woff) format("woff"),url(/web/static/media/icons.b06871f2.ttf) format("truetype"),url(/web/static/media/icons.912ec66d.svg#icons) format("svg");font-style:normal;font-weight:400;font-variant:normal;text-decoration:inherit;text-transform:none}i.icon{display:inline-block;opacity:1;margin:0 .25rem 0 0;width:1.18em;height:1em;font-family:Icons;font-style:normal;font-weight:400;text-decoration:inherit;text-align:center;speak:none;font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-backface-visibility:hidden;backface-visibility:hidden}i.icon:before{background:none!important}i.icon.loading{height:1em;line-height:1;-webkit-animation:icon-loading 2s linear infinite;animation:icon-loading 2s linear infinite}@-webkit-keyframes icon-loading{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes icon-loading{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}i.emphasized.icon,i.icon.active,i.icon.hover{opacity:1!important}i.disabled.icon{opacity:.45!important}i.fitted.icon{width:auto;margin:0}i.link.icon,i.link.icons{cursor:pointer;opacity:.8;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}i.link.icon:hover,i.link.icons:hover{opacity:1!important}i.circular.icon{border-radius:500em!important;line-height:1!important;padding:.5em!important;box-shadow:inset 0 0 0 .1em rgba(0,0,0,.1);width:2em!important;height:2em!important}i.circular.inverted.icon{border:none;box-shadow:none}i.flipped.icon,i.horizontally.flipped.icon{-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}i.vertically.flipped.icon{-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}i.clockwise.rotated.icon,i.right.rotated.icon,i.rotated.icon{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}i.counterclockwise.rotated.icon,i.left.rotated.icon{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}i.bordered.icon{line-height:1;vertical-align:baseline;width:2em;height:2em;padding:.5em .41em!important;box-shadow:inset 0 0 0 .1em rgba(0,0,0,.1)}i.bordered.inverted.icon{border:none;box-shadow:none}i.inverted.bordered.icon,i.inverted.circular.icon{background-color:#1b1c1d!important;color:#fff!important}i.inverted.icon{color:#fff}i.red.icon{color:#db2828!important}i.inverted.red.icon{color:#ff695e!important}i.inverted.bordered.red.icon,i.inverted.circular.red.icon{background-color:#db2828!important;color:#fff!important}i.orange.icon{color:#f2711c!important}i.inverted.orange.icon{color:#ff851b!important}i.inverted.bordered.orange.icon,i.inverted.circular.orange.icon{background-color:#f2711c!important;color:#fff!important}i.yellow.icon{color:#fbbd08!important}i.inverted.yellow.icon{color:#ffe21f!important}i.inverted.bordered.yellow.icon,i.inverted.circular.yellow.icon{background-color:#fbbd08!important;color:#fff!important}i.olive.icon{color:#b5cc18!important}i.inverted.olive.icon{color:#d9e778!important}i.inverted.bordered.olive.icon,i.inverted.circular.olive.icon{background-color:#b5cc18!important;color:#fff!important}i.green.icon{color:#21ba45!important}i.inverted.green.icon{color:#2ecc40!important}i.inverted.bordered.green.icon,i.inverted.circular.green.icon{background-color:#21ba45!important;color:#fff!important}i.teal.icon{color:#00b5ad!important}i.inverted.teal.icon{color:#6dffff!important}i.inverted.bordered.teal.icon,i.inverted.circular.teal.icon{background-color:#00b5ad!important;color:#fff!important}i.blue.icon{color:#2185d0!important}i.inverted.blue.icon{color:#54c8ff!important}i.inverted.bordered.blue.icon,i.inverted.circular.blue.icon{background-color:#2185d0!important;color:#fff!important}i.violet.icon{color:#6435c9!important}i.inverted.violet.icon{color:#a291fb!important}i.inverted.bordered.violet.icon,i.inverted.circular.violet.icon{background-color:#6435c9!important;color:#fff!important}i.purple.icon{color:#a333c8!important}i.inverted.purple.icon{color:#dc73ff!important}i.inverted.bordered.purple.icon,i.inverted.circular.purple.icon{background-color:#a333c8!important;color:#fff!important}i.pink.icon{color:#e03997!important}i.inverted.pink.icon{color:#ff8edf!important}i.inverted.bordered.pink.icon,i.inverted.circular.pink.icon{background-color:#e03997!important;color:#fff!important}i.brown.icon{color:#a5673f!important}i.inverted.brown.icon{color:#d67c1c!important}i.inverted.bordered.brown.icon,i.inverted.circular.brown.icon{background-color:#a5673f!important;color:#fff!important}i.grey.icon{color:#767676!important}i.inverted.grey.icon{color:#dcddde!important}i.inverted.bordered.grey.icon,i.inverted.circular.grey.icon{background-color:#767676!important;color:#fff!important}i.black.icon{color:#1b1c1d!important}i.inverted.black.icon{color:#545454!important}i.inverted.bordered.black.icon,i.inverted.circular.black.icon{background-color:#1b1c1d!important;color:#fff!important}i.mini.icon,i.mini.icons{line-height:1;font-size:.4em}i.tiny.icon,i.tiny.icons{line-height:1;font-size:.5em}i.small.icon,i.small.icons{line-height:1;font-size:.75em}i.icon,i.icons{font-size:1em}i.large.icon,i.large.icons{line-height:1;vertical-align:middle;font-size:1.5em}i.big.icon,i.big.icons{line-height:1;vertical-align:middle;font-size:2em}i.huge.icon,i.huge.icons{line-height:1;vertical-align:middle;font-size:4em}i.massive.icon,i.massive.icons{line-height:1;vertical-align:middle;font-size:8em}i.icons{display:inline-block;position:relative;line-height:1}i.icons .icon{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);margin:0}i.icons .icon:first-child{position:static;width:auto;height:auto;vertical-align:top;margin-right:.25rem}i.icons .corner.icon,i.icons .icon:first-child{-webkit-transform:none;-ms-transform:none;transform:none}i.icons .corner.icon{top:auto;left:auto;right:0;bottom:0;font-size:.45em;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff}i.icons .inverted.corner.icon{text-shadow:-1px -1px 0 #1b1c1d,1px -1px 0 #1b1c1d,-1px 1px 0 #1b1c1d,1px 1px 0 #1b1c1d}i.icon.search:before{content:"\F002"}i.icon.mail.outline:before{content:"\F003"}i.icon.signal:before{content:"\F012"}i.icon.setting:before{content:"\F013"}i.icon.home:before{content:"\F015"}i.icon.inbox:before{content:"\F01C"}i.icon.browser:before{content:"\F022"}i.icon.tag:before{content:"\F02B"}i.icon.tags:before{content:"\F02C"}i.icon.image:before{content:"\F03E"}i.icon.calendar:before{content:"\F073"}i.icon.comment:before{content:"\F075"}i.icon.shop:before{content:"\F07A"}i.icon.privacy:before{content:"\F084"}i.icon.settings:before{content:"\F085"}i.icon.comments:before{content:"\F086"}i.icon.external:before{content:"\F08E"}i.icon.trophy:before{content:"\F091"}i.icon.payment:before{content:"\F09D"}i.icon.feed:before{content:"\F09E"}i.icon.alarm.outline:before{content:"\F0A2"}i.icon.tasks:before{content:"\F0AE"}i.icon.cloud:before{content:"\F0C2"}i.icon.lab:before{content:"\F0C3"}i.icon.mail:before{content:"\F0E0"}i.icon.dashboard:before{content:"\F0E4"}i.icon.comment.outline:before{content:"\F0E5"}i.icon.comments.outline:before{content:"\F0E6"}i.icon.sitemap:before{content:"\F0E8"}i.icon.idea:before{content:"\F0EB"}i.icon.alarm:before{content:"\F0F3"}i.icon.terminal:before{content:"\F120"}i.icon.code:before{content:"\F121"}i.icon.protect:before{content:"\F132"}i.icon.calendar.outline:before{content:"\F133"}i.icon.ticket:before{content:"\F145"}i.icon.external.square:before{content:"\F14C"}i.icon.bug:before{content:"\F188"}i.icon.mail.square:before{content:"\F199"}i.icon.history:before{content:"\F1DA"}i.icon.options:before{content:"\F1DE"}i.icon.text.telephone:before{content:"\F1E4"}i.icon.find:before{content:"\F1E5"}i.icon.alarm.mute:before{content:"\F1F6"}i.icon.alarm.mute.outline:before{content:"\F1F7"}i.icon.copyright:before{content:"\F1F9"}i.icon.at:before{content:"\F1FA"}i.icon.eyedropper:before{content:"\F1FB"}i.icon.paint.brush:before{content:"\F1FC"}i.icon.heartbeat:before{content:"\F21E"}i.icon.mouse.pointer:before{content:"\F245"}i.icon.hourglass.empty:before{content:"\F250"}i.icon.hourglass.start:before{content:"\F251"}i.icon.hourglass.half:before{content:"\F252"}i.icon.hourglass.end:before{content:"\F253"}i.icon.hourglass.full:before{content:"\F254"}i.icon.hand.pointer:before{content:"\F25A"}i.icon.trademark:before{content:"\F25C"}i.icon.registered:before{content:"\F25D"}i.icon.creative.commons:before{content:"\F25E"}i.icon.add.to.calendar:before{content:"\F271"}i.icon.remove.from.calendar:before{content:"\F272"}i.icon.delete.calendar:before{content:"\F273"}i.icon.checked.calendar:before{content:"\F274"}i.icon.industry:before{content:"\F275"}i.icon.shopping.bag:before{content:"\F290"}i.icon.shopping.basket:before{content:"\F291"}i.icon.hashtag:before{content:"\F292"}i.icon.percent:before{content:"\F295"}i.icon.handshake:before{content:"\F2B5"}i.icon.open.envelope:before{content:"\F2B6"}i.icon.open.envelope.outline:before{content:"\F2B7"}i.icon.address.book:before{content:"\F2B9"}i.icon.address.book.outline:before{content:"\F2BA"}i.icon.address.card:before{content:"\F2BB"}i.icon.address.card.outline:before{content:"\F2BC"}i.icon.id.badge:before{content:"\F2C1"}i.icon.id.card:before{content:"\F2C2"}i.icon.id.card.outline:before{content:"\F2C3"}i.icon.podcast:before{content:"\F2CE"}i.icon.window.maximize:before{content:"\F2D0"}i.icon.window.minimize:before{content:"\F2D1"}i.icon.window.restore:before{content:"\F2D2"}i.icon.window.close:before{content:"\F2D3"}i.icon.window.close.outline:before{content:"\F2D4"}i.icon.wait:before{content:"\F017"}i.icon.download:before{content:"\F019"}i.icon.repeat:before{content:"\F01E"}i.icon.refresh:before{content:"\F021"}i.icon.lock:before{content:"\F023"}i.icon.bookmark:before{content:"\F02E"}i.icon.print:before{content:"\F02F"}i.icon.write:before{content:"\F040"}i.icon.adjust:before{content:"\F042"}i.icon.theme:before{content:"\F043"}i.icon.edit:before{content:"\F044"}i.icon.external.share:before{content:"\F045"}i.icon.ban:before{content:"\F05E"}i.icon.mail.forward:before,i.icon.share:before{content:"\F064"}i.icon.expand:before{content:"\F065"}i.icon.compress:before{content:"\F066"}i.icon.unhide:before{content:"\F06E"}i.icon.hide:before{content:"\F070"}i.icon.random:before{content:"\F074"}i.icon.retweet:before{content:"\F079"}i.icon.sign.out:before{content:"\F08B"}i.icon.pin:before{content:"\F08D"}i.icon.sign.in:before{content:"\F090"}i.icon.upload:before{content:"\F093"}i.icon.call:before{content:"\F095"}i.icon.remove.bookmark:before{content:"\F097"}i.icon.call.square:before{content:"\F098"}i.icon.unlock:before{content:"\F09C"}i.icon.configure:before{content:"\F0AD"}i.icon.filter:before{content:"\F0B0"}i.icon.wizard:before{content:"\F0D0"}i.icon.undo:before{content:"\F0E2"}i.icon.exchange:before{content:"\F0EC"}i.icon.cloud.download:before{content:"\F0ED"}i.icon.cloud.upload:before{content:"\F0EE"}i.icon.reply:before{content:"\F112"}i.icon.reply.all:before{content:"\F122"}i.icon.erase:before{content:"\F12D"}i.icon.unlock.alternate:before{content:"\F13E"}i.icon.write.square:before{content:"\F14B"}i.icon.share.square:before{content:"\F14D"}i.icon.archive:before{content:"\F187"}i.icon.translate:before{content:"\F1AB"}i.icon.recycle:before{content:"\F1B8"}i.icon.send:before{content:"\F1D8"}i.icon.send.outline:before{content:"\F1D9"}i.icon.share.alternate:before{content:"\F1E0"}i.icon.share.alternate.square:before{content:"\F1E1"}i.icon.add.to.cart:before{content:"\F217"}i.icon.in.cart:before{content:"\F218"}i.icon.add.user:before{content:"\F234"}i.icon.remove.user:before{content:"\F235"}i.icon.object.group:before{content:"\F247"}i.icon.object.ungroup:before{content:"\F248"}i.icon.clone:before{content:"\F24D"}i.icon.talk:before{content:"\F27A"}i.icon.talk.outline:before{content:"\F27B"}i.icon.help.circle:before{content:"\F059"}i.icon.info.circle:before{content:"\F05A"}i.icon.warning.circle:before{content:"\F06A"}i.icon.warning.sign:before{content:"\F071"}i.icon.announcement:before{content:"\F0A1"}i.icon.help:before{content:"\F128"}i.icon.info:before{content:"\F129"}i.icon.warning:before{content:"\F12A"}i.icon.birthday:before{content:"\F1FD"}i.icon.help.circle.outline:before{content:"\F29C"}i.icon.user:before{content:"\F007"}i.icon.users:before{content:"\F0C0"}i.icon.doctor:before{content:"\F0F0"}i.icon.handicap:before{content:"\F193"}i.icon.student:before{content:"\F19D"}i.icon.child:before{content:"\F1AE"}i.icon.spy:before{content:"\F21B"}i.icon.user.circle:before{content:"\F2BD"}i.icon.user.circle.outline:before{content:"\F2BE"}i.icon.user.outline:before{content:"\F2C0"}i.icon.female:before{content:"\F182"}i.icon.male:before{content:"\F183"}i.icon.woman:before{content:"\F221"}i.icon.man:before{content:"\F222"}i.icon.non.binary.transgender:before{content:"\F223"}i.icon.intergender:before{content:"\F224"}i.icon.transgender:before{content:"\F225"}i.icon.lesbian:before{content:"\F226"}i.icon.gay:before{content:"\F227"}i.icon.heterosexual:before{content:"\F228"}i.icon.other.gender:before{content:"\F229"}i.icon.other.gender.vertical:before{content:"\F22A"}i.icon.other.gender.horizontal:before{content:"\F22B"}i.icon.neuter:before{content:"\F22C"}i.icon.genderless:before{content:"\F22D"}i.icon.universal.access:before{content:"\F29A"}i.icon.wheelchair:before{content:"\F29B"}i.icon.blind:before{content:"\F29D"}i.icon.audio.description:before{content:"\F29E"}i.icon.volume.control.phone:before{content:"\F2A0"}i.icon.braille:before{content:"\F2A1"}i.icon.asl:before{content:"\F2A3"}i.icon.assistive.listening.systems:before{content:"\F2A2"}i.icon.deafness:before{content:"\F2A4"}i.icon.sign.language:before{content:"\F2A7"}i.icon.low.vision:before{content:"\F2A8"}i.icon.block.layout:before{content:"\F009"}i.icon.grid.layout:before{content:"\F00A"}i.icon.list.layout:before{content:"\F00B"}i.icon.zoom:before{content:"\F00E"}i.icon.zoom.out:before{content:"\F010"}i.icon.resize.vertical:before{content:"\F07D"}i.icon.resize.horizontal:before{content:"\F07E"}i.icon.maximize:before{content:"\F0B2"}i.icon.crop:before{content:"\F125"}i.icon.cocktail:before{content:"\F000"}i.icon.road:before{content:"\F018"}i.icon.flag:before{content:"\F024"}i.icon.book:before{content:"\F02D"}i.icon.gift:before{content:"\F06B"}i.icon.leaf:before{content:"\F06C"}i.icon.fire:before{content:"\F06D"}i.icon.plane:before{content:"\F072"}i.icon.magnet:before{content:"\F076"}i.icon.lemon:before{content:"\F094"}i.icon.world:before{content:"\F0AC"}i.icon.travel:before{content:"\F0B1"}i.icon.shipping:before{content:"\F0D1"}i.icon.money:before{content:"\F0D6"}i.icon.legal:before{content:"\F0E3"}i.icon.lightning:before{content:"\F0E7"}i.icon.umbrella:before{content:"\F0E9"}i.icon.treatment:before{content:"\F0F1"}i.icon.suitcase:before{content:"\F0F2"}i.icon.bar:before{content:"\F0FC"}i.icon.flag.outline:before{content:"\F11D"}i.icon.flag.checkered:before{content:"\F11E"}i.icon.puzzle:before{content:"\F12E"}i.icon.fire.extinguisher:before{content:"\F134"}i.icon.rocket:before{content:"\F135"}i.icon.anchor:before{content:"\F13D"}i.icon.bullseye:before{content:"\F140"}i.icon.sun:before{content:"\F185"}i.icon.moon:before{content:"\F186"}i.icon.fax:before{content:"\F1AC"}i.icon.life.ring:before{content:"\F1CD"}i.icon.bomb:before{content:"\F1E2"}i.icon.soccer:before{content:"\F1E3"}i.icon.calculator:before{content:"\F1EC"}i.icon.diamond:before{content:"\F219"}i.icon.sticky.note:before{content:"\F249"}i.icon.sticky.note.outline:before{content:"\F24A"}i.icon.law:before{content:"\F24E"}i.icon.hand.peace:before{content:"\F25B"}i.icon.hand.rock:before{content:"\F255"}i.icon.hand.paper:before{content:"\F256"}i.icon.hand.scissors:before{content:"\F257"}i.icon.hand.lizard:before{content:"\F258"}i.icon.hand.spock:before{content:"\F259"}i.icon.tv:before{content:"\F26C"}i.icon.thermometer.full:before{content:"\F2C7"}i.icon.thermometer.three.quarters:before{content:"\F2C8"}i.icon.thermometer.half:before{content:"\F2C9"}i.icon.thermometer.quarter:before{content:"\F2CA"}i.icon.thermometer.empty:before{content:"\F2CB"}i.icon.shower:before{content:"\F2CC"}i.icon.bathtub:before{content:"\F2CD"}i.icon.snowflake:before{content:"\F2DC"}i.icon.crosshairs:before{content:"\F05B"}i.icon.asterisk:before{content:"\F069"}i.icon.square.outline:before{content:"\F096"}i.icon.certificate:before{content:"\F0A3"}i.icon.square:before{content:"\F0C8"}i.icon.quote.left:before{content:"\F10D"}i.icon.quote.right:before{content:"\F10E"}i.icon.spinner:before{content:"\F110"}i.icon.circle:before{content:"\F111"}i.icon.ellipsis.horizontal:before{content:"\F141"}i.icon.ellipsis.vertical:before{content:"\F142"}i.icon.cube:before{content:"\F1B2"}i.icon.cubes:before{content:"\F1B3"}i.icon.circle.notched:before{content:"\F1CE"}i.icon.circle.thin:before{content:"\F1DB"}i.icon.checkmark:before{content:"\F00C"}i.icon.remove:before{content:"\F00D"}i.icon.checkmark.box:before{content:"\F046"}i.icon.move:before{content:"\F047"}i.icon.add.circle:before{content:"\F055"}i.icon.minus.circle:before{content:"\F056"}i.icon.remove.circle:before{content:"\F057"}i.icon.check.circle:before{content:"\F058"}i.icon.remove.circle.outline:before{content:"\F05C"}i.icon.check.circle.outline:before{content:"\F05D"}i.icon.plus:before{content:"\F067"}i.icon.minus:before{content:"\F068"}i.icon.add.square:before{content:"\F0FE"}i.icon.radio:before{content:"\F10C"}i.icon.minus.square:before{content:"\F146"}i.icon.minus.square.outline:before{content:"\F147"}i.icon.check.square:before{content:"\F14A"}i.icon.selected.radio:before{content:"\F192"}i.icon.plus.square.outline:before{content:"\F196"}i.icon.toggle.off:before{content:"\F204"}i.icon.toggle.on:before{content:"\F205"}i.icon.film:before{content:"\F008"}i.icon.sound:before{content:"\F025"}i.icon.photo:before{content:"\F030"}i.icon.bar.chart:before{content:"\F080"}i.icon.camera.retro:before{content:"\F083"}i.icon.newspaper:before{content:"\F1EA"}i.icon.area.chart:before{content:"\F1FE"}i.icon.pie.chart:before{content:"\F200"}i.icon.line.chart:before{content:"\F201"}i.icon.arrow.circle.outline.down:before{content:"\F01A"}i.icon.arrow.circle.outline.up:before{content:"\F01B"}i.icon.chevron.left:before{content:"\F053"}i.icon.chevron.right:before{content:"\F054"}i.icon.arrow.left:before{content:"\F060"}i.icon.arrow.right:before{content:"\F061"}i.icon.arrow.up:before{content:"\F062"}i.icon.arrow.down:before{content:"\F063"}i.icon.chevron.up:before{content:"\F077"}i.icon.chevron.down:before{content:"\F078"}i.icon.pointing.right:before{content:"\F0A4"}i.icon.pointing.left:before{content:"\F0A5"}i.icon.pointing.up:before{content:"\F0A6"}i.icon.pointing.down:before{content:"\F0A7"}i.icon.arrow.circle.left:before{content:"\F0A8"}i.icon.arrow.circle.right:before{content:"\F0A9"}i.icon.arrow.circle.up:before{content:"\F0AA"}i.icon.arrow.circle.down:before{content:"\F0AB"}i.icon.caret.down:before{content:"\F0D7"}i.icon.caret.up:before{content:"\F0D8"}i.icon.caret.left:before{content:"\F0D9"}i.icon.caret.right:before{content:"\F0DA"}i.icon.angle.double.left:before{content:"\F100"}i.icon.angle.double.right:before{content:"\F101"}i.icon.angle.double.up:before{content:"\F102"}i.icon.angle.double.down:before{content:"\F103"}i.icon.angle.left:before{content:"\F104"}i.icon.angle.right:before{content:"\F105"}i.icon.angle.up:before{content:"\F106"}i.icon.angle.down:before{content:"\F107"}i.icon.chevron.circle.left:before{content:"\F137"}i.icon.chevron.circle.right:before{content:"\F138"}i.icon.chevron.circle.up:before{content:"\F139"}i.icon.chevron.circle.down:before{content:"\F13A"}i.icon.toggle.down:before{content:"\F150"}i.icon.toggle.up:before{content:"\F151"}i.icon.toggle.right:before{content:"\F152"}i.icon.long.arrow.down:before{content:"\F175"}i.icon.long.arrow.up:before{content:"\F176"}i.icon.long.arrow.left:before{content:"\F177"}i.icon.long.arrow.right:before{content:"\F178"}i.icon.arrow.circle.outline.right:before{content:"\F18E"}i.icon.arrow.circle.outline.left:before{content:"\F190"}i.icon.toggle.left:before{content:"\F191"}i.icon.tablet:before{content:"\F10A"}i.icon.mobile:before{content:"\F10B"}i.icon.battery.full:before{content:"\F240"}i.icon.battery.high:before{content:"\F241"}i.icon.battery.medium:before{content:"\F242"}i.icon.battery.low:before{content:"\F243"}i.icon.battery.empty:before{content:"\F244"}i.icon.power:before{content:"\F011"}i.icon.trash.outline:before{content:"\F014"}i.icon.disk.outline:before{content:"\F0A0"}i.icon.desktop:before{content:"\F108"}i.icon.laptop:before{content:"\F109"}i.icon.game:before{content:"\F11B"}i.icon.keyboard:before{content:"\F11C"}i.icon.plug:before{content:"\F1E6"}i.icon.trash:before{content:"\F1F8"}i.icon.file.outline:before{content:"\F016"}i.icon.folder:before{content:"\F07B"}i.icon.folder.open:before{content:"\F07C"}i.icon.file.text.outline:before{content:"\F0F6"}i.icon.folder.outline:before{content:"\F114"}i.icon.folder.open.outline:before{content:"\F115"}i.icon.level.up:before{content:"\F148"}i.icon.level.down:before{content:"\F149"}i.icon.file:before{content:"\F15B"}i.icon.file.text:before{content:"\F15C"}i.icon.file.pdf.outline:before{content:"\F1C1"}i.icon.file.word.outline:before{content:"\F1C2"}i.icon.file.excel.outline:before{content:"\F1C3"}i.icon.file.powerpoint.outline:before{content:"\F1C4"}i.icon.file.image.outline:before{content:"\F1C5"}i.icon.file.archive.outline:before{content:"\F1C6"}i.icon.file.audio.outline:before{content:"\F1C7"}i.icon.file.video.outline:before{content:"\F1C8"}i.icon.file.code.outline:before{content:"\F1C9"}i.icon.qrcode:before{content:"\F029"}i.icon.barcode:before{content:"\F02A"}i.icon.rss:before{content:"\F09E"}i.icon.fork:before{content:"\F126"}i.icon.html5:before{content:"\F13B"}i.icon.css3:before{content:"\F13C"}i.icon.rss.square:before{content:"\F143"}i.icon.openid:before{content:"\F19B"}i.icon.database:before{content:"\F1C0"}i.icon.wifi:before{content:"\F1EB"}i.icon.server:before{content:"\F233"}i.icon.usb:before{content:"\F287"}i.icon.bluetooth:before{content:"\F293"}i.icon.bluetooth.alternative:before{content:"\F294"}i.icon.microchip:before{content:"\F2DB"}i.icon.heart:before{content:"\F004"}i.icon.star:before{content:"\F005"}i.icon.empty.star:before{content:"\F006"}i.icon.thumbs.outline.up:before{content:"\F087"}i.icon.thumbs.outline.down:before{content:"\F088"}i.icon.star.half:before{content:"\F089"}i.icon.empty.heart:before{content:"\F08A"}i.icon.smile:before{content:"\F118"}i.icon.frown:before{content:"\F119"}i.icon.meh:before{content:"\F11A"}i.icon.star.half.empty:before{content:"\F123"}i.icon.thumbs.up:before{content:"\F164"}i.icon.thumbs.down:before{content:"\F165"}i.icon.music:before{content:"\F001"}i.icon.video.play.outline:before{content:"\F01D"}i.icon.volume.off:before{content:"\F026"}i.icon.volume.down:before{content:"\F027"}i.icon.volume.up:before{content:"\F028"}i.icon.record:before{content:"\F03D"}i.icon.step.backward:before{content:"\F048"}i.icon.fast.backward:before{content:"\F049"}i.icon.backward:before{content:"\F04A"}i.icon.play:before{content:"\F04B"}i.icon.pause:before{content:"\F04C"}i.icon.stop:before{content:"\F04D"}i.icon.forward:before{content:"\F04E"}i.icon.fast.forward:before{content:"\F050"}i.icon.step.forward:before{content:"\F051"}i.icon.eject:before{content:"\F052"}i.icon.unmute:before{content:"\F130"}i.icon.mute:before{content:"\F131"}i.icon.video.play:before{content:"\F144"}i.icon.closed.captioning:before{content:"\F20A"}i.icon.pause.circle:before{content:"\F28B"}i.icon.pause.circle.outline:before{content:"\F28C"}i.icon.stop.circle:before{content:"\F28D"}i.icon.stop.circle.outline:before{content:"\F28E"}i.icon.marker:before{content:"\F041"}i.icon.coffee:before{content:"\F0F4"}i.icon.food:before{content:"\F0F5"}i.icon.building.outline:before{content:"\F0F7"}i.icon.hospital:before{content:"\F0F8"}i.icon.emergency:before{content:"\F0F9"}i.icon.first.aid:before{content:"\F0FA"}i.icon.military:before{content:"\F0FB"}i.icon.h:before{content:"\F0FD"}i.icon.location.arrow:before{content:"\F124"}i.icon.compass:before{content:"\F14E"}i.icon.space.shuttle:before{content:"\F197"}i.icon.university:before{content:"\F19C"}i.icon.building:before{content:"\F1AD"}i.icon.paw:before{content:"\F1B0"}i.icon.spoon:before{content:"\F1B1"}i.icon.car:before{content:"\F1B9"}i.icon.taxi:before{content:"\F1BA"}i.icon.tree:before{content:"\F1BB"}i.icon.bicycle:before{content:"\F206"}i.icon.bus:before{content:"\F207"}i.icon.ship:before{content:"\F21A"}i.icon.motorcycle:before{content:"\F21C"}i.icon.street.view:before{content:"\F21D"}i.icon.hotel:before{content:"\F236"}i.icon.train:before{content:"\F238"}i.icon.subway:before{content:"\F239"}i.icon.map.pin:before{content:"\F276"}i.icon.map.signs:before{content:"\F277"}i.icon.map.outline:before{content:"\F278"}i.icon.map:before{content:"\F279"}i.icon.table:before{content:"\F0CE"}i.icon.columns:before{content:"\F0DB"}i.icon.sort:before{content:"\F0DC"}i.icon.sort.descending:before{content:"\F0DD"}i.icon.sort.ascending:before{content:"\F0DE"}i.icon.sort.alphabet.ascending:before{content:"\F15D"}i.icon.sort.alphabet.descending:before{content:"\F15E"}i.icon.sort.content.ascending:before{content:"\F160"}i.icon.sort.content.descending:before{content:"\F161"}i.icon.sort.numeric.ascending:before{content:"\F162"}i.icon.sort.numeric.descending:before{content:"\F163"}i.icon.font:before{content:"\F031"}i.icon.bold:before{content:"\F032"}i.icon.italic:before{content:"\F033"}i.icon.text.height:before{content:"\F034"}i.icon.text.width:before{content:"\F035"}i.icon.align.left:before{content:"\F036"}i.icon.align.center:before{content:"\F037"}i.icon.align.right:before{content:"\F038"}i.icon.align.justify:before{content:"\F039"}i.icon.list:before{content:"\F03A"}i.icon.outdent:before{content:"\F03B"}i.icon.indent:before{content:"\F03C"}i.icon.cut:before{content:"\F0C4"}i.icon.copy:before{content:"\F0C5"}i.icon.attach:before{content:"\F0C6"}i.icon.save:before{content:"\F0C7"}i.icon.content:before{content:"\F0C9"}i.icon.unordered.list:before{content:"\F0CA"}i.icon.ordered.list:before{content:"\F0CB"}i.icon.strikethrough:before{content:"\F0CC"}i.icon.underline:before{content:"\F0CD"}i.icon.paste:before{content:"\F0EA"}i.icon.unlinkify:before{content:"\F127"}i.icon.superscript:before{content:"\F12B"}i.icon.subscript:before{content:"\F12C"}i.icon.header:before{content:"\F1DC"}i.icon.paragraph:before{content:"\F1DD"}i.icon.text.cursor:before{content:"\F246"}i.icon.euro:before{content:"\F153"}i.icon.pound:before{content:"\F154"}i.icon.dollar:before{content:"\F155"}i.icon.rupee:before{content:"\F156"}i.icon.yen:before{content:"\F157"}i.icon.ruble:before{content:"\F158"}i.icon.won:before{content:"\F159"}i.icon.bitcoin:before{content:"\F15A"}i.icon.lira:before{content:"\F195"}i.icon.shekel:before{content:"\F20B"}i.icon.paypal:before{content:"\F1ED"}i.icon.google.wallet:before{content:"\F1EE"}i.icon.visa:before{content:"\F1F0"}i.icon.mastercard:before{content:"\F1F1"}i.icon.discover:before{content:"\F1F2"}i.icon.american.express:before{content:"\F1F3"}i.icon.paypal.card:before{content:"\F1F4"}i.icon.stripe:before{content:"\F1F5"}i.icon.japan.credit.bureau:before{content:"\F24B"}i.icon.diners.club:before{content:"\F24C"}i.icon.credit.card.alternative:before{content:"\F283"}i.icon.twitter.square:before{content:"\F081"}i.icon.facebook.square:before{content:"\F082"}i.icon.linkedin.square:before{content:"\F08C"}i.icon.github.square:before{content:"\F092"}i.icon.twitter:before{content:"\F099"}i.icon.facebook.f:before{content:"\F09A"}i.icon.github:before{content:"\F09B"}i.icon.pinterest:before{content:"\F0D2"}i.icon.pinterest.square:before{content:"\F0D3"}i.icon.google.plus.square:before{content:"\F0D4"}i.icon.google.plus:before{content:"\F0D5"}i.icon.linkedin:before{content:"\F0E1"}i.icon.github.alternate:before{content:"\F113"}i.icon.maxcdn:before{content:"\F136"}i.icon.youtube.square:before{content:"\F166"}i.icon.youtube:before{content:"\F167"}i.icon.xing:before{content:"\F168"}i.icon.xing.square:before{content:"\F169"}i.icon.youtube.play:before{content:"\F16A"}i.icon.dropbox:before{content:"\F16B"}i.icon.stack.overflow:before{content:"\F16C"}i.icon.instagram:before{content:"\F16D"}i.icon.flickr:before{content:"\F16E"}i.icon.adn:before{content:"\F170"}i.icon.bitbucket:before{content:"\F171"}i.icon.bitbucket.square:before{content:"\F172"}i.icon.tumblr:before{content:"\F173"}i.icon.tumblr.square:before{content:"\F174"}i.icon.apple:before{content:"\F179"}i.icon.windows:before{content:"\F17A"}i.icon.android:before{content:"\F17B"}i.icon.linux:before{content:"\F17C"}i.icon.dribble:before{content:"\F17D"}i.icon.skype:before{content:"\F17E"}i.icon.foursquare:before{content:"\F180"}i.icon.trello:before{content:"\F181"}i.icon.gittip:before{content:"\F184"}i.icon.vk:before{content:"\F189"}i.icon.weibo:before{content:"\F18A"}i.icon.renren:before{content:"\F18B"}i.icon.pagelines:before{content:"\F18C"}i.icon.stack.exchange:before{content:"\F18D"}i.icon.vimeo.square:before{content:"\F194"}i.icon.slack:before{content:"\F198"}i.icon.wordpress:before{content:"\F19A"}i.icon.yahoo:before{content:"\F19E"}i.icon.google:before{content:"\F1A0"}i.icon.reddit:before{content:"\F1A1"}i.icon.reddit.square:before{content:"\F1A2"}i.icon.stumbleupon.circle:before{content:"\F1A3"}i.icon.stumbleupon:before{content:"\F1A4"}i.icon.delicious:before{content:"\F1A5"}i.icon.digg:before{content:"\F1A6"}i.icon.pied.piper:before{content:"\F1A7"}i.icon.pied.piper.alternate:before{content:"\F1A8"}i.icon.drupal:before{content:"\F1A9"}i.icon.joomla:before{content:"\F1AA"}i.icon.behance:before{content:"\F1B4"}i.icon.behance.square:before{content:"\F1B5"}i.icon.steam:before{content:"\F1B6"}i.icon.steam.square:before{content:"\F1B7"}i.icon.spotify:before{content:"\F1BC"}i.icon.deviantart:before{content:"\F1BD"}i.icon.soundcloud:before{content:"\F1BE"}i.icon.vine:before{content:"\F1CA"}i.icon.codepen:before{content:"\F1CB"}i.icon.jsfiddle:before{content:"\F1CC"}i.icon.rebel:before{content:"\F1D0"}i.icon.empire:before{content:"\F1D1"}i.icon.git.square:before{content:"\F1D2"}i.icon.git:before{content:"\F1D3"}i.icon.hacker.news:before{content:"\F1D4"}i.icon.tencent.weibo:before{content:"\F1D5"}i.icon.qq:before{content:"\F1D6"}i.icon.wechat:before{content:"\F1D7"}i.icon.slideshare:before{content:"\F1E7"}i.icon.twitch:before{content:"\F1E8"}i.icon.yelp:before{content:"\F1E9"}i.icon.lastfm:before{content:"\F202"}i.icon.lastfm.square:before{content:"\F203"}i.icon.ioxhost:before{content:"\F208"}i.icon.angellist:before{content:"\F209"}i.icon.meanpath:before{content:"\F20C"}i.icon.buysellads:before{content:"\F20D"}i.icon.connectdevelop:before{content:"\F20E"}i.icon.dashcube:before{content:"\F210"}i.icon.forumbee:before{content:"\F211"}i.icon.leanpub:before{content:"\F212"}i.icon.sellsy:before{content:"\F213"}i.icon.shirtsinbulk:before{content:"\F214"}i.icon.simplybuilt:before{content:"\F215"}i.icon.skyatlas:before{content:"\F216"}i.icon.facebook:before{content:"\F230"}i.icon.pinterest:before{content:"\F231"}i.icon.whatsapp:before{content:"\F232"}i.icon.viacoin:before{content:"\F237"}i.icon.medium:before{content:"\F23A"}i.icon.y.combinator:before{content:"\F23B"}i.icon.optinmonster:before{content:"\F23C"}i.icon.opencart:before{content:"\F23D"}i.icon.expeditedssl:before{content:"\F23E"}i.icon.gg:before{content:"\F260"}i.icon.gg.circle:before{content:"\F261"}i.icon.tripadvisor:before{content:"\F262"}i.icon.odnoklassniki:before{content:"\F263"}i.icon.odnoklassniki.square:before{content:"\F264"}i.icon.pocket:before{content:"\F265"}i.icon.wikipedia:before{content:"\F266"}i.icon.safari:before{content:"\F267"}i.icon.chrome:before{content:"\F268"}i.icon.firefox:before{content:"\F269"}i.icon.opera:before{content:"\F26A"}i.icon.internet.explorer:before{content:"\F26B"}i.icon.contao:before{content:"\F26D"}i.icon.\35 00px:before{content:"\F26E"}i.icon.amazon:before{content:"\F270"}i.icon.houzz:before{content:"\F27C"}i.icon.vimeo:before{content:"\F27D"}i.icon.black.tie:before{content:"\F27E"}i.icon.fonticons:before{content:"\F280"}i.icon.reddit.alien:before{content:"\F281"}i.icon.microsoft.edge:before{content:"\F282"}i.icon.codiepie:before{content:"\F284"}i.icon.modx:before{content:"\F285"}i.icon.fort.awesome:before{content:"\F286"}i.icon.product.hunt:before{content:"\F288"}i.icon.mixcloud:before{content:"\F289"}i.icon.scribd:before{content:"\F28A"}i.icon.gitlab:before{content:"\F296"}i.icon.wpbeginner:before{content:"\F297"}i.icon.wpforms:before{content:"\F298"}i.icon.envira.gallery:before{content:"\F299"}i.icon.glide:before{content:"\F2A5"}i.icon.glide.g:before{content:"\F2A6"}i.icon.viadeo:before{content:"\F2A9"}i.icon.viadeo.square:before{content:"\F2AA"}i.icon.snapchat:before{content:"\F2AB"}i.icon.snapchat.ghost:before{content:"\F2AC"}i.icon.snapchat.square:before{content:"\F2AD"}i.icon.pied.piper.hat:before{content:"\F2AE"}i.icon.first.order:before{content:"\F2B0"}i.icon.yoast:before{content:"\F2B1"}i.icon.themeisle:before{content:"\F2B2"}i.icon.google.plus.circle:before{content:"\F2B3"}i.icon.font.awesome:before{content:"\F2B4"}i.icon.linode:before{content:"\F2B8"}i.icon.quora:before{content:"\F2C4"}i.icon.free.code.camp:before{content:"\F2C5"}i.icon.telegram:before{content:"\F2C6"}i.icon.bandcamp:before{content:"\F2D5"}i.icon.grav:before{content:"\F2D6"}i.icon.etsy:before{content:"\F2D7"}i.icon.imdb:before{content:"\F2D8"}i.icon.ravelry:before{content:"\F2D9"}i.icon.eercast:before{content:"\F2DA"}i.icon.superpowers:before{content:"\F2DD"}i.icon.wpexplorer:before{content:"\F2DE"}i.icon.meetup:before{content:"\F2E0"}i.icon.like:before{content:"\F004"}i.icon.favorite:before{content:"\F005"}i.icon.video:before{content:"\F008"}i.icon.check:before{content:"\F00C"}i.icon.cancel:before,i.icon.close:before,i.icon.delete:before,i.icon.x:before{content:"\F00D"}i.icon.magnify:before,i.icon.zoom.in:before{content:"\F00E"}i.icon.shutdown:before{content:"\F011"}i.icon.clock:before,i.icon.time:before{content:"\F017"}i.icon.play.circle.outline:before{content:"\F01D"}i.icon.headphone:before{content:"\F025"}i.icon.camera:before{content:"\F030"}i.icon.video.camera:before{content:"\F03D"}i.icon.picture:before{content:"\F03E"}i.icon.compose:before,i.icon.pencil:before{content:"\F040"}i.icon.point:before{content:"\F041"}i.icon.tint:before{content:"\F043"}i.icon.signup:before{content:"\F044"}i.icon.plus.circle:before{content:"\F055"}i.icon.question.circle:before{content:"\F059"}i.icon.dont:before{content:"\F05E"}i.icon.minimize:before{content:"\F066"}i.icon.add:before{content:"\F067"}i.icon.attention:before,i.icon.exclamation.circle:before{content:"\F06A"}i.icon.eye:before{content:"\F06E"}i.icon.exclamation.triangle:before{content:"\F071"}i.icon.shuffle:before{content:"\F074"}i.icon.chat:before{content:"\F075"}i.icon.cart:before,i.icon.shopping.cart:before{content:"\F07A"}i.icon.bar.graph:before{content:"\F080"}i.icon.key:before{content:"\F084"}i.icon.cogs:before{content:"\F085"}i.icon.discussions:before{content:"\F086"}i.icon.like.outline:before{content:"\F087"}i.icon.dislike.outline:before{content:"\F088"}i.icon.heart.outline:before{content:"\F08A"}i.icon.log.out:before{content:"\F08B"}i.icon.thumb.tack:before{content:"\F08D"}i.icon.winner:before{content:"\F091"}i.icon.phone:before{content:"\F095"}i.icon.bookmark.outline:before{content:"\F097"}i.icon.phone.square:before{content:"\F098"}i.icon.credit.card:before{content:"\F09D"}i.icon.hdd.outline:before{content:"\F0A0"}i.icon.bullhorn:before{content:"\F0A1"}i.icon.bell.outline:before{content:"\F0A2"}i.icon.hand.outline.right:before{content:"\F0A4"}i.icon.hand.outline.left:before{content:"\F0A5"}i.icon.hand.outline.up:before{content:"\F0A6"}i.icon.hand.outline.down:before{content:"\F0A7"}i.icon.globe:before{content:"\F0AC"}i.icon.wrench:before{content:"\F0AD"}i.icon.briefcase:before{content:"\F0B1"}i.icon.group:before{content:"\F0C0"}i.icon.chain:before,i.icon.linkify:before{content:"\F0C1"}i.icon.flask:before{content:"\F0C3"}i.icon.bars:before,i.icon.sidebar:before{content:"\F0C9"}i.icon.list.ul:before{content:"\F0CA"}i.icon.list.ol:before,i.icon.numbered.list:before{content:"\F0CB"}i.icon.magic:before{content:"\F0D0"}i.icon.truck:before{content:"\F0D1"}i.icon.currency:before{content:"\F0D6"}i.icon.dropdown:before,i.icon.triangle.down:before{content:"\F0D7"}i.icon.triangle.up:before{content:"\F0D8"}i.icon.triangle.left:before{content:"\F0D9"}i.icon.triangle.right:before{content:"\F0DA"}i.icon.envelope:before{content:"\F0E0"}i.icon.conversation:before{content:"\F0E6"}i.icon.rain:before{content:"\F0E9"}i.icon.clipboard:before{content:"\F0EA"}i.icon.lightbulb:before{content:"\F0EB"}i.icon.bell:before{content:"\F0F3"}i.icon.ambulance:before{content:"\F0F9"}i.icon.medkit:before{content:"\F0FA"}i.icon.fighter.jet:before{content:"\F0FB"}i.icon.beer:before{content:"\F0FC"}i.icon.plus.square:before{content:"\F0FE"}i.icon.computer:before{content:"\F108"}i.icon.circle.outline:before{content:"\F10C"}i.icon.gamepad:before{content:"\F11B"}i.icon.star.half.full:before{content:"\F123"}i.icon.broken.chain:before{content:"\F127"}i.icon.question:before{content:"\F128"}i.icon.exclamation:before{content:"\F12A"}i.icon.eraser:before{content:"\F12D"}i.icon.microphone:before{content:"\F130"}i.icon.microphone.slash:before{content:"\F131"}i.icon.shield:before{content:"\F132"}i.icon.target:before{content:"\F140"}i.icon.play.circle:before{content:"\F144"}i.icon.pencil.square:before{content:"\F14B"}i.icon.eur:before{content:"\F153"}i.icon.gbp:before{content:"\F154"}i.icon.usd:before{content:"\F155"}i.icon.inr:before{content:"\F156"}i.icon.cny:before,i.icon.jpy:before,i.icon.rmb:before{content:"\F157"}i.icon.rouble:before,i.icon.rub:before{content:"\F158"}i.icon.krw:before{content:"\F159"}i.icon.btc:before{content:"\F15A"}i.icon.gratipay:before{content:"\F184"}i.icon.zip:before{content:"\F187"}i.icon.dot.circle.outline:before{content:"\F192"}i.icon.try:before{content:"\F195"}i.icon.graduation:before{content:"\F19D"}i.icon.circle.outline:before{content:"\F1DB"}i.icon.sliders:before{content:"\F1DE"}i.icon.weixin:before{content:"\F1D7"}i.icon.teletype:before,i.icon.tty:before{content:"\F1E4"}i.icon.binoculars:before{content:"\F1E5"}i.icon.power.cord:before{content:"\F1E6"}i.icon.wi-fi:before{content:"\F1EB"}i.icon.visa.card:before{content:"\F1F0"}i.icon.mastercard.card:before{content:"\F1F1"}i.icon.discover.card:before{content:"\F1F2"}i.icon.american.express.card:before,i.icon.amex:before{content:"\F1F3"}i.icon.stripe.card:before{content:"\F1F5"}i.icon.bell.slash:before{content:"\F1F6"}i.icon.bell.slash.outline:before{content:"\F1F7"}i.icon.area.graph:before{content:"\F1FE"}i.icon.pie.graph:before{content:"\F200"}i.icon.line.graph:before{content:"\F201"}i.icon.cc:before{content:"\F20A"}i.icon.ils:before,i.icon.sheqel:before{content:"\F20B"}i.icon.plus.cart:before{content:"\F217"}i.icon.arrow.down.cart:before{content:"\F218"}i.icon.detective:before{content:"\F21B"}i.icon.venus:before{content:"\F221"}i.icon.mars:before{content:"\F222"}i.icon.mercury:before{content:"\F223"}i.icon.intersex:before{content:"\F224"}i.icon.female.homosexual:before,i.icon.venus.double:before{content:"\F226"}i.icon.male.homosexual:before,i.icon.mars.double:before{content:"\F227"}i.icon.venus.mars:before{content:"\F228"}i.icon.mars.alternate:before,i.icon.mars.stroke:before{content:"\F229"}i.icon.mars.stroke.vertical:before,i.icon.mars.vertical:before{content:"\F22A"}i.icon.mars.horizontal:before,i.icon.mars.stroke.horizontal:before{content:"\F22B"}i.icon.asexual:before{content:"\F22D"}i.icon.facebook.official:before{content:"\F230"}i.icon.user.plus:before{content:"\F234"}i.icon.user.cancel:before,i.icon.user.close:before,i.icon.user.delete:before,i.icon.user.times:before,i.icon.user.x:before{content:"\F235"}i.icon.bed:before{content:"\F236"}i.icon.yc:before,i.icon.ycombinator:before{content:"\F23B"}i.icon.battery.four:before{content:"\F240"}i.icon.battery.three.quarters:before,i.icon.battery.three:before{content:"\F241"}i.icon.battery.half:before,i.icon.battery.two:before{content:"\F242"}i.icon.battery.one:before,i.icon.battery.quarter:before{content:"\F243"}i.icon.battery.zero:before{content:"\F244"}i.icon.i.cursor:before{content:"\F246"}i.icon.japan.credit.bureau.card:before,i.icon.jcb:before{content:"\F24B"}i.icon.diners.club.card:before{content:"\F24C"}i.icon.balance:before{content:"\F24E"}i.icon.hourglass.outline:before,i.icon.hourglass.zero:before{content:"\F250"}i.icon.hourglass.one:before{content:"\F251"}i.icon.hourglass.two:before{content:"\F252"}i.icon.hourglass.three:before{content:"\F253"}i.icon.hourglass.four:before{content:"\F254"}i.icon.grab:before{content:"\F255"}i.icon.hand.victory:before{content:"\F25B"}i.icon.tm:before{content:"\F25C"}i.icon.r.circle:before{content:"\F25D"}i.icon.television:before{content:"\F26C"}i.icon.five.hundred.pixels:before{content:"\F26E"}i.icon.calendar.plus:before{content:"\F271"}i.icon.calendar.minus:before{content:"\F272"}i.icon.calendar.times:before{content:"\F273"}i.icon.calendar.check:before{content:"\F274"}i.icon.factory:before{content:"\F275"}i.icon.commenting:before{content:"\F27A"}i.icon.commenting.outline:before{content:"\F27B"}i.icon.edge:before,i.icon.ms.edge:before{content:"\F282"}i.icon.wordpress.beginner:before{content:"\F297"}i.icon.wordpress.forms:before{content:"\F298"}i.icon.envira:before{content:"\F299"}i.icon.question.circle.outline:before{content:"\F29C"}i.icon.ald:before,i.icon.als:before,i.icon.assistive.listening.devices:before{content:"\F2A2"}i.icon.asl.interpreting:before{content:"\F2A3"}i.icon.deaf:before{content:"\F2A4"}i.icon.american.sign.language.interpreting:before{content:"\F2A3"}i.icon.hard.of.hearing:before{content:"\F2A4"}i.icon.signing:before{content:"\F2A7"}i.icon.new.pied.piper:before{content:"\F2AE"}i.icon.theme.isle:before{content:"\F2B2"}i.icon.google.plus.official:before{content:"\F2B3"}i.icon.fa:before{content:"\F2B4"}i.icon.vcard:before{content:"\F2BB"}i.icon.vcard.outline:before{content:"\F2BC"}i.icon.drivers.license:before{content:"\F2C2"}i.icon.drivers.license.outline:before{content:"\F2C3"}i.icon.thermometer:before{content:"\F2C7"}i.icon.bath:before,i.icon.s15:before{content:"\F2CD"}i.icon.times.rectangle:before{content:"\F2D3"}i.icon.times.rectangle.outline:before{content:"\F2D4"}/*! + * # Semantic UI 2.2.9 - Item + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.items>.item{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;margin:1em 0;width:100%;min-height:0;background:transparent;padding:0;border:none;border-radius:0;box-shadow:none;-webkit-transition:box-shadow .1s ease;transition:box-shadow .1s ease;z-index:""}.ui.items>.item a{cursor:pointer}.ui.items{margin:1.5em 0}.ui.items:first-child{margin-top:0!important}.ui.items:last-child{margin-bottom:0!important}.ui.items>.item:after{display:block;content:" ";height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item:first-child{margin-top:0}.ui.items>.item:last-child{margin-bottom:0}.ui.items>.item>.image{position:relative;-webkit-box-flex:0;-ms-flex:0 0 auto;-webkit-flex:0 0 auto;flex:0 0 auto;display:block;float:none;margin:0;padding:0;max-height:"";-ms-flex-item-align:top;-ms-grid-row-align:top;-webkit-align-self:top;align-self:top}.ui.items>.item>.image>img{display:block;width:100%;height:auto;border-radius:.125rem;border:none}.ui.items>.item>.image:only-child>img{border-radius:0}.ui.items>.item>.content{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto;background:none;margin:0;padding:0;box-shadow:none;font-size:1em;border:none;border-radius:0}.ui.items>.item>.content:after{display:block;content:" ";height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item>.image+.content{min-width:0;width:auto;display:block;margin-left:0;-ms-flex-item-align:top;-ms-grid-row-align:top;-webkit-align-self:top;align-self:top;padding-left:1.5em}.ui.items>.item>.content>.header{display:inline-block;margin:-.21425em 0 0;font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif;font-weight:700;color:rgba(0,0,0,.85)}.ui.items>.item>.content>.header:not(.ui){font-size:1.28571429em}.ui.items>.item [class*="left floated"]{float:left}.ui.items>.item [class*="right floated"]{float:right}.ui.items>.item .content img{-ms-flex-item-align:middle;-ms-grid-row-align:middle;-webkit-align-self:middle;align-self:middle;width:""}.ui.items>.item .avatar img,.ui.items>.item img.avatar{width:"";height:"";border-radius:500rem}.ui.items>.item>.content>.description{margin-top:.6em;max-width:auto;font-size:1em;line-height:1.4285em;color:rgba(0,0,0,.87)}.ui.items>.item>.content p{margin:0 0 .5em}.ui.items>.item>.content p:last-child{margin-bottom:0}.ui.items>.item .meta{margin:.5em 0;font-size:1em;line-height:1em;color:rgba(0,0,0,.6)}.ui.items>.item .meta *{margin-right:.3em}.ui.items>.item .meta :last-child{margin-right:0}.ui.items>.item .meta [class*="right floated"]{margin-right:0;margin-left:.3em}.ui.items>.item>.content a:not(.ui){color:"";-webkit-transition:color .1s ease;transition:color .1s ease}.ui.items>.item>.content a:not(.ui):hover{color:""}.ui.items>.item>.content>a.header{color:rgba(0,0,0,.85)}.ui.items>.item>.content>a.header:hover{color:#1e70bf}.ui.items>.item .meta>a:not(.ui){color:rgba(0,0,0,.4)}.ui.items>.item .meta>a:not(.ui):hover{color:rgba(0,0,0,.87)}.ui.items>.item>.content .favorite.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.items>.item>.content .favorite.icon:hover{opacity:1;color:#ffb70a}.ui.items>.item>.content .active.favorite.icon{color:#ffe623}.ui.items>.item>.content .like.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.items>.item>.content .like.icon:hover{opacity:1;color:#ff2733}.ui.items>.item>.content .active.like.icon{color:#ff2733}.ui.items>.item .extra{display:block;position:relative;background:none;margin:.5rem 0 0;width:100%;padding:0;top:0;left:0;color:rgba(0,0,0,.4);box-shadow:none;-webkit-transition:color .1s ease;transition:color .1s ease;border-top:none}.ui.items>.item .extra>*{margin:.25rem .5rem .25rem 0}.ui.items>.item .extra>[class*="right floated"]{margin:.25rem 0 .25rem .5rem}.ui.items>.item .extra:after{display:block;content:" ";height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item>.image:not(.ui){width:175px}@media only screen and (min-width:768px) and (max-width:991px){.ui.items>.item{margin:1em 0}.ui.items>.item>.image:not(.ui){width:150px}.ui.items>.item>.image+.content{display:block;padding:0 0 0 1em}}@media only screen and (max-width:767px){.ui.items:not(.unstackable)>.item{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;margin:2em 0}.ui.items:not(.unstackable)>.item>.image{display:block;margin-left:auto;margin-right:auto}.ui.items:not(.unstackable)>.item>.image,.ui.items:not(.unstackable)>.item>.image>img{max-width:100%!important;width:auto!important;max-height:250px!important}.ui.items:not(.unstackable)>.item>.image+.content{display:block;padding:1.5em 0 0}}.ui.items>.item>.image+[class*="top aligned"].content{-ms-flex-item-align:start;-webkit-align-self:flex-start;align-self:flex-start}.ui.items>.item>.image+[class*="middle aligned"].content{-ms-flex-item-align:center;-ms-grid-row-align:center;-webkit-align-self:center;align-self:center}.ui.items>.item>.image+[class*="bottom aligned"].content{-ms-flex-item-align:end;-webkit-align-self:flex-end;align-self:flex-end}.ui.relaxed.items>.item{margin:1.5em 0}.ui[class*="very relaxed"].items>.item{margin:2em 0}.ui.divided.items>.item{border-top:1px solid rgba(34,36,38,.15);margin:0;padding:1em 0}.ui.divided.items>.item:first-child{border-top:none;margin-top:0!important;padding-top:0!important}.ui.divided.items>.item:last-child{margin-bottom:0!important;padding-bottom:0!important}.ui.relaxed.divided.items>.item{margin:0;padding:1.5em 0}.ui[class*="very relaxed"].divided.items>.item{margin:0;padding:2em 0}.ui.items a.item:hover,.ui.link.items>.item:hover{cursor:pointer}.ui.items a.item:hover .content .header,.ui.link.items>.item:hover .content .header{color:#1e70bf}.ui.items>.item{font-size:1em}@media only screen and (max-width:767px){.ui.unstackable.items>.item>.image,.ui.unstackable.items>.item>.image>img{width:125px!important}}/*! + * # Semantic UI 2.2.9 - Input + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.input{position:relative;font-weight:400;font-style:normal;display:-webkit-inline-box;display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex;color:rgba(0,0,0,.87)}.ui.input input{margin:0;max-width:100%;-webkit-box-flex:1;-ms-flex:1 0 auto;-webkit-flex:1 0 auto;flex:1 0 auto;outline:none;-webkit-tap-highlight-color:rgba(255,255,255,0);text-align:left;line-height:1.21428571em;font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif;padding:.67857143em 1em;background:#fff;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);border-radius:.28571429rem;-webkit-transition:box-shadow .1s ease,border-color .1s ease;transition:box-shadow .1s ease,border-color .1s ease;box-shadow:none}.ui.input input::-webkit-input-placeholder{color:hsla(0,0%,75%,.87)}.ui.input input::-moz-placeholder{color:hsla(0,0%,75%,.87)}.ui.input input:-ms-input-placeholder{color:hsla(0,0%,75%,.87)}.ui.disabled.input,.ui.input input[disabled]{opacity:.45}.ui.disabled.input input,.ui.input input[disabled]{pointer-events:none}.ui.input.down input,.ui.input input:active{border-color:rgba(0,0,0,.3);background:#fafafa;color:rgba(0,0,0,.87);box-shadow:none}.ui.loading.loading.input>i.icon:before{border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loading.loading.input>i.icon:after,.ui.loading.loading.input>i.icon:before{position:absolute;content:"";top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em}.ui.loading.loading.input>i.icon:after{-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}.ui.input.focus input,.ui.input input:focus{border-color:#85b7d9;background:#fff;color:rgba(0,0,0,.8);box-shadow:none}.ui.input.focus input::-webkit-input-placeholder,.ui.input input:focus::-webkit-input-placeholder{color:hsla(0,0%,45%,.87)}.ui.input.focus input::-moz-placeholder,.ui.input input:focus::-moz-placeholder{color:hsla(0,0%,45%,.87)}.ui.input.focus input:-ms-input-placeholder,.ui.input input:focus:-ms-input-placeholder{color:hsla(0,0%,45%,.87)}.ui.input.error input{background-color:#fff6f6;border-color:#e0b4b4;color:#9f3a38;box-shadow:none}.ui.input.error input::-webkit-input-placeholder{color:#e7bdbc}.ui.input.error input::-moz-placeholder{color:#e7bdbc}.ui.input.error input:-ms-input-placeholder{color:#e7bdbc!important}.ui.input.error input:focus::-webkit-input-placeholder{color:#da9796}.ui.input.error input:focus::-moz-placeholder{color:#da9796}.ui.input.error input:focus:-ms-input-placeholder{color:#da9796!important}.ui.transparent.input input{border-color:transparent!important;background-color:transparent!important;padding:0!important;box-shadow:none!important}.ui.transparent.icon.input>i.icon{width:1.1em}.ui.transparent.icon.input>input{padding-left:0!important;padding-right:2em!important}.ui.transparent[class*="left icon"].input>input{padding-left:2em!important;padding-right:0!important}.ui.transparent.inverted.input{color:#fff}.ui.transparent.inverted.input input{color:inherit}.ui.transparent.inverted.input input::-webkit-input-placeholder{color:hsla(0,0%,100%,.5)}.ui.transparent.inverted.input input::-moz-placeholder{color:hsla(0,0%,100%,.5)}.ui.transparent.inverted.input input:-ms-input-placeholder{color:hsla(0,0%,100%,.5)}.ui.icon.input>i.icon{cursor:default;position:absolute;line-height:1;text-align:center;top:0;right:0;margin:0;height:100%;width:2.67142857em;opacity:.5;border-radius:0 .28571429rem .28571429rem 0;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.ui.icon.input>i.icon:not(.link){pointer-events:none}.ui.icon.input input{padding-right:2.67142857em!important}.ui.icon.input>i.icon:after,.ui.icon.input>i.icon:before{left:0;position:absolute;text-align:center;top:50%;width:100%;margin-top:-.5em}.ui.icon.input>i.link.icon{cursor:pointer}.ui.icon.input>i.circular.icon{top:.35em;right:.5em}.ui[class*="left icon"].input>i.icon{right:auto;left:1px;border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="left icon"].input>i.circular.icon{right:auto;left:.5em}.ui[class*="left icon"].input>input{padding-left:2.67142857em!important;padding-right:1em!important}.ui.icon.input>input:focus~i.icon{opacity:1}.ui.labeled.input>.label{-webkit-box-flex:0;-ms-flex:0 0 auto;-webkit-flex:0 0 auto;flex:0 0 auto;margin:0;font-size:1em}.ui.labeled.input>.label:not(.corner){padding-top:.78571429em;padding-bottom:.78571429em}.ui.labeled.input:not([class*="corner labeled"]) .label:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.ui.labeled.input:not([class*="corner labeled"]) .label:first-child+input{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:transparent}.ui.labeled.input:not([class*="corner labeled"]) .label:first-child+input:focus{border-left-color:#85b7d9}.ui[class*="right labeled"].input input{border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-right-color:transparent!important}.ui[class*="right labeled"].input input+.label{border-top-left-radius:0;border-bottom-left-radius:0}.ui[class*="right labeled"].input input:focus{border-right-color:#85b7d9!important}.ui.labeled.input .corner.label{top:1px;right:1px;font-size:.64285714em;border-radius:0 .28571429rem 0 0}.ui[class*="corner labeled"]:not([class*="left corner labeled"]).labeled.input input{padding-right:2.5em!important}.ui[class*="corner labeled"].icon.input:not([class*="left corner labeled"])>input{padding-right:3.25em!important}.ui[class*="corner labeled"].icon.input:not([class*="left corner labeled"])>.icon{margin-right:1.25em}.ui[class*="left corner labeled"].labeled.input input{padding-left:2.5em!important}.ui[class*="left corner labeled"].icon.input>input{padding-left:3.25em!important}.ui[class*="left corner labeled"].icon.input>.icon{margin-left:1.25em}.ui.input>.ui.corner.label{top:1px;right:1px}.ui.input>.ui.left.corner.label{right:auto;left:1px}.ui.action.input>.button,.ui.action.input>.buttons{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;-webkit-flex:0 0 auto;flex:0 0 auto}.ui.action.input>.button,.ui.action.input>.buttons>.button{padding-top:.78571429em;padding-bottom:.78571429em;margin:0}.ui.action.input:not([class*="left action"])>input{border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-right-color:transparent!important}.ui.action.input:not([class*="left action"])>.button:not(:first-child),.ui.action.input:not([class*="left action"])>.buttons:not(:first-child)>.button,.ui.action.input:not([class*="left action"])>.dropdown:not(:first-child){border-radius:0}.ui.action.input:not([class*="left action"])>.button:last-child,.ui.action.input:not([class*="left action"])>.buttons:last-child>.button,.ui.action.input:not([class*="left action"])>.dropdown:last-child{border-radius:0 .28571429rem .28571429rem 0}.ui.action.input:not([class*="left action"]) input:focus{border-right-color:#85b7d9!important}.ui[class*="left action"].input>input{border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-left-color:transparent!important}.ui[class*="left action"].input>.button,.ui[class*="left action"].input>.buttons>.button,.ui[class*="left action"].input>.dropdown{border-radius:0}.ui[class*="left action"].input>.button:first-child,.ui[class*="left action"].input>.buttons:first-child>.button,.ui[class*="left action"].input>.dropdown:first-child{border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="left action"].input>input:focus{border-left-color:#85b7d9!important}.ui.inverted.input input{border:none}.ui.fluid.input{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex}.ui.fluid.input>input{width:0!important}.ui.mini.input{font-size:.78571429em}.ui.small.input{font-size:.92857143em}.ui.input{font-size:1em}.ui.large.input{font-size:1.14285714em}.ui.big.input{font-size:1.28571429em}.ui.huge.input{font-size:1.42857143em}.ui.massive.input{font-size:1.71428571em}/*! + * # Semantic UI 2.2.9 - Label + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.label{display:inline-block;line-height:1;vertical-align:baseline;margin:0 .14285714em;background-color:#e8e8e8;background-image:none;padding:.5833em .833em;color:rgba(0,0,0,.6);text-transform:none;font-weight:700;border:0 solid transparent;border-radius:.28571429rem;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.label:first-child{margin-left:0}.ui.label:last-child{margin-right:0}.ui.label>a,a.ui.label{cursor:pointer}.ui.label>a{color:inherit;opacity:.5;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.label>a:hover{opacity:1}.ui.label>img{width:auto!important;vertical-align:middle;height:2.1666em!important}.ui.label>.icon{width:auto;margin:0 .75em 0 0}.ui.label>.detail{display:inline-block;vertical-align:top;font-weight:700;margin-left:1em;opacity:.8}.ui.label>.detail .icon{margin:0 .25em 0 0}.ui.label>.close.icon,.ui.label>.delete.icon{cursor:pointer;margin-right:0;margin-left:.5em;font-size:.92857143em;opacity:.5;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.label>.delete.icon:hover{opacity:1}.ui.labels>.label{margin:0 .5em .5em 0}.ui.header>.ui.label{margin-top:-.29165em}.ui.attached.segment>.ui.top.left.attached.label,.ui.bottom.attached.segment>.ui.top.left.attached.label{border-top-left-radius:0}.ui.attached.segment>.ui.top.right.attached.label,.ui.bottom.attached.segment>.ui.top.right.attached.label{border-top-right-radius:0}.ui.top.attached.segment>.ui.bottom.left.attached.label{border-bottom-left-radius:0}.ui.top.attached.segment>.ui.bottom.right.attached.label{border-bottom-right-radius:0}.ui.top.attached.label+[class*="right floated"]+*,.ui.top.attached.label:first-child+:not(.attached){margin-top:2rem!important}.ui.bottom.attached.label:first-child~:last-child:not(.attached){margin-top:0;margin-bottom:2rem!important}.ui.image.label{width:auto!important;margin-top:0;margin-bottom:0;max-width:9999px;vertical-align:baseline;text-transform:none;background:#e8e8e8;padding:.5833em .833em .5833em .5em;border-radius:.28571429rem;box-shadow:none}.ui.image.label img{display:inline-block;vertical-align:top;height:2.1666em;margin:-.5833em .5em -.5833em -.5em;border-radius:.28571429rem 0 0 .28571429rem}.ui.image.label .detail{background:rgba(0,0,0,.1);margin:-.5833em -.833em -.5833em .5em;padding:.5833em .833em;border-radius:0 .28571429rem .28571429rem 0}.ui.tag.label,.ui.tag.labels .label{margin-left:1em;position:relative;padding-left:1.5em;padding-right:1.5em;border-radius:0 .28571429rem .28571429rem 0;-webkit-transition:none;transition:none}.ui.tag.label:before,.ui.tag.labels .label:before{position:absolute;-webkit-transform:translateY(-50%) translateX(50%) rotate(-45deg);-ms-transform:translateY(-50%) translateX(50%) rotate(-45deg);transform:translateY(-50%) translateX(50%) rotate(-45deg);top:50%;right:100%;content:"";background-color:inherit;background-image:none;width:1.56em;height:1.56em;-webkit-transition:none;transition:none}.ui.tag.label:after,.ui.tag.labels .label:after{position:absolute;content:"";top:50%;left:-.25em;margin-top:-.25em;background-color:#fff!important;width:.5em;height:.5em;box-shadow:0 -1px 1px 0 rgba(0,0,0,.3);border-radius:500rem}.ui.corner.label{margin:0;padding:0;text-align:center;border-color:#e8e8e8;width:4em;height:4em;z-index:1}.ui.corner.label,.ui.corner.label:after{position:absolute;top:0;right:0;-webkit-transition:border-color .1s ease;transition:border-color .1s ease;background-color:transparent!important}.ui.corner.label:after{content:"";z-index:-1;width:0;height:0;border-top:0 solid transparent;border-right:4em solid transparent;border-bottom:4em solid transparent;border-left:0 solid transparent;border-right-color:inherit}.ui.corner.label .icon{cursor:default;position:relative;top:.64285714em;left:.78571429em;font-size:1.14285714em;margin:0}.ui.left.corner.label,.ui.left.corner.label:after{right:auto;left:0}.ui.left.corner.label:after{border-top:4em solid transparent;border-right:4em solid transparent;border-bottom:0 solid transparent;border-left:0 solid transparent;border-top-color:inherit}.ui.left.corner.label .icon{left:-.78571429em}.ui.segment>.ui.corner.label{top:-1px;right:-1px}.ui.segment>.ui.left.corner.label{right:auto;left:-1px}.ui.ribbon.label{position:relative;margin:0;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;border-radius:0 .28571429rem .28571429rem 0;border-color:rgba(0,0,0,.15)}.ui.ribbon.label:after{position:absolute;content:"";top:100%;left:0;background-color:transparent!important;border-style:solid;border-width:0 1.2em 1.2em 0;border-color:transparent;border-right-color:inherit;width:0;height:0}.ui.ribbon.label{left:calc(-1rem - 1.2em);margin-right:-1.2em;padding-left:calc(1rem + 1.2em);padding-right:1.2em}.ui[class*="right ribbon"].label{left:calc(100% + 1rem + 1.2em);padding-left:1.2em;padding-right:calc(1rem + 1.2em);text-align:left;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="right ribbon"].label:after{left:auto;right:0;border-style:solid;border-width:1.2em 1.2em 0 0;border-color:transparent;border-top-color:inherit}.ui.card .image>.ribbon.label,.ui.image>.ribbon.label{position:absolute;top:1rem}.ui.card .image>.ui.ribbon.label,.ui.image>.ui.ribbon.label{left:calc(.05rem - 1.2em)}.ui.card .image>.ui[class*="right ribbon"].label,.ui.image>.ui[class*="right ribbon"].label{left:calc(100% + -.05rem + 1.2em);padding-left:.833em}.ui.table td>.ui.ribbon.label{left:-1.98571em}.ui.table td>.ui[class*="right ribbon"].label{left:calc(100% + .78571429em + 1.2em);padding-left:.833em}.ui.attached.label,.ui[class*="top attached"].label{width:100%;position:absolute;margin:0;top:0;left:0;padding:.75em 1em;border-radius:.21428571rem .21428571rem 0 0}.ui[class*="bottom attached"].label{top:auto;bottom:0;border-radius:0 0 .21428571rem .21428571rem}.ui[class*="top left attached"].label{width:auto;margin-top:0!important;border-radius:.21428571rem 0 .28571429rem 0}.ui[class*="top right attached"].label{width:auto;left:auto;right:0;border-radius:0 .21428571rem 0 .28571429rem}.ui[class*="bottom left attached"].label{width:auto;top:auto;bottom:0;border-radius:0 .28571429rem 0 .21428571rem}.ui[class*="bottom right attached"].label{top:auto;bottom:0;left:auto;right:0;width:auto;border-radius:.28571429rem 0 .21428571rem 0}.ui.label.disabled{opacity:.5}a.ui.label:hover,a.ui.labels .label:hover{background-color:#e0e0e0;border-color:#e0e0e0;background-image:none;color:rgba(0,0,0,.8)}.ui.labels a.label:hover:before,a.ui.label:hover:before{color:rgba(0,0,0,.8)}.ui.active.label{border-color:#d0d0d0}.ui.active.label,.ui.active.label:before{background-color:#d0d0d0;background-image:none;color:rgba(0,0,0,.95)}a.ui.active.label:hover,a.ui.labels .active.label:hover{border-color:#c8c8c8}.ui.labels a.active.label:ActiveHover:before,a.ui.active.label:ActiveHover:before,a.ui.active.label:hover,a.ui.labels .active.label:hover{background-color:#c8c8c8;background-image:none;color:rgba(0,0,0,.95)}.ui.label.visible:not(.dropdown),.ui.labels.visible .label{display:inline-block!important}.ui.label.hidden,.ui.labels.hidden .label{display:none!important}.ui.red.label,.ui.red.labels .label{background-color:#db2828!important;border-color:#db2828!important;color:#fff!important}.ui.red.labels .label:hover,a.ui.red.label:hover{background-color:#d01919!important;border-color:#d01919!important;color:#fff!important}.ui.red.corner.label,.ui.red.corner.label:hover{background-color:transparent!important}.ui.red.ribbon.label{border-color:#b21e1e!important}.ui.basic.red.label{background-color:#fff!important;color:#db2828!important;border-color:#db2828!important}.ui.basic.red.labels a.label:hover,a.ui.basic.red.label:hover{background-color:#fff!important;color:#d01919!important;border-color:#d01919!important}.ui.orange.label,.ui.orange.labels .label{background-color:#f2711c!important;border-color:#f2711c!important;color:#fff!important}.ui.orange.labels .label:hover,a.ui.orange.label:hover{background-color:#f26202!important;border-color:#f26202!important;color:#fff!important}.ui.orange.corner.label,.ui.orange.corner.label:hover{background-color:transparent!important}.ui.orange.ribbon.label{border-color:#cf590c!important}.ui.basic.orange.label{background-color:#fff!important;color:#f2711c!important;border-color:#f2711c!important}.ui.basic.orange.labels a.label:hover,a.ui.basic.orange.label:hover{background-color:#fff!important;color:#f26202!important;border-color:#f26202!important}.ui.yellow.label,.ui.yellow.labels .label{background-color:#fbbd08!important;border-color:#fbbd08!important;color:#fff!important}.ui.yellow.labels .label:hover,a.ui.yellow.label:hover{background-color:#eaae00!important;border-color:#eaae00!important;color:#fff!important}.ui.yellow.corner.label,.ui.yellow.corner.label:hover{background-color:transparent!important}.ui.yellow.ribbon.label{border-color:#cd9903!important}.ui.basic.yellow.label{background-color:#fff!important;color:#fbbd08!important;border-color:#fbbd08!important}.ui.basic.yellow.labels a.label:hover,a.ui.basic.yellow.label:hover{background-color:#fff!important;color:#eaae00!important;border-color:#eaae00!important}.ui.olive.label,.ui.olive.labels .label{background-color:#b5cc18!important;border-color:#b5cc18!important;color:#fff!important}.ui.olive.labels .label:hover,a.ui.olive.label:hover{background-color:#a7bd0d!important;border-color:#a7bd0d!important;color:#fff!important}.ui.olive.corner.label,.ui.olive.corner.label:hover{background-color:transparent!important}.ui.olive.ribbon.label{border-color:#198f35!important}.ui.basic.olive.label{background-color:#fff!important;color:#b5cc18!important;border-color:#b5cc18!important}.ui.basic.olive.labels a.label:hover,a.ui.basic.olive.label:hover{background-color:#fff!important;color:#a7bd0d!important;border-color:#a7bd0d!important}.ui.green.label,.ui.green.labels .label{background-color:#21ba45!important;border-color:#21ba45!important;color:#fff!important}.ui.green.labels .label:hover,a.ui.green.label:hover{background-color:#16ab39!important;border-color:#16ab39!important;color:#fff!important}.ui.green.corner.label,.ui.green.corner.label:hover{background-color:transparent!important}.ui.green.ribbon.label{border-color:#198f35!important}.ui.basic.green.label{background-color:#fff!important;color:#21ba45!important;border-color:#21ba45!important}.ui.basic.green.labels a.label:hover,a.ui.basic.green.label:hover{background-color:#fff!important;color:#16ab39!important;border-color:#16ab39!important}.ui.teal.label,.ui.teal.labels .label{background-color:#00b5ad!important;border-color:#00b5ad!important;color:#fff!important}.ui.teal.labels .label:hover,a.ui.teal.label:hover{background-color:#009c95!important;border-color:#009c95!important;color:#fff!important}.ui.teal.corner.label,.ui.teal.corner.label:hover{background-color:transparent!important}.ui.teal.ribbon.label{border-color:#00827c!important}.ui.basic.teal.label{background-color:#fff!important;color:#00b5ad!important;border-color:#00b5ad!important}.ui.basic.teal.labels a.label:hover,a.ui.basic.teal.label:hover{background-color:#fff!important;color:#009c95!important;border-color:#009c95!important}.ui.blue.label,.ui.blue.labels .label{background-color:#2185d0!important;border-color:#2185d0!important;color:#fff!important}.ui.blue.labels .label:hover,a.ui.blue.label:hover{background-color:#1678c2!important;border-color:#1678c2!important;color:#fff!important}.ui.blue.corner.label,.ui.blue.corner.label:hover{background-color:transparent!important}.ui.blue.ribbon.label{border-color:#1a69a4!important}.ui.basic.blue.label{background-color:#fff!important;color:#2185d0!important;border-color:#2185d0!important}.ui.basic.blue.labels a.label:hover,a.ui.basic.blue.label:hover{background-color:#fff!important;color:#1678c2!important;border-color:#1678c2!important}.ui.violet.label,.ui.violet.labels .label{background-color:#6435c9!important;border-color:#6435c9!important;color:#fff!important}.ui.violet.labels .label:hover,a.ui.violet.label:hover{background-color:#5829bb!important;border-color:#5829bb!important;color:#fff!important}.ui.violet.corner.label,.ui.violet.corner.label:hover{background-color:transparent!important}.ui.violet.ribbon.label{border-color:#502aa1!important}.ui.basic.violet.label{background-color:#fff!important;color:#6435c9!important;border-color:#6435c9!important}.ui.basic.violet.labels a.label:hover,a.ui.basic.violet.label:hover{background-color:#fff!important;color:#5829bb!important;border-color:#5829bb!important}.ui.purple.label,.ui.purple.labels .label{background-color:#a333c8!important;border-color:#a333c8!important;color:#fff!important}.ui.purple.labels .label:hover,a.ui.purple.label:hover{background-color:#9627ba!important;border-color:#9627ba!important;color:#fff!important}.ui.purple.corner.label,.ui.purple.corner.label:hover{background-color:transparent!important}.ui.purple.ribbon.label{border-color:#82299f!important}.ui.basic.purple.label{background-color:#fff!important;color:#a333c8!important;border-color:#a333c8!important}.ui.basic.purple.labels a.label:hover,a.ui.basic.purple.label:hover{background-color:#fff!important;color:#9627ba!important;border-color:#9627ba!important}.ui.pink.label,.ui.pink.labels .label{background-color:#e03997!important;border-color:#e03997!important;color:#fff!important}.ui.pink.labels .label:hover,a.ui.pink.label:hover{background-color:#e61a8d!important;border-color:#e61a8d!important;color:#fff!important}.ui.pink.corner.label,.ui.pink.corner.label:hover{background-color:transparent!important}.ui.pink.ribbon.label{border-color:#c71f7e!important}.ui.basic.pink.label{background-color:#fff!important;color:#e03997!important;border-color:#e03997!important}.ui.basic.pink.labels a.label:hover,a.ui.basic.pink.label:hover{background-color:#fff!important;color:#e61a8d!important;border-color:#e61a8d!important}.ui.brown.label,.ui.brown.labels .label{background-color:#a5673f!important;border-color:#a5673f!important;color:#fff!important}.ui.brown.labels .label:hover,a.ui.brown.label:hover{background-color:#975b33!important;border-color:#975b33!important;color:#fff!important}.ui.brown.corner.label,.ui.brown.corner.label:hover{background-color:transparent!important}.ui.brown.ribbon.label{border-color:#805031!important}.ui.basic.brown.label{background-color:#fff!important;color:#a5673f!important;border-color:#a5673f!important}.ui.basic.brown.labels a.label:hover,a.ui.basic.brown.label:hover{background-color:#fff!important;color:#975b33!important;border-color:#975b33!important}.ui.grey.label,.ui.grey.labels .label{background-color:#767676!important;border-color:#767676!important;color:#fff!important}.ui.grey.labels .label:hover,a.ui.grey.label:hover{background-color:#838383!important;border-color:#838383!important;color:#fff!important}.ui.grey.corner.label,.ui.grey.corner.label:hover{background-color:transparent!important}.ui.grey.ribbon.label{border-color:#805031!important}.ui.basic.grey.label{background-color:#fff!important;color:#767676!important;border-color:#767676!important}.ui.basic.grey.labels a.label:hover,a.ui.basic.grey.label:hover{background-color:#fff!important;color:#838383!important;border-color:#838383!important}.ui.black.label,.ui.black.labels .label{background-color:#1b1c1d!important;border-color:#1b1c1d!important;color:#fff!important}.ui.black.labels .label:hover,a.ui.black.label:hover{background-color:#27292a!important;border-color:#27292a!important;color:#fff!important}.ui.black.corner.label,.ui.black.corner.label:hover{background-color:transparent!important}.ui.black.ribbon.label{border-color:#805031!important}.ui.basic.black.label{background-color:#fff!important;color:#1b1c1d!important;border-color:#1b1c1d!important}.ui.basic.black.labels a.label:hover,a.ui.basic.black.label:hover{background-color:#fff!important;color:#27292a!important;border-color:#27292a!important}.ui.basic.label{background:none #fff;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);box-shadow:none}a.ui.basic.label:hover{text-decoration:none;background:none #fff;color:#1e70bf;box-shadow:1px solid rgba(34,36,38,.15);box-shadow:none}.ui.basic.pointing.label:before{border-color:inherit}.ui.fluid.labels>.label,.ui.label.fluid{width:100%;box-sizing:border-box}.ui.inverted.label,.ui.inverted.labels .label{color:hsla(0,0%,100%,.9)!important}.ui.horizontal.label,.ui.horizontal.labels .label{margin:0 .5em 0 0;padding:.4em .833em;min-width:3em;text-align:center}.ui.circular.label,.ui.circular.labels .label{min-width:2em;min-height:2em;padding:.5em!important;line-height:1em;text-align:center;border-radius:500rem}.ui.empty.circular.label,.ui.empty.circular.labels .label{min-width:0;min-height:0;overflow:hidden;width:.5em;height:.5em;vertical-align:baseline}.ui.pointing.label{position:relative}.ui.attached.pointing.label{position:absolute}.ui.pointing.label:before{background-color:inherit;background-image:inherit;border-width:none;border-style:solid;border-color:inherit;position:absolute;content:"";-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);background-image:none;z-index:2;width:.6666em;height:.6666em;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.pointing.label,.ui[class*="pointing above"].label{margin-top:1em}.ui.pointing.label:before,.ui[class*="pointing above"].label:before{border-width:1px 0 0 1px;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);-ms-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);top:0;left:50%}.ui[class*="bottom pointing"].label,.ui[class*="pointing below"].label{margin-top:0;margin-bottom:1em}.ui[class*="bottom pointing"].label:before,.ui[class*="pointing below"].label:before{border-width:0 1px 1px 0;top:auto;right:auto;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);-ms-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);top:100%;left:50%}.ui[class*="left pointing"].label{margin-top:0;margin-left:.6666em}.ui[class*="left pointing"].label:before{border-width:0 0 1px 1px;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);-ms-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);bottom:auto;right:auto;top:50%;left:0}.ui[class*="right pointing"].label{margin-top:0;margin-right:.6666em}.ui[class*="right pointing"].label:before{border-width:1px 1px 0 0;-webkit-transform:translateX(50%) translateY(-50%) rotate(45deg);-ms-transform:translateX(50%) translateY(-50%) rotate(45deg);transform:translateX(50%) translateY(-50%) rotate(45deg);top:50%;right:0;bottom:auto;left:auto}.ui.basic.pointing.label:before,.ui.basic[class*="pointing above"].label:before{margin-top:-1px}.ui.basic[class*="bottom pointing"].label:before,.ui.basic[class*="pointing below"].label:before{bottom:auto;top:100%;margin-top:1px}.ui.basic[class*="left pointing"].label:before{top:50%;left:-1px}.ui.basic[class*="right pointing"].label:before{top:50%;right:-1px}.ui.floating.label{position:absolute;z-index:100;top:-1em;left:100%;margin:0 0 0 -1.5em!important}.ui.mini.label,.ui.mini.labels .label{font-size:.64285714rem}.ui.tiny.label,.ui.tiny.labels .label{font-size:.71428571rem}.ui.small.label,.ui.small.labels .label{font-size:.78571429rem}.ui.label,.ui.labels .label{font-size:.85714286rem}.ui.large.label,.ui.large.labels .label{font-size:1rem}.ui.big.label,.ui.big.labels .label{font-size:1.28571429rem}.ui.huge.label,.ui.huge.labels .label{font-size:1.42857143rem}.ui.massive.label,.ui.massive.labels .label{font-size:1.71428571rem}/*! + * # Semantic UI 2.2.9 - Table + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.table{width:100%;background:#fff;margin:1em 0;border:1px solid rgba(34,36,38,.15);box-shadow:none;border-radius:.28571429rem;text-align:left;color:rgba(0,0,0,.87);border-collapse:separate;border-spacing:0}.ui.table:first-child{margin-top:0}.ui.table:last-child{margin-bottom:0}.ui.table td,.ui.table th{-webkit-transition:background .1s ease,color .1s ease;transition:background .1s ease,color .1s ease}.ui.table thead{box-shadow:none}.ui.table thead th{cursor:auto;background:#f9fafb;text-align:inherit;color:rgba(0,0,0,.87);padding:.92857143em .78571429em;vertical-align:inherit;font-style:none;font-weight:700;text-transform:none;border-bottom:1px solid rgba(34,36,38,.1);border-left:none}.ui.table thead tr>th:first-child{border-left:none}.ui.table thead tr:first-child>th:first-child{border-radius:.28571429rem 0 0 0}.ui.table thead tr:first-child>th:last-child{border-radius:0 .28571429rem 0 0}.ui.table thead tr:first-child>th:only-child{border-radius:.28571429rem .28571429rem 0 0}.ui.table tfoot{box-shadow:none}.ui.table tfoot th{cursor:auto;border-top:1px solid rgba(34,36,38,.15);background:#f9fafb;text-align:inherit;color:rgba(0,0,0,.87);padding:.78571429em;vertical-align:middle;font-style:normal;font-weight:400;text-transform:none}.ui.table tfoot tr>th:first-child{border-left:none}.ui.table tfoot tr:first-child>th:first-child{border-radius:0 0 0 .28571429rem}.ui.table tfoot tr:first-child>th:last-child{border-radius:0 0 .28571429rem 0}.ui.table tfoot tr:first-child>th:only-child{border-radius:0 0 .28571429rem .28571429rem}.ui.table tr td{border-top:1px solid rgba(34,36,38,.1)}.ui.table tr:first-child td{border-top:none}.ui.table td{padding:.78571429em;text-align:inherit}.ui.table>.icon{vertical-align:baseline}.ui.table>.icon:only-child{margin:0}.ui.table.segment{padding:0}.ui.table.segment:after{display:none}.ui.table.segment.stacked:after{display:block}@media only screen and (max-width:767px){.ui.table:not(.unstackable){width:100%}.ui.table:not(.unstackable) tbody,.ui.table:not(.unstackable) tr,.ui.table:not(.unstackable) tr>td,.ui.table:not(.unstackable) tr>th{width:auto!important;display:block!important}.ui.table:not(.unstackable){padding:0}.ui.table:not(.unstackable) tfoot,.ui.table:not(.unstackable) thead{display:block}.ui.table:not(.unstackable) tr{padding-top:1em;padding-bottom:1em;box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.1)!important}.ui.table:not(.unstackable) tr>td,.ui.table:not(.unstackable) tr>th{background:none;border:none!important;padding:.25em .75em!important;box-shadow:none!important}.ui.table:not(.unstackable) td:first-child,.ui.table:not(.unstackable) th:first-child{font-weight:700}.ui.definition.table:not(.unstackable) thead th:first-child{box-shadow:none!important}}.ui.table td .image,.ui.table td .image img,.ui.table th .image,.ui.table th .image img{max-width:none}.ui.structured.table{border-collapse:collapse}.ui.structured.table thead th{border-left:none;border-right:none}.ui.structured.sortable.table thead th{border-left:1px solid rgba(34,36,38,.15);border-right:1px solid rgba(34,36,38,.15)}.ui.structured.basic.table th{border-left:none;border-right:none}.ui.structured.celled.table tr td,.ui.structured.celled.table tr th{border-left:1px solid rgba(34,36,38,.1);border-right:1px solid rgba(34,36,38,.1)}.ui.definition.table thead:not(.full-width) th:first-child{pointer-events:none;background:transparent;font-weight:400;color:rgba(0,0,0,.4);box-shadow:-1px -1px 0 1px #fff}.ui.definition.table tfoot:not(.full-width) th:first-child{pointer-events:none;background:transparent;font-weight:rgba(0,0,0,.4);color:normal;box-shadow:1px 1px 0 1px #fff}.ui.celled.definition.table thead:not(.full-width) th:first-child{box-shadow:0 -1px 0 1px #fff}.ui.celled.definition.table tfoot:not(.full-width) th:first-child{box-shadow:0 1px 0 1px #fff}.ui.definition.table tr td.definition,.ui.definition.table tr td:first-child:not(.ignored){background:rgba(0,0,0,.03);font-weight:700;color:rgba(0,0,0,.95);text-transform:"";box-shadow:"";text-align:"";font-size:1em;padding-left:"";padding-right:""}.ui.definition.table td:nth-child(2),.ui.definition.table tfoot:not(.full-width) th:nth-child(2),.ui.definition.table thead:not(.full-width) th:nth-child(2){border-left:1px solid rgba(34,36,38,.15)}.ui.table td.positive,.ui.table tr.positive{box-shadow:inset 0 0 0 #a3c293;background:#fcfff5!important;color:#2c662d!important}.ui.table td.negative,.ui.table tr.negative{box-shadow:inset 0 0 0 #e0b4b4;background:#fff6f6!important;color:#9f3a38!important}.ui.table td.error,.ui.table tr.error{box-shadow:inset 0 0 0 #e0b4b4;background:#fff6f6!important;color:#9f3a38!important}.ui.table td.warning,.ui.table tr.warning{box-shadow:inset 0 0 0 #c9ba9b;background:#fffaf3!important;color:#573a08!important}.ui.table td.active,.ui.table tr.active{box-shadow:inset 0 0 0 rgba(0,0,0,.87);background:#e0e0e0!important;color:rgba(0,0,0,.87)!important}.ui.table tr.disabled:hover,.ui.table tr.disabled td,.ui.table tr:hover td.disabled,.ui.table tr td.disabled{pointer-events:none;color:rgba(40,40,40,.3)}@media only screen and (max-width:991px){.ui[class*="tablet stackable"].table,.ui[class*="tablet stackable"].table tbody,.ui[class*="tablet stackable"].table tr,.ui[class*="tablet stackable"].table tr>td,.ui[class*="tablet stackable"].table tr>th{width:100%!important;display:block!important}.ui[class*="tablet stackable"].table{padding:0}.ui[class*="tablet stackable"].table tfoot,.ui[class*="tablet stackable"].table thead{display:block}.ui[class*="tablet stackable"].table tr{padding-top:1em;padding-bottom:1em;box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.1)!important}.ui[class*="tablet stackable"].table tr>td,.ui[class*="tablet stackable"].table tr>th{background:none;border:none!important;padding:.25em .75em;box-shadow:none!important}.ui.definition[class*="tablet stackable"].table thead th:first-child{box-shadow:none!important}}.ui.table[class*="left aligned"],.ui.table [class*="left aligned"]{text-align:left}.ui.table[class*="center aligned"],.ui.table [class*="center aligned"]{text-align:center}.ui.table[class*="right aligned"],.ui.table [class*="right aligned"]{text-align:right}.ui.table[class*="top aligned"],.ui.table [class*="top aligned"]{vertical-align:top}.ui.table[class*="middle aligned"],.ui.table [class*="middle aligned"]{vertical-align:middle}.ui.table[class*="bottom aligned"],.ui.table [class*="bottom aligned"]{vertical-align:bottom}.ui.table td.collapsing,.ui.table th.collapsing{width:1px;white-space:nowrap}.ui.fixed.table{table-layout:fixed}.ui.fixed.table td,.ui.fixed.table th{overflow:hidden;text-overflow:ellipsis}.ui.selectable.table tbody tr:hover,.ui.table tbody tr td.selectable:hover{background:rgba(0,0,0,.05)!important;color:rgba(0,0,0,.95)!important}.ui.inverted.table tbody tr td.selectable:hover,.ui.selectable.inverted.table tbody tr:hover{background:hsla(0,0%,100%,.08)!important;color:#fff!important}.ui.table tbody tr td.selectable{padding:0}.ui.table tbody tr td.selectable>a:not(.ui){display:block;color:inherit;padding:.78571429em}.ui.selectable.table tr.error:hover,.ui.selectable.table tr:hover td.error,.ui.table tr td.selectable.error:hover{background:#ffe7e7!important;color:#943634!important}.ui.selectable.table tr.warning:hover,.ui.selectable.table tr:hover td.warning,.ui.table tr td.selectable.warning:hover{background:#fff4e4!important;color:#493107!important}.ui.selectable.table tr.active:hover,.ui.selectable.table tr:hover td.active,.ui.table tr td.selectable.active:hover{background:#e0e0e0!important;color:rgba(0,0,0,.87)!important}.ui.selectable.table tr.positive:hover,.ui.selectable.table tr:hover td.positive,.ui.table tr td.selectable.positive:hover{background:#f7ffe6!important;color:#275b28!important}.ui.selectable.table tr.negative:hover,.ui.selectable.table tr:hover td.negative,.ui.table tr td.selectable.negative:hover{background:#ffe7e7!important;color:#943634!important}.ui.attached.table{top:0;bottom:0;border-radius:0;margin:0 -1px;width:calc(100% + 2px);max-width:calc(100% + 2px);box-shadow:none;border:1px solid #d4d4d5}.ui.attached+.ui.attached.table:not(.top){border-top:none}.ui[class*="top attached"].table{bottom:0;margin-bottom:0;top:0;margin-top:1em;border-radius:.28571429rem .28571429rem 0 0}.ui.table[class*="top attached"]:first-child{margin-top:0}.ui[class*="bottom attached"].table{bottom:0;margin-top:0;top:0;margin-bottom:1em;box-shadow:none,none;border-radius:0 0 .28571429rem .28571429rem}.ui[class*="bottom attached"].table:last-child{margin-bottom:0}.ui.striped.table>tr:nth-child(2n),.ui.striped.table tbody tr:nth-child(2n){background-color:rgba(0,0,50,.02)}.ui.inverted.striped.table>tr:nth-child(2n),.ui.inverted.striped.table tbody tr:nth-child(2n){background-color:hsla(0,0%,100%,.05)}.ui.striped.selectable.selectable.selectable.table tbody tr.active:hover{background:#efefef!important;color:rgba(0,0,0,.95)!important}.ui.table[class*="single line"],.ui.table [class*="single line"]{white-space:nowrap}.ui.red.table{border-top:.2em solid #db2828}.ui.inverted.red.table{background-color:#db2828!important;color:#fff!important}.ui.orange.table{border-top:.2em solid #f2711c}.ui.inverted.orange.table{background-color:#f2711c!important;color:#fff!important}.ui.yellow.table{border-top:.2em solid #fbbd08}.ui.inverted.yellow.table{background-color:#fbbd08!important;color:#fff!important}.ui.olive.table{border-top:.2em solid #b5cc18}.ui.inverted.olive.table{background-color:#b5cc18!important;color:#fff!important}.ui.green.table{border-top:.2em solid #21ba45}.ui.inverted.green.table{background-color:#21ba45!important;color:#fff!important}.ui.teal.table{border-top:.2em solid #00b5ad}.ui.inverted.teal.table{background-color:#00b5ad!important;color:#fff!important}.ui.blue.table{border-top:.2em solid #2185d0}.ui.inverted.blue.table{background-color:#2185d0!important;color:#fff!important}.ui.violet.table{border-top:.2em solid #6435c9}.ui.inverted.violet.table{background-color:#6435c9!important;color:#fff!important}.ui.purple.table{border-top:.2em solid #a333c8}.ui.inverted.purple.table{background-color:#a333c8!important;color:#fff!important}.ui.pink.table{border-top:.2em solid #e03997}.ui.inverted.pink.table{background-color:#e03997!important;color:#fff!important}.ui.brown.table{border-top:.2em solid #a5673f}.ui.inverted.brown.table{background-color:#a5673f!important;color:#fff!important}.ui.grey.table{border-top:.2em solid #767676}.ui.inverted.grey.table{background-color:#767676!important;color:#fff!important}.ui.black.table{border-top:.2em solid #1b1c1d}.ui.inverted.black.table{background-color:#1b1c1d!important;color:#fff!important}.ui.one.column.table td{width:100%}.ui.two.column.table td{width:50%}.ui.three.column.table td{width:33.33333333%}.ui.four.column.table td{width:25%}.ui.five.column.table td{width:20%}.ui.six.column.table td{width:16.66666667%}.ui.seven.column.table td{width:14.28571429%}.ui.eight.column.table td{width:12.5%}.ui.nine.column.table td{width:11.11111111%}.ui.ten.column.table td{width:10%}.ui.eleven.column.table td{width:9.09090909%}.ui.twelve.column.table td{width:8.33333333%}.ui.thirteen.column.table td{width:7.69230769%}.ui.fourteen.column.table td{width:7.14285714%}.ui.fifteen.column.table td{width:6.66666667%}.ui.sixteen.column.table td,.ui.table td.one.wide,.ui.table th.one.wide{width:6.25%}.ui.table td.two.wide,.ui.table th.two.wide{width:12.5%}.ui.table td.three.wide,.ui.table th.three.wide{width:18.75%}.ui.table td.four.wide,.ui.table th.four.wide{width:25%}.ui.table td.five.wide,.ui.table th.five.wide{width:31.25%}.ui.table td.six.wide,.ui.table th.six.wide{width:37.5%}.ui.table td.seven.wide,.ui.table th.seven.wide{width:43.75%}.ui.table td.eight.wide,.ui.table th.eight.wide{width:50%}.ui.table td.nine.wide,.ui.table th.nine.wide{width:56.25%}.ui.table td.ten.wide,.ui.table th.ten.wide{width:62.5%}.ui.table td.eleven.wide,.ui.table th.eleven.wide{width:68.75%}.ui.table td.twelve.wide,.ui.table th.twelve.wide{width:75%}.ui.table td.thirteen.wide,.ui.table th.thirteen.wide{width:81.25%}.ui.table td.fourteen.wide,.ui.table th.fourteen.wide{width:87.5%}.ui.table td.fifteen.wide,.ui.table th.fifteen.wide{width:93.75%}.ui.table td.sixteen.wide,.ui.table th.sixteen.wide{width:100%}.ui.sortable.table thead th{cursor:pointer;white-space:nowrap;border-left:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87)}.ui.sortable.table thead th:first-child{border-left:none}.ui.sortable.table thead th.sorted,.ui.sortable.table thead th.sorted:hover{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui.sortable.table thead th:after{display:none;font-style:normal;font-weight:400;text-decoration:inherit;content:"";height:1em;width:auto;opacity:.8;margin:0 0 0 .5em;font-family:Icons}.ui.sortable.table thead th.ascending:after{content:"\F0D8"}.ui.sortable.table thead th.descending:after{content:"\F0D7"}.ui.sortable.table th.disabled:hover{cursor:auto;color:rgba(40,40,40,.3)}.ui.sortable.table thead th:hover{background:rgba(0,0,0,.05);color:rgba(0,0,0,.8)}.ui.sortable.table thead th.sorted{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.sortable.table thead th.sorted:after{display:inline-block}.ui.sortable.table thead th.sorted:hover{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.inverted.sortable.table thead th.sorted{background:hsla(0,0%,100%,.15) -webkit-linear-gradient(transparent,rgba(0,0,0,.05));background:hsla(0,0%,100%,.15) linear-gradient(transparent,rgba(0,0,0,.05));color:#fff}.ui.inverted.sortable.table thead th:hover{background:hsla(0,0%,100%,.08) -webkit-linear-gradient(transparent,rgba(0,0,0,.05));background:hsla(0,0%,100%,.08) linear-gradient(transparent,rgba(0,0,0,.05));color:#fff}.ui.inverted.sortable.table thead th{border-left-color:transparent;border-right-color:transparent}.ui.inverted.table{background:#333;color:hsla(0,0%,100%,.9);border:none}.ui.inverted.table th{background-color:rgba(0,0,0,.15);color:hsla(0,0%,100%,.9)}.ui.inverted.table th,.ui.inverted.table tr td{border-color:hsla(0,0%,100%,.1)!important}.ui.inverted.table tr.disabled:hover td,.ui.inverted.table tr.disabled td,.ui.inverted.table tr:hover td.disabled,.ui.inverted.table tr td.disabled{pointer-events:none;color:hsla(0,0%,88%,.3)}.ui.inverted.definition.table tfoot:not(.full-width) th:first-child,.ui.inverted.definition.table thead:not(.full-width) th:first-child{background:#fff}.ui.inverted.definition.table tr td:first-child{background:hsla(0,0%,100%,.02);color:#fff}.ui.collapsing.table{width:auto}.ui.basic.table{background:transparent;border:1px solid rgba(34,36,38,.15);box-shadow:none}.ui.basic.table tfoot,.ui.basic.table thead{box-shadow:none}.ui.basic.table th{background:transparent;border-left:none}.ui.basic.table tbody tr{border-bottom:1px solid rgba(0,0,0,.1)}.ui.basic.table td{background:transparent}.ui.basic.striped.table tbody tr:nth-child(2n){background-color:rgba(0,0,0,.05)!important}.ui[class*="very basic"].table{border:none}.ui[class*="very basic"].table:not(.sortable):not(.striped) td,.ui[class*="very basic"].table:not(.sortable):not(.striped) th{padding:""}.ui[class*="very basic"].table:not(.sortable):not(.striped) td:first-child,.ui[class*="very basic"].table:not(.sortable):not(.striped) th:first-child{padding-left:0}.ui[class*="very basic"].table:not(.sortable):not(.striped) td:last-child,.ui[class*="very basic"].table:not(.sortable):not(.striped) th:last-child{padding-right:0}.ui[class*="very basic"].table:not(.sortable):not(.striped) thead tr:first-child th{padding-top:0}.ui.celled.table tr td,.ui.celled.table tr th{border-left:1px solid rgba(34,36,38,.1)}.ui.celled.table tr td:first-child,.ui.celled.table tr th:first-child{border-left:none}.ui.padded.table th{padding-left:1em;padding-right:1em}.ui.padded.table td,.ui.padded.table th{padding:1em}.ui[class*="very padded"].table th{padding-left:1.5em;padding-right:1.5em}.ui[class*="very padded"].table td{padding:1.5em}.ui.compact.table th{padding-left:.7em;padding-right:.7em}.ui.compact.table td{padding:.5em .7em}.ui[class*="very compact"].table th{padding-left:.6em;padding-right:.6em}.ui[class*="very compact"].table td{padding:.4em .6em}.ui.small.table{font-size:.9em}.ui.table{font-size:1em}.ui.large.table{font-size:1.1em}/*! + * # Semantic UI 2.2.9 - Modal + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.modal{display:none;position:fixed;z-index:1001;top:50%;left:50%;text-align:left;background:#fff;border:none;box-shadow:1px 3px 3px 0 rgba(0,0,0,.2),1px 3px 15px 2px rgba(0,0,0,.2);-webkit-transform-origin:50% 25%;-ms-transform-origin:50% 25%;transform-origin:50% 25%;border-radius:.28571429rem;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;will-change:top,left,margin,transform,opacity}.ui.modal>.icon:first-child+*,.ui.modal>:first-child:not(.icon){border-top-left-radius:.28571429rem;border-top-right-radius:.28571429rem}.ui.modal>:last-child{border-bottom-left-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.modal>.close{cursor:pointer;position:absolute;top:-2.5rem;right:-2.5rem;z-index:1;opacity:.8;font-size:1.25em;color:#fff;width:2.25rem;height:2.25rem;padding:.625rem 0 0}.ui.modal>.close:hover{opacity:1}.ui.modal>.header{display:block;font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif;background:#fff;margin:0;padding:1.25rem 1.5rem;box-shadow:none;color:rgba(0,0,0,.85);border-bottom:1px solid rgba(34,36,38,.15)}.ui.modal>.header:not(.ui){font-size:1.42857143rem;line-height:1.28571429em;font-weight:700}.ui.modal>.content{display:block;width:100%;font-size:1em;line-height:1.4;padding:1.5rem;background:#fff}.ui.modal>.image.content{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row}.ui.modal>.content>.image{display:block;-webkit-box-flex:0;-ms-flex:0 1 auto;-webkit-flex:0 1 auto;flex:0 1 auto;width:""}.ui.modal>.content>.image,.ui.modal>[class*="top aligned"]{-ms-flex-item-align:top;-ms-grid-row-align:top;-webkit-align-self:top;align-self:top}.ui.modal>[class*="middle aligned"]{-ms-flex-item-align:middle;-ms-grid-row-align:middle;-webkit-align-self:middle;align-self:middle}.ui.modal>[class*=stretched]{-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;-webkit-align-self:stretch;align-self:stretch}.ui.modal>.content>.description{display:block;-webkit-box-flex:1;-ms-flex:1 0 auto;-webkit-flex:1 0 auto;flex:1 0 auto;min-width:0;-ms-flex-item-align:top;-ms-grid-row-align:top;-webkit-align-self:top;align-self:top}.ui.modal>.content>.icon+.description,.ui.modal>.content>.image+.description{-webkit-box-flex:0;-ms-flex:0 1 auto;-webkit-flex:0 1 auto;flex:0 1 auto;min-width:"";width:auto;padding-left:2em}.ui.modal>.content>.image>i.icon{margin:0;opacity:1;width:auto;line-height:1;font-size:8rem}.ui.modal>.actions{background:#f9fafb;padding:1rem;border-top:1px solid rgba(34,36,38,.15);text-align:right}.ui.modal .actions>.button{margin-left:.75em}@media only screen and (max-width:767px){.ui.modal{width:95%;margin:0 0 0 -47.5%}}@media only screen and (min-width:768px){.ui.modal{width:88%;margin:0 0 0 -44%}}@media only screen and (min-width:992px){.ui.modal{width:850px;margin:0 0 0 -425px}}@media only screen and (min-width:1200px){.ui.modal{width:900px;margin:0 0 0 -450px}}@media only screen and (min-width:1920px){.ui.modal{width:950px;margin:0 0 0 -475px}}@media only screen and (max-width:991px){.ui.modal>.header{padding-right:2.25rem}.ui.modal>.close{top:1.0535rem;right:1rem;color:rgba(0,0,0,.87)}}@media only screen and (max-width:767px){.ui.modal>.header{padding:.75rem 1rem!important;padding-right:2.25rem!important}.ui.modal>.content{display:block;padding:1rem!important}.ui.modal>.close{top:.5rem!important;right:.5rem!important}.ui.modal .image.content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.ui.modal .content>.image{display:block;max-width:100%;margin:0 auto!important;text-align:center;padding:0 0 1rem!important}.ui.modal>.content>.image>i.icon{font-size:5rem;text-align:center}.ui.modal .content>.description{display:block;width:100%!important;margin:0!important;padding:1rem 0!important;box-shadow:none}.ui.modal>.actions{padding:1rem 1rem 0!important}.ui.modal .actions>.button,.ui.modal .actions>.buttons{margin-bottom:1rem}}.ui.inverted.dimmer>.ui.modal{box-shadow:1px 3px 10px 2px rgba(0,0,0,.2)}.ui.basic.modal{border:none;border-radius:0;box-shadow:none!important;color:#fff}.ui.basic.modal,.ui.basic.modal>.actions,.ui.basic.modal>.content,.ui.basic.modal>.header{background-color:transparent}.ui.basic.modal>.header{color:#fff}.ui.basic.modal>.close{top:1rem;right:1.5rem}.ui.inverted.dimmer>.basic.modal{color:rgba(0,0,0,.87)}.ui.inverted.dimmer>.ui.basic.modal>.header{color:rgba(0,0,0,.85)}@media only screen and (max-width:991px){.ui.basic.modal>.close{color:#fff}}.ui.active.modal{display:block}.scrolling.dimmable.dimmed{overflow:hidden}.scrolling.dimmable.dimmed>.dimmer{overflow:auto;-webkit-overflow-scrolling:touch}.scrolling.dimmable>.dimmer{position:fixed}.modals.dimmer .ui.scrolling.modal{position:static!important;margin:3.5rem auto!important}.scrolling.undetached.dimmable.dimmed{overflow:auto;-webkit-overflow-scrolling:touch}.scrolling.undetached.dimmable.dimmed>.dimmer{overflow:hidden}.scrolling.undetached.dimmable .ui.scrolling.modal{position:absolute;left:50%;margin-top:3.5rem!important}.undetached.dimmable.dimmed>.pusher{z-index:auto}@media only screen and (max-width:991px){.modals.dimmer .ui.scrolling.modal{margin-top:1rem!important;margin-bottom:1rem!important}}.ui.fullscreen.modal{width:95%!important;left:2.5%!important;margin:1em auto}.ui.fullscreen.scrolling.modal{left:0!important}.ui.fullscreen.modal>.header{padding-right:2.25rem}.ui.fullscreen.modal>.close{top:1.0535rem;right:1rem;color:rgba(0,0,0,.87)}.ui.modal{font-size:1rem}.ui.small.modal>.header:not(.ui){font-size:1.3em}@media only screen and (max-width:767px){.ui.small.modal{width:95%;margin:0 0 0 -47.5%}}@media only screen and (min-width:768px){.ui.small.modal{width:70.4%;margin:0 0 0 -35.2%}}@media only screen and (min-width:992px){.ui.small.modal{width:680px;margin:0 0 0 -340px}}@media only screen and (min-width:1200px){.ui.small.modal{width:720px;margin:0 0 0 -360px}}@media only screen and (min-width:1920px){.ui.small.modal{width:760px;margin:0 0 0 -380px}}.ui.large.modal>.header{font-size:1.6em}@media only screen and (max-width:767px){.ui.large.modal{width:95%;margin:0 0 0 -47.5%}}@media only screen and (min-width:768px){.ui.large.modal{width:88%;margin:0 0 0 -44%}}@media only screen and (min-width:992px){.ui.large.modal{width:1020px;margin:0 0 0 -510px}}@media only screen and (min-width:1200px){.ui.large.modal{width:1080px;margin:0 0 0 -540px}}@media only screen and (min-width:1920px){.ui.large.modal{width:1140px;margin:0 0 0 -570px}}/*! + * # Semantic UI 2.2.9 - Popup + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.popup{display:none;position:absolute;top:0;right:0;min-width:-webkit-min-content;min-width:-moz-min-content;min-width:min-content;z-index:1900;border:1px solid #d4d4d5;line-height:1.4285em;max-width:250px;background:#fff;padding:.833em 1em;font-weight:400;font-style:normal;color:rgba(0,0,0,.87);border-radius:.28571429rem;box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.popup>.header{padding:0;font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif;font-size:1.14285714em;line-height:1.2;font-weight:700}.ui.popup>.header+.content{padding-top:.5em}.ui.popup:before{position:absolute;content:"";width:.71428571em;height:.71428571em;background:#fff;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);z-index:2;box-shadow:1px 1px 0 0 #bababc}[data-tooltip]{position:relative}[data-tooltip]:before{content:"";width:.71428571em;height:.71428571em;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);z-index:2;box-shadow:1px 1px 0 0 #bababc}[data-tooltip]:after,[data-tooltip]:before{pointer-events:none;position:absolute;font-size:1rem;background:#fff}[data-tooltip]:after{content:attr(data-tooltip);text-transform:none;text-align:left;white-space:nowrap;border:1px solid #d4d4d5;line-height:1.4285em;max-width:none;padding:.833em 1em;font-weight:400;font-style:normal;color:rgba(0,0,0,.87);border-radius:.28571429rem;box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);z-index:1}[data-tooltip]:not([data-position]):before{top:auto;right:auto;bottom:100%;left:50%;background:#fff;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-tooltip]:not([data-position]):after{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);bottom:100%;margin-bottom:.5em}[data-tooltip]:after,[data-tooltip]:before{pointer-events:none;visibility:hidden}[data-tooltip]:before{opacity:0;-webkit-transform:rotate(45deg) scale(0)!important;-ms-transform:rotate(45deg) scale(0)!important;transform:rotate(45deg) scale(0)!important;-webkit-transform-origin:center top;-ms-transform-origin:center top;transform-origin:center top}[data-tooltip]:after,[data-tooltip]:before{-webkit-transition:all .1s ease;transition:all .1s ease}[data-tooltip]:after{opacity:1;-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}[data-tooltip]:hover:after,[data-tooltip]:hover:before{visibility:visible;pointer-events:auto}[data-tooltip]:hover:before{-webkit-transform:rotate(45deg) scale(1)!important;-ms-transform:rotate(45deg) scale(1)!important;transform:rotate(45deg) scale(1)!important;opacity:1}[data-tooltip]:after,[data-tooltip][data-position="bottom center"]:after,[data-tooltip][data-position="top center"]:after{-webkit-transform:translateX(-50%) scale(0)!important;-ms-transform:translateX(-50%) scale(0)!important;transform:translateX(-50%) scale(0)!important}[data-tooltip]:hover:after,[data-tooltip][data-position="bottom center"]:hover:after{-webkit-transform:translateX(-50%) scale(1)!important;-ms-transform:translateX(-50%) scale(1)!important;transform:translateX(-50%) scale(1)!important}[data-tooltip][data-position="left center"]:after,[data-tooltip][data-position="right center"]:after{-webkit-transform:translateY(-50%) scale(0)!important;-ms-transform:translateY(-50%) scale(0)!important;transform:translateY(-50%) scale(0)!important}[data-tooltip][data-position="left center"]:hover:after,[data-tooltip][data-position="right center"]:hover:after{-webkit-transform:translateY(-50%) scale(1)!important;-ms-transform:translateY(-50%) scale(1)!important;transform:translateY(-50%) scale(1)!important}[data-tooltip][data-position="bottom left"]:after,[data-tooltip][data-position="bottom right"]:after,[data-tooltip][data-position="top left"]:after,[data-tooltip][data-position="top right"]:after{-webkit-transform:scale(0)!important;-ms-transform:scale(0)!important;transform:scale(0)!important}[data-tooltip][data-position="bottom left"]:hover:after,[data-tooltip][data-position="bottom right"]:hover:after,[data-tooltip][data-position="top left"]:hover:after,[data-tooltip][data-position="top right"]:hover:after{-webkit-transform:scale(1)!important;-ms-transform:scale(1)!important;transform:scale(1)!important}[data-tooltip][data-inverted]:before{box-shadow:none!important;background:#1b1c1d}[data-tooltip][data-inverted]:after{background:#1b1c1d;color:#fff;border:none;box-shadow:none}[data-tooltip][data-inverted]:after .header{background-color:none;color:#fff}[data-position="top center"][data-tooltip]:after{top:auto;right:auto;left:50%;bottom:100%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);margin-bottom:.5em}[data-position="top center"][data-tooltip]:before{top:auto;right:auto;bottom:100%;left:50%;background:#fff;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-position="top left"][data-tooltip]:after{top:auto;right:auto;left:0;bottom:100%;margin-bottom:.5em}[data-position="top left"][data-tooltip]:before{top:auto;right:auto;bottom:100%;left:1em;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-position="top right"][data-tooltip]:after{top:auto;left:auto;right:0;bottom:100%;margin-bottom:.5em}[data-position="top right"][data-tooltip]:before{top:auto;left:auto;bottom:100%;right:1em;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-position="bottom center"][data-tooltip]:after{bottom:auto;right:auto;left:50%;top:100%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);margin-top:.5em}[data-position="bottom center"][data-tooltip]:before{bottom:auto;right:auto;top:100%;left:50%;margin-left:-.07142857rem;margin-top:.14285714rem}[data-position="bottom left"][data-tooltip]:after{left:0;top:100%;margin-top:.5em}[data-position="bottom left"][data-tooltip]:before{bottom:auto;right:auto;top:100%;left:1em;margin-left:-.07142857rem;margin-top:.14285714rem}[data-position="bottom right"][data-tooltip]:after{right:0;top:100%;margin-top:.5em}[data-position="bottom right"][data-tooltip]:before{bottom:auto;left:auto;top:100%;right:1em;margin-left:-.14285714rem;margin-top:.07142857rem}[data-position="left center"][data-tooltip]:after{right:100%;top:50%;margin-right:.5em;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}[data-position="left center"][data-tooltip]:before{right:100%;top:50%;margin-top:-.14285714rem;margin-right:-.07142857rem}[data-position="right center"][data-tooltip]:after{left:100%;top:50%;margin-left:.5em;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}[data-position="right center"][data-tooltip]:before{left:100%;top:50%;margin-top:-.07142857rem;margin-left:.14285714rem}[data-position~=bottom][data-tooltip]:before{background:#fff;box-shadow:-1px -1px 0 0 #bababc}[data-position="left center"][data-tooltip]:before{background:#fff;box-shadow:1px -1px 0 0 #bababc}[data-position="right center"][data-tooltip]:before{background:#fff;box-shadow:-1px 1px 0 0 #bababc}[data-position~=top][data-tooltip]:before{background:#fff}[data-inverted][data-position~=bottom][data-tooltip]:before{background:#1b1c1d;box-shadow:-1px -1px 0 0 #bababc}[data-inverted][data-position="left center"][data-tooltip]:before{background:#1b1c1d;box-shadow:1px -1px 0 0 #bababc}[data-inverted][data-position="right center"][data-tooltip]:before{background:#1b1c1d;box-shadow:-1px 1px 0 0 #bababc}[data-inverted][data-position~=top][data-tooltip]:before{background:#1b1c1d}[data-position~=bottom][data-tooltip]:before{-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}[data-position~=bottom][data-tooltip]:after{-webkit-transform-origin:center top;-ms-transform-origin:center top;transform-origin:center top}[data-position="left center"][data-tooltip]:before{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center}[data-position="left center"][data-tooltip]:after,[data-position="right center"][data-tooltip]:before{-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}[data-position="right center"][data-tooltip]:after{-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}.ui.popup{margin:0}.ui.top.popup{margin:0 0 .71428571em}.ui.top.left.popup{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom}.ui.top.center.popup{-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}.ui.top.right.popup{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom}.ui.left.center.popup{margin:0 .71428571em 0 0;-webkit-transform-origin:right 50%;-ms-transform-origin:right 50%;transform-origin:right 50%}.ui.right.center.popup{margin:0 0 0 .71428571em;-webkit-transform-origin:left 50%;-ms-transform-origin:left 50%;transform-origin:left 50%}.ui.bottom.popup{margin:.71428571em 0 0}.ui.bottom.left.popup{-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.ui.bottom.center.popup{-webkit-transform-origin:center top;-ms-transform-origin:center top;transform-origin:center top}.ui.bottom.right.popup{-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.ui.bottom.center.popup:before{margin-left:-.30714286em;top:-.30714286em;left:50%;right:auto;bottom:auto;box-shadow:-1px -1px 0 0 #bababc}.ui.bottom.left.popup{margin-left:0}.ui.bottom.left.popup:before{top:-.30714286em;left:1em;right:auto;bottom:auto;margin-left:0;box-shadow:-1px -1px 0 0 #bababc}.ui.bottom.right.popup{margin-right:0}.ui.bottom.right.popup:before{top:-.30714286em;right:1em;bottom:auto;left:auto;margin-left:0;box-shadow:-1px -1px 0 0 #bababc}.ui.top.center.popup:before{top:auto;right:auto;bottom:-.30714286em;left:50%;margin-left:-.30714286em}.ui.top.left.popup{margin-left:0}.ui.top.left.popup:before{bottom:-.30714286em;left:1em;top:auto;right:auto;margin-left:0}.ui.top.right.popup{margin-right:0}.ui.top.right.popup:before{bottom:-.30714286em;right:1em;top:auto;left:auto;margin-left:0}.ui.left.center.popup:before{top:50%;right:-.30714286em;bottom:auto;left:auto;margin-top:-.30714286em;box-shadow:1px -1px 0 0 #bababc}.ui.right.center.popup:before{top:50%;left:-.30714286em;bottom:auto;right:auto;margin-top:-.30714286em;box-shadow:-1px 1px 0 0 #bababc}.ui.bottom.popup:before,.ui.left.center.popup:before,.ui.right.center.popup:before,.ui.top.popup:before{background:#fff}.ui.inverted.bottom.popup:before,.ui.inverted.left.center.popup:before,.ui.inverted.right.center.popup:before,.ui.inverted.top.popup:before{background:#1b1c1d}.ui.popup>.ui.grid:not(.padded){width:calc(100% + 1.75rem);margin:-.7rem -.875rem}.ui.loading.popup{display:block;visibility:hidden;z-index:-1}.ui.animating.popup,.ui.visible.popup{display:block}.ui.visible.popup{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.ui.basic.popup:before{display:none}.ui.wide.popup{max-width:350px}.ui[class*="very wide"].popup{max-width:550px}@media only screen and (max-width:767px){.ui.wide.popup,.ui[class*="very wide"].popup{max-width:250px}}.ui.fluid.popup{width:100%;max-width:none}.ui.inverted.popup{background:#1b1c1d;color:#fff;border:none;box-shadow:none}.ui.inverted.popup .header{background-color:none;color:#fff}.ui.inverted.popup:before{background-color:#1b1c1d;box-shadow:none!important}.ui.flowing.popup{max-width:none}.ui.mini.popup{font-size:.78571429rem}.ui.tiny.popup{font-size:.85714286rem}.ui.small.popup{font-size:.92857143rem}.ui.popup{font-size:1rem}.ui.large.popup{font-size:1.14285714rem}.ui.huge.popup{font-size:1.42857143rem}/*! + * # Semantic UI 2.2.9 - Dimmer + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.dimmable:not(.body){position:relative}.ui.dimmer{display:none;position:absolute;top:0!important;left:0!important;width:100%;height:100%;text-align:center;vertical-align:middle;background-color:rgba(0,0,0,.85);opacity:0;line-height:1;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-transition:background-color .5s linear;transition:background-color .5s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;will-change:opacity;z-index:1000}.ui.dimmer>.content{width:100%;height:100%;display:table;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.dimmer>.content>*{display:table-cell;vertical-align:middle;color:#fff}.ui.segment>.ui.dimmer{border-radius:inherit!important}.animating.dimmable:not(body),.dimmed.dimmable:not(body){overflow:hidden}.dimmed.dimmable>.ui.animating.dimmer,.dimmed.dimmable>.ui.visible.dimmer,.ui.active.dimmer{display:block;opacity:1}.ui.disabled.dimmer{width:0!important;height:0!important}.ui.page.dimmer{position:fixed;-webkit-transform-style:"";transform-style:"";-webkit-perspective:2000px;perspective:2000px;-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center}body.animating.in.dimmable,body.dimmed.dimmable{overflow:hidden}body.dimmable>.dimmer{position:fixed}.blurring.dimmable>:not(.dimmer){-webkit-filter:blur(0) grayscale(0);filter:blur(0) grayscale(0);-webkit-transition:-webkit-filter .8s ease;transition:-webkit-filter .8s ease;transition:filter .8s ease;transition:filter .8s ease,-webkit-filter .8s ease}.blurring.dimmed.dimmable>:not(.dimmer){-webkit-filter:blur(5px) grayscale(.7);filter:blur(5px) grayscale(.7)}.blurring.dimmable>.dimmer{background-color:rgba(0,0,0,.6)}.blurring.dimmable>.inverted.dimmer{background-color:hsla(0,0%,100%,.6)}.ui.dimmer>.top.aligned.content>*{vertical-align:top}.ui.dimmer>.bottom.aligned.content>*{vertical-align:bottom}.ui.inverted.dimmer{background-color:hsla(0,0%,100%,.85)}.ui.inverted.dimmer>.content>*{color:#fff}.ui.simple.dimmer{display:block;overflow:hidden;opacity:1;width:0;height:0%;z-index:-100;background-color:transparent}.dimmed.dimmable>.ui.simple.dimmer{overflow:visible;opacity:1;width:100%;height:100%;background-color:rgba(0,0,0,.85);z-index:1}.ui.simple.inverted.dimmer{background-color:hsla(0,0%,100%,0)}.dimmed.dimmable>.ui.simple.inverted.dimmer{background-color:hsla(0,0%,100%,.85)}/*! + * # Semantic UI 2.2.9 - Search + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.search{position:relative}.ui.search>.prompt{margin:0;outline:none;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(255,255,255,0);text-shadow:none;font-style:normal;font-weight:400;line-height:1.21428571em;padding:.67857143em 1em;font-size:1em;background:#fff;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);box-shadow:inset 0 0 0 0 transparent;-webkit-transition:background-color .1s ease,color .1s ease,box-shadow .1s ease,border-color .1s ease;transition:background-color .1s ease,color .1s ease,box-shadow .1s ease,border-color .1s ease}.ui.search .prompt{border-radius:500rem}.ui.search .prompt~.search.icon{cursor:pointer}.ui.search>.results{display:none;position:absolute;top:100%;left:0;-webkit-transform-origin:center top;-ms-transform-origin:center top;transform-origin:center top;white-space:normal;background:#fff;margin-top:.5em;width:18em;border-radius:.28571429rem;box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);border:1px solid #d4d4d5;z-index:998}.ui.search>.results>:first-child{border-radius:.28571429rem .28571429rem 0 0}.ui.search>.results>:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.search>.results .result{cursor:pointer;display:block;overflow:hidden;font-size:1em;padding:.85714286em 1.14285714em;color:rgba(0,0,0,.87);line-height:1.33;border-bottom:1px solid rgba(34,36,38,.1)}.ui.search>.results .result:last-child{border-bottom:none!important}.ui.search>.results .result .image{float:right;overflow:hidden;background:none;width:5em;height:3em;border-radius:.25em}.ui.search>.results .result .image img{display:block;width:auto;height:100%}.ui.search>.results .result .image+.content{margin:0 6em 0 0}.ui.search>.results .result .title{margin:-.14285714em 0 0;font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif;font-weight:700;font-size:1em;color:rgba(0,0,0,.85)}.ui.search>.results .result .description{margin-top:0;font-size:.92857143em;color:rgba(0,0,0,.4)}.ui.search>.results .result .price{float:right;color:#21ba45}.ui.search>.results>.message{padding:1em}.ui.search>.results>.message .header{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif;font-size:1rem;font-weight:700;color:rgba(0,0,0,.87)}.ui.search>.results>.message .description{margin-top:.25rem;font-size:1em;color:rgba(0,0,0,.87)}.ui.search>.results>.action{display:block;border-top:none;background:#f3f4f5;padding:.92857143em 1em;color:rgba(0,0,0,.87);font-weight:700;text-align:center}.ui.search>.prompt:focus{border-color:rgba(34,36,38,.35);background:#fff;color:rgba(0,0,0,.95)}.ui.loading.search .input>i.icon:before{border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loading.search .input>i.icon:after,.ui.loading.search .input>i.icon:before{position:absolute;content:"";top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em}.ui.loading.search .input>i.icon:after{-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}.ui.category.search>.results .category .result:hover,.ui.search>.results .result:hover{background:#f9fafb}.ui.search .action:hover{background:#e0e0e0}.ui.category.search>.results .category.active{background:#f3f4f5}.ui.category.search>.results .category.active>.name{color:rgba(0,0,0,.87)}.ui.category.search>.results .category .result.active,.ui.search>.results .result.active{position:relative;border-left-color:rgba(34,36,38,.1);background:#f3f4f5;box-shadow:none}.ui.search>.results .result.active .description,.ui.search>.results .result.active .title{color:rgba(0,0,0,.85)}.ui.search.selection .prompt{border-radius:.28571429rem}.ui.search.selection>.icon.input>.remove.icon{pointer-events:none;position:absolute;left:auto;opacity:0;color:"";top:0;right:0;-webkit-transition:color .1s ease,opacity .1s ease;transition:color .1s ease,opacity .1s ease}.ui.search.selection>.icon.input>.active.remove.icon{cursor:pointer;opacity:.8;pointer-events:auto}.ui.search.selection>.icon.input:not([class*="left icon"])>.icon~.remove.icon{right:1.85714em}.ui.search.selection>.icon.input>.remove.icon:hover{opacity:1;color:#db2828}.ui.category.search .results{width:28em}.ui.category.search>.results .category{background:#f3f4f5;box-shadow:none;border-bottom:1px solid rgba(34,36,38,.1);-webkit-transition:background .1s ease,border-color .1s ease;transition:background .1s ease,border-color .1s ease}.ui.category.search>.results .category:last-child{border-bottom:none}.ui.category.search>.results .category:first-child .name+.result{border-radius:0 .28571429rem 0 0}.ui.category.search>.results .category:last-child .result:last-child{border-radius:0 0 .28571429rem 0}.ui.category.search>.results .category .result{background:#fff;margin-left:100px;border-left:1px solid rgba(34,36,38,.15);border-bottom:1px solid rgba(34,36,38,.1);-webkit-transition:background .1s ease,border-color .1s ease;transition:background .1s ease,border-color .1s ease;padding:.85714286em 1.14285714em}.ui.category.search>.results .category:last-child .result:last-child{border-bottom:none}.ui.category.search>.results .category>.name{width:100px;background:transparent;font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif;font-size:1em;float:1em;float:left;padding:.4em 1em;font-weight:700;color:rgba(0,0,0,.4)}.ui[class*="left aligned"].search>.results{right:auto;left:0}.ui[class*="right aligned"].search>.results{right:0;left:auto}.ui.fluid.search .results{width:100%}.ui.mini.search{font-size:.78571429em}.ui.small.search{font-size:.92857143em}.ui.search{font-size:1em}.ui.large.search{font-size:1.14285714em}.ui.big.search{font-size:1.28571429em}.ui.huge.search{font-size:1.42857143em}.ui.massive.search{font-size:1.71428571em}/*! + * # Semantic UI 2.2.9 - Header + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.header{border:none;margin:calc(2rem - .14285714em) 0 1rem;padding:0;font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif;font-weight:700;line-height:1.28571429em;text-transform:none;color:rgba(0,0,0,.87)}.ui.header:first-child{margin-top:-.14285714em}.ui.header:last-child{margin-bottom:0}.ui.header .sub.header{display:block;font-weight:400;padding:0;margin:0;line-height:1.2em;color:rgba(0,0,0,.6)}.ui.header>.icon{display:table-cell;opacity:1;font-size:1.5em;padding-top:.14285714em;vertical-align:middle}.ui.header .icon:only-child{display:inline-block;padding:0;margin-right:.75rem}.ui.header>.image:not(.icon),.ui.header>img{display:inline-block;margin-top:.14285714em;width:2.5em;height:auto;vertical-align:middle}.ui.header>.image:not(.icon):only-child,.ui.header>img:only-child{margin-right:.75rem}.ui.header .content{display:inline-block;vertical-align:top}.ui.header>.icon+.content,.ui.header>.image+.content,.ui.header>img+.content{padding-left:.75rem;vertical-align:middle}.ui.header>.icon+.content{display:table-cell}.ui.header .ui.label{font-size:"";margin-left:.5rem;vertical-align:middle}.ui.header+p{margin-top:0}h1.ui.header{font-size:2rem}h2.ui.header{font-size:1.71428571rem}h3.ui.header{font-size:1.28571429rem}h4.ui.header{font-size:1.07142857rem}h5.ui.header{font-size:1rem}h1.ui.header .sub.header,h2.ui.header .sub.header{font-size:1.14285714rem}h3.ui.header .sub.header,h4.ui.header .sub.header{font-size:1rem}h5.ui.header .sub.header{font-size:.92857143rem}.ui.huge.header{min-height:1em;font-size:2em}.ui.large.header{font-size:1.71428571em}.ui.medium.header{font-size:1.28571429em}.ui.small.header{font-size:1.07142857em}.ui.tiny.header{font-size:1em}.ui.huge.header .sub.header,.ui.large.header .sub.header{font-size:1.14285714rem}.ui.header .sub.header,.ui.small.header .sub.header{font-size:1rem}.ui.tiny.header .sub.header{font-size:.92857143rem}.ui.sub.header{padding:0;margin-bottom:.14285714rem;font-weight:700;text-transform:uppercase;color:""}.ui.small.sub.header{font-size:.78571429em}.ui.sub.header{font-size:.85714286em}.ui.large.sub.header{font-size:.92857143em}.ui.huge.sub.header{font-size:1em}.ui.icon.header{display:inline-block;text-align:center;margin:2rem 0 1rem}.ui.icon.header:after{content:"";display:block;height:0;clear:both;visibility:hidden}.ui.icon.header:first-child{margin-top:0}.ui.icon.header .icon{float:none;width:auto;height:auto;line-height:1;font-size:3em;margin:0 auto .5rem;opacity:1}.ui.icon.header .content,.ui.icon.header .icon{display:block;padding:0}.ui.icon.header .circular.icon,.ui.icon.header .square.icon{font-size:2em}.ui.block.icon.header .icon{margin-bottom:0}.ui.icon.header.aligned{margin-left:auto;margin-right:auto;display:block}.ui.disabled.header{opacity:.45}.ui.inverted.header{color:#fff}.ui.inverted.header .sub.header{color:hsla(0,0%,100%,.8)}.ui.inverted.attached.header{border-color:transparent}.ui.inverted.attached.header,.ui.inverted.block.header{background:#545454 -webkit-linear-gradient(transparent,rgba(0,0,0,.05));background:#545454 linear-gradient(transparent,rgba(0,0,0,.05));box-shadow:none}.ui.inverted.block.header{border-bottom:none}.ui.red.header{color:#db2828!important}a.ui.red.header:hover{color:#d01919!important}.ui.red.dividing.header{border-bottom:2px solid #db2828}.ui.inverted.red.header{color:#ff695e!important}a.ui.inverted.red.header:hover{color:#ff5144!important}.ui.orange.header{color:#f2711c!important}a.ui.orange.header:hover{color:#f26202!important}.ui.orange.dividing.header{border-bottom:2px solid #f2711c}.ui.inverted.orange.header{color:#ff851b!important}a.ui.inverted.orange.header:hover{color:#ff7701!important}.ui.olive.header{color:#b5cc18!important}a.ui.olive.header:hover{color:#a7bd0d!important}.ui.olive.dividing.header{border-bottom:2px solid #b5cc18}.ui.inverted.olive.header{color:#d9e778!important}a.ui.inverted.olive.header:hover{color:#d8ea5c!important}.ui.yellow.header{color:#fbbd08!important}a.ui.yellow.header:hover{color:#eaae00!important}.ui.yellow.dividing.header{border-bottom:2px solid #fbbd08}.ui.inverted.yellow.header{color:#ffe21f!important}a.ui.inverted.yellow.header:hover{color:#ffdf05!important}.ui.green.header{color:#21ba45!important}a.ui.green.header:hover{color:#16ab39!important}.ui.green.dividing.header{border-bottom:2px solid #21ba45}.ui.inverted.green.header{color:#2ecc40!important}a.ui.inverted.green.header:hover{color:#22be34!important}.ui.teal.header{color:#00b5ad!important}a.ui.teal.header:hover{color:#009c95!important}.ui.teal.dividing.header{border-bottom:2px solid #00b5ad}.ui.inverted.teal.header{color:#6dffff!important}a.ui.inverted.teal.header:hover{color:#54ffff!important}.ui.blue.header{color:#2185d0!important}a.ui.blue.header:hover{color:#1678c2!important}.ui.blue.dividing.header{border-bottom:2px solid #2185d0}.ui.inverted.blue.header{color:#54c8ff!important}a.ui.inverted.blue.header:hover{color:#3ac0ff!important}.ui.violet.header{color:#6435c9!important}a.ui.violet.header:hover{color:#5829bb!important}.ui.violet.dividing.header{border-bottom:2px solid #6435c9}.ui.inverted.violet.header{color:#a291fb!important}a.ui.inverted.violet.header:hover{color:#8a73ff!important}.ui.purple.header{color:#a333c8!important}a.ui.purple.header:hover{color:#9627ba!important}.ui.purple.dividing.header{border-bottom:2px solid #a333c8}.ui.inverted.purple.header{color:#dc73ff!important}a.ui.inverted.purple.header:hover{color:#d65aff!important}.ui.pink.header{color:#e03997!important}a.ui.pink.header:hover{color:#e61a8d!important}.ui.pink.dividing.header{border-bottom:2px solid #e03997}.ui.inverted.pink.header{color:#ff8edf!important}a.ui.inverted.pink.header:hover{color:#ff74d8!important}.ui.brown.header{color:#a5673f!important}a.ui.brown.header:hover{color:#975b33!important}.ui.brown.dividing.header{border-bottom:2px solid #a5673f}.ui.inverted.brown.header{color:#d67c1c!important}a.ui.inverted.brown.header:hover{color:#c86f11!important}.ui.grey.header{color:#767676!important}a.ui.grey.header:hover{color:#838383!important}.ui.grey.dividing.header{border-bottom:2px solid #767676}.ui.inverted.grey.header{color:#dcddde!important}a.ui.inverted.grey.header:hover{color:#cfd0d2!important}.ui.left.aligned.header{text-align:left}.ui.right.aligned.header{text-align:right}.ui.center.aligned.header,.ui.centered.header{text-align:center}.ui.justified.header{text-align:justify}.ui.justified.header:after{display:inline-block;content:"";width:100%}.ui.floated.header,.ui[class*="left floated"].header{float:left;margin-top:0;margin-right:.5em}.ui[class*="right floated"].header{float:right;margin-top:0;margin-left:.5em}.ui.fitted.header{padding:0}.ui.dividing.header{border-bottom:1px solid rgba(34,36,38,.15)}.ui.dividing.header,.ui.dividing.header .sub.header{padding-bottom:.21428571rem}.ui.dividing.header .icon{margin-bottom:0}.ui.inverted.dividing.header{border-bottom-color:hsla(0,0%,100%,.1)}.ui.block.header{background:#f3f4f5;padding:.78571429rem 1rem;box-shadow:none;border:1px solid #d4d4d5;border-radius:.28571429rem}.ui.tiny.block.header{font-size:.85714286rem}.ui.small.block.header{font-size:.92857143rem}.ui.block.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6){font-size:1rem}.ui.large.block.header{font-size:1.14285714rem}.ui.huge.block.header{font-size:1.42857143rem}.ui.attached.header{background:#fff;padding:.78571429rem 1rem;margin-left:-1px;margin-right:-1px;box-shadow:none;border:1px solid #d4d4d5}.ui.attached.block.header{background:#f3f4f5}.ui.attached:not(.top):not(.bottom).header{margin-top:0;margin-bottom:0;border-top:none;border-radius:0}.ui.top.attached.header{margin-bottom:0;border-radius:.28571429rem .28571429rem 0 0}.ui.bottom.attached.header{margin-top:0;border-top:none;border-radius:0 0 .28571429rem .28571429rem}.ui.tiny.attached.header{font-size:.85714286em}.ui.small.attached.header{font-size:.92857143em}.ui.attached.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6){font-size:1em}.ui.large.attached.header{font-size:1.14285714em}.ui.huge.attached.header{font-size:1.42857143em}.ui.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6){font-size:1.28571429em}/*! + * # Semantic UI 2.2.9 - Button + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.button{cursor:pointer;display:inline-block;min-height:1em;outline:none;border:none;vertical-align:baseline;background:#e0e1e2 none;color:rgba(0,0,0,.6);font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif;margin:0 .25em 0 0;padding:.78571429em 1.5em;text-transform:none;text-shadow:none;font-weight:700;line-height:1em;font-style:normal;text-align:center;text-decoration:none;border-radius:.28571429rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease;will-change:"";-webkit-tap-highlight-color:transparent}.ui.button,.ui.button:hover{box-shadow:inset 0 0 0 1px transparent,inset 0 0 0 0 rgba(34,36,38,.15)}.ui.button:hover{background-color:#cacbcd;background-image:none;color:rgba(0,0,0,.8)}.ui.button:hover .icon{opacity:.85}.ui.button:focus{background-color:#cacbcd;color:rgba(0,0,0,.8);background-image:""!important;box-shadow:""!important}.ui.button:focus .icon{opacity:.85}.ui.active.button:active,.ui.button:active{background-color:#babbbc;background-image:"";color:rgba(0,0,0,.9);box-shadow:inset 0 0 0 1px transparent,none}.ui.active.button{box-shadow:inset 0 0 0 1px transparent}.ui.active.button,.ui.active.button:hover{color:rgba(0,0,0,.95)}.ui.active.button,.ui.active.button:active,.ui.active.button:hover{background-color:#c0c1c2;background-image:none}.ui.loading.loading.loading.loading.loading.loading.button{position:relative;cursor:default;text-shadow:none!important;color:transparent!important;opacity:1;pointer-events:auto;-webkit-transition:all 0s linear,opacity .1s ease;transition:all 0s linear,opacity .1s ease}.ui.loading.button:before{border-radius:500rem;border:.2em solid rgba(0,0,0,.15)}.ui.loading.button:after,.ui.loading.button:before{position:absolute;content:"";top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em}.ui.loading.button:after{-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#fff transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}.ui.labeled.icon.loading.button .icon{background-color:transparent;box-shadow:none}@-webkit-keyframes button-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes button-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.ui.basic.loading.button:not(.inverted):before{border-color:rgba(0,0,0,.1)}.ui.basic.loading.button:not(.inverted):after{border-top-color:#767676}.ui.button:disabled,.ui.buttons .disabled.button,.ui.disabled.active.button,.ui.disabled.button,.ui.disabled.button:hover{cursor:default;opacity:.45!important;background-image:none!important;box-shadow:none!important;pointer-events:none!important}.ui.basic.buttons .ui.disabled.button{border-color:rgba(34,36,38,.5)}.ui.animated.button{position:relative;overflow:hidden;padding-right:0!important;vertical-align:middle;z-index:1}.ui.animated.button .content{will-change:transform,opacity}.ui.animated.button .visible.content{position:relative;margin-right:1.5em}.ui.animated.button .hidden.content{position:absolute;width:100%}.ui.animated.button .hidden.content,.ui.animated.button .visible.content{-webkit-transition:right .3s ease 0s;transition:right .3s ease 0s}.ui.animated.button .visible.content{left:auto;right:0}.ui.animated.button .hidden.content{top:50%;left:auto;right:-100%;margin-top:-.5em}.ui.animated.button:focus .visible.content,.ui.animated.button:hover .visible.content{left:auto;right:200%}.ui.animated.button:focus .hidden.content,.ui.animated.button:hover .hidden.content{left:auto;right:0}.ui.vertical.animated.button .hidden.content,.ui.vertical.animated.button .visible.content{-webkit-transition:top .3s ease,-webkit-transform .3s ease;transition:top .3s ease,-webkit-transform .3s ease;transition:top .3s ease,transform .3s ease;transition:top .3s ease,transform .3s ease,-webkit-transform .3s ease}.ui.vertical.animated.button .visible.content{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);right:auto}.ui.vertical.animated.button .hidden.content{top:-50%;left:0;right:auto}.ui.vertical.animated.button:focus .visible.content,.ui.vertical.animated.button:hover .visible.content{-webkit-transform:translateY(200%);-ms-transform:translateY(200%);transform:translateY(200%);right:auto}.ui.vertical.animated.button:focus .hidden.content,.ui.vertical.animated.button:hover .hidden.content{top:50%;right:auto}.ui.fade.animated.button .hidden.content,.ui.fade.animated.button .visible.content{-webkit-transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,transform .3s ease;transition:opacity .3s ease,transform .3s ease,-webkit-transform .3s ease}.ui.fade.animated.button .visible.content{left:auto;right:auto;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.ui.fade.animated.button .hidden.content{opacity:0;left:0;right:auto;-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5)}.ui.fade.animated.button:focus .visible.content,.ui.fade.animated.button:hover .visible.content{left:auto;right:auto;opacity:0;-webkit-transform:scale(.75);-ms-transform:scale(.75);transform:scale(.75)}.ui.fade.animated.button:focus .hidden.content,.ui.fade.animated.button:hover .hidden.content{left:0;right:auto;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.ui.inverted.button{box-shadow:inset 0 0 0 2px #fff!important;background:transparent none;color:#fff;text-shadow:none!important}.ui.inverted.buttons .button{margin:0 0 0 -2px}.ui.inverted.buttons .button:first-child{margin-left:0}.ui.inverted.vertical.buttons .button{margin:0 0 -2px}.ui.inverted.vertical.buttons .button:first-child{margin-top:0}.ui.inverted.button.active,.ui.inverted.button:focus,.ui.inverted.button:hover{background:#fff;box-shadow:inset 0 0 0 2px #fff!important;color:rgba(0,0,0,.8)}.ui.inverted.button.active:focus{background:#dcddde;box-shadow:inset 0 0 0 2px #dcddde!important;color:rgba(0,0,0,.8)}.ui.labeled.button:not(.icon){display:-webkit-inline-box;display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row;background:none!important;padding:0!important;border:none!important;box-shadow:none!important}.ui.labeled.button>.button{margin:0}.ui.labeled.button>.label{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;margin:0 0 0 -1px!important;padding:"";font-size:1em;border-color:rgba(34,36,38,.15)}.ui.labeled.button>.tag.label:before{width:1.85em;height:1.85em}.ui.labeled.button:not([class*="left labeled"])>.button{border-top-right-radius:0;border-bottom-right-radius:0}.ui.labeled.button:not([class*="left labeled"])>.label,.ui[class*="left labeled"].button>.button{border-top-left-radius:0;border-bottom-left-radius:0}.ui[class*="left labeled"].button>.label{border-top-right-radius:0;border-bottom-right-radius:0}.ui.facebook.button{background-color:#3b5998;color:#fff;text-shadow:none;background-image:none;box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.facebook.button:hover{background-color:#304d8a;color:#fff;text-shadow:none}.ui.facebook.button:active{background-color:#2d4373;color:#fff;text-shadow:none}.ui.twitter.button{background-color:#55acee;color:#fff;text-shadow:none;background-image:none;box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.twitter.button:hover{background-color:#35a2f4;color:#fff;text-shadow:none}.ui.twitter.button:active{background-color:#2795e9;color:#fff;text-shadow:none}.ui.google.plus.button{background-color:#dd4b39;color:#fff;text-shadow:none;background-image:none;box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.google.plus.button:hover{background-color:#e0321c;color:#fff;text-shadow:none}.ui.google.plus.button:active{background-color:#c23321;color:#fff;text-shadow:none}.ui.linkedin.button{background-color:#1f88be;color:#fff;text-shadow:none}.ui.linkedin.button:hover{background-color:#147baf;color:#fff;text-shadow:none}.ui.linkedin.button:active{background-color:#186992;color:#fff;text-shadow:none}.ui.youtube.button{background-color:#cc181e;color:#fff;text-shadow:none;background-image:none;box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.youtube.button:hover{background-color:#bd0d13;color:#fff;text-shadow:none}.ui.youtube.button:active{background-color:#9e1317;color:#fff;text-shadow:none}.ui.instagram.button{background-color:#49769c;color:#fff;text-shadow:none;background-image:none;box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.instagram.button:hover{background-color:#3d698e;color:#fff;text-shadow:none}.ui.instagram.button:active{background-color:#395c79;color:#fff;text-shadow:none}.ui.pinterest.button{background-color:#bd081c;color:#fff;text-shadow:none;background-image:none;box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.pinterest.button:hover{background-color:#ac0013;color:#fff;text-shadow:none}.ui.pinterest.button:active{background-color:#8c0615;color:#fff;text-shadow:none}.ui.vk.button{background-color:#4d7198;color:#fff;background-image:none;box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.vk.button:hover{background-color:#41648a;color:#fff}.ui.vk.button:active{background-color:#3c5876;color:#fff}.ui.button>.icon:not(.button){height:.85714286em;opacity:.8;-webkit-transition:opacity .1s ease;transition:opacity .1s ease;vertical-align:"";color:""}.ui.button:not(.icon)>.icon:not(.button):not(.dropdown),.ui.button>.icon:not(.button){margin:0 .42857143em 0 -.21428571em}.ui.button:not(.icon)>.right.icon:not(.button):not(.dropdown){margin:0 -.21428571em 0 .42857143em}.ui[class*="left floated"].button,.ui[class*="left floated"].buttons{float:left;margin-left:0;margin-right:.25em}.ui[class*="right floated"].button,.ui[class*="right floated"].buttons{float:right;margin-right:0;margin-left:.25em}.ui.compact.button,.ui.compact.buttons .button{padding:.58928571em 1.125em}.ui.compact.icon.button,.ui.compact.icon.buttons .button{padding:.58928571em}.ui.compact.labeled.icon.button,.ui.compact.labeled.icon.buttons .button{padding:.58928571em 3.69642857em}.ui.mini.button,.ui.mini.buttons .button,.ui.mini.buttons .or{font-size:.78571429rem}.ui.tiny.button,.ui.tiny.buttons .button,.ui.tiny.buttons .or{font-size:.85714286rem}.ui.small.button,.ui.small.buttons .button,.ui.small.buttons .or{font-size:.92857143rem}.ui.button,.ui.buttons .button,.ui.buttons .or{font-size:1rem}.ui.large.button,.ui.large.buttons .button,.ui.large.buttons .or{font-size:1.14285714rem}.ui.big.button,.ui.big.buttons .button,.ui.big.buttons .or{font-size:1.28571429rem}.ui.huge.button,.ui.huge.buttons .button,.ui.huge.buttons .or{font-size:1.42857143rem}.ui.massive.button,.ui.massive.buttons .button,.ui.massive.buttons .or{font-size:1.71428571rem}.ui.icon.button,.ui.icon.buttons .button{padding:.78571429em}.ui.icon.button>.icon,.ui.icon.buttons .button>.icon{opacity:.9;margin:0!important;vertical-align:top}.ui.basic.button,.ui.basic.buttons .button{background:transparent none!important;color:rgba(0,0,0,.6)!important;font-weight:400;border-radius:.28571429rem;text-transform:none;text-shadow:none!important;box-shadow:inset 0 0 0 1px rgba(34,36,38,.15)}.ui.basic.buttons{box-shadow:none;border:1px solid rgba(34,36,38,.15);border-radius:.28571429rem}.ui.basic.buttons .button{border-radius:0}.ui.basic.button:focus,.ui.basic.button:hover,.ui.basic.buttons .button:focus,.ui.basic.buttons .button:hover{background:#fff!important;color:rgba(0,0,0,.8)!important;box-shadow:inset 0 0 0 1px rgba(34,36,38,.35),inset 0 0 0 0 rgba(34,36,38,.15)}.ui.basic.button:active,.ui.basic.buttons .button:active{background:#f8f8f8!important;color:rgba(0,0,0,.9)!important;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15),inset 0 1px 4px 0 rgba(34,36,38,.15)}.ui.basic.active.button,.ui.basic.buttons .active.button{background:rgba(0,0,0,.05)!important;box-shadow:""!important;color:rgba(0,0,0,.95);box-shadow:rgba(34,36,38,.35)}.ui.basic.active.button:hover,.ui.basic.buttons .active.button:hover{background-color:rgba(0,0,0,.05)}.ui.basic.buttons .button:hover{box-shadow:inset 0 0 0 1px rgba(34,36,38,.35),inset inset 0 0 0 0 rgba(34,36,38,.15)}.ui.basic.buttons .button:active{box-shadow:inset 0 0 0 1px rgba(0,0,0,.15),inset inset 0 1px 4px 0 rgba(34,36,38,.15)}.ui.basic.buttons .active.button{box-shadow:inset rgba(34,36,38,.35)}.ui.basic.inverted.button,.ui.basic.inverted.buttons .button{background-color:transparent!important;color:#f9fafb!important;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.5)!important}.ui.basic.inverted.button:focus,.ui.basic.inverted.button:hover,.ui.basic.inverted.buttons .button:focus,.ui.basic.inverted.buttons .button:hover{color:#fff!important;box-shadow:inset 0 0 0 2px #fff!important}.ui.basic.inverted.button:active,.ui.basic.inverted.buttons .button:active{background-color:hsla(0,0%,100%,.08)!important;color:#fff!important;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.9)!important}.ui.basic.inverted.active.button,.ui.basic.inverted.buttons .active.button{background-color:hsla(0,0%,100%,.08);color:#fff;text-shadow:none;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.7)}.ui.basic.inverted.active.button:hover,.ui.basic.inverted.buttons .active.button:hover{background-color:hsla(0,0%,100%,.15);box-shadow:inset 0 0 0 2px #fff!important}.ui.basic.buttons .button{border-left:1px solid rgba(34,36,38,.15);box-shadow:none}.ui.basic.vertical.buttons .button{border-left:none;border-left-width:0;border-top:1px solid rgba(34,36,38,.15)}.ui.basic.vertical.buttons .button:first-child{border-top-width:0}.ui.labeled.icon.button,.ui.labeled.icon.buttons .button{position:relative;padding-left:4.07142857em!important;padding-right:1.5em!important}.ui.labeled.icon.button>.icon,.ui.labeled.icon.buttons>.button>.icon{position:absolute;height:100%;line-height:1;border-radius:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit;text-align:center;margin:0;width:2.57142857em;background-color:rgba(0,0,0,.05);color:"";box-shadow:inset -1px 0 0 0 transparent;top:0;left:0}.ui[class*="right labeled"].icon.button{padding-right:4.07142857em!important;padding-left:1.5em!important}.ui[class*="right labeled"].icon.button>.icon{left:auto;right:0;border-radius:0;border-top-right-radius:inherit;border-bottom-right-radius:inherit;box-shadow:inset 1px 0 0 0 transparent}.ui.labeled.icon.button>.icon:after,.ui.labeled.icon.button>.icon:before,.ui.labeled.icon.buttons>.button>.icon:after,.ui.labeled.icon.buttons>.button>.icon:before{display:block;position:absolute;width:100%;top:50%;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ui.labeled.icon.buttons .button>.icon{border-radius:0}.ui.labeled.icon.buttons .button:first-child>.icon{border-top-left-radius:.28571429rem;border-bottom-left-radius:.28571429rem}.ui.labeled.icon.buttons .button:last-child>.icon{border-top-right-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.vertical.labeled.icon.buttons .button:first-child>.icon{border-radius:0;border-top-left-radius:.28571429rem}.ui.vertical.labeled.icon.buttons .button:last-child>.icon{border-radius:0;border-bottom-left-radius:.28571429rem}.ui.fluid[class*="left labeled"].icon.button,.ui.fluid[class*="right labeled"].icon.button{padding-left:1.5em!important;padding-right:1.5em!important}.ui.button.toggle.active,.ui.buttons .button.toggle.active,.ui.toggle.buttons .active.button{background-color:#21ba45!important;box-shadow:none!important;text-shadow:none;color:#fff!important}.ui.button.toggle.active:hover{background-color:#16ab39!important;text-shadow:none;color:#fff!important}.ui.circular.button{border-radius:10em}.ui.circular.button>.icon{width:1em;vertical-align:baseline}.ui.buttons .or{position:relative;width:.3em;height:2.57142857em;z-index:3}.ui.buttons .or:before{position:absolute;text-align:center;border-radius:500rem;content:"or";top:50%;left:50%;background-color:#fff;text-shadow:none;margin-top:-.89285714em;margin-left:-.89285714em;width:1.78571429em;height:1.78571429em;line-height:1.78571429em;color:rgba(0,0,0,.4);font-style:normal;font-weight:700;box-shadow:inset 0 0 0 1px transparent}.ui.buttons .or[data-text]:before{content:attr(data-text)}.ui.fluid.buttons .or{width:0!important}.ui.fluid.buttons .or:after{display:none}.ui.attached.button{position:relative;display:block;margin:0;border-radius:0;box-shadow:0 0 0 1px rgba(34,36,38,.15)!important}.ui.attached.top.button{border-radius:.28571429rem .28571429rem 0 0}.ui.attached.bottom.button{border-radius:0 0 .28571429rem .28571429rem}.ui.left.attached.button{display:inline-block;border-left:none;text-align:right;padding-right:.75em;border-radius:.28571429rem 0 0 .28571429rem}.ui.right.attached.button{display:inline-block;text-align:left;padding-left:.75em;border-radius:0 .28571429rem .28571429rem 0}.ui.attached.buttons{position:relative;display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;border-radius:0;width:auto!important;z-index:2;margin-left:-1px;margin-right:-1px}.ui.attached.buttons .button{margin:0}.ui.attached.buttons .button:first-child,.ui.attached.buttons .button:last-child{border-radius:0}.ui[class*="top attached"].buttons{margin-bottom:-1px;border-radius:.28571429rem .28571429rem 0 0}.ui[class*="top attached"].buttons .button:first-child{border-radius:.28571429rem 0 0 0}.ui[class*="top attached"].buttons .button:last-child{border-radius:0 .28571429rem 0 0}.ui[class*="bottom attached"].buttons{margin-top:-1px;border-radius:0 0 .28571429rem .28571429rem}.ui[class*="bottom attached"].buttons .button:first-child{border-radius:0 0 0 .28571429rem}.ui[class*="bottom attached"].buttons .button:last-child{border-radius:0 0 .28571429rem 0}.ui[class*="left attached"].buttons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex;margin-right:0;margin-left:-1px;border-radius:0 .28571429rem .28571429rem 0}.ui[class*="left attached"].buttons .button:first-child{margin-left:-1px;border-radius:0 .28571429rem 0 0}.ui[class*="left attached"].buttons .button:last-child{margin-left:-1px;border-radius:0 0 .28571429rem 0}.ui[class*="right attached"].buttons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex;margin-left:0;margin-right:-1px;border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="right attached"].buttons .button:first-child{margin-left:-1px;border-radius:.28571429rem 0 0 0}.ui[class*="right attached"].buttons .button:last-child{margin-left:-1px;border-radius:0 0 0 .28571429rem}.ui.fluid.button,.ui.fluid.buttons{width:100%}.ui.fluid.button{display:block}.ui.two.buttons{width:100%}.ui.two.buttons>.button{width:50%}.ui.three.buttons{width:100%}.ui.three.buttons>.button{width:33.333%}.ui.four.buttons{width:100%}.ui.four.buttons>.button{width:25%}.ui.five.buttons{width:100%}.ui.five.buttons>.button{width:20%}.ui.six.buttons{width:100%}.ui.six.buttons>.button{width:16.666%}.ui.seven.buttons{width:100%}.ui.seven.buttons>.button{width:14.285%}.ui.eight.buttons{width:100%}.ui.eight.buttons>.button{width:12.5%}.ui.nine.buttons{width:100%}.ui.nine.buttons>.button{width:11.11%}.ui.ten.buttons{width:100%}.ui.ten.buttons>.button{width:10%}.ui.eleven.buttons{width:100%}.ui.eleven.buttons>.button{width:9.09%}.ui.twelve.buttons{width:100%}.ui.twelve.buttons>.button{width:8.3333%}.ui.fluid.vertical.buttons,.ui.fluid.vertical.buttons>.button{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;width:auto}.ui.two.vertical.buttons>.button{height:50%}.ui.three.vertical.buttons>.button{height:33.333%}.ui.four.vertical.buttons>.button{height:25%}.ui.five.vertical.buttons>.button{height:20%}.ui.six.vertical.buttons>.button{height:16.666%}.ui.seven.vertical.buttons>.button{height:14.285%}.ui.eight.vertical.buttons>.button{height:12.5%}.ui.nine.vertical.buttons>.button{height:11.11%}.ui.ten.vertical.buttons>.button{height:10%}.ui.eleven.vertical.buttons>.button{height:9.09%}.ui.twelve.vertical.buttons>.button{height:8.3333%}.ui.black.button,.ui.black.buttons .button{background-color:#1b1c1d;color:#fff;text-shadow:none;background-image:none}.ui.black.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.black.button:hover,.ui.black.buttons .button:hover{background-color:#27292a;color:#fff;text-shadow:none}.ui.black.button:focus,.ui.black.buttons .button:focus{background-color:#2f3032;color:#fff;text-shadow:none}.ui.black.button:active,.ui.black.buttons .button:active{background-color:#343637;color:#fff;text-shadow:none}.ui.black.active.button,.ui.black.button .active.button:active,.ui.black.buttons .active.button,.ui.black.buttons .active.button:active{background-color:#0f0f10;color:#fff;text-shadow:none}.ui.basic.black.button,.ui.basic.black.buttons .button{box-shadow:inset 0 0 0 1px #1b1c1d!important;color:#1b1c1d!important}.ui.basic.black.button:hover,.ui.basic.black.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #27292a!important;color:#27292a!important}.ui.basic.black.button:focus,.ui.basic.black.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #2f3032!important;color:#27292a!important}.ui.basic.black.active.button,.ui.basic.black.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #0f0f10!important;color:#343637!important}.ui.basic.black.button:active,.ui.basic.black.buttons .button:active{box-shadow:inset 0 0 0 1px #343637!important;color:#343637!important}.ui.buttons:not(.vertical)>.basic.black.button:not(:first-child){margin-left:-1px}.ui.inverted.black.button,.ui.inverted.black.buttons .button{background-color:transparent;box-shadow:inset 0 0 0 2px #d4d4d5!important;color:#fff}.ui.inverted.black.button.active,.ui.inverted.black.button:active,.ui.inverted.black.button:focus,.ui.inverted.black.button:hover,.ui.inverted.black.buttons .button.active,.ui.inverted.black.buttons .button:active,.ui.inverted.black.buttons .button:focus,.ui.inverted.black.buttons .button:hover{box-shadow:none!important;color:#fff}.ui.inverted.black.active.button,.ui.inverted.black.button:active,.ui.inverted.black.button:focus,.ui.inverted.black.button:hover,.ui.inverted.black.buttons .active.button,.ui.inverted.black.buttons .button:active,.ui.inverted.black.buttons .button:focus,.ui.inverted.black.buttons .button:hover{background-color:#000}.ui.inverted.black.basic.button,.ui.inverted.black.basic.buttons .button,.ui.inverted.black.buttons .basic.button{background-color:transparent;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.5)!important;color:#fff!important}.ui.inverted.black.basic.button:hover,.ui.inverted.black.basic.buttons .button:hover,.ui.inverted.black.buttons .basic.button:hover{box-shadow:inset 0 0 0 2px #000!important;color:#fff!important}.ui.inverted.black.basic.button:focus,.ui.inverted.black.basic.buttons .button:focus{box-shadow:inset 0 0 0 2px #000!important;color:#545454!important}.ui.inverted.black.basic.active.button,.ui.inverted.black.basic.button:active,.ui.inverted.black.basic.buttons .active.button,.ui.inverted.black.basic.buttons .button:active,.ui.inverted.black.buttons .basic.active.button,.ui.inverted.black.buttons .basic.button:active{box-shadow:inset 0 0 0 2px #000!important;color:#fff!important}.ui.grey.button,.ui.grey.buttons .button{background-color:#767676;color:#fff;text-shadow:none;background-image:none}.ui.grey.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.grey.button:hover,.ui.grey.buttons .button:hover{background-color:#838383;color:#fff;text-shadow:none}.ui.grey.button:focus,.ui.grey.buttons .button:focus{background-color:#8a8a8a;color:#fff;text-shadow:none}.ui.grey.button:active,.ui.grey.buttons .button:active{background-color:#909090;color:#fff;text-shadow:none}.ui.grey.active.button,.ui.grey.button .active.button:active,.ui.grey.buttons .active.button,.ui.grey.buttons .active.button:active{background-color:#696969;color:#fff;text-shadow:none}.ui.basic.grey.button,.ui.basic.grey.buttons .button{box-shadow:inset 0 0 0 1px #767676!important;color:#767676!important}.ui.basic.grey.button:hover,.ui.basic.grey.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #838383!important;color:#838383!important}.ui.basic.grey.button:focus,.ui.basic.grey.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #8a8a8a!important;color:#838383!important}.ui.basic.grey.active.button,.ui.basic.grey.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #696969!important;color:#909090!important}.ui.basic.grey.button:active,.ui.basic.grey.buttons .button:active{box-shadow:inset 0 0 0 1px #909090!important;color:#909090!important}.ui.buttons:not(.vertical)>.basic.grey.button:not(:first-child){margin-left:-1px}.ui.inverted.grey.button,.ui.inverted.grey.buttons .button{background-color:transparent;box-shadow:inset 0 0 0 2px #d4d4d5!important;color:#fff}.ui.inverted.grey.button.active,.ui.inverted.grey.button:active,.ui.inverted.grey.button:focus,.ui.inverted.grey.button:hover,.ui.inverted.grey.buttons .button.active,.ui.inverted.grey.buttons .button:active,.ui.inverted.grey.buttons .button:focus,.ui.inverted.grey.buttons .button:hover{box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.grey.button:hover,.ui.inverted.grey.buttons .button:hover{background-color:#cfd0d2}.ui.inverted.grey.button:focus,.ui.inverted.grey.buttons .button:focus{background-color:#c7c9cb}.ui.inverted.grey.active.button,.ui.inverted.grey.buttons .active.button{background-color:#cfd0d2}.ui.inverted.grey.button:active,.ui.inverted.grey.buttons .button:active{background-color:#c2c4c5}.ui.inverted.grey.basic.button,.ui.inverted.grey.basic.buttons .button,.ui.inverted.grey.buttons .basic.button{background-color:transparent;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.5)!important;color:#fff!important}.ui.inverted.grey.basic.button:hover,.ui.inverted.grey.basic.buttons .button:hover,.ui.inverted.grey.buttons .basic.button:hover{box-shadow:inset 0 0 0 2px #cfd0d2!important;color:#fff!important}.ui.inverted.grey.basic.button:focus,.ui.inverted.grey.basic.buttons .button:focus{box-shadow:inset 0 0 0 2px #c7c9cb!important;color:#dcddde!important}.ui.inverted.grey.basic.active.button,.ui.inverted.grey.basic.buttons .active.button,.ui.inverted.grey.buttons .basic.active.button{box-shadow:inset 0 0 0 2px #cfd0d2!important;color:#fff!important}.ui.inverted.grey.basic.button:active,.ui.inverted.grey.basic.buttons .button:active,.ui.inverted.grey.buttons .basic.button:active{box-shadow:inset 0 0 0 2px #c2c4c5!important;color:#fff!important}.ui.brown.button,.ui.brown.buttons .button{background-color:#a5673f;color:#fff;text-shadow:none;background-image:none}.ui.brown.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.brown.button:hover,.ui.brown.buttons .button:hover{background-color:#975b33;color:#fff;text-shadow:none}.ui.brown.button:focus,.ui.brown.buttons .button:focus{background-color:#90532b;color:#fff;text-shadow:none}.ui.brown.button:active,.ui.brown.buttons .button:active{background-color:#805031;color:#fff;text-shadow:none}.ui.brown.active.button,.ui.brown.button .active.button:active,.ui.brown.buttons .active.button,.ui.brown.buttons .active.button:active{background-color:#995a31;color:#fff;text-shadow:none}.ui.basic.brown.button,.ui.basic.brown.buttons .button{box-shadow:inset 0 0 0 1px #a5673f!important;color:#a5673f!important}.ui.basic.brown.button:hover,.ui.basic.brown.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #975b33!important;color:#975b33!important}.ui.basic.brown.button:focus,.ui.basic.brown.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #90532b!important;color:#975b33!important}.ui.basic.brown.active.button,.ui.basic.brown.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #995a31!important;color:#805031!important}.ui.basic.brown.button:active,.ui.basic.brown.buttons .button:active{box-shadow:inset 0 0 0 1px #805031!important;color:#805031!important}.ui.buttons:not(.vertical)>.basic.brown.button:not(:first-child){margin-left:-1px}.ui.inverted.brown.button,.ui.inverted.brown.buttons .button{background-color:transparent;box-shadow:inset 0 0 0 2px #d67c1c!important;color:#d67c1c}.ui.inverted.brown.button.active,.ui.inverted.brown.button:active,.ui.inverted.brown.button:focus,.ui.inverted.brown.button:hover,.ui.inverted.brown.buttons .button.active,.ui.inverted.brown.buttons .button:active,.ui.inverted.brown.buttons .button:focus,.ui.inverted.brown.buttons .button:hover{box-shadow:none!important;color:#fff}.ui.inverted.brown.button:hover,.ui.inverted.brown.buttons .button:hover{background-color:#c86f11}.ui.inverted.brown.button:focus,.ui.inverted.brown.buttons .button:focus{background-color:#c16808}.ui.inverted.brown.active.button,.ui.inverted.brown.buttons .active.button{background-color:#cc6f0d}.ui.inverted.brown.button:active,.ui.inverted.brown.buttons .button:active{background-color:#a96216}.ui.inverted.brown.basic.button,.ui.inverted.brown.basic.buttons .button,.ui.inverted.brown.buttons .basic.button{background-color:transparent;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.5)!important;color:#fff!important}.ui.inverted.brown.basic.button:hover,.ui.inverted.brown.basic.buttons .button:hover,.ui.inverted.brown.buttons .basic.button:hover{box-shadow:inset 0 0 0 2px #c86f11!important;color:#d67c1c!important}.ui.inverted.brown.basic.button:focus,.ui.inverted.brown.basic.buttons .button:focus{box-shadow:inset 0 0 0 2px #c16808!important;color:#d67c1c!important}.ui.inverted.brown.basic.active.button,.ui.inverted.brown.basic.buttons .active.button,.ui.inverted.brown.buttons .basic.active.button{box-shadow:inset 0 0 0 2px #cc6f0d!important;color:#d67c1c!important}.ui.inverted.brown.basic.button:active,.ui.inverted.brown.basic.buttons .button:active,.ui.inverted.brown.buttons .basic.button:active{box-shadow:inset 0 0 0 2px #a96216!important;color:#d67c1c!important}.ui.blue.button,.ui.blue.buttons .button{background-color:#2185d0;color:#fff;text-shadow:none;background-image:none}.ui.blue.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.blue.button:hover,.ui.blue.buttons .button:hover{background-color:#1678c2;color:#fff;text-shadow:none}.ui.blue.button:focus,.ui.blue.buttons .button:focus{background-color:#0d71bb;color:#fff;text-shadow:none}.ui.blue.button:active,.ui.blue.buttons .button:active{background-color:#1a69a4;color:#fff;text-shadow:none}.ui.blue.active.button,.ui.blue.button .active.button:active,.ui.blue.buttons .active.button,.ui.blue.buttons .active.button:active{background-color:#1279c6;color:#fff;text-shadow:none}.ui.basic.blue.button,.ui.basic.blue.buttons .button{box-shadow:inset 0 0 0 1px #2185d0!important;color:#2185d0!important}.ui.basic.blue.button:hover,.ui.basic.blue.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #1678c2!important;color:#1678c2!important}.ui.basic.blue.button:focus,.ui.basic.blue.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #0d71bb!important;color:#1678c2!important}.ui.basic.blue.active.button,.ui.basic.blue.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #1279c6!important;color:#1a69a4!important}.ui.basic.blue.button:active,.ui.basic.blue.buttons .button:active{box-shadow:inset 0 0 0 1px #1a69a4!important;color:#1a69a4!important}.ui.buttons:not(.vertical)>.basic.blue.button:not(:first-child){margin-left:-1px}.ui.inverted.blue.button,.ui.inverted.blue.buttons .button{background-color:transparent;box-shadow:inset 0 0 0 2px #54c8ff!important;color:#54c8ff}.ui.inverted.blue.button.active,.ui.inverted.blue.button:active,.ui.inverted.blue.button:focus,.ui.inverted.blue.button:hover,.ui.inverted.blue.buttons .button.active,.ui.inverted.blue.buttons .button:active,.ui.inverted.blue.buttons .button:focus,.ui.inverted.blue.buttons .button:hover{box-shadow:none!important;color:#fff}.ui.inverted.blue.button:hover,.ui.inverted.blue.buttons .button:hover{background-color:#3ac0ff}.ui.inverted.blue.button:focus,.ui.inverted.blue.buttons .button:focus{background-color:#2bbbff}.ui.inverted.blue.active.button,.ui.inverted.blue.buttons .active.button{background-color:#3ac0ff}.ui.inverted.blue.button:active,.ui.inverted.blue.buttons .button:active{background-color:#21b8ff}.ui.inverted.blue.basic.button,.ui.inverted.blue.basic.buttons .button,.ui.inverted.blue.buttons .basic.button{background-color:transparent;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.5)!important;color:#fff!important}.ui.inverted.blue.basic.button:hover,.ui.inverted.blue.basic.buttons .button:hover,.ui.inverted.blue.buttons .basic.button:hover{box-shadow:inset 0 0 0 2px #3ac0ff!important;color:#54c8ff!important}.ui.inverted.blue.basic.button:focus,.ui.inverted.blue.basic.buttons .button:focus{box-shadow:inset 0 0 0 2px #2bbbff!important;color:#54c8ff!important}.ui.inverted.blue.basic.active.button,.ui.inverted.blue.basic.buttons .active.button,.ui.inverted.blue.buttons .basic.active.button{box-shadow:inset 0 0 0 2px #3ac0ff!important;color:#54c8ff!important}.ui.inverted.blue.basic.button:active,.ui.inverted.blue.basic.buttons .button:active,.ui.inverted.blue.buttons .basic.button:active{box-shadow:inset 0 0 0 2px #21b8ff!important;color:#54c8ff!important}.ui.green.button,.ui.green.buttons .button{background-color:#21ba45;color:#fff;text-shadow:none;background-image:none}.ui.green.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.green.button:hover,.ui.green.buttons .button:hover{background-color:#16ab39;color:#fff;text-shadow:none}.ui.green.button:focus,.ui.green.buttons .button:focus{background-color:#0ea432;color:#fff;text-shadow:none}.ui.green.button:active,.ui.green.buttons .button:active{background-color:#198f35;color:#fff;text-shadow:none}.ui.green.active.button,.ui.green.button .active.button:active,.ui.green.buttons .active.button,.ui.green.buttons .active.button:active{background-color:#13ae38;color:#fff;text-shadow:none}.ui.basic.green.button,.ui.basic.green.buttons .button{box-shadow:inset 0 0 0 1px #21ba45!important;color:#21ba45!important}.ui.basic.green.button:hover,.ui.basic.green.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #16ab39!important;color:#16ab39!important}.ui.basic.green.button:focus,.ui.basic.green.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #0ea432!important;color:#16ab39!important}.ui.basic.green.active.button,.ui.basic.green.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #13ae38!important;color:#198f35!important}.ui.basic.green.button:active,.ui.basic.green.buttons .button:active{box-shadow:inset 0 0 0 1px #198f35!important;color:#198f35!important}.ui.buttons:not(.vertical)>.basic.green.button:not(:first-child){margin-left:-1px}.ui.inverted.green.button,.ui.inverted.green.buttons .button{background-color:transparent;box-shadow:inset 0 0 0 2px #2ecc40!important;color:#2ecc40}.ui.inverted.green.button.active,.ui.inverted.green.button:active,.ui.inverted.green.button:focus,.ui.inverted.green.button:hover,.ui.inverted.green.buttons .button.active,.ui.inverted.green.buttons .button:active,.ui.inverted.green.buttons .button:focus,.ui.inverted.green.buttons .button:hover{box-shadow:none!important;color:#fff}.ui.inverted.green.button:hover,.ui.inverted.green.buttons .button:hover{background-color:#22be34}.ui.inverted.green.button:focus,.ui.inverted.green.buttons .button:focus{background-color:#19b82b}.ui.inverted.green.active.button,.ui.inverted.green.buttons .active.button{background-color:#1fc231}.ui.inverted.green.button:active,.ui.inverted.green.buttons .button:active{background-color:#25a233}.ui.inverted.green.basic.button,.ui.inverted.green.basic.buttons .button,.ui.inverted.green.buttons .basic.button{background-color:transparent;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.5)!important;color:#fff!important}.ui.inverted.green.basic.button:hover,.ui.inverted.green.basic.buttons .button:hover,.ui.inverted.green.buttons .basic.button:hover{box-shadow:inset 0 0 0 2px #22be34!important;color:#2ecc40!important}.ui.inverted.green.basic.button:focus,.ui.inverted.green.basic.buttons .button:focus{box-shadow:inset 0 0 0 2px #19b82b!important;color:#2ecc40!important}.ui.inverted.green.basic.active.button,.ui.inverted.green.basic.buttons .active.button,.ui.inverted.green.buttons .basic.active.button{box-shadow:inset 0 0 0 2px #1fc231!important;color:#2ecc40!important}.ui.inverted.green.basic.button:active,.ui.inverted.green.basic.buttons .button:active,.ui.inverted.green.buttons .basic.button:active{box-shadow:inset 0 0 0 2px #25a233!important;color:#2ecc40!important}.ui.orange.button,.ui.orange.buttons .button{background-color:#f2711c;color:#fff;text-shadow:none;background-image:none}.ui.orange.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.orange.button:hover,.ui.orange.buttons .button:hover{background-color:#f26202;color:#fff;text-shadow:none}.ui.orange.button:focus,.ui.orange.buttons .button:focus{background-color:#e55b00;color:#fff;text-shadow:none}.ui.orange.button:active,.ui.orange.buttons .button:active{background-color:#cf590c;color:#fff;text-shadow:none}.ui.orange.active.button,.ui.orange.button .active.button:active,.ui.orange.buttons .active.button,.ui.orange.buttons .active.button:active{background-color:#f56100;color:#fff;text-shadow:none}.ui.basic.orange.button,.ui.basic.orange.buttons .button{box-shadow:inset 0 0 0 1px #f2711c!important;color:#f2711c!important}.ui.basic.orange.button:hover,.ui.basic.orange.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #f26202!important;color:#f26202!important}.ui.basic.orange.button:focus,.ui.basic.orange.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #e55b00!important;color:#f26202!important}.ui.basic.orange.active.button,.ui.basic.orange.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #f56100!important;color:#cf590c!important}.ui.basic.orange.button:active,.ui.basic.orange.buttons .button:active{box-shadow:inset 0 0 0 1px #cf590c!important;color:#cf590c!important}.ui.buttons:not(.vertical)>.basic.orange.button:not(:first-child){margin-left:-1px}.ui.inverted.orange.button,.ui.inverted.orange.buttons .button{background-color:transparent;box-shadow:inset 0 0 0 2px #ff851b!important;color:#ff851b}.ui.inverted.orange.button.active,.ui.inverted.orange.button:active,.ui.inverted.orange.button:focus,.ui.inverted.orange.button:hover,.ui.inverted.orange.buttons .button.active,.ui.inverted.orange.buttons .button:active,.ui.inverted.orange.buttons .button:focus,.ui.inverted.orange.buttons .button:hover{box-shadow:none!important;color:#fff}.ui.inverted.orange.button:hover,.ui.inverted.orange.buttons .button:hover{background-color:#ff7701}.ui.inverted.orange.button:focus,.ui.inverted.orange.buttons .button:focus{background-color:#f17000}.ui.inverted.orange.active.button,.ui.inverted.orange.buttons .active.button{background-color:#ff7701}.ui.inverted.orange.button:active,.ui.inverted.orange.buttons .button:active{background-color:#e76b00}.ui.inverted.orange.basic.button,.ui.inverted.orange.basic.buttons .button,.ui.inverted.orange.buttons .basic.button{background-color:transparent;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.5)!important;color:#fff!important}.ui.inverted.orange.basic.button:hover,.ui.inverted.orange.basic.buttons .button:hover,.ui.inverted.orange.buttons .basic.button:hover{box-shadow:inset 0 0 0 2px #ff7701!important;color:#ff851b!important}.ui.inverted.orange.basic.button:focus,.ui.inverted.orange.basic.buttons .button:focus{box-shadow:inset 0 0 0 2px #f17000!important;color:#ff851b!important}.ui.inverted.orange.basic.active.button,.ui.inverted.orange.basic.buttons .active.button,.ui.inverted.orange.buttons .basic.active.button{box-shadow:inset 0 0 0 2px #ff7701!important;color:#ff851b!important}.ui.inverted.orange.basic.button:active,.ui.inverted.orange.basic.buttons .button:active,.ui.inverted.orange.buttons .basic.button:active{box-shadow:inset 0 0 0 2px #e76b00!important;color:#ff851b!important}.ui.pink.button,.ui.pink.buttons .button{background-color:#e03997;color:#fff;text-shadow:none;background-image:none}.ui.pink.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.pink.button:hover,.ui.pink.buttons .button:hover{background-color:#e61a8d;color:#fff;text-shadow:none}.ui.pink.button:focus,.ui.pink.buttons .button:focus{background-color:#e10f85;color:#fff;text-shadow:none}.ui.pink.button:active,.ui.pink.buttons .button:active{background-color:#c71f7e;color:#fff;text-shadow:none}.ui.pink.active.button,.ui.pink.button .active.button:active,.ui.pink.buttons .active.button,.ui.pink.buttons .active.button:active{background-color:#ea158d;color:#fff;text-shadow:none}.ui.basic.pink.button,.ui.basic.pink.buttons .button{box-shadow:inset 0 0 0 1px #e03997!important;color:#e03997!important}.ui.basic.pink.button:hover,.ui.basic.pink.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #e61a8d!important;color:#e61a8d!important}.ui.basic.pink.button:focus,.ui.basic.pink.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #e10f85!important;color:#e61a8d!important}.ui.basic.pink.active.button,.ui.basic.pink.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #ea158d!important;color:#c71f7e!important}.ui.basic.pink.button:active,.ui.basic.pink.buttons .button:active{box-shadow:inset 0 0 0 1px #c71f7e!important;color:#c71f7e!important}.ui.buttons:not(.vertical)>.basic.pink.button:not(:first-child){margin-left:-1px}.ui.inverted.pink.button,.ui.inverted.pink.buttons .button{background-color:transparent;box-shadow:inset 0 0 0 2px #ff8edf!important;color:#ff8edf}.ui.inverted.pink.button.active,.ui.inverted.pink.button:active,.ui.inverted.pink.button:focus,.ui.inverted.pink.button:hover,.ui.inverted.pink.buttons .button.active,.ui.inverted.pink.buttons .button:active,.ui.inverted.pink.buttons .button:focus,.ui.inverted.pink.buttons .button:hover{box-shadow:none!important;color:#fff}.ui.inverted.pink.button:hover,.ui.inverted.pink.buttons .button:hover{background-color:#ff74d8}.ui.inverted.pink.button:focus,.ui.inverted.pink.buttons .button:focus{background-color:#ff65d3}.ui.inverted.pink.active.button,.ui.inverted.pink.buttons .active.button{background-color:#ff74d8}.ui.inverted.pink.button:active,.ui.inverted.pink.buttons .button:active{background-color:#ff5bd1}.ui.inverted.pink.basic.button,.ui.inverted.pink.basic.buttons .button,.ui.inverted.pink.buttons .basic.button{background-color:transparent;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.5)!important;color:#fff!important}.ui.inverted.pink.basic.button:hover,.ui.inverted.pink.basic.buttons .button:hover,.ui.inverted.pink.buttons .basic.button:hover{box-shadow:inset 0 0 0 2px #ff74d8!important;color:#ff8edf!important}.ui.inverted.pink.basic.button:focus,.ui.inverted.pink.basic.buttons .button:focus{box-shadow:inset 0 0 0 2px #ff65d3!important;color:#ff8edf!important}.ui.inverted.pink.basic.active.button,.ui.inverted.pink.basic.buttons .active.button,.ui.inverted.pink.buttons .basic.active.button{box-shadow:inset 0 0 0 2px #ff74d8!important;color:#ff8edf!important}.ui.inverted.pink.basic.button:active,.ui.inverted.pink.basic.buttons .button:active,.ui.inverted.pink.buttons .basic.button:active{box-shadow:inset 0 0 0 2px #ff5bd1!important;color:#ff8edf!important}.ui.violet.button,.ui.violet.buttons .button{background-color:#6435c9;color:#fff;text-shadow:none;background-image:none}.ui.violet.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.violet.button:hover,.ui.violet.buttons .button:hover{background-color:#5829bb;color:#fff;text-shadow:none}.ui.violet.button:focus,.ui.violet.buttons .button:focus{background-color:#4f20b5;color:#fff;text-shadow:none}.ui.violet.button:active,.ui.violet.buttons .button:active{background-color:#502aa1;color:#fff;text-shadow:none}.ui.violet.active.button,.ui.violet.button .active.button:active,.ui.violet.buttons .active.button,.ui.violet.buttons .active.button:active{background-color:#5626bf;color:#fff;text-shadow:none}.ui.basic.violet.button,.ui.basic.violet.buttons .button{box-shadow:inset 0 0 0 1px #6435c9!important;color:#6435c9!important}.ui.basic.violet.button:hover,.ui.basic.violet.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #5829bb!important;color:#5829bb!important}.ui.basic.violet.button:focus,.ui.basic.violet.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #4f20b5!important;color:#5829bb!important}.ui.basic.violet.active.button,.ui.basic.violet.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #5626bf!important;color:#502aa1!important}.ui.basic.violet.button:active,.ui.basic.violet.buttons .button:active{box-shadow:inset 0 0 0 1px #502aa1!important;color:#502aa1!important}.ui.buttons:not(.vertical)>.basic.violet.button:not(:first-child){margin-left:-1px}.ui.inverted.violet.button,.ui.inverted.violet.buttons .button{background-color:transparent;box-shadow:inset 0 0 0 2px #a291fb!important;color:#a291fb}.ui.inverted.violet.button.active,.ui.inverted.violet.button:active,.ui.inverted.violet.button:focus,.ui.inverted.violet.button:hover,.ui.inverted.violet.buttons .button.active,.ui.inverted.violet.buttons .button:active,.ui.inverted.violet.buttons .button:focus,.ui.inverted.violet.buttons .button:hover{box-shadow:none!important;color:#fff}.ui.inverted.violet.button:hover,.ui.inverted.violet.buttons .button:hover{background-color:#8a73ff}.ui.inverted.violet.button:focus,.ui.inverted.violet.buttons .button:focus{background-color:#7d64ff}.ui.inverted.violet.active.button,.ui.inverted.violet.buttons .active.button{background-color:#8a73ff}.ui.inverted.violet.button:active,.ui.inverted.violet.buttons .button:active{background-color:#7860f9}.ui.inverted.violet.basic.button,.ui.inverted.violet.basic.buttons .button,.ui.inverted.violet.buttons .basic.button{background-color:transparent;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.5)!important;color:#fff!important}.ui.inverted.violet.basic.button:hover,.ui.inverted.violet.basic.buttons .button:hover,.ui.inverted.violet.buttons .basic.button:hover{box-shadow:inset 0 0 0 2px #8a73ff!important;color:#a291fb!important}.ui.inverted.violet.basic.button:focus,.ui.inverted.violet.basic.buttons .button:focus{box-shadow:inset 0 0 0 2px #7d64ff!important;color:#a291fb!important}.ui.inverted.violet.basic.active.button,.ui.inverted.violet.basic.buttons .active.button,.ui.inverted.violet.buttons .basic.active.button{box-shadow:inset 0 0 0 2px #8a73ff!important;color:#a291fb!important}.ui.inverted.violet.basic.button:active,.ui.inverted.violet.basic.buttons .button:active,.ui.inverted.violet.buttons .basic.button:active{box-shadow:inset 0 0 0 2px #7860f9!important;color:#a291fb!important}.ui.purple.button,.ui.purple.buttons .button{background-color:#a333c8;color:#fff;text-shadow:none;background-image:none}.ui.purple.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.purple.button:hover,.ui.purple.buttons .button:hover{background-color:#9627ba;color:#fff;text-shadow:none}.ui.purple.button:focus,.ui.purple.buttons .button:focus{background-color:#8f1eb4;color:#fff;text-shadow:none}.ui.purple.button:active,.ui.purple.buttons .button:active{background-color:#82299f;color:#fff;text-shadow:none}.ui.purple.active.button,.ui.purple.button .active.button:active,.ui.purple.buttons .active.button,.ui.purple.buttons .active.button:active{background-color:#9724be;color:#fff;text-shadow:none}.ui.basic.purple.button,.ui.basic.purple.buttons .button{box-shadow:inset 0 0 0 1px #a333c8!important;color:#a333c8!important}.ui.basic.purple.button:hover,.ui.basic.purple.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #9627ba!important;color:#9627ba!important}.ui.basic.purple.button:focus,.ui.basic.purple.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #8f1eb4!important;color:#9627ba!important}.ui.basic.purple.active.button,.ui.basic.purple.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #9724be!important;color:#82299f!important}.ui.basic.purple.button:active,.ui.basic.purple.buttons .button:active{box-shadow:inset 0 0 0 1px #82299f!important;color:#82299f!important}.ui.buttons:not(.vertical)>.basic.purple.button:not(:first-child){margin-left:-1px}.ui.inverted.purple.button,.ui.inverted.purple.buttons .button{background-color:transparent;box-shadow:inset 0 0 0 2px #dc73ff!important;color:#dc73ff}.ui.inverted.purple.button.active,.ui.inverted.purple.button:active,.ui.inverted.purple.button:focus,.ui.inverted.purple.button:hover,.ui.inverted.purple.buttons .button.active,.ui.inverted.purple.buttons .button:active,.ui.inverted.purple.buttons .button:focus,.ui.inverted.purple.buttons .button:hover{box-shadow:none!important;color:#fff}.ui.inverted.purple.button:hover,.ui.inverted.purple.buttons .button:hover{background-color:#d65aff}.ui.inverted.purple.button:focus,.ui.inverted.purple.buttons .button:focus{background-color:#d24aff}.ui.inverted.purple.active.button,.ui.inverted.purple.buttons .active.button{background-color:#d65aff}.ui.inverted.purple.button:active,.ui.inverted.purple.buttons .button:active{background-color:#cf40ff}.ui.inverted.purple.basic.button,.ui.inverted.purple.basic.buttons .button,.ui.inverted.purple.buttons .basic.button{background-color:transparent;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.5)!important;color:#fff!important}.ui.inverted.purple.basic.button:hover,.ui.inverted.purple.basic.buttons .button:hover,.ui.inverted.purple.buttons .basic.button:hover{box-shadow:inset 0 0 0 2px #d65aff!important;color:#dc73ff!important}.ui.inverted.purple.basic.button:focus,.ui.inverted.purple.basic.buttons .button:focus{box-shadow:inset 0 0 0 2px #d24aff!important;color:#dc73ff!important}.ui.inverted.purple.basic.active.button,.ui.inverted.purple.basic.buttons .active.button,.ui.inverted.purple.buttons .basic.active.button{box-shadow:inset 0 0 0 2px #d65aff!important;color:#dc73ff!important}.ui.inverted.purple.basic.button:active,.ui.inverted.purple.basic.buttons .button:active,.ui.inverted.purple.buttons .basic.button:active{box-shadow:inset 0 0 0 2px #cf40ff!important;color:#dc73ff!important}.ui.red.button,.ui.red.buttons .button{background-color:#db2828;color:#fff;text-shadow:none;background-image:none}.ui.red.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.red.button:hover,.ui.red.buttons .button:hover{background-color:#d01919;color:#fff;text-shadow:none}.ui.red.button:focus,.ui.red.buttons .button:focus{background-color:#ca1010;color:#fff;text-shadow:none}.ui.red.button:active,.ui.red.buttons .button:active{background-color:#b21e1e;color:#fff;text-shadow:none}.ui.red.active.button,.ui.red.button .active.button:active,.ui.red.buttons .active.button,.ui.red.buttons .active.button:active{background-color:#d41515;color:#fff;text-shadow:none}.ui.basic.red.button,.ui.basic.red.buttons .button{box-shadow:inset 0 0 0 1px #db2828!important;color:#db2828!important}.ui.basic.red.button:hover,.ui.basic.red.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #d01919!important;color:#d01919!important}.ui.basic.red.button:focus,.ui.basic.red.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #ca1010!important;color:#d01919!important}.ui.basic.red.active.button,.ui.basic.red.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #d41515!important;color:#b21e1e!important}.ui.basic.red.button:active,.ui.basic.red.buttons .button:active{box-shadow:inset 0 0 0 1px #b21e1e!important;color:#b21e1e!important}.ui.buttons:not(.vertical)>.basic.red.button:not(:first-child){margin-left:-1px}.ui.inverted.red.button,.ui.inverted.red.buttons .button{background-color:transparent;box-shadow:inset 0 0 0 2px #ff695e!important;color:#ff695e}.ui.inverted.red.button.active,.ui.inverted.red.button:active,.ui.inverted.red.button:focus,.ui.inverted.red.button:hover,.ui.inverted.red.buttons .button.active,.ui.inverted.red.buttons .button:active,.ui.inverted.red.buttons .button:focus,.ui.inverted.red.buttons .button:hover{box-shadow:none!important;color:#fff}.ui.inverted.red.button:hover,.ui.inverted.red.buttons .button:hover{background-color:#ff5144}.ui.inverted.red.button:focus,.ui.inverted.red.buttons .button:focus{background-color:#ff4335}.ui.inverted.red.active.button,.ui.inverted.red.buttons .active.button{background-color:#ff5144}.ui.inverted.red.button:active,.ui.inverted.red.buttons .button:active{background-color:#ff392b}.ui.inverted.red.basic.button,.ui.inverted.red.basic.buttons .button,.ui.inverted.red.buttons .basic.button{background-color:transparent;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.5)!important;color:#fff!important}.ui.inverted.red.basic.button:hover,.ui.inverted.red.basic.buttons .button:hover,.ui.inverted.red.buttons .basic.button:hover{box-shadow:inset 0 0 0 2px #ff5144!important;color:#ff695e!important}.ui.inverted.red.basic.button:focus,.ui.inverted.red.basic.buttons .button:focus{box-shadow:inset 0 0 0 2px #ff4335!important;color:#ff695e!important}.ui.inverted.red.basic.active.button,.ui.inverted.red.basic.buttons .active.button,.ui.inverted.red.buttons .basic.active.button{box-shadow:inset 0 0 0 2px #ff5144!important;color:#ff695e!important}.ui.inverted.red.basic.button:active,.ui.inverted.red.basic.buttons .button:active,.ui.inverted.red.buttons .basic.button:active{box-shadow:inset 0 0 0 2px #ff392b!important;color:#ff695e!important}.ui.teal.button,.ui.teal.buttons .button{background-color:#00b5ad;color:#fff;text-shadow:none;background-image:none}.ui.teal.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.teal.button:hover,.ui.teal.buttons .button:hover{background-color:#009c95;color:#fff;text-shadow:none}.ui.teal.button:focus,.ui.teal.buttons .button:focus{background-color:#008c86;color:#fff;text-shadow:none}.ui.teal.button:active,.ui.teal.buttons .button:active{background-color:#00827c;color:#fff;text-shadow:none}.ui.teal.active.button,.ui.teal.button .active.button:active,.ui.teal.buttons .active.button,.ui.teal.buttons .active.button:active{background-color:#009c95;color:#fff;text-shadow:none}.ui.basic.teal.button,.ui.basic.teal.buttons .button{box-shadow:inset 0 0 0 1px #00b5ad!important;color:#00b5ad!important}.ui.basic.teal.button:hover,.ui.basic.teal.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #009c95!important;color:#009c95!important}.ui.basic.teal.button:focus,.ui.basic.teal.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #008c86!important;color:#009c95!important}.ui.basic.teal.active.button,.ui.basic.teal.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #009c95!important;color:#00827c!important}.ui.basic.teal.button:active,.ui.basic.teal.buttons .button:active{box-shadow:inset 0 0 0 1px #00827c!important;color:#00827c!important}.ui.buttons:not(.vertical)>.basic.teal.button:not(:first-child){margin-left:-1px}.ui.inverted.teal.button,.ui.inverted.teal.buttons .button{background-color:transparent;box-shadow:inset 0 0 0 2px #6dffff!important;color:#6dffff}.ui.inverted.teal.button.active,.ui.inverted.teal.button:active,.ui.inverted.teal.button:focus,.ui.inverted.teal.button:hover,.ui.inverted.teal.buttons .button.active,.ui.inverted.teal.buttons .button:active,.ui.inverted.teal.buttons .button:focus,.ui.inverted.teal.buttons .button:hover{box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.teal.button:hover,.ui.inverted.teal.buttons .button:hover{background-color:#54ffff}.ui.inverted.teal.button:focus,.ui.inverted.teal.buttons .button:focus{background-color:#4ff}.ui.inverted.teal.active.button,.ui.inverted.teal.buttons .active.button{background-color:#54ffff}.ui.inverted.teal.button:active,.ui.inverted.teal.buttons .button:active{background-color:#3affff}.ui.inverted.teal.basic.button,.ui.inverted.teal.basic.buttons .button,.ui.inverted.teal.buttons .basic.button{background-color:transparent;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.5)!important;color:#fff!important}.ui.inverted.teal.basic.button:hover,.ui.inverted.teal.basic.buttons .button:hover,.ui.inverted.teal.buttons .basic.button:hover{box-shadow:inset 0 0 0 2px #54ffff!important;color:#6dffff!important}.ui.inverted.teal.basic.button:focus,.ui.inverted.teal.basic.buttons .button:focus{box-shadow:inset 0 0 0 2px #4ff!important;color:#6dffff!important}.ui.inverted.teal.basic.active.button,.ui.inverted.teal.basic.buttons .active.button,.ui.inverted.teal.buttons .basic.active.button{box-shadow:inset 0 0 0 2px #54ffff!important;color:#6dffff!important}.ui.inverted.teal.basic.button:active,.ui.inverted.teal.basic.buttons .button:active,.ui.inverted.teal.buttons .basic.button:active{box-shadow:inset 0 0 0 2px #3affff!important;color:#6dffff!important}.ui.olive.button,.ui.olive.buttons .button{background-color:#b5cc18;color:#fff;text-shadow:none;background-image:none}.ui.olive.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.olive.button:hover,.ui.olive.buttons .button:hover{background-color:#a7bd0d;color:#fff;text-shadow:none}.ui.olive.button:focus,.ui.olive.buttons .button:focus{background-color:#a0b605;color:#fff;text-shadow:none}.ui.olive.button:active,.ui.olive.buttons .button:active{background-color:#8d9e13;color:#fff;text-shadow:none}.ui.olive.active.button,.ui.olive.button .active.button:active,.ui.olive.buttons .active.button,.ui.olive.buttons .active.button:active{background-color:#aac109;color:#fff;text-shadow:none}.ui.basic.olive.button,.ui.basic.olive.buttons .button{box-shadow:inset 0 0 0 1px #b5cc18!important;color:#b5cc18!important}.ui.basic.olive.button:hover,.ui.basic.olive.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #a7bd0d!important;color:#a7bd0d!important}.ui.basic.olive.button:focus,.ui.basic.olive.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #a0b605!important;color:#a7bd0d!important}.ui.basic.olive.active.button,.ui.basic.olive.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #aac109!important;color:#8d9e13!important}.ui.basic.olive.button:active,.ui.basic.olive.buttons .button:active{box-shadow:inset 0 0 0 1px #8d9e13!important;color:#8d9e13!important}.ui.buttons:not(.vertical)>.basic.olive.button:not(:first-child){margin-left:-1px}.ui.inverted.olive.button,.ui.inverted.olive.buttons .button{background-color:transparent;box-shadow:inset 0 0 0 2px #d9e778!important;color:#d9e778}.ui.inverted.olive.button.active,.ui.inverted.olive.button:active,.ui.inverted.olive.button:focus,.ui.inverted.olive.button:hover,.ui.inverted.olive.buttons .button.active,.ui.inverted.olive.buttons .button:active,.ui.inverted.olive.buttons .button:focus,.ui.inverted.olive.buttons .button:hover{box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.olive.button:hover,.ui.inverted.olive.buttons .button:hover{background-color:#d8ea5c}.ui.inverted.olive.button:focus,.ui.inverted.olive.buttons .button:focus{background-color:#daef47}.ui.inverted.olive.active.button,.ui.inverted.olive.buttons .active.button{background-color:#daed59}.ui.inverted.olive.button:active,.ui.inverted.olive.buttons .button:active{background-color:#cddf4d}.ui.inverted.olive.basic.button,.ui.inverted.olive.basic.buttons .button,.ui.inverted.olive.buttons .basic.button{background-color:transparent;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.5)!important;color:#fff!important}.ui.inverted.olive.basic.button:hover,.ui.inverted.olive.basic.buttons .button:hover,.ui.inverted.olive.buttons .basic.button:hover{box-shadow:inset 0 0 0 2px #d8ea5c!important;color:#d9e778!important}.ui.inverted.olive.basic.button:focus,.ui.inverted.olive.basic.buttons .button:focus{box-shadow:inset 0 0 0 2px #daef47!important;color:#d9e778!important}.ui.inverted.olive.basic.active.button,.ui.inverted.olive.basic.buttons .active.button,.ui.inverted.olive.buttons .basic.active.button{box-shadow:inset 0 0 0 2px #daed59!important;color:#d9e778!important}.ui.inverted.olive.basic.button:active,.ui.inverted.olive.basic.buttons .button:active,.ui.inverted.olive.buttons .basic.button:active{box-shadow:inset 0 0 0 2px #cddf4d!important;color:#d9e778!important}.ui.yellow.button,.ui.yellow.buttons .button{background-color:#fbbd08;color:#fff;text-shadow:none;background-image:none}.ui.yellow.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.yellow.button:hover,.ui.yellow.buttons .button:hover{background-color:#eaae00;color:#fff;text-shadow:none}.ui.yellow.button:focus,.ui.yellow.buttons .button:focus{background-color:#daa300;color:#fff;text-shadow:none}.ui.yellow.button:active,.ui.yellow.buttons .button:active{background-color:#cd9903;color:#fff;text-shadow:none}.ui.yellow.active.button,.ui.yellow.button .active.button:active,.ui.yellow.buttons .active.button,.ui.yellow.buttons .active.button:active{background-color:#eaae00;color:#fff;text-shadow:none}.ui.basic.yellow.button,.ui.basic.yellow.buttons .button{box-shadow:inset 0 0 0 1px #fbbd08!important;color:#fbbd08!important}.ui.basic.yellow.button:hover,.ui.basic.yellow.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #eaae00!important;color:#eaae00!important}.ui.basic.yellow.button:focus,.ui.basic.yellow.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #daa300!important;color:#eaae00!important}.ui.basic.yellow.active.button,.ui.basic.yellow.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #eaae00!important;color:#cd9903!important}.ui.basic.yellow.button:active,.ui.basic.yellow.buttons .button:active{box-shadow:inset 0 0 0 1px #cd9903!important;color:#cd9903!important}.ui.buttons:not(.vertical)>.basic.yellow.button:not(:first-child){margin-left:-1px}.ui.inverted.yellow.button,.ui.inverted.yellow.buttons .button{background-color:transparent;box-shadow:inset 0 0 0 2px #ffe21f!important;color:#ffe21f}.ui.inverted.yellow.button.active,.ui.inverted.yellow.button:active,.ui.inverted.yellow.button:focus,.ui.inverted.yellow.button:hover,.ui.inverted.yellow.buttons .button.active,.ui.inverted.yellow.buttons .button:active,.ui.inverted.yellow.buttons .button:focus,.ui.inverted.yellow.buttons .button:hover{box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.yellow.button:hover,.ui.inverted.yellow.buttons .button:hover{background-color:#ffdf05}.ui.inverted.yellow.button:focus,.ui.inverted.yellow.buttons .button:focus{background-color:#f5d500}.ui.inverted.yellow.active.button,.ui.inverted.yellow.buttons .active.button{background-color:#ffdf05}.ui.inverted.yellow.button:active,.ui.inverted.yellow.buttons .button:active{background-color:#ebcd00}.ui.inverted.yellow.basic.button,.ui.inverted.yellow.basic.buttons .button,.ui.inverted.yellow.buttons .basic.button{background-color:transparent;box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.5)!important;color:#fff!important}.ui.inverted.yellow.basic.button:hover,.ui.inverted.yellow.basic.buttons .button:hover,.ui.inverted.yellow.buttons .basic.button:hover{box-shadow:inset 0 0 0 2px #ffdf05!important;color:#ffe21f!important}.ui.inverted.yellow.basic.button:focus,.ui.inverted.yellow.basic.buttons .button:focus{box-shadow:inset 0 0 0 2px #f5d500!important;color:#ffe21f!important}.ui.inverted.yellow.basic.active.button,.ui.inverted.yellow.basic.buttons .active.button,.ui.inverted.yellow.buttons .basic.active.button{box-shadow:inset 0 0 0 2px #ffdf05!important;color:#ffe21f!important}.ui.inverted.yellow.basic.button:active,.ui.inverted.yellow.basic.buttons .button:active,.ui.inverted.yellow.buttons .basic.button:active{box-shadow:inset 0 0 0 2px #ebcd00!important;color:#ffe21f!important}.ui.primary.button,.ui.primary.buttons .button{background-color:#2185d0;color:#fff;text-shadow:none;background-image:none}.ui.primary.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.primary.button:hover,.ui.primary.buttons .button:hover{background-color:#1678c2;color:#fff;text-shadow:none}.ui.primary.button:focus,.ui.primary.buttons .button:focus{background-color:#0d71bb;color:#fff;text-shadow:none}.ui.primary.button:active,.ui.primary.buttons .button:active{background-color:#1a69a4;color:#fff;text-shadow:none}.ui.primary.active.button,.ui.primary.button .active.button:active,.ui.primary.buttons .active.button,.ui.primary.buttons .active.button:active{background-color:#1279c6;color:#fff;text-shadow:none}.ui.basic.primary.button,.ui.basic.primary.buttons .button{box-shadow:inset 0 0 0 1px #2185d0!important;color:#2185d0!important}.ui.basic.primary.button:hover,.ui.basic.primary.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #1678c2!important;color:#1678c2!important}.ui.basic.primary.button:focus,.ui.basic.primary.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #0d71bb!important;color:#1678c2!important}.ui.basic.primary.active.button,.ui.basic.primary.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #1279c6!important;color:#1a69a4!important}.ui.basic.primary.button:active,.ui.basic.primary.buttons .button:active{box-shadow:inset 0 0 0 1px #1a69a4!important;color:#1a69a4!important}.ui.secondary.button,.ui.secondary.buttons .button{background-color:#1b1c1d;color:#fff;text-shadow:none;background-image:none}.ui.secondary.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.secondary.button:hover,.ui.secondary.buttons .button:hover{background-color:#27292a;color:#fff;text-shadow:none}.ui.secondary.button:focus,.ui.secondary.buttons .button:focus{background-color:#2e3032;color:#fff;text-shadow:none}.ui.secondary.button:active,.ui.secondary.buttons .button:active{background-color:#343637;color:#fff;text-shadow:none}.ui.secondary.active.button,.ui.secondary.button .active.button:active,.ui.secondary.buttons .active.button,.ui.secondary.buttons .active.button:active{background-color:#27292a;color:#fff;text-shadow:none}.ui.basic.secondary.button,.ui.basic.secondary.buttons .button{box-shadow:inset 0 0 0 1px #1b1c1d!important;color:#1b1c1d!important}.ui.basic.secondary.button:hover,.ui.basic.secondary.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #27292a!important;color:#27292a!important}.ui.basic.secondary.button:focus,.ui.basic.secondary.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #2e3032!important;color:#27292a!important}.ui.basic.secondary.active.button,.ui.basic.secondary.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #27292a!important;color:#343637!important}.ui.basic.secondary.button:active,.ui.basic.secondary.buttons .button:active{box-shadow:inset 0 0 0 1px #343637!important;color:#343637!important}.ui.positive.button,.ui.positive.buttons .button{background-color:#21ba45;color:#fff;text-shadow:none;background-image:none}.ui.positive.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.positive.button:hover,.ui.positive.buttons .button:hover{background-color:#16ab39;color:#fff;text-shadow:none}.ui.positive.button:focus,.ui.positive.buttons .button:focus{background-color:#0ea432;color:#fff;text-shadow:none}.ui.positive.button:active,.ui.positive.buttons .button:active{background-color:#198f35;color:#fff;text-shadow:none}.ui.positive.active.button,.ui.positive.button .active.button:active,.ui.positive.buttons .active.button,.ui.positive.buttons .active.button:active{background-color:#13ae38;color:#fff;text-shadow:none}.ui.basic.positive.button,.ui.basic.positive.buttons .button{box-shadow:inset 0 0 0 1px #21ba45!important;color:#21ba45!important}.ui.basic.positive.button:hover,.ui.basic.positive.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #16ab39!important;color:#16ab39!important}.ui.basic.positive.button:focus,.ui.basic.positive.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #0ea432!important;color:#16ab39!important}.ui.basic.positive.active.button,.ui.basic.positive.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #13ae38!important;color:#198f35!important}.ui.basic.positive.button:active,.ui.basic.positive.buttons .button:active{box-shadow:inset 0 0 0 1px #198f35!important;color:#198f35!important}.ui.negative.button,.ui.negative.buttons .button{background-color:#db2828;color:#fff;text-shadow:none;background-image:none}.ui.negative.button{box-shadow:inset 0 0 0 0 rgba(34,36,38,.15)}.ui.negative.button:hover,.ui.negative.buttons .button:hover{background-color:#d01919;color:#fff;text-shadow:none}.ui.negative.button:focus,.ui.negative.buttons .button:focus{background-color:#ca1010;color:#fff;text-shadow:none}.ui.negative.button:active,.ui.negative.buttons .button:active{background-color:#b21e1e;color:#fff;text-shadow:none}.ui.negative.active.button,.ui.negative.button .active.button:active,.ui.negative.buttons .active.button,.ui.negative.buttons .active.button:active{background-color:#d41515;color:#fff;text-shadow:none}.ui.basic.negative.button,.ui.basic.negative.buttons .button{box-shadow:inset 0 0 0 1px #db2828!important;color:#db2828!important}.ui.basic.negative.button:hover,.ui.basic.negative.buttons .button:hover{background:transparent!important;box-shadow:inset 0 0 0 1px #d01919!important;color:#d01919!important}.ui.basic.negative.button:focus,.ui.basic.negative.buttons .button:focus{background:transparent!important;box-shadow:inset 0 0 0 1px #ca1010!important;color:#d01919!important}.ui.basic.negative.active.button,.ui.basic.negative.buttons .active.button{background:transparent!important;box-shadow:inset 0 0 0 1px #d41515!important;color:#b21e1e!important}.ui.basic.negative.button:active,.ui.basic.negative.buttons .button:active{box-shadow:inset 0 0 0 1px #b21e1e!important;color:#b21e1e!important}.ui.buttons:not(.vertical)>.basic.primary.button:not(:first-child){margin-left:-1px}.ui.buttons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row;font-size:0;vertical-align:baseline;margin:0 .25em 0 0}.ui.buttons:not(.basic):not(.inverted){box-shadow:none}.ui.buttons:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.buttons .button{-webkit-box-flex:1;-ms-flex:1 0 auto;-webkit-flex:1 0 auto;flex:1 0 auto;border-radius:0;margin:0}.ui.buttons:not(.basic):not(.inverted)>.button,.ui.buttons>.ui.button:not(.basic):not(.inverted){box-shadow:inset 0 0 0 1px transparent,inset 0 0 0 0 rgba(34,36,38,.15)}.ui.buttons .button:first-child{border-left:none;margin-left:0;border-top-left-radius:.28571429rem;border-bottom-left-radius:.28571429rem}.ui.buttons .button:last-child{border-top-right-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.vertical.buttons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.ui.vertical.buttons .button{display:block;float:none;width:100%;margin:0;box-shadow:none;border-radius:0}.ui.vertical.buttons .button:first-child{border-top-left-radius:.28571429rem;border-top-right-radius:.28571429rem}.ui.vertical.buttons .button:last-child{margin-bottom:0;border-bottom-left-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.vertical.buttons .button:only-child{border-radius:.28571429rem}/*! + * # Semantic UI 2.2.9 - Segment + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.segment{position:relative;background:#fff;box-shadow:0 1px 2px 0 rgba(34,36,38,.15);margin:1rem 0;padding:1em;border-radius:.28571429rem;border:1px solid rgba(34,36,38,.15)}.ui.segment:first-child{margin-top:0}.ui.segment:last-child{margin-bottom:0}.ui.vertical.segment{margin:0;padding-left:0;padding-right:0;background:none transparent;border-radius:0;box-shadow:none;border:none;border-bottom:1px solid rgba(34,36,38,.15)}.ui.vertical.segment:last-child{border-bottom:none}.ui.inverted.segment>.ui.header{color:#fff}.ui[class*="bottom attached"].segment>[class*="top attached"].label{border-top-left-radius:0;border-top-right-radius:0}.ui[class*="top attached"].segment>[class*="bottom attached"].label{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui.attached.segment:not(.top):not(.bottom)>[class*="top attached"].label{border-top-left-radius:0;border-top-right-radius:0}.ui.attached.segment:not(.top):not(.bottom)>[class*="bottom attached"].label{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui.grid>.row>.ui.segment.column,.ui.grid>.ui.segment.column,.ui.page.grid.segment{padding-top:2em;padding-bottom:2em}.ui.grid.segment{margin:1rem 0;border-radius:.28571429rem}.ui.basic.table.segment{background:#fff;border:1px solid rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15)}.ui[class*="very basic"].table.segment{padding:1em}.ui.piled.segment,.ui.piled.segments{margin:3em 0;box-shadow:"";z-index:auto}.ui.piled.segment:first-child{margin-top:0}.ui.piled.segment:last-child{margin-bottom:0}.ui.piled.segment:after,.ui.piled.segment:before,.ui.piled.segments:after,.ui.piled.segments:before{background-color:#fff;visibility:visible;content:"";display:block;height:100%;left:0;position:absolute;width:100%;border:1px solid rgba(34,36,38,.15);box-shadow:""}.ui.piled.segment:before,.ui.piled.segments:before{-webkit-transform:rotate(-1.2deg);-ms-transform:rotate(-1.2deg);transform:rotate(-1.2deg);top:0;z-index:-2}.ui.piled.segment:after,.ui.piled.segments:after{-webkit-transform:rotate(1.2deg);-ms-transform:rotate(1.2deg);transform:rotate(1.2deg);top:0;z-index:-1}.ui[class*="top attached"].piled.segment{margin-top:3em;margin-bottom:0}.ui.piled.segment[class*="top attached"]:first-child{margin-top:0}.ui.piled.segment[class*="bottom attached"]{margin-top:0;margin-bottom:3em}.ui.piled.segment[class*="bottom attached"]:last-child{margin-bottom:0}.ui.stacked.segment{padding-bottom:1.4em}.ui.stacked.segment:after,.ui.stacked.segment:before,.ui.stacked.segments:after,.ui.stacked.segments:before{content:"";position:absolute;bottom:-3px;left:0;border-top:1px solid rgba(34,36,38,.15);background:rgba(0,0,0,.03);width:100%;height:6px;visibility:visible}.ui.stacked.segment:before,.ui.stacked.segments:before{display:none}.ui.tall.stacked.segment:before,.ui.tall.stacked.segments:before{display:block;bottom:0}.ui.stacked.inverted.segment:after,.ui.stacked.inverted.segment:before,.ui.stacked.inverted.segments:after,.ui.stacked.inverted.segments:before{background-color:rgba(0,0,0,.03);border-top:1px solid rgba(34,36,38,.35)}.ui.padded.segment{padding:1.5em}.ui[class*="very padded"].segment{padding:3em}.ui.padded.segment.vertical.segment,.ui[class*="very padded"].vertical.segment{padding-left:0;padding-right:0}.ui.compact.segment{display:table}.ui.compact.segments{display:-webkit-inline-box;display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex}.ui.compact.segments .segment,.ui.segments .compact.segment{display:block;-webkit-box-flex:0;-ms-flex:0 1 auto;-webkit-flex:0 1 auto;flex:0 1 auto}.ui.circular.segment{display:table-cell;padding:2em;text-align:center;vertical-align:middle;border-radius:500em}.ui.raised.segment,.ui.raised.segments{box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.segments{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;position:relative;margin:1rem 0;border:1px solid rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15);border-radius:.28571429rem}.ui.segments:first-child{margin-top:0}.ui.segments:last-child{margin-bottom:0}.ui.segments>.segment{top:0;bottom:0;border-radius:0;margin:0;width:auto;box-shadow:none;border:none;border-top:1px solid rgba(34,36,38,.15)}.ui.segments:not(.horizontal)>.segment:first-child{border-top:none;margin-top:0;bottom:0;margin-bottom:0;top:0;border-radius:.28571429rem .28571429rem 0 0}.ui.segments:not(.horizontal)>.segment:last-child{top:0;bottom:0;margin-top:0;margin-bottom:0;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;border-radius:0 0 .28571429rem .28571429rem}.ui.segments:not(.horizontal)>.segment:only-child{border-radius:.28571429rem}.ui.segments>.ui.segments{border-top:1px solid rgba(34,36,38,.15);margin:1rem}.ui.segments>.segments:first-child{border-top:none}.ui.segments>.segment+.segments:not(.horizontal){margin-top:0}.ui.horizontal.segments{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row;background-color:transparent;border-radius:0;padding:0;background-color:#fff;box-shadow:0 1px 2px 0 rgba(34,36,38,.15);margin:1rem 0;border-radius:.28571429rem;border:1px solid rgba(34,36,38,.15)}.ui.segments>.horizontal.segments{margin:0;background-color:transparent;border-radius:0;border:none;box-shadow:none;border-top:1px solid rgba(34,36,38,.15)}.ui.horizontal.segments>.segment{-webkit-box-flex:1;-webkit-flex:1 1 auto;flex:1 1 auto;-ms-flex:1 1 0px;margin:0;min-width:0;background-color:transparent;border-radius:0;border:none;box-shadow:none;border-left:1px solid rgba(34,36,38,.15)}.ui.segments>.horizontal.segments:first-child{border-top:none}.ui.horizontal.segments>.segment:first-child{border-left:none}.ui.disabled.segment{opacity:.45;color:rgba(40,40,40,.3)}.ui.loading.segment{position:relative;cursor:default;pointer-events:none;text-shadow:none!important;color:transparent!important;-webkit-transition:all 0s linear;transition:all 0s linear}.ui.loading.segment:before{position:absolute;content:"";top:0;left:0;background:hsla(0,0%,100%,.8);width:100%;height:100%;border-radius:.28571429rem;z-index:100}.ui.loading.segment:after{position:absolute;content:"";top:50%;left:50%;margin:-1.5em 0 0 -1.5em;width:3em;height:3em;-webkit-animation:segment-spin .6s linear;animation:segment-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 rgba(0,0,0,.1) rgba(0,0,0,.1);border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent;visibility:visible;z-index:101}@-webkit-keyframes segment-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes segment-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.ui.basic.segment{background:none transparent;box-shadow:none;border:none;border-radius:0}.ui.clearing.segment:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.red.segment:not(.inverted){border-top:2px solid #db2828}.ui.inverted.red.segment{background-color:#db2828!important;color:#fff!important}.ui.orange.segment:not(.inverted){border-top:2px solid #f2711c}.ui.inverted.orange.segment{background-color:#f2711c!important;color:#fff!important}.ui.yellow.segment:not(.inverted){border-top:2px solid #fbbd08}.ui.inverted.yellow.segment{background-color:#fbbd08!important;color:#fff!important}.ui.olive.segment:not(.inverted){border-top:2px solid #b5cc18}.ui.inverted.olive.segment{background-color:#b5cc18!important;color:#fff!important}.ui.green.segment:not(.inverted){border-top:2px solid #21ba45}.ui.inverted.green.segment{background-color:#21ba45!important;color:#fff!important}.ui.teal.segment:not(.inverted){border-top:2px solid #00b5ad}.ui.inverted.teal.segment{background-color:#00b5ad!important;color:#fff!important}.ui.blue.segment:not(.inverted){border-top:2px solid #2185d0}.ui.inverted.blue.segment{background-color:#2185d0!important;color:#fff!important}.ui.violet.segment:not(.inverted){border-top:2px solid #6435c9}.ui.inverted.violet.segment{background-color:#6435c9!important;color:#fff!important}.ui.purple.segment:not(.inverted){border-top:2px solid #a333c8}.ui.inverted.purple.segment{background-color:#a333c8!important;color:#fff!important}.ui.pink.segment:not(.inverted){border-top:2px solid #e03997}.ui.inverted.pink.segment{background-color:#e03997!important;color:#fff!important}.ui.brown.segment:not(.inverted){border-top:2px solid #a5673f}.ui.inverted.brown.segment{background-color:#a5673f!important;color:#fff!important}.ui.grey.segment:not(.inverted){border-top:2px solid #767676}.ui.inverted.grey.segment{background-color:#767676!important;color:#fff!important}.ui.black.segment:not(.inverted){border-top:2px solid #1b1c1d}.ui.inverted.black.segment{background-color:#1b1c1d!important;color:#fff!important}.ui[class*="left aligned"].segment{text-align:left}.ui[class*="right aligned"].segment{text-align:right}.ui[class*="center aligned"].segment{text-align:center}.ui.floated.segment,.ui[class*="left floated"].segment{float:left;margin-right:1em}.ui[class*="right floated"].segment{float:right;margin-left:1em}.ui.inverted.segment{border:none;box-shadow:none}.ui.inverted.segment,.ui.primary.inverted.segment{background:#1b1c1d;color:hsla(0,0%,100%,.9)}.ui.inverted.segment .segment{color:rgba(0,0,0,.87)}.ui.inverted.segment .inverted.segment{color:hsla(0,0%,100%,.9)}.ui.inverted.attached.segment{border-color:#555}.ui.secondary.segment{background:#f3f4f5;color:rgba(0,0,0,.6)}.ui.secondary.inverted.segment{background:#4c4f52 -webkit-linear-gradient(hsla(0,0%,100%,.2),hsla(0,0%,100%,.2));background:#4c4f52 linear-gradient(hsla(0,0%,100%,.2),hsla(0,0%,100%,.2));color:hsla(0,0%,100%,.8)}.ui.tertiary.segment{background:#dcddde;color:rgba(0,0,0,.6)}.ui.tertiary.inverted.segment{background:#717579 -webkit-linear-gradient(hsla(0,0%,100%,.35),hsla(0,0%,100%,.35));background:#717579 linear-gradient(hsla(0,0%,100%,.35),hsla(0,0%,100%,.35));color:hsla(0,0%,100%,.8)}.ui.attached.segment{top:0;bottom:0;border-radius:0;margin:0 -1px;width:calc(100% + 2px);max-width:calc(100% + 2px);box-shadow:none;border:1px solid #d4d4d5}.ui.attached:not(.message)+.ui.attached.segment:not(.top){border-top:none}.ui[class*="top attached"].segment{bottom:0;margin-bottom:0;top:0;margin-top:1rem;border-radius:.28571429rem .28571429rem 0 0}.ui.segment[class*="top attached"]:first-child{margin-top:0}.ui.segment[class*="bottom attached"]{bottom:0;margin-top:0;top:0;margin-bottom:1rem;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;border-radius:0 0 .28571429rem .28571429rem}.ui.segment[class*="bottom attached"]:last-child{margin-bottom:0}.ui.mini.segment,.ui.mini.segments .segment{font-size:.78571429rem}.ui.tiny.segment,.ui.tiny.segments .segment{font-size:.85714286rem}.ui.small.segment,.ui.small.segments .segment{font-size:.92857143rem}.ui.segment,.ui.segments .segment{font-size:1rem}.ui.large.segment,.ui.large.segments .segment{font-size:1.14285714rem}.ui.big.segment,.ui.big.segments .segment{font-size:1.28571429rem}.ui.huge.segment,.ui.huge.segments .segment{font-size:1.42857143rem}.ui.massive.segment,.ui.massive.segments .segment{font-size:1.71428571rem}/*! + * # Semantic UI 2.2.9 - Checkbox + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.checkbox{position:relative;display:inline-block;-webkit-backface-visibility:hidden;backface-visibility:hidden;outline:none;vertical-align:baseline;font-style:normal;min-height:17px;font-size:1rem;line-height:17px;min-width:17px}.ui.checkbox input[type=checkbox],.ui.checkbox input[type=radio]{cursor:pointer;position:absolute;top:0;left:0;opacity:0!important;outline:none;z-index:3;width:17px;height:17px}.ui.checkbox .box,.ui.checkbox label{cursor:auto;position:relative;display:block;padding-left:1.85714em;outline:none;font-size:1em}.ui.checkbox .box:before,.ui.checkbox label:before{content:"";background:#fff;border-radius:.21428571rem;border:1px solid #d4d4d5}.ui.checkbox .box:after,.ui.checkbox .box:before,.ui.checkbox label:after,.ui.checkbox label:before{position:absolute;top:0;left:0;width:17px;height:17px;-webkit-transition:border .1s ease,opacity .1s ease,box-shadow .1s ease,-webkit-transform .1s ease;transition:border .1s ease,opacity .1s ease,box-shadow .1s ease,-webkit-transform .1s ease;transition:border .1s ease,opacity .1s ease,transform .1s ease,box-shadow .1s ease;transition:border .1s ease,opacity .1s ease,transform .1s ease,box-shadow .1s ease,-webkit-transform .1s ease}.ui.checkbox .box:after,.ui.checkbox label:after{font-size:14px;text-align:center;opacity:0;color:rgba(0,0,0,.87)}.ui.checkbox+label,.ui.checkbox label{color:rgba(0,0,0,.87);-webkit-transition:color .1s ease;transition:color .1s ease}.ui.checkbox+label{vertical-align:middle}.ui.checkbox .box:hover:before,.ui.checkbox label:hover:before{background:#fff;border-color:rgba(34,36,38,.35)}.ui.checkbox+label:hover,.ui.checkbox label:hover{color:rgba(0,0,0,.8)}.ui.checkbox .box:active:before,.ui.checkbox label:active:before{background:#f9fafb;border-color:rgba(34,36,38,.35)}.ui.checkbox .box:active:after,.ui.checkbox input:active~label,.ui.checkbox label:active:after{color:rgba(0,0,0,.95)}.ui.checkbox input:focus~.box:before,.ui.checkbox input:focus~label:before{background:#fff;border-color:#96c8da}.ui.checkbox input:focus~.box:after,.ui.checkbox input:focus~label,.ui.checkbox input:focus~label:after{color:rgba(0,0,0,.95)}.ui.checkbox input:checked~.box:before,.ui.checkbox input:checked~label:before{background:#fff;border-color:rgba(34,36,38,.35)}.ui.checkbox input:checked~.box:after,.ui.checkbox input:checked~label:after{opacity:1;color:rgba(0,0,0,.95)}.ui.checkbox input:not([type=radio]):indeterminate~.box:before,.ui.checkbox input:not([type=radio]):indeterminate~label:before{background:#fff;border-color:rgba(34,36,38,.35)}.ui.checkbox input:not([type=radio]):indeterminate~.box:after,.ui.checkbox input:not([type=radio]):indeterminate~label:after{opacity:1;color:rgba(0,0,0,.95)}.ui.checkbox input:checked:focus~.box:before,.ui.checkbox input:checked:focus~label:before,.ui.checkbox input:not([type=radio]):indeterminate:focus~.box:before,.ui.checkbox input:not([type=radio]):indeterminate:focus~label:before{background:#fff;border-color:#96c8da}.ui.checkbox input:checked:focus~.box:after,.ui.checkbox input:checked:focus~label:after,.ui.checkbox input:not([type=radio]):indeterminate:focus~.box:after,.ui.checkbox input:not([type=radio]):indeterminate:focus~label:after{color:rgba(0,0,0,.95)}.ui.read-only.checkbox,.ui.read-only.checkbox label{cursor:default}.ui.checkbox input[disabled]~.box:after,.ui.checkbox input[disabled]~label,.ui.disabled.checkbox .box:after,.ui.disabled.checkbox label{cursor:default!important;opacity:.5;color:#000}.ui.checkbox input.hidden{z-index:-1}.ui.checkbox input.hidden+label{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui.radio.checkbox{min-height:15px}.ui.radio.checkbox .box,.ui.radio.checkbox label{padding-left:1.85714em}.ui.radio.checkbox .box:before,.ui.radio.checkbox label:before{content:"";-webkit-transform:none;-ms-transform:none;transform:none;width:15px;height:15px;border-radius:500rem;top:1px;left:0}.ui.radio.checkbox .box:after,.ui.radio.checkbox label:after{border:none;content:""!important;line-height:15px;top:1px;left:0;width:15px;height:15px;border-radius:500rem;-webkit-transform:scale(.46666667);-ms-transform:scale(.46666667);transform:scale(.46666667);background-color:rgba(0,0,0,.87)}.ui.radio.checkbox input:focus~.box:before,.ui.radio.checkbox input:focus~label:before{background-color:#fff}.ui.radio.checkbox input:focus~.box:after,.ui.radio.checkbox input:focus~label:after{background-color:rgba(0,0,0,.95)}.ui.radio.checkbox input:indeterminate~.box:after,.ui.radio.checkbox input:indeterminate~label:after{opacity:0}.ui.radio.checkbox input:checked~.box:before,.ui.radio.checkbox input:checked~label:before{background-color:#fff}.ui.radio.checkbox input:checked~.box:after,.ui.radio.checkbox input:checked~label:after{background-color:rgba(0,0,0,.95)}.ui.radio.checkbox input:focus:checked~.box:before,.ui.radio.checkbox input:focus:checked~label:before{background-color:#fff}.ui.radio.checkbox input:focus:checked~.box:after,.ui.radio.checkbox input:focus:checked~label:after{background-color:rgba(0,0,0,.95)}.ui.slider.checkbox{min-height:1.25rem}.ui.slider.checkbox input{width:3.5rem;height:1.25rem}.ui.slider.checkbox .box,.ui.slider.checkbox label{padding-left:4.5rem;line-height:1rem;color:rgba(0,0,0,.4)}.ui.slider.checkbox .box:before,.ui.slider.checkbox label:before{display:block;position:absolute;content:"";border:none!important;left:0;z-index:1;top:.4rem;background-color:rgba(0,0,0,.05);width:3.5rem;height:.21428571rem;-webkit-transform:none;-ms-transform:none;transform:none;border-radius:500rem;-webkit-transition:background .3s ease;transition:background .3s ease}.ui.slider.checkbox .box:after,.ui.slider.checkbox label:after{background:#fff -webkit-linear-gradient(transparent,rgba(0,0,0,.05));background:#fff linear-gradient(transparent,rgba(0,0,0,.05));position:absolute;content:""!important;opacity:1;z-index:2;border:none;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),inset 0 0 0 1px rgba(34,36,38,.15);width:1.5rem;height:1.5rem;top:-.25rem;left:0;-webkit-transform:none;-ms-transform:none;transform:none;border-radius:500rem;-webkit-transition:left .3s ease;transition:left .3s ease}.ui.slider.checkbox input:focus~.box:before,.ui.slider.checkbox input:focus~label:before{background-color:rgba(0,0,0,.15);border:none}.ui.slider.checkbox .box:hover,.ui.slider.checkbox label:hover{color:rgba(0,0,0,.8)}.ui.slider.checkbox .box:hover:before,.ui.slider.checkbox label:hover:before{background:rgba(0,0,0,.15)}.ui.slider.checkbox input:checked~.box,.ui.slider.checkbox input:checked~label{color:rgba(0,0,0,.95)!important}.ui.slider.checkbox input:checked~.box:before,.ui.slider.checkbox input:checked~label:before{background-color:#545454!important}.ui.slider.checkbox input:checked~.box:after,.ui.slider.checkbox input:checked~label:after{left:2rem}.ui.slider.checkbox input:focus:checked~.box,.ui.slider.checkbox input:focus:checked~label{color:rgba(0,0,0,.95)!important}.ui.slider.checkbox input:focus:checked~.box:before,.ui.slider.checkbox input:focus:checked~label:before{background-color:#000!important}.ui.toggle.checkbox{min-height:1.5rem}.ui.toggle.checkbox input{width:3.5rem;height:1.5rem}.ui.toggle.checkbox .box,.ui.toggle.checkbox label{min-height:1.5rem;padding-left:4.5rem;color:rgba(0,0,0,.87)}.ui.toggle.checkbox label{padding-top:.15em}.ui.toggle.checkbox .box:before,.ui.toggle.checkbox label:before{display:block;position:absolute;content:"";z-index:1;-webkit-transform:none;-ms-transform:none;transform:none;border:none;top:0;background:rgba(0,0,0,.05);box-shadow:none;width:3.5rem;height:1.5rem;border-radius:500rem}.ui.toggle.checkbox .box:after,.ui.toggle.checkbox label:after{background:#fff -webkit-linear-gradient(transparent,rgba(0,0,0,.05));background:#fff linear-gradient(transparent,rgba(0,0,0,.05));position:absolute;content:""!important;opacity:1;z-index:2;border:none;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),inset 0 0 0 1px rgba(34,36,38,.15);width:1.5rem;height:1.5rem;top:0;left:0;border-radius:500rem;-webkit-transition:background .3s ease,left .3s ease;transition:background .3s ease,left .3s ease}.ui.toggle.checkbox input~.box:after,.ui.toggle.checkbox input~label:after{left:-.05rem;box-shadow:none}.ui.toggle.checkbox .box:hover:before,.ui.toggle.checkbox input:focus~.box:before,.ui.toggle.checkbox input:focus~label:before,.ui.toggle.checkbox label:hover:before{background-color:rgba(0,0,0,.15);border:none}.ui.toggle.checkbox input:checked~.box,.ui.toggle.checkbox input:checked~label{color:rgba(0,0,0,.95)!important}.ui.toggle.checkbox input:checked~.box:before,.ui.toggle.checkbox input:checked~label:before{background-color:#2185d0!important}.ui.toggle.checkbox input:checked~.box:after,.ui.toggle.checkbox input:checked~label:after{left:2.15rem;box-shadow:none}.ui.toggle.checkbox input:focus:checked~.box,.ui.toggle.checkbox input:focus:checked~label{color:rgba(0,0,0,.95)!important}.ui.toggle.checkbox input:focus:checked~.box:before,.ui.toggle.checkbox input:focus:checked~label:before{background-color:#0d71bb!important}.ui.fitted.checkbox .box,.ui.fitted.checkbox label{padding-left:0!important}.ui.fitted.slider.checkbox,.ui.fitted.toggle.checkbox{width:3.5rem}@font-face{font-family:Checkbox;src:url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBD8AAAC8AAAAYGNtYXAYVtCJAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zn4huwUAAAF4AAABYGhlYWQGPe1ZAAAC2AAAADZoaGVhB30DyAAAAxAAAAAkaG10eBBKAEUAAAM0AAAAHGxvY2EAmgESAAADUAAAABBtYXhwAAkALwAAA2AAAAAgbmFtZSC8IugAAAOAAAABknBvc3QAAwAAAAAFFAAAACAAAwMTAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADoAgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6AL//f//AAAAAAAg6AD//f//AAH/4xgEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAEUAUQO7AvgAGgAAARQHAQYjIicBJjU0PwE2MzIfAQE2MzIfARYVA7sQ/hQQFhcQ/uMQEE4QFxcQqAF2EBcXEE4QAnMWEP4UEBABHRAXFhBOEBCoAXcQEE4QFwAAAAABAAABbgMlAkkAFAAAARUUBwYjISInJj0BNDc2MyEyFxYVAyUQEBf9SRcQEBAQFwK3FxAQAhJtFxAQEBAXbRcQEBAQFwAAAAABAAAASQMlA24ALAAAARUUBwYrARUUBwYrASInJj0BIyInJj0BNDc2OwE1NDc2OwEyFxYdATMyFxYVAyUQEBfuEBAXbhYQEO4XEBAQEBfuEBAWbhcQEO4XEBACEm0XEBDuFxAQEBAX7hAQF20XEBDuFxAQEBAX7hAQFwAAAQAAAAIAAHRSzT9fDzz1AAsEAAAAAADRsdR3AAAAANGx1HcAAAAAA7sDbgAAAAgAAgAAAAAAAAABAAADwP/AAAAEAAAAAAADuwABAAAAAAAAAAAAAAAAAAAABwQAAAAAAAAAAAAAAAIAAAAEAABFAyUAAAMlAAAAAAAAAAoAFAAeAE4AcgCwAAEAAAAHAC0AAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAIAAAAAQAAAAAAAgAHAGkAAQAAAAAAAwAIADkAAQAAAAAABAAIAH4AAQAAAAAABQALABgAAQAAAAAABgAIAFEAAQAAAAAACgAaAJYAAwABBAkAAQAQAAgAAwABBAkAAgAOAHAAAwABBAkAAwAQAEEAAwABBAkABAAQAIYAAwABBAkABQAWACMAAwABBAkABgAQAFkAAwABBAkACgA0ALBDaGVja2JveABDAGgAZQBjAGsAYgBvAHhWZXJzaW9uIDIuMABWAGUAcgBzAGkAbwBuACAAMgAuADBDaGVja2JveABDAGgAZQBjAGsAYgBvAHhDaGVja2JveABDAGgAZQBjAGsAYgBvAHhSZWd1bGFyAFIAZQBnAHUAbABhAHJDaGVja2JveABDAGgAZQBjAGsAYgBvAHhGb250IGdlbmVyYXRlZCBieSBJY29Nb29uLgBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format("truetype")}.ui.checkbox .box:after,.ui.checkbox label:after{font-family:Checkbox}.ui.checkbox input:checked~.box:after,.ui.checkbox input:checked~label:after{content:"\E800"}.ui.checkbox input:indeterminate~.box:after,.ui.checkbox input:indeterminate~label:after{font-size:12px;content:"\E801"}/*! + * # Semantic UI 2.2.9 - Dropdown + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.dropdown{cursor:pointer;position:relative;display:inline-block;outline:none;text-align:left;-webkit-transition:box-shadow .1s ease,width .1s ease;transition:box-shadow .1s ease,width .1s ease;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ui.dropdown .menu{cursor:auto;position:absolute;display:none;outline:none;top:100%;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;margin:0;padding:0;background:#fff;font-size:1em;text-shadow:none;text-align:left;box-shadow:0 2px 3px 0 rgba(34,36,38,.15);border:1px solid rgba(34,36,38,.15);border-radius:.28571429rem;-webkit-transition:opacity .1s ease;transition:opacity .1s ease;z-index:11;will-change:transform,opacity}.ui.dropdown .menu>*{white-space:nowrap}.ui.dropdown>input:not(.search):first-child,.ui.dropdown>select{display:none!important}.ui.dropdown>.dropdown.icon{position:relative;font-size:.85714286em;margin:0 0 0 1em}.ui.dropdown .menu>.item .dropdown.icon{width:auto;float:right;margin:0 0 0 1em}.ui.dropdown .menu>.item .dropdown.icon+.text{margin-right:1em}.ui.dropdown>.text{display:inline-block;-webkit-transition:none;transition:none}.ui.dropdown .menu>.item{position:relative;cursor:pointer;display:block;border:none;height:auto;text-align:left;border-top:none;line-height:1em;color:rgba(0,0,0,.87);padding:.78571429rem 1.14285714rem!important;font-size:1rem;text-transform:none;font-weight:400;box-shadow:none;-webkit-touch-callout:none}.ui.dropdown .menu>.item:first-child{border-top-width:0}.ui.dropdown .menu .item>[class*="right floated"],.ui.dropdown>.text>[class*="right floated"]{float:right!important;margin-right:0!important;margin-left:1em!important}.ui.dropdown .menu .item>[class*="left floated"],.ui.dropdown>.text>[class*="left floated"]{float:left!important;margin-left:0!important;margin-right:1em!important}.ui.dropdown .menu .item>.flag.floated,.ui.dropdown .menu .item>.icon.floated,.ui.dropdown .menu .item>.image.floated,.ui.dropdown .menu .item>img.floated{margin-top:0}.ui.dropdown .menu>.header{margin:1rem 0 .75rem;padding:0 1.14285714rem;color:rgba(0,0,0,.85);font-size:.78571429em;font-weight:700;text-transform:uppercase}.ui.dropdown .menu>.divider{border-top:1px solid rgba(34,36,38,.1);height:0;margin:.5em 0}.ui.dropdown .menu>.input{width:auto;display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;margin:1.14285714rem .78571429rem;min-width:10rem}.ui.dropdown .menu>.header+.input{margin-top:0}.ui.dropdown .menu>.input:not(.transparent) input{padding:.5em 1em}.ui.dropdown .menu>.input:not(.transparent) .button,.ui.dropdown .menu>.input:not(.transparent) .icon,.ui.dropdown .menu>.input:not(.transparent) .label{padding-top:.5em;padding-bottom:.5em}.ui.dropdown .menu>.item>.description,.ui.dropdown>.text>.description{float:right;margin:0 0 0 1em;color:rgba(0,0,0,.4)}.ui.dropdown .menu>.message{padding:.78571429rem 1.14285714rem;font-weight:400}.ui.dropdown .menu>.message:not(.ui){color:rgba(0,0,0,.4)}.ui.dropdown .menu .menu{top:0!important;left:100%!important;right:auto!important;margin:0 0 0 -.5em!important;border-radius:.28571429rem!important;z-index:21!important}.ui.dropdown .menu .menu:after{display:none}.ui.dropdown .menu>.item>.flag,.ui.dropdown .menu>.item>.icon,.ui.dropdown .menu>.item>.image,.ui.dropdown .menu>.item>.label,.ui.dropdown .menu>.item>img,.ui.dropdown>.text>.flag,.ui.dropdown>.text>.icon,.ui.dropdown>.text>.image,.ui.dropdown>.text>.label,.ui.dropdown>.text>img{margin-top:0}.ui.dropdown .menu>.item>.flag,.ui.dropdown .menu>.item>.icon,.ui.dropdown .menu>.item>.image,.ui.dropdown .menu>.item>.label,.ui.dropdown .menu>.item>img,.ui.dropdown>.text>.flag,.ui.dropdown>.text>.icon,.ui.dropdown>.text>.image,.ui.dropdown>.text>.label,.ui.dropdown>.text>img{margin-left:0;float:none;margin-right:.78571429rem}.ui.dropdown .menu>.item>.image,.ui.dropdown .menu>.item>img,.ui.dropdown>.text>.image,.ui.dropdown>.text>img{display:inline-block;vertical-align:middle;width:auto;max-height:2em}.ui.dropdown .ui.menu>.item:before,.ui.menu .ui.dropdown .menu>.item:before{display:none}.ui.menu .ui.dropdown .menu .active.item{border-left:none}.ui.buttons>.ui.dropdown:last-child .menu,.ui.menu .right.dropdown.item .menu,.ui.menu .right.menu .dropdown:last-child .menu{left:auto;right:0}.ui.label.dropdown .menu{min-width:100%}.ui.dropdown.icon.button>.dropdown.icon{margin:0}.ui.button.dropdown .menu{min-width:100%}.ui.selection.dropdown{cursor:pointer;word-wrap:break-word;line-height:1em;white-space:normal;outline:0;-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);min-width:14em;min-height:2.71428571em;background:#fff;display:inline-block;padding:.78571429em 2.1em .78571429em 1em;color:rgba(0,0,0,.87);box-shadow:none;border:1px solid rgba(34,36,38,.15);border-radius:.28571429rem;-webkit-transition:box-shadow .1s ease,width .1s ease;transition:box-shadow .1s ease,width .1s ease}.ui.selection.dropdown.active,.ui.selection.dropdown.visible{z-index:10}select.ui.dropdown{height:38px;padding:.5em;border:1px solid rgba(34,36,38,.15);visibility:visible}.ui.selection.dropdown>.delete.icon,.ui.selection.dropdown>.dropdown.icon,.ui.selection.dropdown>.search.icon{cursor:pointer;position:absolute;width:auto;height:auto;line-height:1.21428571em;top:.78571429em;right:1em;z-index:3;margin:-.78571429em;padding:.78571429em;opacity:.8;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.compact.selection.dropdown{min-width:0}.ui.selection.dropdown .menu{overflow-x:hidden;overflow-y:auto;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-overflow-scrolling:touch;border-top-width:0!important;width:auto;outline:none;margin:0 -1px;min-width:calc(100% + 2px);width:calc(100% + 2px);border-radius:0 0 .28571429rem .28571429rem;box-shadow:0 2px 3px 0 rgba(34,36,38,.15);-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.selection.dropdown .menu:after,.ui.selection.dropdown .menu:before{display:none}.ui.selection.dropdown .menu>.message{padding:.78571429rem 1.14285714rem}@media only screen and (max-width:767px){.ui.selection.dropdown .menu{max-height:8.01428571rem}}@media only screen and (min-width:768px){.ui.selection.dropdown .menu{max-height:10.68571429rem}}@media only screen and (min-width:992px){.ui.selection.dropdown .menu{max-height:16.02857143rem}}@media only screen and (min-width:1920px){.ui.selection.dropdown .menu{max-height:21.37142857rem}}.ui.selection.dropdown .menu>.item{border-top:1px solid #fafafa;padding:.78571429rem 1.14285714rem!important;white-space:normal;word-wrap:normal}.ui.selection.dropdown .menu>.hidden.addition.item{display:none}.ui.selection.dropdown:hover{border-color:rgba(34,36,38,.35);box-shadow:none}.ui.selection.active.dropdown,.ui.selection.active.dropdown .menu{border-color:#96c8da;box-shadow:0 2px 3px 0 rgba(34,36,38,.15)}.ui.selection.dropdown:focus{border-color:#96c8da;box-shadow:none}.ui.selection.dropdown:focus .menu{border-color:#96c8da;box-shadow:0 2px 3px 0 rgba(34,36,38,.15)}.ui.selection.visible.dropdown>.text:not(.default){font-weight:400;color:rgba(0,0,0,.8)}.ui.selection.active.dropdown:hover,.ui.selection.active.dropdown:hover .menu{border-color:#96c8da;box-shadow:0 2px 3px 0 rgba(34,36,38,.15)}.ui.active.selection.dropdown>.dropdown.icon,.ui.visible.selection.dropdown>.dropdown.icon{opacity:1;z-index:3}.ui.active.selection.dropdown{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.ui.active.empty.selection.dropdown{border-radius:.28571429rem!important;box-shadow:none!important}.ui.active.empty.selection.dropdown .menu{border:none!important;box-shadow:none!important}.ui.search.dropdown{min-width:""}.ui.search.dropdown>input.search{background:none transparent!important;border:none!important;box-shadow:none!important;cursor:text;top:0;left:1px;width:100%;outline:none;-webkit-tap-highlight-color:rgba(255,255,255,0);padding:inherit;position:absolute;z-index:2}.ui.search.dropdown>.text{cursor:text;position:relative;left:1px;z-index:3}.ui.search.selection.dropdown>input.search,.ui.search.selection.dropdown>span.sizer{line-height:1.21428571em;padding:.67857143em 2.1em .67857143em 1em}.ui.search.selection.dropdown>span.sizer{display:none;white-space:pre}.ui.search.dropdown.active>input.search,.ui.search.dropdown.visible>input.search{cursor:auto}.ui.search.dropdown.active>.text,.ui.search.dropdown.visible>.text{pointer-events:none}.ui.active.search.dropdown input.search:focus+.text .flag,.ui.active.search.dropdown input.search:focus+.text .icon{opacity:.45}.ui.active.search.dropdown input.search:focus+.text{color:hsla(0,0%,45%,.87)!important}.ui.search.dropdown .menu{overflow-x:hidden;overflow-y:auto;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-overflow-scrolling:touch}@media only screen and (max-width:767px){.ui.search.dropdown .menu{max-height:8.01428571rem}}@media only screen and (min-width:768px){.ui.search.dropdown .menu{max-height:10.68571429rem}}@media only screen and (min-width:992px){.ui.search.dropdown .menu{max-height:16.02857143rem}}@media only screen and (min-width:1920px){.ui.search.dropdown .menu{max-height:21.37142857rem}}.ui.multiple.dropdown{padding:.22619048em 2.1em .22619048em .35714286em}.ui.multiple.dropdown .menu{cursor:auto}.ui.multiple.search.dropdown,.ui.multiple.search.dropdown>input.search{cursor:text}.ui.multiple.dropdown>.label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-block;vertical-align:top;white-space:normal;font-size:1em;padding:.35714286em .78571429em;margin:.14285714rem .28571429rem .14285714rem 0;box-shadow:inset 0 0 0 1px rgba(34,36,38,.15)}.ui.multiple.dropdown .dropdown.icon{margin:"";padding:""}.ui.multiple.dropdown>.text{position:static;padding:0;max-width:100%;margin:.45238095em 0 .45238095em .64285714em;line-height:1.21428571em}.ui.multiple.dropdown>.label~input.search{margin-left:.14285714em!important}.ui.multiple.dropdown>.label~.text{display:none}.ui.multiple.search.dropdown>.text{display:inline-block;position:absolute;top:0;left:0;padding:inherit;margin:.45238095em 0 .45238095em .64285714em;line-height:1.21428571em}.ui.multiple.search.dropdown>.label~.text{display:none}.ui.multiple.search.dropdown>input.search{position:static;padding:0;max-width:100%;margin:.45238095em 0 .45238095em .64285714em;width:2.2em;line-height:1.21428571em}.ui.inline.dropdown{cursor:pointer;display:inline-block;color:inherit}.ui.inline.dropdown .dropdown.icon{margin:0 .5em 0 .21428571em;vertical-align:baseline}.ui.inline.dropdown>.text{font-weight:700}.ui.inline.dropdown .menu{cursor:auto;margin-top:.21428571em;border-radius:.28571429rem}.ui.dropdown .menu .active.item{background:transparent;font-weight:700;color:rgba(0,0,0,.95);box-shadow:none;z-index:12}.ui.dropdown .menu>.item:hover{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95);z-index:13}.ui.loading.dropdown>i.icon{height:1em!important;padding:1.14285714em 1.07142857em!important}.ui.loading.dropdown>i.icon:before{border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loading.dropdown>i.icon:after,.ui.loading.dropdown>i.icon:before{position:absolute;content:"";top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em}.ui.loading.dropdown>i.icon:after{box-shadow:0 0 0 1px transparent;-webkit-animation:dropdown-spin .6s linear;animation:dropdown-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em}.ui.loading.dropdown.button>i.icon:after,.ui.loading.dropdown.button>i.icon:before{display:none}@-webkit-keyframes dropdown-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes dropdown-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.ui.default.dropdown:not(.button)>.text,.ui.dropdown:not(.button)>.default.text{color:hsla(0,0%,75%,.87)}.ui.default.dropdown:not(.button)>input:focus+.text,.ui.dropdown:not(.button)>input:focus+.default.text{color:hsla(0,0%,45%,.87)}.ui.loading.dropdown>.text{-webkit-transition:none;transition:none}.ui.dropdown .loading.menu{display:block;visibility:hidden;z-index:-1}.ui.dropdown .menu .selected.item,.ui.dropdown.selected{background:rgba(0,0,0,.03);color:rgba(0,0,0,.95)}.ui.dropdown>.filtered.text{visibility:hidden}.ui.dropdown .filtered.item{display:none!important}.ui.dropdown.error,.ui.dropdown.error>.default.text,.ui.dropdown.error>.text{color:#9f3a38}.ui.selection.dropdown.error{background:#fff6f6;border-color:#e0b4b4}.ui.dropdown.error>.menu,.ui.dropdown.error>.menu .menu,.ui.selection.dropdown.error:hover{border-color:#e0b4b4}.ui.dropdown.error>.menu>.item{color:#9f3a38}.ui.multiple.selection.error.dropdown>.label{border-color:#e0b4b4}.ui.dropdown.error>.menu>.item:hover{background-color:#fff2f2}.ui.dropdown.error>.menu .active.item{background-color:#fdcfcf}.ui.disabled.dropdown,.ui.dropdown .menu>.disabled.item{cursor:default;pointer-events:none;opacity:.45}.ui.dropdown .menu{left:0}.ui.dropdown .menu .right.menu,.ui.dropdown .right.menu>.menu{left:100%!important;right:auto!important;border-radius:.28571429rem!important}.ui.dropdown .menu .left.menu,.ui.dropdown>.left.menu .menu{left:auto!important;right:100%!important;border-radius:.28571429rem!important}.ui.dropdown .item .left.dropdown.icon,.ui.dropdown .left.menu .item .dropdown.icon{width:auto;float:left;margin:0 .78571429rem 0 0}.ui.dropdown .item .left.dropdown.icon+.text,.ui.dropdown .left.menu .item .dropdown.icon+.text{margin-left:1em}.ui.upward.dropdown>.menu{top:auto;bottom:100%;box-shadow:0 0 3px 0 rgba(0,0,0,.08);border-radius:.28571429rem .28571429rem 0 0}.ui.dropdown .upward.menu{top:auto!important;bottom:0!important}.ui.simple.upward.active.dropdown,.ui.simple.upward.dropdown:hover{border-radius:.28571429rem .28571429rem 0 0!important}.ui.upward.dropdown.button:not(.pointing):not(.floating).active{border-radius:.28571429rem .28571429rem 0 0}.ui.upward.selection.dropdown .menu{border-top-width:1px!important;border-bottom-width:0!important;box-shadow:0 -2px 3px 0 rgba(0,0,0,.08)}.ui.upward.selection.dropdown:hover{box-shadow:0 0 2px 0 rgba(0,0,0,.05)}.ui.active.upward.selection.dropdown,.ui.upward.selection.dropdown.visible{border-radius:0 0 .28571429rem .28571429rem!important}.ui.upward.selection.dropdown.visible{box-shadow:0 0 3px 0 rgba(0,0,0,.08)}.ui.upward.active.selection.dropdown:hover{box-shadow:0 0 3px 0 rgba(0,0,0,.05)}.ui.upward.active.selection.dropdown:hover .menu{box-shadow:0 -2px 3px 0 rgba(0,0,0,.08)}.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{overflow-x:hidden;overflow-y:auto}.ui.scrolling.dropdown .menu{overflow-x:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-overflow-scrolling:touch}.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{overflow-y:auto;min-width:100%!important;width:auto!important}.ui.dropdown .scrolling.menu{position:static;border:none;box-shadow:none!important;border-radius:0!important;margin:0!important;border-top:1px solid rgba(34,36,38,.15)}.ui.dropdown .scrolling.menu .item:first-child,.ui.dropdown .scrolling.menu>.item.item.item,.ui.scrolling.dropdown .menu .item.item.item,.ui.scrolling.dropdown .menu .item:first-child{border-top:none}.ui.dropdown>.animating.menu .scrolling.menu,.ui.dropdown>.visible.menu .scrolling.menu{display:block}@media (-ms-high-contrast:none){.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{min-width:calc(100% - 17px)}}@media only screen and (max-width:767px){.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{max-height:10.28571429rem}}@media only screen and (min-width:768px){.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{max-height:15.42857143rem}}@media only screen and (min-width:992px){.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{max-height:20.57142857rem}}@media only screen and (min-width:1920px){.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{max-height:20.57142857rem}}.ui.simple.dropdown .menu:after,.ui.simple.dropdown .menu:before{display:none}.ui.simple.dropdown .menu{position:absolute;display:block;overflow:hidden;top:-9999px!important;opacity:0;width:0;height:0;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.simple.active.dropdown,.ui.simple.dropdown:hover{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.ui.simple.active.dropdown>.menu,.ui.simple.dropdown:hover>.menu{overflow:visible;width:auto;height:auto;top:100%!important;opacity:1}.ui.simple.dropdown:hover>.menu>.item:hover>.menu,.ui.simple.dropdown>.menu>.item:active>.menu{overflow:visible;width:auto;height:auto;top:0!important;left:100%!important;opacity:1}.ui.simple.disabled.dropdown:hover .menu{display:none;height:0;width:0;overflow:hidden}.ui.simple.visible.dropdown>.menu{display:block}.ui.fluid.dropdown{display:block;width:100%;min-width:0}.ui.fluid.dropdown>.dropdown.icon{float:right}.ui.floating.dropdown .menu{left:0;right:auto;box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)!important;border-radius:.28571429rem!important}.ui.floating.dropdown>.menu{margin-top:.5em!important;border-radius:.28571429rem!important}.ui.pointing.dropdown>.menu{top:100%;margin-top:.78571429rem;border-radius:.28571429rem}.ui.pointing.dropdown>.menu:after{display:block;position:absolute;pointer-events:none;content:"";visibility:visible;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:.5em;height:.5em;box-shadow:-1px -1px 0 1px rgba(34,36,38,.15);background:#fff;z-index:2;top:-.25em;left:50%;margin:0 0 0 -.25em}.ui.top.left.pointing.dropdown>.menu{top:100%;bottom:auto;left:0;right:auto;margin:1em 0 0}.ui.top.left.pointing.dropdown>.menu:after{top:-.25em;left:1em;right:auto;margin:0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.ui.top.right.pointing.dropdown>.menu{top:100%;bottom:auto;right:0;left:auto;margin:1em 0 0}.ui.top.right.pointing.dropdown>.menu:after{top:-.25em;left:auto;right:1em;margin:0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.ui.left.pointing.dropdown>.menu{top:0;left:100%;right:auto;margin:0 0 0 1em}.ui.left.pointing.dropdown>.menu:after{top:1em;left:-.25em;margin:0;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.ui.right.pointing.dropdown>.menu{top:0;left:auto;right:100%;margin:0 1em 0 0}.ui.right.pointing.dropdown>.menu:after{top:1em;left:auto;right:-.25em;margin:0;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.ui.bottom.pointing.dropdown>.menu{top:auto;bottom:100%;left:0;right:auto;margin:0 0 1em}.ui.bottom.pointing.dropdown>.menu:after{top:auto;bottom:-.25em;right:auto;margin:0;-webkit-transform:rotate(-135deg);-ms-transform:rotate(-135deg);transform:rotate(-135deg)}.ui.bottom.pointing.dropdown>.menu .menu{top:auto!important;bottom:0!important}.ui.bottom.left.pointing.dropdown>.menu{left:0;right:auto}.ui.bottom.left.pointing.dropdown>.menu:after{left:1em;right:auto}.ui.bottom.right.pointing.dropdown>.menu{right:0;left:auto}.ui.bottom.right.pointing.dropdown>.menu:after{left:auto;right:1em}.ui.upward.pointing.dropdown>.menu,.ui.upward.top.pointing.dropdown>.menu{top:auto;bottom:100%;margin:0 0 .78571429rem;border-radius:.28571429rem}.ui.upward.pointing.dropdown>.menu:after,.ui.upward.top.pointing.dropdown>.menu:after{top:100%;bottom:auto;box-shadow:1px 1px 0 1px rgba(34,36,38,.15);margin:-.25em 0 0}.ui.upward.right.pointing.dropdown:not(.top):not(.bottom)>.menu{top:auto;bottom:0;margin:0 1em 0 0}.ui.upward.right.pointing.dropdown:not(.top):not(.bottom)>.menu:after{top:auto;bottom:0;margin:0 0 1em;box-shadow:-1px -1px 0 1px rgba(34,36,38,.15)}.ui.upward.left.pointing.dropdown:not(.top):not(.bottom)>.menu{top:auto;bottom:0;margin:0 0 0 1em}.ui.upward.left.pointing.dropdown:not(.top):not(.bottom)>.menu:after{top:auto;bottom:0;margin:0 0 1em;box-shadow:-1px -1px 0 1px rgba(34,36,38,.15)}@font-face{font-family:Dropdown;src:url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMggjB5AAAAC8AAAAYGNtYXAPfuIIAAABHAAAAExnYXNwAAAAEAAAAWgAAAAIZ2x5Zjo82LgAAAFwAAABVGhlYWQAQ88bAAACxAAAADZoaGVhAwcB6QAAAvwAAAAkaG10eAS4ABIAAAMgAAAAIGxvY2EBNgDeAAADQAAAABJtYXhwAAoAFgAAA1QAAAAgbmFtZVcZpu4AAAN0AAABRXBvc3QAAwAAAAAEvAAAACAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADw2gHg/+D/4AHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADgAAAAKAAgAAgACAAEAIPDa//3//wAAAAAAIPDX//3//wAB/+MPLQADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAIABJQElABMAABM0NzY3BTYXFhUUDwEGJwYvASY1AAUGBwEACAUGBoAFCAcGgAUBEgcGBQEBAQcECQYHfwYBAQZ/BwYAAQAAAG4BJQESABMAADc0PwE2MzIfARYVFAcGIyEiJyY1AAWABgcIBYAGBgUI/wAHBgWABwaABQWABgcHBgUFBgcAAAABABIASQC3AW4AEwAANzQ/ATYXNhcWHQEUBwYnBi8BJjUSBoAFCAcFBgYFBwgFgAbbBwZ/BwEBBwQJ/wgEBwEBB38GBgAAAAABAAAASQClAW4AEwAANxE0NzYzMh8BFhUUDwEGIyInJjUABQYHCAWABgaABQgHBgVbAQAIBQYGgAUIBwWABgYFBwAAAAEAAAABAADZuaKOXw889QALAgAAAAAA0ABHWAAAAADQAEdYAAAAAAElAW4AAAAIAAIAAAAAAAAAAQAAAeD/4AAAAgAAAAAAASUAAQAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAABAAAAASUAAAElAAAAtwASALcAAAAAAAAACgAUAB4AQgBkAIgAqgAAAAEAAAAIABQAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAOAAAAAQAAAAAAAgAOAEcAAQAAAAAAAwAOACQAAQAAAAAABAAOAFUAAQAAAAAABQAWAA4AAQAAAAAABgAHADIAAQAAAAAACgA0AGMAAwABBAkAAQAOAAAAAwABBAkAAgAOAEcAAwABBAkAAwAOACQAAwABBAkABAAOAFUAAwABBAkABQAWAA4AAwABBAkABgAOADkAAwABBAkACgA0AGMAaQBjAG8AbQBvAG8AbgBWAGUAcgBzAGkAbwBuACAAMQAuADAAaQBjAG8AbQBvAG8Abmljb21vb24AaQBjAG8AbQBvAG8AbgBSAGUAZwB1AGwAYQByAGkAYwBvAG0AbwBvAG4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) format("truetype"),url(data:application/font-woff;charset=utf-8;base64,d09GRk9UVE8AAAVwAAoAAAAABSgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAAA9AAAAdkAAAHZLDXE/09TLzIAAALQAAAAYAAAAGAIIweQY21hcAAAAzAAAABMAAAATA9+4ghnYXNwAAADfAAAAAgAAAAIAAAAEGhlYWQAAAOEAAAANgAAADYAQ88baGhlYQAAA7wAAAAkAAAAJAMHAelobXR4AAAD4AAAACAAAAAgBLgAEm1heHAAAAQAAAAABgAAAAYACFAAbmFtZQAABAgAAAFFAAABRVcZpu5wb3N0AAAFUAAAACAAAAAgAAMAAAEABAQAAQEBCGljb21vb24AAQIAAQA6+BwC+BsD+BgEHgoAGVP/i4seCgAZU/+LiwwHi2v4lPh0BR0AAACIDx0AAACNER0AAAAJHQAAAdASAAkBAQgPERMWGyAlKmljb21vb25pY29tb29udTB1MXUyMHVGMEQ3dUYwRDh1RjBEOXVGMERBAAACAYkABgAIAgABAAQABwAKAA0AVgCfAOgBL/yUDvyUDvyUDvuUDvtvi/emFYuQjZCOjo+Pj42Qiwj3lIsFkIuQiY6Hj4iNhouGi4aJh4eHCPsU+xQFiIiGiYaLhouHjYeOCPsU9xQFiI+Jj4uQCA77b4v3FBWLkI2Pjo8I9xT3FAWPjo+NkIuQi5CJjogI9xT7FAWPh42Hi4aLhomHh4eIiIaJhosI+5SLBYaLh42HjoiPiY+LkAgO+92d928Vi5CNkI+OCPcU9xQFjo+QjZCLkIuPiY6Hj4iNhouGCIv7lAWLhomHh4iIh4eJhouGi4aNiI8I+xT3FAWHjomPi5AIDvvdi+YVi/eUBYuQjZCOjo+Pj42Qi5CLkImOhwj3FPsUBY+IjYaLhouGiYeHiAj7FPsUBYiHhomGi4aLh42Hj4iOiY+LkAgO+JQU+JQViwwKAAAAAAMCAAGQAAUAAAFMAWYAAABHAUwBZgAAAPUAGQCEAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA8NoB4P/g/+AB4AAgAAAAAQAAAAAAAAAAAAAAIAAAAAAAAgAAAAMAAAAUAAMAAQAAABQABAA4AAAACgAIAAIAAgABACDw2v/9//8AAAAAACDw1//9//8AAf/jDy0AAwABAAAAAAAAAAAAAAABAAH//wAPAAEAAAABAAA5emozXw889QALAgAAAAAA0ABHWAAAAADQAEdYAAAAAAElAW4AAAAIAAIAAAAAAAAAAQAAAeD/4AAAAgAAAAAAASUAAQAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAABAAAAASUAAAElAAAAtwASALcAAAAAUAAACAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIADgBHAAEAAAAAAAMADgAkAAEAAAAAAAQADgBVAAEAAAAAAAUAFgAOAAEAAAAAAAYABwAyAAEAAAAAAAoANABjAAMAAQQJAAEADgAAAAMAAQQJAAIADgBHAAMAAQQJAAMADgAkAAMAAQQJAAQADgBVAAMAAQQJAAUAFgAOAAMAAQQJAAYADgA5AAMAAQQJAAoANABjAGkAYwBvAG0AbwBvAG4AVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG0AbwBvAG5pY29tb29uAGkAYwBvAG0AbwBvAG4AUgBlAGcAdQBsAGEAcgBpAGMAbwBtAG8AbwBuAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format("woff");font-weight:400;font-style:normal}.ui.dropdown>.dropdown.icon{font-family:Dropdown;line-height:1;height:1em;width:1.23em;-webkit-backface-visibility:hidden;backface-visibility:hidden;font-weight:400;font-style:normal;text-align:center;width:auto}.ui.dropdown>.dropdown.icon:before{content:"\F0D7"}.ui.dropdown .menu .item .dropdown.icon:before{content:"\F0DA"}.ui.dropdown .item .left.dropdown.icon:before,.ui.dropdown .left.menu .item .dropdown.icon:before{content:"\F0D9"}.ui.vertical.menu .dropdown.item>.dropdown.icon:before{content:"\F0DA"}/*! + * # Semantic UI 2.2.9 - Progress Bar + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.progress{position:relative;display:block;max-width:100%;border:none;margin:1em 0 2.5em;box-shadow:none;background:rgba(0,0,0,.1);padding:0;border-radius:.28571429rem}.ui.progress:first-child{margin:0 0 2.5em}.ui.progress:last-child{margin:0 0 1.5em}.ui.progress .bar{display:block;line-height:1;position:relative;width:0;min-width:2em;background:#888;border-radius:.28571429rem;-webkit-transition:width .1s ease,background-color .1s ease;transition:width .1s ease,background-color .1s ease}.ui.progress .bar>.progress{white-space:nowrap;width:auto;font-size:.92857143em;top:50%;right:.5em;left:auto;color:hsla(0,0%,100%,.7);margin-top:-.5em;text-align:left}.ui.progress .bar>.progress,.ui.progress>.label{position:absolute;bottom:auto;text-shadow:none;font-weight:700}.ui.progress>.label{width:100%;font-size:1em;top:100%;right:auto;left:0;color:rgba(0,0,0,.87);margin-top:.2em;text-align:center;-webkit-transition:color .4s ease;transition:color .4s ease}.ui.indicating.progress[data-percent^="1"] .bar,.ui.indicating.progress[data-percent^="2"] .bar{background-color:#d95c5c}.ui.indicating.progress[data-percent^="3"] .bar{background-color:#efbc72}.ui.indicating.progress[data-percent^="4"] .bar,.ui.indicating.progress[data-percent^="5"] .bar{background-color:#e6bb48}.ui.indicating.progress[data-percent^="6"] .bar{background-color:#ddc928}.ui.indicating.progress[data-percent^="7"] .bar,.ui.indicating.progress[data-percent^="8"] .bar{background-color:#b4d95c}.ui.indicating.progress[data-percent^="9"] .bar,.ui.indicating.progress[data-percent^="100"] .bar{background-color:#66da81}.ui.indicating.progress[data-percent^="1"] .label,.ui.indicating.progress[data-percent^="2"] .label,.ui.indicating.progress[data-percent^="3"] .label,.ui.indicating.progress[data-percent^="4"] .label,.ui.indicating.progress[data-percent^="5"] .label,.ui.indicating.progress[data-percent^="6"] .label,.ui.indicating.progress[data-percent^="7"] .label,.ui.indicating.progress[data-percent^="8"] .label,.ui.indicating.progress[data-percent^="9"] .label,.ui.indicating.progress[data-percent^="100"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent="1"] .bar,.ui.indicating.progress[data-percent="2"] .bar,.ui.indicating.progress[data-percent="3"] .bar,.ui.indicating.progress[data-percent="4"] .bar,.ui.indicating.progress[data-percent="5"] .bar,.ui.indicating.progress[data-percent="6"] .bar,.ui.indicating.progress[data-percent="7"] .bar,.ui.indicating.progress[data-percent="8"] .bar,.ui.indicating.progress[data-percent="9"] .bar{background-color:#d95c5c}.ui.indicating.progress[data-percent="1"] .label,.ui.indicating.progress[data-percent="2"] .label,.ui.indicating.progress[data-percent="3"] .label,.ui.indicating.progress[data-percent="4"] .label,.ui.indicating.progress[data-percent="5"] .label,.ui.indicating.progress[data-percent="6"] .label,.ui.indicating.progress[data-percent="7"] .label,.ui.indicating.progress[data-percent="8"] .label,.ui.indicating.progress[data-percent="9"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress.success .label{color:#1a531b}.ui.progress.success .bar{background-color:#21ba45!important}.ui.progress.success .bar,.ui.progress.success .bar:after{-webkit-animation:none!important;animation:none!important}.ui.progress.success>.label{color:#1a531b}.ui.progress.warning .bar{background-color:#f2c037!important}.ui.progress.warning .bar,.ui.progress.warning .bar:after{-webkit-animation:none!important;animation:none!important}.ui.progress.warning>.label{color:#794b02}.ui.progress.error .bar{background-color:#db2828!important}.ui.progress.error .bar,.ui.progress.error .bar:after{-webkit-animation:none!important;animation:none!important}.ui.progress.error>.label{color:#912d2b}.ui.active.progress .bar{position:relative;min-width:2em}.ui.active.progress .bar:after{content:"";opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;background:#fff;border-radius:.28571429rem;-webkit-animation:progress-active 2s ease infinite;animation:progress-active 2s ease infinite}@-webkit-keyframes progress-active{0%{opacity:.3;width:0}to{opacity:0;width:100%}}@keyframes progress-active{0%{opacity:.3;width:0}to{opacity:0;width:100%}}.ui.disabled.progress{opacity:.35}.ui.disabled.progress .bar,.ui.disabled.progress .bar:after{-webkit-animation:none!important;animation:none!important}.ui.inverted.progress{background:hsla(0,0%,100%,.08);border:none}.ui.inverted.progress .bar{background:#888}.ui.inverted.progress .bar>.progress{color:#f9fafb}.ui.inverted.progress>.label{color:#fff}.ui.inverted.progress.success>.label{color:#21ba45}.ui.inverted.progress.warning>.label{color:#f2c037}.ui.inverted.progress.error>.label{color:#db2828}.ui.progress.attached{background:transparent;position:relative;border:none;margin:0}.ui.progress.attached,.ui.progress.attached .bar{display:block;height:.2rem;padding:0;overflow:hidden;border-radius:0 0 .28571429rem .28571429rem}.ui.progress.attached .bar{border-radius:0}.ui.progress.top.attached,.ui.progress.top.attached .bar{top:0;border-radius:.28571429rem .28571429rem 0 0}.ui.progress.top.attached .bar{border-radius:0}.ui.card>.ui.attached.progress,.ui.segment>.ui.attached.progress{position:absolute;top:auto;left:0;bottom:100%;width:100%}.ui.card>.ui.bottom.attached.progress,.ui.segment>.ui.bottom.attached.progress{top:100%;bottom:auto}.ui.red.progress .bar{background-color:#db2828}.ui.red.inverted.progress .bar{background-color:#ff695e}.ui.orange.progress .bar{background-color:#f2711c}.ui.orange.inverted.progress .bar{background-color:#ff851b}.ui.yellow.progress .bar{background-color:#fbbd08}.ui.yellow.inverted.progress .bar{background-color:#ffe21f}.ui.olive.progress .bar{background-color:#b5cc18}.ui.olive.inverted.progress .bar{background-color:#d9e778}.ui.green.progress .bar{background-color:#21ba45}.ui.green.inverted.progress .bar{background-color:#2ecc40}.ui.teal.progress .bar{background-color:#00b5ad}.ui.teal.inverted.progress .bar{background-color:#6dffff}.ui.blue.progress .bar{background-color:#2185d0}.ui.blue.inverted.progress .bar{background-color:#54c8ff}.ui.violet.progress .bar{background-color:#6435c9}.ui.violet.inverted.progress .bar{background-color:#a291fb}.ui.purple.progress .bar{background-color:#a333c8}.ui.purple.inverted.progress .bar{background-color:#dc73ff}.ui.pink.progress .bar{background-color:#e03997}.ui.pink.inverted.progress .bar{background-color:#ff8edf}.ui.brown.progress .bar{background-color:#a5673f}.ui.brown.inverted.progress .bar{background-color:#d67c1c}.ui.grey.progress .bar{background-color:#767676}.ui.grey.inverted.progress .bar{background-color:#dcddde}.ui.black.progress .bar{background-color:#1b1c1d}.ui.black.inverted.progress .bar{background-color:#545454}.ui.tiny.progress{font-size:.85714286rem}.ui.tiny.progress .bar{height:.5em}.ui.small.progress{font-size:.92857143rem}.ui.small.progress .bar{height:1em}.ui.progress{font-size:1rem}.ui.progress .bar{height:1.75em}.ui.large.progress{font-size:1.14285714rem}.ui.large.progress .bar{height:2.5em}.ui.big.progress{font-size:1.28571429rem}.ui.big.progress .bar{height:3.5em}/*! + * # Semantic UI 2.2.9 - Statistic + * http://github.com/semantic-org/semantic-ui/ + * + * + * Released under the MIT license + * http://opensource.org/licenses/MIT + * + */.ui.statistic{display:-webkit-inline-box;display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;margin:1em 0;max-width:auto}.ui.statistic+.ui.statistic{margin:0 0 0 1.5em}.ui.statistic:first-child{margin-top:0}.ui.statistic:last-child{margin-bottom:0}.ui.statistics{-webkit-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap}.ui.statistics>.statistic{display:-webkit-inline-box;display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex;-webkit-box-flex:0;-ms-flex:0 1 auto;-webkit-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;margin:0 1.5em 2em;max-width:auto}.ui.statistics{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;margin:1em -1.5em -2em}.ui.statistics:after{display:block;content:" ";height:0;clear:both;overflow:hidden;visibility:hidden}.ui.statistics:first-child{margin-top:0}.ui.statistics:last-child{margin-bottom:0}.ui.statistic>.value,.ui.statistics .statistic>.value{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif;font-size:4rem;font-weight:400;line-height:1em;color:#1b1c1d;text-transform:uppercase;text-align:center}.ui.statistic>.label,.ui.statistics .statistic>.label{font-family:Lato,Helvetica Neue,Arial,Helvetica,sans-serif;font-size:1em;font-weight:700;color:rgba(0,0,0,.87);text-transform:uppercase;text-align:center}.ui.statistic>.label~.value,.ui.statistic>.value~.label,.ui.statistics .statistic>.label~.value,.ui.statistics .statistic>.value~.label{margin-top:0}.ui.statistic>.value .icon,.ui.statistics .statistic>.value .icon{opacity:1;width:auto;margin:0}.ui.statistic>.text.value,.ui.statistics .statistic>.text.value{line-height:1em;min-height:2em;font-weight:700;text-align:center}.ui.statistic>.text.value+.label,.ui.statistics .statistic>.text.value+.label{text-align:center}.ui.statistic>.value img,.ui.statistics .statistic>.value img{max-height:3rem;vertical-align:baseline}.ui.ten.statistics{margin:0 0 -2em}.ui.ten.statistics .statistic{min-width:10%;margin:0 0 2em}.ui.nine.statistics{margin:0 0 -2em}.ui.nine.statistics .statistic{min-width:11.11111111%;margin:0 0 2em}.ui.eight.statistics{margin:0 0 -2em}.ui.eight.statistics .statistic{min-width:12.5%;margin:0 0 2em}.ui.seven.statistics{margin:0 0 -2em}.ui.seven.statistics .statistic{min-width:14.28571429%;margin:0 0 2em}.ui.six.statistics{margin:0 0 -2em}.ui.six.statistics .statistic{min-width:16.66666667%;margin:0 0 2em}.ui.five.statistics{margin:0 0 -2em}.ui.five.statistics .statistic{min-width:20%;margin:0 0 2em}.ui.four.statistics{margin:0 0 -2em}.ui.four.statistics .statistic{min-width:25%;margin:0 0 2em}.ui.three.statistics{margin:0 0 -2em}.ui.three.statistics .statistic{min-width:33.33333333%;margin:0 0 2em}.ui.two.statistics{margin:0 0 -2em}.ui.two.statistics .statistic{min-width:50%;margin:0 0 2em}.ui.one.statistics{margin:0 0 -2em}.ui.one.statistics .statistic{min-width:100%;margin:0 0 2em}.ui.horizontal.statistic{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}.ui.horizontal.statistics{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;margin:0;max-width:none}.ui.horizontal.statistics .statistic{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;max-width:none;margin:1em 0}.ui.horizontal.statistic>.text.value,.ui.horizontal.statistics>.statistic>.text.value{min-height:0!important}.ui.horizontal.statistic>.value .icon,.ui.horizontal.statistics .statistic>.value .icon{width:1.18em}.ui.horizontal.statistic>.value,.ui.horizontal.statistics .statistic>.value{display:inline-block;vertical-align:middle}.ui.horizontal.statistic>.label,.ui.horizontal.statistics .statistic>.label{display:inline-block;vertical-align:middle;margin:0 0 0 .75em}.ui.red.statistic>.value,.ui.red.statistics .statistic>.value,.ui.statistics .red.statistic>.value{color:#db2828}.ui.orange.statistic>.value,.ui.orange.statistics .statistic>.value,.ui.statistics .orange.statistic>.value{color:#f2711c}.ui.statistics .yellow.statistic>.value,.ui.yellow.statistic>.value,.ui.yellow.statistics .statistic>.value{color:#fbbd08}.ui.olive.statistic>.value,.ui.olive.statistics .statistic>.value,.ui.statistics .olive.statistic>.value{color:#b5cc18}.ui.green.statistic>.value,.ui.green.statistics .statistic>.value,.ui.statistics .green.statistic>.value{color:#21ba45}.ui.statistics .teal.statistic>.value,.ui.teal.statistic>.value,.ui.teal.statistics .statistic>.value{color:#00b5ad}.ui.blue.statistic>.value,.ui.blue.statistics .statistic>.value,.ui.statistics .blue.statistic>.value{color:#2185d0}.ui.statistics .violet.statistic>.value,.ui.violet.statistic>.value,.ui.violet.statistics .statistic>.value{color:#6435c9}.ui.purple.statistic>.value,.ui.purple.statistics .statistic>.value,.ui.statistics .purple.statistic>.value{color:#a333c8}.ui.pink.statistic>.value,.ui.pink.statistics .statistic>.value,.ui.statistics .pink.statistic>.value{color:#e03997}.ui.brown.statistic>.value,.ui.brown.statistics .statistic>.value,.ui.statistics .brown.statistic>.value{color:#a5673f}.ui.grey.statistic>.value,.ui.grey.statistics .statistic>.value,.ui.statistics .grey.statistic>.value{color:#767676}.ui.inverted.statistic .value,.ui.inverted.statistics .statistic>.value{color:#fff}.ui.inverted.statistic .label,.ui.inverted.statistics .statistic>.label{color:hsla(0,0%,100%,.9)}.ui.inverted.red.statistic>.value,.ui.inverted.red.statistics .statistic>.value,.ui.statistics .inverted.red.statistic>.value{color:#ff695e}.ui.inverted.orange.statistic>.value,.ui.inverted.orange.statistics .statistic>.value,.ui.statistics .inverted.orange.statistic>.value{color:#ff851b}.ui.inverted.yellow.statistic>.value,.ui.inverted.yellow.statistics .statistic>.value,.ui.statistics .inverted.yellow.statistic>.value{color:#ffe21f}.ui.inverted.olive.statistic>.value,.ui.inverted.olive.statistics .statistic>.value,.ui.statistics .inverted.olive.statistic>.value{color:#d9e778}.ui.inverted.green.statistic>.value,.ui.inverted.green.statistics .statistic>.value,.ui.statistics .inverted.green.statistic>.value{color:#2ecc40}.ui.inverted.teal.statistic>.value,.ui.inverted.teal.statistics .statistic>.value,.ui.statistics .inverted.teal.statistic>.value{color:#6dffff}.ui.inverted.blue.statistic>.value,.ui.inverted.blue.statistics .statistic>.value,.ui.statistics .inverted.blue.statistic>.value{color:#54c8ff}.ui.inverted.violet.statistic>.value,.ui.inverted.violet.statistics .statistic>.value,.ui.statistics .inverted.violet.statistic>.value{color:#a291fb}.ui.inverted.purple.statistic>.value,.ui.inverted.purple.statistics .statistic>.value,.ui.statistics .inverted.purple.statistic>.value{color:#dc73ff}.ui.inverted.pink.statistic>.value,.ui.inverted.pink.statistics .statistic>.value,.ui.statistics .inverted.pink.statistic>.value{color:#ff8edf}.ui.inverted.brown.statistic>.value,.ui.inverted.brown.statistics .statistic>.value,.ui.statistics .inverted.brown.statistic>.value{color:#d67c1c}.ui.inverted.grey.statistic>.value,.ui.inverted.grey.statistics .statistic>.value,.ui.statistics .inverted.grey.statistic>.value{color:#dcddde}.ui[class*="left floated"].statistic{float:left;margin:0 2em 1em 0}.ui[class*="right floated"].statistic{float:right;margin:0 0 1em 2em}.ui.floated.statistic:last-child{margin-bottom:0}.ui.mini.horizontal.statistic>.value,.ui.mini.horizontal.statistics .statistic>.value,.ui.mini.statistic>.value,.ui.mini.statistics .statistic>.value{font-size:1.5rem!important}.ui.mini.statistic>.text.value,.ui.mini.statistics .statistic>.text.value{font-size:1rem!important}.ui.tiny.horizontal.statistic>.value,.ui.tiny.horizontal.statistics .statistic>.value,.ui.tiny.statistic>.value,.ui.tiny.statistics .statistic>.value{font-size:2rem!important}.ui.tiny.statistic>.text.value,.ui.tiny.statistics .statistic>.text.value{font-size:1rem!important}.ui.small.statistic>.value,.ui.small.statistics .statistic>.value{font-size:3rem!important}.ui.small.horizontal.statistic>.value,.ui.small.horizontal.statistics .statistic>.value{font-size:2rem!important}.ui.small.statistic>.text.value,.ui.small.statistics .statistic>.text.value{font-size:1rem!important}.ui.statistic>.value,.ui.statistics .statistic>.value{font-size:4rem!important}.ui.horizontal.statistic>.value,.ui.horizontal.statistics .statistic>.value{font-size:3rem!important}.ui.statistic>.text.value,.ui.statistics .statistic>.text.value{font-size:2rem!important}.ui.large.statistic>.value,.ui.large.statistics .statistic>.value{font-size:5rem!important}.ui.large.horizontal.statistic>.value,.ui.large.horizontal.statistics .statistic>.value{font-size:4rem!important}.ui.large.statistic>.text.value,.ui.large.statistics .statistic>.text.value{font-size:2.5rem!important}.ui.huge.statistic>.value,.ui.huge.statistics .statistic>.value{font-size:6rem!important}.ui.huge.horizontal.statistic>.value,.ui.huge.horizontal.statistics .statistic>.value{font-size:5rem!important}.ui.huge.statistic>.text.value,.ui.huge.statistics .statistic>.text.value{font-size:2.5rem!important}.App{text-align:center}.App-header{background:-webkit-linear-gradient(rgba(0,0,0,.33),rgba(0,0,0,.33)),url(/web/static/media/header.3016293c.jpg);background:linear-gradient(rgba(0,0,0,.33),rgba(0,0,0,.33)),url(/web/static/media/header.3016293c.jpg);background-color:#222;background-position:top;background-size:cover;height:150px;padding:20px}.App-section{margin-top:1em}.App-torrents{overflow-y:scroll}.small{font-size:.75rem}.ui.dropdown .menu.visible{display:block}.ui.input.rounded>input{border-radius:500rem}.ui.search>.results{text-align:left;width:35em}.ui.search>.results.visible{display:block}.ui.search>.results .result .image{height:12em;width:8em}.ui.search>.results .result .image+.content{margin-right:0}.ui.table td.ellipsis{text-overflow:ellipsis;overflow:hidden;max-width:20em}.ui.fitted.toggle.checkbox{margin-top:.25em}.ui.progress{margin-bottom:0!important;margin-top:0!important}.ui.progress .bar{min-width:0!important}.ui.three.statistics .statistic,.ui.two.statistics .statistic{margin:0 auto 2em}.ui.mini.statistics .statistic>.label{font-size:.5443em}.ui.mini.statistics .statistic>.value{font-size:1.1337rem!important;text-transform:none}.transfer-rates.ui.two.statistics{margin-top:.3667em}.ui.tiny.statistics .statistic>.value{text-transform:none}.seeding-stats .ui.tiny.progress{margin-top:.3334em!important}.ui.secondary.segment a{color:rgba(0,0,0,.6)}body{margin:0;padding:0;font-family:sans-serif} +/*# sourceMappingURL=main.e9dfa71b.css.map*/ \ No newline at end of file diff --git a/resources/web/static/css/main.e9dfa71b.css.map b/resources/web/static/css/main.e9dfa71b.css.map new file mode 100644 index 000000000..03f3a9d4a --- /dev/null +++ b/resources/web/static/css/main.e9dfa71b.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"static/css/main.e9dfa71b.css","sourceRoot":""} \ No newline at end of file diff --git a/resources/web/static/js/main.4e9bdbef.js b/resources/web/static/js/main.4e9bdbef.js new file mode 100644 index 000000000..490530c7c --- /dev/null +++ b/resources/web/static/js/main.4e9bdbef.js @@ -0,0 +1,19 @@ +!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="/web/",t(0)}(function(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))switch(typeof e[t]){case"function":break;case"object":e[t]=function(t){var n=t.slice(1),r=e[t[0]];return function(e,t,o){r.apply(this,[e,t,o].concat(n))}}(e[t]);break;default:e[t]=e[e[t]]}return e}([function(e,t,n){n(740),e.exports=n(417)},function(e,t,n){"use strict";e.exports=n(67)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(827),a=r(o);t.default=a.default||function(e){for(var t=1;t1){for(var m=Array(v),y=0;y1){for(var _=Array(g),b=0;b-1&&e%1==0&&e-1:!!c&&o(e,t,n)>-1}var o=n(247),a=n(30),i=n(290),u=n(35),l=n(175),s=Math.max;e.exports=r},function(e,t,n){(function(e){var r=n(22),o=n(664),a="object"==typeof t&&t&&!t.nodeType&&t,i=a&&"object"==typeof e&&e&&!e.nodeType&&e,u=i&&i.exports===a,l=u?r.Buffer:void 0,s=l?l.isBuffer:void 0,c=s||o;e.exports=c}).call(t,n(134)(e))},function(e,t,n){"use strict";function r(e){return"button"===e||"input"===e||"select"===e||"textarea"===e}function o(e,t,n){switch(e){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":return!(!n.disabled||!r(t));default:return!1}}var a=n(8),i=n(179),u=n(180),l=n(184),s=n(314),c=n(315),d=(n(6),{}),f=null,p=function(e,t){e&&(u.executeDispatchesInOrder(e,t),e.isPersistent()||e.constructor.release(e))},h=function(e){return p(e,!0)},v=function(e){return p(e,!1)},m=function(e){return"."+e._rootNodeID},y={injection:{injectEventPluginOrder:i.injectEventPluginOrder,injectEventPluginsByName:i.injectEventPluginsByName},putListener:function(e,t,n){"function"!=typeof n?a("94",t,typeof n):void 0;var r=m(e),o=d[t]||(d[t]={});o[r]=n;var u=i.registrationNameModules[t];u&&u.didPutListener&&u.didPutListener(e,t,n)},getListener:function(e,t){var n=d[t];if(o(t,e._currentElement.type,e._currentElement.props))return null;var r=m(e);return n&&n[r]},deleteListener:function(e,t){var n=i.registrationNameModules[t];n&&n.willDeleteListener&&n.willDeleteListener(e,t);var r=d[t];if(r){var o=m(e);delete r[o]}},deleteAllListeners:function(e){var t=m(e);for(var n in d)if(d.hasOwnProperty(n)&&d[n][t]){var r=i.registrationNameModules[n];r&&r.willDeleteListener&&r.willDeleteListener(e,n),delete d[n][t]}},extractEvents:function(e,t,n,r){for(var o,a=i.plugins,u=0;u-1}var o=n(247);e.exports=r},function(e,t){function n(e,t,n,r){var o=-1,a=null==e?0:e.length;for(r&&a&&(n=e[++o]);++o0&&n(c)?t>1?r(c,t-1,n,i,u):o(u,c):i||(u[u.length]=c)}return u}var o=n(157),a=n(584);e.exports=r},function(e,t,n){function r(e,t){t=o(t,e);for(var n=0,r=t.length;null!=e&&no?0:o+t),n=n>o?o:n,n<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var a=Array(o);++r1),t}),u(e,c(e),n),s&&(n=o(n,d|f|p,l));for(var h=t.length;h--;)a(n,t[h]);return n});e.exports=h},function(e,t,n){var r=n(525),o=n(106),a=o(function(e,t){return null==e?{}:r(e,t)});e.exports=a},function(e,t,n){function r(e){if("number"==typeof e)return e;if(a(e))return i;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(u,"");var n=s.test(e);return n||c.test(e)?d(e.slice(2),n?2:8):l.test(e)?i:+e}var o=n(23),a=n(53),i=NaN,u=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,d=parseInt;e.exports=r},function(e,t,n){"use strict";function r(e){return Object.prototype.hasOwnProperty.call(e,v)||(e[v]=p++,d[e[v]]={}),d[e[v]]}var o,a=n(15),i=n(179),u=n(704),l=n(313),s=n(737),c=n(190),d={},f=!1,p=0,h={topAbort:"abort",topAnimationEnd:s("animationend")||"animationend",topAnimationIteration:s("animationiteration")||"animationiteration",topAnimationStart:s("animationstart")||"animationstart",topBlur:"blur",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topChange:"change",topClick:"click",topCompositionEnd:"compositionend",topCompositionStart:"compositionstart",topCompositionUpdate:"compositionupdate",topContextMenu:"contextmenu",topCopy:"copy",topCut:"cut",topDoubleClick:"dblclick",topDrag:"drag",topDragEnd:"dragend",topDragEnter:"dragenter",topDragExit:"dragexit",topDragLeave:"dragleave",topDragOver:"dragover",topDragStart:"dragstart",topDrop:"drop",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topFocus:"focus",topInput:"input",topKeyDown:"keydown",topKeyPress:"keypress",topKeyUp:"keyup",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topMouseDown:"mousedown",topMouseMove:"mousemove",topMouseOut:"mouseout",topMouseOver:"mouseover",topMouseUp:"mouseup",topPaste:"paste",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topScroll:"scroll",topSeeked:"seeked",topSeeking:"seeking",topSelectionChange:"selectionchange",topStalled:"stalled",topSuspend:"suspend",topTextInput:"textInput",topTimeUpdate:"timeupdate",topTouchCancel:"touchcancel",topTouchEnd:"touchend",topTouchMove:"touchmove",topTouchStart:"touchstart",topTransitionEnd:s("transitionend")||"transitionend",topVolumeChange:"volumechange",topWaiting:"waiting",topWheel:"wheel"},v="_reactListenersID"+String(Math.random()).slice(2),m=a({},u,{ReactEventListener:null,injection:{injectReactEventListener:function(e){e.setHandleTopLevel(m.handleTopLevel),m.ReactEventListener=e}},setEnabled:function(e){m.ReactEventListener&&m.ReactEventListener.setEnabled(e)},isEnabled:function(){return!(!m.ReactEventListener||!m.ReactEventListener.isEnabled())},listenTo:function(e,t){for(var n=t,o=r(n),a=i.registrationNameDependencies[e],u=0;u]/;e.exports=r},function(e,t,n){"use strict";var r,o=n(21),a=n(178),i=/^[ \r\n\t\f]/,u=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,l=n(186),s=l(function(e,t){if(e.namespaceURI!==a.svg||"innerHTML"in e)e.innerHTML=t;else{r=r||document.createElement("div"),r.innerHTML=""+t+"";for(var n=r.firstChild;n.firstChild;)e.appendChild(n.firstChild)}});if(o.canUseDOM){var c=document.createElement("div");c.innerHTML=" ",""===c.innerHTML&&(s=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),i.test(t)||"<"===t[0]&&u.test(t)){e.innerHTML=String.fromCharCode(65279)+t;var n=e.firstChild;1===n.data.length?e.removeChild(n):n.deleteData(0,1)}else e.innerHTML=t}),c=null}e.exports=s},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(755),a=r(o);t.default=a.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=e.active,n=e.children,r=e.className,a=e.collapsing,u=e.content,l=e.disabled,c=e.error,f=e.icon,v=e.negative,y=e.positive,g=e.selectable,_=e.singleLine,b=e.textAlign,E=e.verticalAlign,O=e.warning,P=e.width,C=(0,d.default)((0,h.useKeyOnly)(t,"active"),(0,h.useKeyOnly)(a,"collapsing"),(0,h.useKeyOnly)(l,"disabled"),(0,h.useKeyOnly)(c,"error"),(0,h.useKeyOnly)(v,"negative"),(0,h.useKeyOnly)(y,"positive"),(0,h.useKeyOnly)(g,"selectable"),(0,h.useKeyOnly)(_,"single line"),(0,h.useKeyOnly)(O,"warning"),(0,h.useTextAlignProp)(b),(0,h.useVerticalAlignProp)(E),(0,h.useWidthProp)(P,"wide"),r),x=(0,h.getUnhandledProps)(o,e),w=(0,h.getElementType)(o,e);return(0,s.default)(n)?p.default.createElement(w,(0,i.default)({},x,{className:C}),m.default.create(f),u):p.default.createElement(w,(0,i.default)({},x,{className:C}),n)}Object.defineProperty(t,"__esModule",{value:!0});var a=n(2),i=r(a),u=n(14),l=(r(u),n(5)),s=r(l),c=n(4),d=r(c),f=n(1),p=r(f),h=n(3),v=n(20),m=r(v);o.handledProps=["active","as","children","className","collapsing","content","disabled","error","icon","negative","positive","selectable","singleLine","textAlign","verticalAlign","warning","width"],o._meta={name:"TableCell",type:h.META.TYPES.COLLECTION,parent:"Table"},o.defaultProps={as:"td"},o.create=(0,h.createShorthandFactory)(o,function(e){return{content:e}},!0),t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=e.bordered,n=e.circular,r=e.className,a=e.color,u=e.corner,l=e.disabled,c=e.fitted,p=e.flipped,h=e.inverted,v=e.link,m=e.loading,y=e.name,g=e.rotated,_=e.size,b=(0,s.default)(a,y,_,(0,f.useKeyOnly)(t,"bordered"),(0,f.useKeyOnly)(n,"circular"),(0,f.useKeyOnly)(u,"corner"),(0,f.useKeyOnly)(l,"disabled"),(0,f.useKeyOnly)(c,"fitted"),(0,f.useKeyOnly)(h,"inverted"),(0,f.useKeyOnly)(v,"link"),(0,f.useKeyOnly)(m,"loading"),(0,f.useValueAndKey)(p,"flipped"),(0,f.useValueAndKey)(g,"rotated"),"icon",r),E=(0,f.getUnhandledProps)(o,e),O=(0,f.getElementType)(o,e);return d.default.createElement(O,(0,i.default)({},E,{"aria-hidden":"true",className:b}))}Object.defineProperty(t,"__esModule",{value:!0});var a=n(2),i=r(a),u=n(14),l=(r(u),n(4)),s=r(l),c=n(1),d=r(c),f=n(3),p=n(358),h=r(p);o.handledProps=["as","bordered","circular","className","color","corner","disabled","fitted","flipped","inverted","link","loading","name","rotated","size"],o.Group=h.default,o._meta={name:"Icon",type:f.META.TYPES.ELEMENT},o.defaultProps={as:"i"},o.create=(0,f.createShorthandFactory)(o,function(e){return{name:e}}),t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(200),a=r(o);t.default=a.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=e.children,n=e.className,r=e.content,a=(0,c.default)(n,"description"),u=(0,p.getUnhandledProps)(o,e),s=(0,p.getElementType)(o,e);return f.default.createElement(s,(0,i.default)({},u,{className:a}),(0,l.default)(t)?r:t)}Object.defineProperty(t,"__esModule",{value:!0});var a=n(2),i=r(a),u=n(5),l=r(u),s=n(4),c=r(s),d=n(1),f=r(d),p=n(3);o.handledProps=["as","children","className","content"],o._meta={name:"ListDescription",parent:"List",type:p.META.TYPES.ELEMENT},o.create=(0,p.createShorthandFactory)(o,function(e){return{content:e}}),t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=e.children,n=e.className,r=e.content,a=(0,c.default)("header",n),u=(0,p.getUnhandledProps)(o,e),s=(0,p.getElementType)(o,e);return f.default.createElement(s,(0,i.default)({},u,{className:a}),(0,l.default)(t)?r:t)}Object.defineProperty(t,"__esModule",{value:!0});var a=n(2),i=r(a),u=n(5),l=r(u),s=n(4),c=r(s),d=n(1),f=r(d),p=n(3);o.handledProps=["as","children","className","content"],o._meta={name:"ListHeader",parent:"List",type:p.META.TYPES.ELEMENT},o.create=(0,p.createShorthandFactory)(o,function(e){return{content:e}}),t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(804),a=r(o);t.default=a.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=e.children,n=e.className,r=e.content,a=(0,c.default)("date",n),u=(0,p.getUnhandledProps)(o,e),s=(0,p.getElementType)(o,e);return f.default.createElement(s,(0,i.default)({},u,{className:a}),(0,l.default)(t)?r:t)}Object.defineProperty(t,"__esModule",{value:!0});var a=n(2),i=r(a),u=n(5),l=r(u),s=n(4),c=r(s),d=n(1),f=r(d),p=n(3);o.handledProps=["as","children","className","content"],o._meta={name:"FeedDate",parent:"Feed",type:p.META.TYPES.VIEW},t.default=o},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var r=n(427);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){e.exports=!0},function(e,t,n){var r=n(56),o=n(443),a=n(138),i=n(144)("IE_PROTO"),u=function(){},l="prototype",s=function(){var e,t=n(222)("iframe"),r=a.length,o="<",i=">";for(t.style.display="none",n(433).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write(o+"script"+i+"document.F=Object"+o+"/script"+i),e.close(),s=e.F;r--;)delete s[l][a[r]];return s()};e.exports=Object.create||function(e,t){var n;return null!==e?(u[l]=r(e),n=new u,u[l]=null,n[i]=e):n=s(),void 0===t?n:o(n,t)}},function(e,t,n){var r=n(88),o=n(74),a=n(42),i=n(147),u=n(50),l=n(223),s=Object.getOwnPropertyDescriptor;t.f=n(49)?s:function(e,t){if(e=a(e),t=i(t,!0),l)try{return s(e,t)}catch(e){}if(u(e,t))return o(!r.f.call(e,t),e[t])}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){var r=n(41).f,o=n(50),a=n(29)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,a)&&r(e,a,{configurable:!0,value:t})}},function(e,t,n){var r=n(145)("keys"),o=n(90);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){var r=n(40),o="__core-js_shared__",a=r[o]||(r[o]={});e.exports=function(e){return a[e]||(a[e]={})}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(71);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){var r=n(40),o=n(24),a=n(139),i=n(149),u=n(41).f;e.exports=function(e){var t=o.Symbol||(o.Symbol=a?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||u(t,e,{value:i.f(e)})}},function(e,t,n){t.f=n(29)},function(e,t){"use strict";function n(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function r(e,t){if(n(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var r=Object.keys(e),a=Object.keys(t);if(r.length!==a.length)return!1;for(var i=0;i-1&&e%1==0&&e<=r}var r=9007199254740991;e.exports=n},function(e,t,n){function r(e){return null==e?[]:o(e,a(e))}var o=n(538),a=n(25);e.exports=r},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function o(e){if(c===setTimeout)return setTimeout(e,0);if((c===n||!c)&&setTimeout)return c=setTimeout,setTimeout(e,0);try{return c(e,0)}catch(t){try{return c.call(null,e,0)}catch(t){return c.call(this,e,0)}}}function a(e){if(d===clearTimeout)return clearTimeout(e);if((d===r||!d)&&clearTimeout)return d=clearTimeout,clearTimeout(e);try{return d(e)}catch(t){try{return d.call(null,e)}catch(t){return d.call(this,e)}}}function i(){v&&p&&(v=!1,p.length?h=p.concat(h):m=-1,h.length&&u())}function u(){if(!v){var e=o(i);v=!0;for(var t=h.length;t;){for(p=h,h=[];++m1)for(var n=1;n-1?void 0:i("96",e),!s.plugins[n]){t.extractEvents?void 0:i("97",e),s.plugins[n]=t;var r=t.eventTypes;for(var a in r)o(r[a],t,a)?void 0:i("98",a,e)}}}function o(e,t,n){s.eventNameDispatchConfigs.hasOwnProperty(n)?i("99",n):void 0,s.eventNameDispatchConfigs[n]=e;var r=e.phasedRegistrationNames;if(r){for(var o in r)if(r.hasOwnProperty(o)){var u=r[o];a(u,t,n)}return!0}return!!e.registrationName&&(a(e.registrationName,t,n),!0)}function a(e,t,n){s.registrationNameModules[e]?i("100",e):void 0,s.registrationNameModules[e]=t,s.registrationNameDependencies[e]=t.eventTypes[n].dependencies}var i=n(8),u=(n(6),null),l={},s={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:null,injectEventPluginOrder:function(e){u?i("101"):void 0,u=Array.prototype.slice.call(e),r()},injectEventPluginsByName:function(e){var t=!1;for(var n in e)if(e.hasOwnProperty(n)){var o=e[n];l.hasOwnProperty(n)&&l[n]===o||(l[n]?i("102",n):void 0,l[n]=o,t=!0)}t&&r()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return s.registrationNameModules[t.registrationName]||null;if(void 0!==t.phasedRegistrationNames){var n=t.phasedRegistrationNames;for(var r in n)if(n.hasOwnProperty(r)){var o=s.registrationNameModules[n[r]];if(o)return o}}return null},_resetEventPlugins:function(){u=null;for(var e in l)l.hasOwnProperty(e)&&delete l[e];s.plugins.length=0;var t=s.eventNameDispatchConfigs;for(var n in t)t.hasOwnProperty(n)&&delete t[n];var r=s.registrationNameModules;for(var o in r)r.hasOwnProperty(o)&&delete r[o]}};e.exports=s},function(e,t,n){"use strict";function r(e){return"topMouseUp"===e||"topTouchEnd"===e||"topTouchCancel"===e}function o(e){return"topMouseMove"===e||"topTouchMove"===e}function a(e){return"topMouseDown"===e||"topTouchStart"===e}function i(e,t,n,r){var o=e.type||"unknown-event";e.currentTarget=y.getNodeFromInstance(r),t?v.invokeGuardedCallbackWithCatch(o,n,e):v.invokeGuardedCallback(o,n,e),e.currentTarget=null}function u(e,t){var n=e._dispatchListeners,r=e._dispatchInstances;if(Array.isArray(n))for(var o=0;o0&&r.length<20?n+" (keys: "+r.join(", ")+")":n}function a(e,t){var n=u.get(e);if(!n){return null}return n}var i=n(8),u=(n(37),n(85)),l=(n(28),n(32)),s=(n(6),n(7),{isMounted:function(e){var t=u.get(e);return!!t&&!!t._renderedComponent},enqueueCallback:function(e,t,n){s.validateCallback(t,n);var o=a(e);return o?(o._pendingCallbacks?o._pendingCallbacks.push(t):o._pendingCallbacks=[t],void r(o)):null},enqueueCallbackInternal:function(e,t){e._pendingCallbacks?e._pendingCallbacks.push(t):e._pendingCallbacks=[t],r(e)},enqueueForceUpdate:function(e){var t=a(e,"forceUpdate");t&&(t._pendingForceUpdate=!0,r(t))},enqueueReplaceState:function(e,t){var n=a(e,"replaceState");n&&(n._pendingStateQueue=[t],n._pendingReplaceState=!0,r(n))},enqueueSetState:function(e,t){var n=a(e,"setState");if(n){var o=n._pendingStateQueue||(n._pendingStateQueue=[]);o.push(t),r(n)}},enqueueElementInternal:function(e,t,n){e._pendingElement=t,e._context=n,r(e)},validateCallback:function(e,t){e&&"function"!=typeof e?i("122",t,o(e)):void 0}});e.exports=s},function(e,t){"use strict";var n=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,r,o){MSApp.execUnsafeLocalFunction(function(){return e(t,n,r,o)})}:e};e.exports=n},function(e,t){"use strict";function n(e){var t,n=e.keyCode;return"charCode"in e?(t=e.charCode,0===t&&13===n&&(t=13)):t=n,t>=32||13===t?t:0}e.exports=n},function(e,t){"use strict";function n(e){var t=this,n=t.nativeEvent;if(n.getModifierState)return n.getModifierState(e);var r=o[e];return!!r&&!!n[r]}function r(e){return n}var o={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};e.exports=r},function(e,t){"use strict";function n(e){var t=e.target||e.srcElement||window;return t.correspondingUseElement&&(t=t.correspondingUseElement),3===t.nodeType?t.parentNode:t}e.exports=n},function(e,t,n){"use strict";function r(e,t){if(!a.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,r=n in document;if(!r){var i=document.createElement("div");i.setAttribute(n,"return;"),r="function"==typeof i[n]}return!r&&o&&"wheel"===e&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var o,a=n(21);a.canUseDOM&&(o=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0),e.exports=r},function(e,t){"use strict";function n(e,t){var n=null===e||e===!1,r=null===t||t===!1;if(n||r)return n===r;var o=typeof e,a=typeof t;return"string"===o||"number"===o?"string"===a||"number"===a:"object"===a&&e.type===t.type&&e.key===t.key}e.exports=n},function(e,t,n){"use strict";var r=(n(15),n(26)),o=(n(7),r);e.exports=o},function(e,t,n){"use strict";function r(e,t,n){this.props=e,this.context=t,this.refs=i,this.updater=n||a}var o=n(69),a=n(194),i=(n(325),n(75));n(6),n(7);r.prototype.isReactComponent={},r.prototype.setState=function(e,t){"object"!=typeof e&&"function"!=typeof e&&null!=e?o("85"):void 0,this.updater.enqueueSetState(this,e),t&&this.updater.enqueueCallback(this,t,"setState")},r.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this),e&&this.updater.enqueueCallback(this,e,"forceUpdate")};e.exports=r},function(e,t,n){"use strict";function r(e,t){}var o=(n(7),{isMounted:function(e){return!1},enqueueCallback:function(e,t){},enqueueForceUpdate:function(e){r(e,"forceUpdate")},enqueueReplaceState:function(e,t){r(e,"replaceState")},enqueueSetState:function(e,t){r(e,"setState")}});e.exports=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(756),a=r(o);t.default=a.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=e.children,n=e.className,r=e.content,a=(0,c.default)("content",n),u=(0,p.getUnhandledProps)(o,e),s=(0,p.getElementType)(o,e);return f.default.createElement(s,(0,i.default)({},u,{className:a}),(0,l.default)(t)?r:t)}Object.defineProperty(t,"__esModule",{value:!0});var a=n(2),i=r(a),u=n(5),l=r(u),s=n(4),c=r(s),d=n(1),f=r(d),p=n(3);o.handledProps=["as","children","className","content"],o._meta={name:"MessageItem",parent:"Message",type:p.META.TYPES.COLLECTION},o.defaultProps={as:"li"},o.create=(0,p.createShorthandFactory)(o,function(e){return{content:e}},!0),t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=e.children,n=e.className,r=e.fullWidth,a=(0,l.default)((0,d.useKeyOnly)(r,"full-width"),n),u=(0,d.getUnhandledProps)(o,e),s=(0,d.getElementType)(o,e);return c.default.createElement(s,(0,i.default)({},u,{className:a}),t)}Object.defineProperty(t,"__esModule",{value:!0});var a=n(2),i=r(a),u=n(4),l=r(u),s=n(1),c=r(s),d=n(3);o.handledProps=["as","children","className","fullWidth"],o._meta={name:"TableHeader",type:d.META.TYPES.COLLECTION,parent:"Table"},o.defaultProps={as:"thead"},t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(351),a=r(o);t.default=a.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(778),a=r(o);t.default=a.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(2),a=r(o),i=n(9),u=r(i),l=n(10),s=r(l),c=n(12),d=r(c),f=n(11),p=r(f),h=n(117),v=r(h),m=n(5),y=r(m),g=n(4),_=r(g),b=n(1),E=r(b),O=n(3),P=n(128),C=r(P),x=n(359),w=r(x),T=n(361),M=r(T),S=n(362),A=r(S),k=function(e){function t(){var e,n,r,o;(0,u.default)(this,t);for(var a=arguments.length,i=Array(a),l=0;l=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}},function(e,t,n){var r=n(71),o=n(40).document,a=r(o)&&r(o.createElement);e.exports=function(e){return a?o.createElement(e):{}}},function(e,t,n){e.exports=!n(49)&&!n(57)(function(){return 7!=Object.defineProperty(n(222)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var r=n(135);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t,n){"use strict";var r=n(139),o=n(39),a=n(230),i=n(58),u=n(50),l=n(72),s=n(437),c=n(143),d=n(227),f=n(29)("iterator"),p=!([].keys&&"next"in[].keys()),h="@@iterator",v="keys",m="values",y=function(){return this};e.exports=function(e,t,n,g,_,b,E){s(n,t,g);var O,P,C,x=function(e){if(!p&&e in S)return S[e];switch(e){case v:return function(){return new n(this,e)};case m:return function(){return new n(this,e)}}return function(){return new n(this,e)}},w=t+" Iterator",T=_==m,M=!1,S=e.prototype,A=S[f]||S[h]||_&&S[_],k=A||x(_),N=_?T?x("entries"):k:void 0,I="Array"==t?S.entries||A:A;if(I&&(C=d(I.call(new e)),C!==Object.prototype&&(c(C,w,!0),r||u(C,f)||i(C,f,y))),T&&A&&A.name!==m&&(M=!0,k=function(){return A.call(this)}),r&&!E||!p&&!M&&S[f]||i(S,f,k),l[t]=k,l[w]=y,_)if(O={values:T?k:x(m),keys:b?k:x(v),entries:N},E)for(P in O)P in S||a(S,P,O[P]);else o(o.P+o.F*(p||M),t,O);return O}},function(e,t,n){var r=n(228),o=n(138).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},function(e,t,n){var r=n(50),o=n(89),a=n(144)("IE_PROTO"),i=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?i:null}},function(e,t,n){var r=n(50),o=n(42),a=n(429)(!1),i=n(144)("IE_PROTO");e.exports=function(e,t){var n,u=o(e),l=0,s=[];for(n in u)n!=i&&r(u,n)&&s.push(n);for(;t.length>l;)r(u,n=t[l++])&&(~a(s,n)||s.push(n));return s}},function(e,t,n){var r=n(39),o=n(24),a=n(57);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],i={};i[e]=t(n),r(r.S+r.F*a(function(){n(1)}),"Object",i)}},function(e,t,n){e.exports=n(58)},function(e,t,n){var r=n(146),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){"use strict";var r=n(446)(!0);n(225)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){"use strict";var r=n(26),o={listen:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!1),{remove:function(){e.removeEventListener(t,n,!1)}}):e.attachEvent?(e.attachEvent("on"+t,n),{remove:function(){e.detachEvent("on"+t,n)}}):void 0},capture:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!0),{remove:function(){e.removeEventListener(t,n,!0)}}):{remove:r}},registerDefault:function(){}};e.exports=o},function(e,t){"use strict";function n(e){try{e.focus()}catch(e){}}e.exports=n},function(e,t){"use strict";function n(){if("undefined"==typeof document)return null;try{return document.activeElement||document.body}catch(e){return document.body}}e.exports=n},function(e,t,n){var r=n(52),o=n(22),a=r(o,"Set");e.exports=a},function(e,t,n){var r=n(22),o=r.Uint8Array;e.exports=o},function(e,t,n){var r=n(52),o=n(22),a=r(o,"WeakMap");e.exports=a},function(e,t){function n(e,t){for(var n=-1,r=null==e?0:e.length,o=0,a=[];++n=t?e:t)),e}e.exports=n},function(e,t,n){function r(e,t,n,r){var d=-1,f=a,p=!0,h=e.length,v=[],m=t.length;if(!h)return v;n&&(t=u(t,l(n))),r?(f=i,p=!1):t.length>=c&&(f=s,p=!1,t=new o(t));e:for(;++d1&&h.reverse(),T&&Cf))return!1;var h=c.get(e);if(h&&c.get(t))return h==t;var v=-1,m=!0,y=n&l?new o:void 0;for(c.set(e,t),c.set(t,e);++v0){if(++t>=r)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var r=800,o=16,a=Date.now;e.exports=n},function(e,t,n){var r=n(597),o=/^\./,a=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,i=/\\(\\)?/g,u=r(function(e){var t=[];return o.test(e)&&t.push(""),e.replace(a,function(e,n,r,o){t.push(r?o.replace(i,"$1"):n||e)}),t});e.exports=u},function(e,t){function n(e){if(null!=e){try{return o.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var r=Function.prototype,o=r.toString;e.exports=n},function(e,t){function n(e){for(var t=-1,n=null==e?0:e.length,r=0,o=[];++tu)return[];var n=l,r=s(e,l);t=a(t),e-=l;for(var c=o(r,t);++n.":"function"==typeof t?" Instead of passing a class like Foo, pass React.createElement(Foo) or .":null!=t&&void 0!==t.props?" This may be caused by unintentionally loading two independent copies of React.":"");var i,u=m.createElement(U,{child:t});if(e){var l=O.get(e);i=l._processChildContext(l._context)}else i=T;var c=f(n);if(c){var d=c._currentElement,h=d.props.child;if(A(h,t)){var v=c._renderedComponent.getPublicInstance(),y=r&&function(){r.call(v)};return K._updateRootComponent(c,u,i,n,y),v}K.unmountComponentAtNode(n)}var g=o(n),_=g&&!!a(g),b=s(n),E=_&&!c&&!b,P=K._renderNewRootComponent(u,n,E,i)._renderedComponent.getPublicInstance();return r&&r.call(P),P},render:function(e,t,n){return K._renderSubtreeIntoContainer(null,e,t,n)},unmountComponentAtNode:function(e){c(e)?void 0:p("40");var t=f(e);if(!t){s(e),1===e.nodeType&&e.hasAttribute(N);return!1}return delete L[t._instance.rootID],w.batchedUpdates(l,t,e,!1),!0},_mountImageIntoNode:function(e,t,n,a,i){if(c(t)?void 0:p("41"),a){var u=o(t);if(P.canReuseMarkup(e,u))return void g.precacheNode(n,u);var l=u.getAttribute(P.CHECKSUM_ATTR_NAME);u.removeAttribute(P.CHECKSUM_ATTR_NAME);var s=u.outerHTML;u.setAttribute(P.CHECKSUM_ATTR_NAME,l);var d=e,f=r(d,s),v=" (client) "+d.substring(f-20,f+20)+"\n (server) "+s.substring(f-20,f+20);t.nodeType===j?p("42",v):void 0}if(t.nodeType===j?p("43"):void 0,i.useCreateElement){for(;t.lastChild;)t.removeChild(t.lastChild);h.insertTreeBefore(t,e,null)}else S(t,e),g.precacheNode(n,t.firstChild)}};e.exports=K},function(e,t,n){"use strict";var r=n(8),o=n(67),a=(n(6),{HOST:0,COMPOSITE:1,EMPTY:2,getType:function(e){return null===e||e===!1?a.EMPTY:o.isValidElement(e)?"function"==typeof e.type?a.COMPOSITE:a.HOST:void r("26",e)}});e.exports=a},function(e,t){"use strict";var n={currentScrollLeft:0,currentScrollTop:0,refreshScrollValues:function(e){n.currentScrollLeft=e.x,n.currentScrollTop=e.y}};e.exports=n},function(e,t,n){"use strict";function r(e,t){return null==t?o("30"):void 0,null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}var o=n(8);n(6);e.exports=r},function(e,t){"use strict";function n(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}e.exports=n},function(e,t,n){"use strict";function r(e){for(var t;(t=e._renderedNodeType)===o.COMPOSITE;)e=e._renderedComponent;return t===o.HOST?e._renderedComponent:t===o.EMPTY?null:void 0}var o=n(312);e.exports=r},function(e,t,n){"use strict";function r(){return!a&&o.canUseDOM&&(a="textContent"in document.documentElement?"textContent":"innerText"),a}var o=n(21),a=null;e.exports=r},function(e,t,n){"use strict";function r(e){if(e){var t=e.getName();if(t)return" Check the render method of `"+t+"`."}return""}function o(e){return"function"==typeof e&&"undefined"!=typeof e.prototype&&"function"==typeof e.prototype.mountComponent&&"function"==typeof e.prototype.receiveComponent}function a(e,t){var n;if(null===e||e===!1)n=s.create(a);else if("object"==typeof e){var u=e,l=u.type;if("function"!=typeof l&&"string"!=typeof l){var f="";f+=r(u._owner),i("130",null==l?l:typeof l,f)}"string"==typeof u.type?n=c.createInternalComponent(u):o(u.type)?(n=new u.type(u),n.getHostNode||(n.getHostNode=n.getNativeNode)):n=new d(u)}else"string"==typeof e||"number"==typeof e?n=c.createInstanceForText(e):i("131",typeof e);return n._mountIndex=0,n._mountImage=null,n}var i=n(8),u=n(15),l=n(688),s=n(307),c=n(309),d=(n(735),n(6),n(7),function(e){this.construct(e)});u(d.prototype,l,{_instantiateReactComponent:a}),e.exports=a},function(e,t){"use strict";function n(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!r[e.type]:"textarea"===t}var r={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};e.exports=n},function(e,t,n){"use strict";var r=n(21),o=n(124),a=n(125),i=function(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t};r.canUseDOM&&("textContent"in document.documentElement||(i=function(e,t){return 3===e.nodeType?void(e.nodeValue=t):void a(e,o(t))})),e.exports=i},function(e,t,n){"use strict";function r(e,t){return e&&"object"==typeof e&&null!=e.key?s.escape(e.key):t.toString(36)}function o(e,t,n,a){var f=typeof e;if("undefined"!==f&&"boolean"!==f||(e=null),null===e||"string"===f||"number"===f||"object"===f&&e.$$typeof===u)return n(a,e,""===t?c+r(e,0):t),1;var p,h,v=0,m=""===t?c:t+d;if(Array.isArray(e))for(var y=0;y-1?t:e}function p(e,t){t=t||{};var n=t.body;if(e instanceof p){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new o(e.headers)),this.method=e.method,this.mode=e.mode,n||null==e._bodyInit||(n=e._bodyInit,e.bodyUsed=!0)}else this.url=String(e);if(this.credentials=t.credentials||this.credentials||"omit",!t.headers&&this.headers||(this.headers=new o(t.headers)),this.method=f(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function h(e){var t=new FormData;return e.trim().split("&").forEach(function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),o=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(o))}}),t}function v(e){var t=new o;return e.split(/\r?\n/).forEach(function(e){var n=e.split(":"),r=n.shift().trim();if(r){var o=n.join(":").trim();t.append(r,o)}}),t}function m(e,t){t||(t={}),this.type="default",this.status="status"in t?t.status:200,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new o(t.headers),this.url=t.url||"",this._initBody(e)}if(!e.fetch){var y={searchParams:"URLSearchParams"in e,iterable:"Symbol"in e&&"iterator"in Symbol,blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e};if(y.arrayBuffer)var g=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],_=function(e){return e&&DataView.prototype.isPrototypeOf(e)},b=ArrayBuffer.isView||function(e){return e&&g.indexOf(Object.prototype.toString.call(e))>-1};o.prototype.append=function(e,r){e=t(e),r=n(r);var o=this.map[e];this.map[e]=o?o+","+r:r},o.prototype.delete=function(e){delete this.map[t(e)]},o.prototype.get=function(e){return e=t(e),this.has(e)?this.map[e]:null},o.prototype.has=function(e){return this.map.hasOwnProperty(t(e))},o.prototype.set=function(e,r){this.map[t(e)]=n(r)},o.prototype.forEach=function(e,t){for(var n in this.map)this.map.hasOwnProperty(n)&&e.call(t,this.map[n],n,this)},o.prototype.keys=function(){var e=[];return this.forEach(function(t,n){e.push(n)}),r(e)},o.prototype.values=function(){var e=[];return this.forEach(function(t){e.push(t)}),r(e)},o.prototype.entries=function(){var e=[];return this.forEach(function(t,n){e.push([n,t])}),r(e)},y.iterable&&(o.prototype[Symbol.iterator]=o.prototype.entries);var E=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];p.prototype.clone=function(){return new p(this,{body:this._bodyInit})},d.call(p.prototype),d.call(m.prototype),m.prototype.clone=function(){return new m(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new o(this.headers),url:this.url})},m.error=function(){var e=new m(null,{status:0,statusText:""});return e.type="error",e};var O=[301,302,303,307,308];m.redirect=function(e,t){if(O.indexOf(t)===-1)throw new RangeError("Invalid status code");return new m(null,{status:t,headers:{location:e}})},e.Headers=o,e.Request=p,e.Response=m,e.fetch=function(e,t){return new Promise(function(n,r){var o=new p(e,t),a=new XMLHttpRequest;a.onload=function(){var e={status:a.status,statusText:a.statusText,headers:v(a.getAllResponseHeaders()||"")};e.url="responseURL"in a?a.responseURL:e.headers.get("X-Request-URL");var t="response"in a?a.response:a.responseText;n(new m(t,e))},a.onerror=function(){r(new TypeError("Network request failed"))},a.ontimeout=function(){r(new TypeError("Network request failed"))},a.open(o.method,o.url,!0),"include"===o.credentials&&(a.withCredentials=!0),"responseType"in a&&y.blob&&(a.responseType="blob"),o.headers.forEach(function(e,t){a.setRequestHeader(t,e)}),a.send("undefined"==typeof o._bodyInit?null:o._bodyInit)})},e.fetch.polyfill=!0}}("undefined"!=typeof self?self:this)},function(e,t){(function(t){"use strict";function n(e){u.length||(i(),l=!0),u[u.length]=e}function r(){for(;sc){for(var t=0,n=u.length-s;t0){var r=this.state.deleteQueue,o=r.pop();this.setState({deleteQueue:r}),this.handleDelete(o)}}.bind(r),function(e){console.error(e),this.setState({errorMessage:e.message,showDimmer:!0})})},r.handlePlay=function(e,t){var n=t.name.split("-")[1];fetch(y+"/playuri?resume="+n).then(function(e){console.log("Playing torrent #"+n)},function(e){console.error(e),this.setState({errorMessage:e.message,showDimmer:!0})})},r.handleOpenAddTorrent=function(){r.setState({showAddTorrent:!0})},r.handleCloseAddTorrent=function(){r.setState({showAddTorrent:!1})},r.handleChangeAddTorrent=function(e,t){e.preventDefault(),r.setState({addTorrent:t.value})},r.confirmDelete=function(){r.setState({showDeleteConfirm:!0})},r.handleDeleteCancel=function(){r.setState({showDeleteConfirm:!1})},r.handleDeleteConfirm=function(){r.setState({showDeleteConfirm:!1});var e=[];Object.keys(r.state.checked).forEach(function(t){var n=t.split("-")[1];this.state.checked[t]===!0&&e.push(d.default.parseInt(n))}.bind(r)),e=d.default.sortBy(e);var t=e.pop();r.setState({deleteQueue:e}),r.handleDelete(t)},r.resetSearch=function(){r.setState({searchLoading:!1,searchResults:[],searchQuery:""})},r.handleResultSelect=function(e,t){var n=t.data.path.replace("plugin://plugin.video.quasar","");n.indexOf("episodes")!==-1?r.setState({searchQuery:r.searchInput.props.value+" "+t.title}):n.indexOf("episode")===-1||n.indexOf("links")===-1&&!n.indexOf("play")?r.setState({searchQuery:t.title}):r.setState({searchQuery:r.searchInput.props.value}),(n.indexOf("links")!==-1||n.indexOf("play")>0)&&(n+="?external=1"),fetch(y+n).then(function(e){1===this.state.searchType?this.setState({searchQuery:""}):(n.indexOf("seasons")===-1&&n.indexOf("episodes")===-1||this.setState({searchLoading:!0}),n.indexOf("episodes")===-1?this.showSeasonResults(e):this.showEpisodeResults(e))}.bind(r),function(e){console.error(e),this.setState({errorMessage:e.message,showDimmer:!0})}.bind(r))},r.handleSearchChange=function(e,t){r.setState({searchLoading:!0,searchQuery:t}),r.doSearch()},r.doSearch=d.default.debounce(function(){if(r.state.searchQuery.length<1)return r.resetSearch();var e;switch(r.state.searchType){case 1:e="/movies/search?q=";break;case 2:e="/shows/search?q=";break;default:return r.resetSearch()}fetch(y+e+r.state.searchQuery).then(function(e){e.json().then(function(e){var t=d.default.map(e.items,function(e){var t=e.info&&e.info.year?e.info.year:"",n={image:e.thumbnail&&"http://image.tmdb.org/t/p/w500"!==e.thumbnail?e.thumbnail:"",title:t?e.label+" ("+t+")":e.label,description:e.info&&e.info.plotoutline?e.info.plotoutline:"",data:{path:e.path,tagline:e.info&&e.info.tagline?e.info.tagline:"",date:e.info&&e.info.date?e.info.date:"",year:e.info&&e.info.year?e.info.year:"",genre:e.info&&e.info.genre?e.info.genre:"",rating:e.info&&e.info.rating?Number(e.info.rating).toFixed(2):"",director:e.info&&e.info.director?e.info.director:""}};return n});this.setState({sourceResults:t});var n=new RegExp(d.default.escapeRegExp(this.state.searchQuery),"i"),r=function(e){return n.test(e.title)};this.setState({searchLoading:!1,searchResults:d.default.filter(this.state.sourceResults,r)})}.bind(this))}.bind(r),function(e){console.error(e),this.setState({errorMessage:e.message,showDimmer:!0,addTorrent:null})}.bind(r))},500),r.showSeasonResults=function(e){e.json().then(function(e){this.searchInput.open(),this.setState({searchLoading:!1});var t=d.default.map(e.items,function(e){var t={image:e.art&&"http://image.tmdb.org/t/p/w500"!==e.art.thumb?e.art.thumb:"",title:e.label,description:"",data:{path:e.path,tagline:"",date:"",year:"",genre:e.info&&e.info.genre?e.info.genre:"",rating:"",director:""}};return t});this.setState({sourceResults:t,searchResults:t})}.bind(r))},r.showEpisodeResults=function(e){e.json().then(function(e){this.searchInput.open(),this.setState({searchLoading:!1});var t=d.default.map(e.items,function(e){var t={image:e.art&&"http://image.tmdb.org/t/p/w500"!==e.art.thumb?e.art.thumb:"",title:e.label,description:e.info&&e.info.plot?e.info.plot:"",data:{path:e.path,tagline:"",date:e.info&&e.info.aired?e.info.aired:"",year:"",genre:e.info&&e.info.genre?e.info.genre:"",rating:e.info&&e.info.rating?Number(e.info.rating).toFixed(2):"",director:""}};return t});this.setState({sourceResults:t,searchResults:t})}.bind(r))},r.handleChangeSearchType=function(e,t){e.preventDefault(),r.setState({searchType:t.value})},r.handleChangeSearch=function(e,t){e.preventDefault(),r.setState({search:t.value?t.value:""})},r.handleSearch=function(e){return e.preventDefault(),r.state.searchLoading?void r.setState({errorMessage:"Take it easy, we're already searching...",showDimmer:!0}):r.state.search?(r.setState({searchLoading:!0}),void fetch(y+"/search?q="+r.state.search).then(function(e){this.setState({searchLoading:!1,search:""})}.bind(r),function(e){console.error(e),this.setState({searchLoading:!1,errorMessage:e.message,showDimmer:!0})}.bind(r))):void r.setState({errorMessage:"Nothing to search for...",showDimmer:!0})},r.handleCloseDimmer=function(){r.setState({showDimmer:!1})},r.toggleRunning=function(e,t){e.preventDefault();var n=t.name.split("-")[1];t.checked===!0?r.handlePause(n):r.handleResume(n)},r.toggleCheckbox=function(e,t){e.preventDefault();var n=t.name.split("-")[2],o=r.state.checked;o["torrent-"+n]=!t.checked,r.setState({checked:o})},r.toggleDeleteFiles=function(e,t){r.setState({deleteFiles:!r.state.deleteFiles})},r.checkAll=function(){var e=r.state.checked;Object.keys(r.refs).forEach(function(t){var n=t.split("-")[2];e["torrent-"+n]=!this.state.checked["torrent-"+n]}.bind(r)),r.setState({checked:e})},r.deleteConfirmContent=function(){return s.default.createElement("div",null,"Are you sure?",s.default.createElement("div",{style:{marginTop:"1em"}},s.default.createElement(m.Checkbox,{label:"Also delete files",ref:"deleteFiles",color:"white",onClick:r.toggleDeleteFiles,checked:r.state.deleteFiles,toggle:!0})))},i=n,a(r,i)}return i(t,e),u(t,[{key:"render",value:function(){for(var e=this,t=[],n=0;nc;)if(u=l[c++],u!=u)return!0}else for(;s>c;c++)if((e||c in l)&&l[c]===n)return e||c||0;return!e&&-1}}},function(e,t,n){var r=n(135),o=n(29)("toStringTag"),a="Arguments"==r(function(){return arguments}()),i=function(e,t){try{return e[t]}catch(e){}};e.exports=function(e){var t,n,u;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=i(t=Object(e),o))?n:a?r(t):"Object"==(u=r(t))&&"function"==typeof t.callee?"Arguments":u}},function(e,t,n){"use strict";var r=n(41),o=n(74);e.exports=function(e,t,n){t in e?r.f(e,t,o(0,n)):e[t]=n}},function(e,t,n){var r=n(73),o=n(142),a=n(88);e.exports=function(e){var t=r(e),n=o.f;if(n)for(var i,u=n(e),l=a.f,s=0;u.length>s;)l.call(e,i=u[s++])&&t.push(i);return t}},function(e,t,n){e.exports=n(40).document&&document.documentElement},function(e,t,n){var r=n(72),o=n(29)("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||a[o]===e)}},function(e,t,n){var r=n(135);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){var r=n(56);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){var a=e.return;throw void 0!==a&&r(a.call(e)),t}}},function(e,t,n){"use strict";var r=n(140),o=n(74),a=n(143),i={};n(58)(i,n(29)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(i,{next:o(1,n)}),a(e,t+" Iterator")}},function(e,t,n){var r=n(29)("iterator"),o=!1;try{var a=[7][r]();a.return=function(){o=!0},Array.from(a,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var a=[7],i=a[r]();i.next=function(){return{done:n=!0}},a[r]=function(){return i},e(a)}catch(e){}return n}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){var r=n(73),o=n(42);e.exports=function(e,t){for(var n,a=o(e),i=r(a),u=i.length,l=0;u>l;)if(a[n=i[l++]]===t)return n}},function(e,t,n){var r=n(90)("meta"),o=n(71),a=n(50),i=n(41).f,u=0,l=Object.isExtensible||function(){return!0},s=!n(57)(function(){return l(Object.preventExtensions({}))}),c=function(e){i(e,r,{value:{i:"O"+ ++u,w:{}}})},d=function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!a(e,r)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[r].i},f=function(e,t){if(!a(e,r)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[r].w},p=function(e){return s&&h.NEED&&l(e)&&!a(e,r)&&c(e),e},h=e.exports={KEY:r,NEED:!1,fastKey:d,getWeak:f,onFreeze:p}},function(e,t,n){"use strict";var r=n(73),o=n(142),a=n(88),i=n(89),u=n(224),l=Object.assign;e.exports=!l||n(57)(function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=l({},e)[n]||Object.keys(l({},t)).join("")!=r})?function(e,t){for(var n=i(e),l=arguments.length,s=1,c=o.f,d=a.f;l>s;)for(var f,p=u(arguments[s++]),h=c?r(p).concat(c(p)):r(p),v=h.length,m=0;v>m;)d.call(p,f=h[m++])&&(n[f]=p[f]);return n}:l},function(e,t,n){ +var r=n(41),o=n(56),a=n(73);e.exports=n(49)?Object.defineProperties:function(e,t){o(e);for(var n,i=a(t),u=i.length,l=0;u>l;)r.f(e,n=i[l++],t[n]);return e}},function(e,t,n){var r=n(42),o=n(226).f,a={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],u=function(e){try{return o(e)}catch(e){return i.slice()}};e.exports.f=function(e){return i&&"[object Window]"==a.call(e)?u(e):o(r(e))}},function(e,t,n){var r=n(71),o=n(56),a=function(e,t){if(o(e),!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,r){try{r=n(136)(Function.call,n(141).f(Object.prototype,"__proto__").set,2),r(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function(e,n){return a(e,n),t?e.__proto__=n:r(e,n),e}}({},!1):void 0),check:a}},function(e,t,n){var r=n(146),o=n(137);e.exports=function(e){return function(t,n){var a,i,u=String(o(t)),l=r(n),s=u.length;return l<0||l>=s?e?"":void 0:(a=u.charCodeAt(l),a<55296||a>56319||l+1===s||(i=u.charCodeAt(l+1))<56320||i>57343?e?u.charAt(l):a:e?u.slice(l,l+2):(a-55296<<10)+(i-56320)+65536)}}},function(e,t,n){var r=n(146),o=Math.max,a=Math.min;e.exports=function(e,t){return e=r(e),e<0?o(e+t,0):a(e,t)}},function(e,t,n){var r=n(430),o=n(29)("iterator"),a=n(72);e.exports=n(24).getIteratorMethod=function(e){if(void 0!=e)return e[o]||e["@@iterator"]||a[r(e)]}},function(e,t,n){"use strict";var r=n(136),o=n(39),a=n(89),i=n(436),u=n(434),l=n(231),s=n(431),c=n(448);o(o.S+o.F*!n(438)(function(e){Array.from(e)}),"Array",{from:function(e){var t,n,o,d,f=a(e),p="function"==typeof this?this:Array,h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,y=0,g=c(f);if(m&&(v=r(v,h>2?arguments[2]:void 0,2)),void 0==g||p==Array&&u(g))for(t=l(f.length),n=new p(t);t>y;y++)s(n,y,m?v(f[y],y):f[y]);else for(d=g.call(f),n=new p;!(o=d.next()).done;y++)s(n,y,m?i(d,v,[o.value,y],!0):o.value);return n.length=y,n}})},function(e,t,n){"use strict";var r=n(428),o=n(439),a=n(72),i=n(42);e.exports=n(225)(Array,"Array",function(e,t){this._t=i(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,o(1)):"keys"==t?o(0,n):"values"==t?o(0,e[n]):o(0,[n,e[n]])},"values"),a.Arguments=a.Array,r("keys"),r("values"),r("entries")},function(e,t,n){var r=n(39);r(r.S+r.F,"Object",{assign:n(442)})},function(e,t,n){var r=n(39);r(r.S,"Object",{create:n(140)})},function(e,t,n){var r=n(39);r(r.S+r.F*!n(49),"Object",{defineProperty:n(41).f})},function(e,t,n){var r=n(42),o=n(141).f;n(229)("getOwnPropertyDescriptor",function(){return function(e,t){return o(r(e),t)}})},function(e,t,n){var r=n(89),o=n(227);n(229)("getPrototypeOf",function(){return function(e){return o(r(e))}})},function(e,t,n){var r=n(39);r(r.S,"Object",{setPrototypeOf:n(445).set})},function(e,t){},function(e,t,n){"use strict";var r=n(40),o=n(50),a=n(49),i=n(39),u=n(230),l=n(441).KEY,s=n(57),c=n(145),d=n(143),f=n(90),p=n(29),h=n(149),v=n(148),m=n(440),y=n(432),g=n(435),_=n(56),b=n(42),E=n(147),O=n(74),P=n(140),C=n(444),x=n(141),w=n(41),T=n(73),M=x.f,S=w.f,A=C.f,k=r.Symbol,N=r.JSON,I=N&&N.stringify,j="prototype",D=p("_hidden"),L=p("toPrimitive"),R={}.propertyIsEnumerable,U=c("symbol-registry"),K=c("symbols"),F=c("op-symbols"),B=Object[j],W="function"==typeof k,V=r.QObject,z=!V||!V[j]||!V[j].findChild,H=a&&s(function(){return 7!=P(S({},"a",{get:function(){return S(this,"a",{value:7}).a}})).a})?function(e,t,n){var r=M(B,t);r&&delete B[t],S(e,t,n),r&&e!==B&&S(B,t,r)}:S,Y=function(e){var t=K[e]=P(k[j]);return t._k=e,t},q=W&&"symbol"==typeof k.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof k},G=function(e,t,n){return e===B&&G(F,t,n),_(e),t=E(t,!0),_(n),o(K,t)?(n.enumerable?(o(e,D)&&e[D][t]&&(e[D][t]=!1),n=P(n,{enumerable:O(0,!1)})):(o(e,D)||S(e,D,O(1,{})),e[D][t]=!0),H(e,t,n)):S(e,t,n)},Q=function(e,t){_(e);for(var n,r=y(t=b(t)),o=0,a=r.length;a>o;)G(e,n=r[o++],t[n]);return e},$=function(e,t){return void 0===t?P(e):Q(P(e),t)},X=function(e){var t=R.call(this,e=E(e,!0));return!(this===B&&o(K,e)&&!o(F,e))&&(!(t||!o(this,e)||!o(K,e)||o(this,D)&&this[D][e])||t)},Z=function(e,t){if(e=b(e),t=E(t,!0),e!==B||!o(K,t)||o(F,t)){var n=M(e,t);return!n||!o(K,t)||o(e,D)&&e[D][t]||(n.enumerable=!0),n}},J=function(e){for(var t,n=A(b(e)),r=[],a=0;n.length>a;)o(K,t=n[a++])||t==D||t==l||r.push(t);return r},ee=function(e){for(var t,n=e===B,r=A(n?F:b(e)),a=[],i=0;r.length>i;)!o(K,t=r[i++])||n&&!o(B,t)||a.push(K[t]);return a};W||(k=function(){if(this instanceof k)throw TypeError("Symbol is not a constructor!");var e=f(arguments.length>0?arguments[0]:void 0),t=function(n){this===B&&t.call(F,n),o(this,D)&&o(this[D],e)&&(this[D][e]=!1),H(this,e,O(1,n))};return a&&z&&H(B,e,{configurable:!0,set:t}),Y(e)},u(k[j],"toString",function(){return this._k}),x.f=Z,w.f=G,n(226).f=C.f=J,n(88).f=X,n(142).f=ee,a&&!n(139)&&u(B,"propertyIsEnumerable",X,!0),h.f=function(e){return Y(p(e))}),i(i.G+i.W+i.F*!W,{Symbol:k});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ne=0;te.length>ne;)p(te[ne++]);for(var te=T(p.store),ne=0;te.length>ne;)v(te[ne++]);i(i.S+i.F*!W,"Symbol",{for:function(e){return o(U,e+="")?U[e]:U[e]=k(e)},keyFor:function(e){if(q(e))return m(U,e);throw TypeError(e+" is not a symbol!")},useSetter:function(){z=!0},useSimple:function(){z=!1}}),i(i.S+i.F*!W,"Object",{create:$,defineProperty:G,defineProperties:Q,getOwnPropertyDescriptor:Z,getOwnPropertyNames:J,getOwnPropertySymbols:ee}),N&&i(i.S+i.F*(!W||s(function(){var e=k();return"[null]"!=I([e])||"{}"!=I({a:e})||"{}"!=I(Object(e))})),"JSON",{stringify:function(e){if(void 0!==e&&!q(e)){for(var t,n,r=[e],o=1;arguments.length>o;)r.push(arguments[o++]);return t=r[1],"function"==typeof t&&(n=t),!n&&g(t)||(t=function(e,t){if(n&&(t=n.call(this,e,t)),!q(t))return t}),r[1]=t,I.apply(N,r)}}}),k[j][L]||n(58)(k[j],L,k[j].valueOf),d(k,"Symbol"),d(Math,"Math",!0),d(r.JSON,"JSON",!0)},function(e,t,n){n(148)("asyncIterator")},function(e,t,n){n(148)("observable")},function(e,t,n){n(450);for(var r=n(40),o=n(58),a=n(72),i=n(29)("toStringTag"),u=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],l=0;l<5;l++){var s=u[l],c=r[s],d=c&&c.prototype;d&&!d[i]&&o(d,i,s),a[s]=a.Array}},function(e,t,n){(function(r){function o(){return"undefined"!=typeof window&&"undefined"!=typeof window.process&&"renderer"===window.process.type||("undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style||"undefined"!=typeof window&&window.console&&(console.firebug||console.exception&&console.table)||navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function a(e){var n=this.useColors;if(e[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+e[0]+(n?"%c ":" ")+"+"+t.humanize(this.diff),n){var r="color: "+this.color;e.splice(1,0,r,"color: inherit");var o=0,a=0;e[0].replace(/%[a-zA-Z%]/g,function(e){"%%"!==e&&(o++,"%c"===e&&(a=o))}),e.splice(a,0,r)}}function i(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function u(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}}function l(){try{return t.storage.debug}catch(e){}if("undefined"!=typeof r&&"env"in r)return{NODE_ENV:"production",PUBLIC_URL:"/web"}.DEBUG}function s(){try{return window.localStorage}catch(e){}}t=e.exports=n(463),t.log=i,t.formatArgs=a,t.save=u,t.load=l,t.useColors=o,t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:s(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(l()),window&&(window.debug=t)}).call(t,n(176))},function(e,t,n){function r(e){var n,r=0;for(n in e)r=(r<<5)-r+e.charCodeAt(n),r|=0;return t.colors[Math.abs(r)%t.colors.length]}function o(e){function n(){if(n.enabled){var e=n,r=+new Date,o=r-(s||r);e.diff=o,e.prev=s,e.curr=r,s=r;for(var a=new Array(arguments.length),i=0;i":i.innerHTML="<"+e+">",u[e]=!i.firstChild),u[e]?f[e]:null}var o=n(21),a=n(6),i=o.canUseDOM?document.createElement("div"):null,u={},l=[1,'"],s=[1,"","
"],c=[3,"","
"],d=[1,'',""],f={"*":[1,"?
","
"],area:[1,"",""],col:[2,"","
"],legend:[1,"
","
"],param:[1,"",""],tr:[2,"","
"],optgroup:l,option:l,caption:s,colgroup:s,tbody:s,tfoot:s,thead:s,td:c,th:c},p=["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan"];p.forEach(function(e){f[e]=d,u[e]=!0}),e.exports=r},function(e,t){"use strict";function n(e){return e===window?{x:window.pageXOffset||document.documentElement.scrollLeft,y:window.pageYOffset||document.documentElement.scrollTop}:{x:e.scrollLeft,y:e.scrollTop}}e.exports=n},function(e,t){"use strict";function n(e){return e.replace(r,"-$1").toLowerCase()}var r=/([A-Z])/g;e.exports=n},function(e,t,n){"use strict";function r(e){return o(e).replace(a,"-ms-")}var o=n(491),a=/^ms-/;e.exports=r},function(e,t){"use strict";function n(e){return!(!e||!("function"==typeof Node?e instanceof Node:"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName))}e.exports=n},function(e,t,n){"use strict";function r(e){return o(e)&&3==e.nodeType}var o=n(493);e.exports=r},function(e,t){"use strict";function n(e){var t={};return function(n){return t.hasOwnProperty(n)||(t[n]=e.call(this,n)),t[n]}}e.exports=n},function(e,t,n){var r=n(52),o=n(22),a=r(o,"DataView");e.exports=a},function(e,t,n){function r(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=o(t,n)&&e=120&&y.length>=120)?new o(p&&y):void 0}y=e[0];var g=-1,_=h[0];e:for(;++g=c){var m=t?null:l(e);if(m)return s(m);p=!1,d=u,v=new o}else v=t?[]:h;e:for(;++r=r?e:o(e,t,n)}var o=n(100);e.exports=r},function(e,t,n){(function(e){function r(e,t){if(t)return e.slice();var n=e.length,r=s?s(n):new e.constructor(n);return e.copy(r),r}var o=n(22),a="object"==typeof t&&t&&!t.nodeType&&t,i=a&&"object"==typeof e&&e&&!e.nodeType&&e,u=i&&i.exports===a,l=u?o.Buffer:void 0,s=l?l.allocUnsafe:void 0;e.exports=r}).call(t,n(134)(e))},function(e,t,n){function r(e,t){var n=t?o(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}var o=n(164);e.exports=r},function(e,t,n){function r(e,t,n){var r=t?n(i(e),u):i(e);return a(r,o,new e.constructor)}var o=n(499),a=n(95),i=n(268),u=1;e.exports=r},function(e,t){function n(e){var t=new e.constructor(e.source,r.exec(e));return t.lastIndex=e.lastIndex,t}var r=/\w*$/;e.exports=n},function(e,t,n){function r(e,t,n){var r=t?n(i(e),u):i(e);return a(r,o,new e.constructor)}var o=n(500),a=n(95),i=n(112),u=1;e.exports=r},function(e,t,n){function r(e){return i?Object(i.call(e)):{}}var o=n(59),a=o?o.prototype:void 0,i=a?a.valueOf:void 0;e.exports=r},function(e,t,n){function r(e,t){var n=t?o(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}var o=n(164);e.exports=r},function(e,t,n){function r(e,t){if(e!==t){var n=void 0!==e,r=null===e,a=e===e,i=o(e),u=void 0!==t,l=null===t,s=t===t,c=o(t);if(!l&&!c&&!i&&e>t||i&&u&&s&&!l&&!c||r&&u&&s||!n&&s||!a)return 1;if(!r&&!i&&!c&&e=l)return s;var c=n[r];return s*("desc"==c?-1:1)}}return e.index-t.index}var o=n(548);e.exports=r},function(e,t,n){function r(e,t){return o(e,a(e),t)}var o=n(61),a=n(167);e.exports=r},function(e,t,n){function r(e,t){return o(e,a(e),t)}var o=n(61),a=n(263);e.exports=r},function(e,t,n){var r=n(22),o=r["__core-js_shared__"];e.exports=o},function(e,t){function n(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}e.exports=n},function(e,t,n){function r(e){return o(function(t,n){var r=-1,o=n.length,i=o>1?n[o-1]:void 0,u=o>2?n[2]:void 0;for(i=e.length>3&&"function"==typeof i?(o--,i):void 0,u&&a(n[0],n[1],u)&&(i=o<3?void 0:i,o=1),t=Object(t);++r-1?u[l?t[s]:s]:void 0}}var o=n(27),a=n(30),i=n(25);e.exports=r},function(e,t,n){function r(e){return a(function(t){var n=t.length,r=n,a=o.prototype.thru;for(e&&t.reverse();r--;){var v=t[r];if("function"!=typeof v)throw new TypeError(c);if(a&&!m&&"wrapper"==u(v))var m=new o([],!0)}for(r=m?r:n;++r1?"& ":"")+t[o],t=t.join(n>2?", ":" "),e.replace(r,"{\n/* [wrapped with "+t+"] */\n")}var r=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/; +e.exports=n},function(e,t,n){function r(e){return i(e)||a(e)||!!(u&&e&&e[u])}var o=n(59),a=n(113),i=n(13),u=o?o.isConcatSpreadable:void 0;e.exports=r},function(e,t){function n(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}e.exports=n},function(e,t,n){function r(e){return!!a&&a in e}var o=n(552),a=function(){var e=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();e.exports=r},function(e,t){function n(){this.__data__=[],this.size=0}e.exports=n},function(e,t,n){function r(e){var t=this.__data__,n=o(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():i.call(t,n,1),--this.size,!0}var o=n(97),a=Array.prototype,i=a.splice;e.exports=r},function(e,t,n){function r(e){var t=this.__data__,n=o(t,e);return n<0?void 0:t[n][1]}var o=n(97);e.exports=r},function(e,t,n){function r(e){return o(this.__data__,e)>-1}var o=n(97);e.exports=r},function(e,t,n){function r(e,t){var n=this.__data__,r=o(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var o=n(97);e.exports=r},function(e,t,n){function r(){this.size=0,this.__data__={hash:new o,map:new(i||a),string:new o}}var o=n(497),a=n(91),i=n(153);e.exports=r},function(e,t,n){function r(e){var t=o(this,e).delete(e);return this.size-=t?1:0,t}var o=n(107);e.exports=r},function(e,t,n){function r(e){return o(this,e).get(e)}var o=n(107);e.exports=r},function(e,t,n){function r(e){return o(this,e).has(e)}var o=n(107);e.exports=r},function(e,t,n){function r(e,t){var n=o(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}var o=n(107);e.exports=r},function(e,t,n){function r(e){var t=o(e,function(e){return n.size===a&&n.clear(),e}),n=t.cache;return t}var o=n(656),a=500;e.exports=r},function(e,t,n){function r(e,t){var n=e[1],r=t[1],v=n|r,m=v<(l|s|f),y=r==f&&n==d||r==f&&n==p&&e[7].length<=t[8]||r==(f|p)&&t[7].length<=t[8]&&n==d;if(!m&&!y)return e;r&l&&(e[2]=t[2],v|=n&l?0:c);var g=t[3];if(g){var _=e[3];e[3]=_?o(_,g,t[4]):g,e[4]=_?i(e[3],u):t[4]}return g=t[5],g&&(_=e[5],e[5]=_?a(_,g,t[6]):g,e[6]=_?i(e[5],u):t[6]),g=t[7],g&&(e[7]=g),r&f&&(e[8]=null==e[8]?t[8]:h(e[8],t[8])),null==e[9]&&(e[9]=t[9]),e[0]=t[0],e[1]=v,e}var o=n(253),a=n(254),i=n(111),u="__lodash_placeholder__",l=1,s=2,c=4,d=8,f=128,p=256,h=Math.min;e.exports=r},function(e,t,n){var r=n(271),o=r(Object.keys,Object);e.exports=o},function(e,t){function n(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}e.exports=n},function(e,t,n){(function(e){var r=n(259),o="object"==typeof t&&t&&!t.nodeType&&t,a=o&&"object"==typeof e&&e&&!e.nodeType&&e,i=a&&a.exports===o,u=i&&r.process,l=function(){try{return u&&u.binding&&u.binding("util")}catch(e){}}();e.exports=l}).call(t,n(134)(e))},function(e,t){function n(e){return o.call(e)}var r=Object.prototype,o=r.toString;e.exports=n},function(e,t){var n={};e.exports=n},function(e,t,n){function r(e,t){for(var n=e.length,r=i(t.length,n),u=o(e);r--;){var l=t[r];e[r]=a(l,n)?u[l]:void 0}return e}var o=n(103),a=n(78),i=Math.min;e.exports=r},function(e,t){function n(e){return this.__data__.set(e,r),this}var r="__lodash_hash_undefined__";e.exports=n},function(e,t){function n(e){return this.__data__.has(e)}e.exports=n},function(e,t,n){function r(){this.__data__=new o,this.size=0}var o=n(91);e.exports=r},function(e,t){function n(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}e.exports=n},function(e,t){function n(e){return this.__data__.get(e)}e.exports=n},function(e,t){function n(e){return this.__data__.has(e)}e.exports=n},function(e,t,n){function r(e,t){var n=this.__data__;if(n instanceof o){var r=n.__data__;if(!a||r.length1?R(t,n):t}function v(e,t,n){if(T.fixed&&(S||!c.skipFixed[e])){var r=c.methodSpread[e],o=r&&r.start;return void 0===o?j(t,n):u(t,o)}return t}function m(e,t,n){return T.rearg&&n>1&&(A||!c.skipRearg[e])?W(t,c.methodRearg[e]||c.aryRearg[n]):t}function y(e,t){t=z(t);for(var n=-1,r=t.length,o=r-1,a=L(Object(e)),i=a;null!=i&&++n2?n-2:1,a&&a<=n?r:o(r,n)):r}},mixin:function(e){return function(t){var n=this;if(!F(n))return e(n,Object(t));var r=[];return U(B(t),function(e){F(t[e])&&r.push([e,n.prototype[e]])}),e(n,Object(t)),U(r,function(e){var t=e[1];F(t)?n.prototype[e[0]]=t:delete n.prototype[e[0]]}),n}},nthArg:function(e){return function(t){var n=t<0?1:V(t)+1;return R(e(t),n)}},rearg:function(e){return function(t,n){var r=n?n.length:0;return R(e(t,n),r)}},runInContext:function(t){return function(n){return s(e,t(n),f)}}};if(!w)return P(t,n);var q=n,G=[];return U(H,function(e){U(c.aryMethod[e],function(e){var t=q[c.remap[e]||e];t&&G.push([e,P(e,t)])})}),U(B(q),function(e){var t=q[e];if("function"==typeof t){for(var n=G.length;n--;)if(G[n][0]==e)return;t.convert=_(e,t),G.push([e,t])}}),U(G,function(e){q[e[0]]=e[1]}),q.convert=g,C&&(q.placeholder=k),U(B(q),function(e){U(c.realToAlias[e]||[],function(t){q[t]=q[e]})}),q}var c=n(632),d=n(16),f=Array.prototype.push;e.exports=s},function(e,t){t.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},t.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},t.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},t.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},t.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},t.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},t.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},t.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},t.placeholder={bind:!0,bindKey:!0,curry:!0,curryRight:!0,partial:!0,partialRight:!0},t.realToAlias=function(){var e=Object.prototype.hasOwnProperty,n=t.aliasToReal,r={};for(var o in n){var a=n[o];e.call(r,a)?r[a].push(o):r[a]=[o]}return r}(),t.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},t.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},t.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},function(e,t,n){e.exports={ary:n(618),assign:n(242),clone:n(621),curry:n(280),forEach:n(76),isArray:n(13),isFunction:n(47),iteratee:n(653),keys:n(162),rearg:n(660),toInteger:n(35),toPath:n(667)}},function(e,t,n){var r=n(17),o=r("compact",n(279),n(34));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("curry",n(280));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("eq",n(80));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("get",n(62));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("has",n(63));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("isFunction",n(47),n(34));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("isObject",n(23),n(34));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("isPlainObject",n(115),n(34));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("keys",n(25),n(34));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("map",n(19));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("min",n(657),n(34));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("pick",n(119));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("sortBy",n(662));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("startsWith",n(296));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("sum",n(665),n(34));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("take",n(666));o.placeholder=n(16),e.exports=o},function(e,t,n){var r=n(17),o=r("values",n(175),n(34));o.placeholder=n(16),e.exports=o},function(e,t,n){function r(e,t,n){return t=a(t),void 0===n?(n=t,t=0):n=a(n),e=i(e),o(e,t,n)}var o=n(511),a=n(299),i=n(120);e.exports=r},function(e,t,n){var r=n(33),o=n(512),a=n(44),i=n(539),u=a(function(e){var t=r(e,i);return t.length&&t[0]===e[0]?o(t):[]});e.exports=u},function(e,t,n){function r(e){return a("function"==typeof e?e:o(e,i))}var o=n(159),a=n(27),i=1;e.exports=r},function(e,t,n){var r;(function(e,o){(function(){function a(e,t){return e.set(t[0],t[1]),e}function i(e,t){return e.add(t),e}function u(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function l(e,t,n,r){for(var o=-1,a=null==e?0:e.length;++o-1}function h(e,t,n){for(var r=-1,o=null==e?0:e.length;++r-1;);return n}function K(e,t){for(var n=e.length;n--&&C(t,e[n],0)>-1;);return n}function F(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}function B(e){return"\\"+nr[e]}function W(e,t){return null==e?oe:e[t]}function V(e){return qn.test(e)}function z(e){return Gn.test(e)}function H(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}function Y(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}function q(e,t){return function(n){return e(t(n))}}function G(e,t){for(var n=-1,r=e.length,o=0,a=[];++n>>1,Be=[["ary",Ce],["bind",ye],["bindKey",ge],["curry",be],["curryRight",Ee],["flip",we],["partial",Oe],["partialRight",Pe],["rearg",xe]],We="[object Arguments]",Ve="[object Array]",ze="[object AsyncFunction]",He="[object Boolean]",Ye="[object Date]",qe="[object DOMException]",Ge="[object Error]",Qe="[object Function]",$e="[object GeneratorFunction]",Xe="[object Map]",Ze="[object Number]",Je="[object Null]",et="[object Object]",tt="[object Promise]",nt="[object Proxy]",rt="[object RegExp]",ot="[object Set]",at="[object String]",it="[object Symbol]",ut="[object Undefined]",lt="[object WeakMap]",st="[object WeakSet]",ct="[object ArrayBuffer]",dt="[object DataView]",ft="[object Float32Array]",pt="[object Float64Array]",ht="[object Int8Array]",vt="[object Int16Array]",mt="[object Int32Array]",yt="[object Uint8Array]",gt="[object Uint8ClampedArray]",_t="[object Uint16Array]",bt="[object Uint32Array]",Et=/\b__p \+= '';/g,Ot=/\b(__p \+=) '' \+/g,Pt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Ct=/&(?:amp|lt|gt|quot|#39);/g,xt=/[&<>"']/g,wt=RegExp(Ct.source),Tt=RegExp(xt.source),Mt=/<%-([\s\S]+?)%>/g,St=/<%([\s\S]+?)%>/g,At=/<%=([\s\S]+?)%>/g,kt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Nt=/^\w*$/,It=/^\./,jt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Dt=/[\\^$.*+?()[\]{}|]/g,Lt=RegExp(Dt.source),Rt=/^\s+|\s+$/g,Ut=/^\s+/,Kt=/\s+$/,Ft=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Bt=/\{\n\/\* \[wrapped with (.+)\] \*/,Wt=/,? & /,Vt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,zt=/\\(\\)?/g,Ht=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Yt=/\w*$/,qt=/^[-+]0x[0-9a-f]+$/i,Gt=/^0b[01]+$/i,Qt=/^\[object .+?Constructor\]$/,$t=/^0o[0-7]+$/i,Xt=/^(?:0|[1-9]\d*)$/,Zt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Jt=/($^)/,en=/['\n\r\u2028\u2029\\]/g,tn="\\ud800-\\udfff",nn="\\u0300-\\u036f",rn="\\ufe20-\\ufe2f",on="\\u20d0-\\u20ff",an=nn+rn+on,un="\\u2700-\\u27bf",ln="a-z\\xdf-\\xf6\\xf8-\\xff",sn="\\xac\\xb1\\xd7\\xf7",cn="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",dn="\\u2000-\\u206f",fn=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",pn="A-Z\\xc0-\\xd6\\xd8-\\xde",hn="\\ufe0e\\ufe0f",vn=sn+cn+dn+fn,mn="['’]",yn="["+tn+"]",gn="["+vn+"]",_n="["+an+"]",bn="\\d+",En="["+un+"]",On="["+ln+"]",Pn="[^"+tn+vn+bn+un+ln+pn+"]",Cn="\\ud83c[\\udffb-\\udfff]",xn="(?:"+_n+"|"+Cn+")",wn="[^"+tn+"]",Tn="(?:\\ud83c[\\udde6-\\uddff]){2}",Mn="[\\ud800-\\udbff][\\udc00-\\udfff]",Sn="["+pn+"]",An="\\u200d",kn="(?:"+On+"|"+Pn+")",Nn="(?:"+Sn+"|"+Pn+")",In="(?:"+mn+"(?:d|ll|m|re|s|t|ve))?",jn="(?:"+mn+"(?:D|LL|M|RE|S|T|VE))?",Dn=xn+"?",Ln="["+hn+"]?",Rn="(?:"+An+"(?:"+[wn,Tn,Mn].join("|")+")"+Ln+Dn+")*",Un="\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)",Kn="\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)",Fn=Ln+Dn+Rn,Bn="(?:"+[En,Tn,Mn].join("|")+")"+Fn,Wn="(?:"+[wn+_n+"?",_n,Tn,Mn,yn].join("|")+")",Vn=RegExp(mn,"g"),zn=RegExp(_n,"g"),Hn=RegExp(Cn+"(?="+Cn+")|"+Wn+Fn,"g"),Yn=RegExp([Sn+"?"+On+"+"+In+"(?="+[gn,Sn,"$"].join("|")+")",Nn+"+"+jn+"(?="+[gn,Sn+kn,"$"].join("|")+")",Sn+"?"+kn+"+"+In,Sn+"+"+jn,Kn,Un,bn,Bn].join("|"),"g"),qn=RegExp("["+An+tn+an+hn+"]"),Gn=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Qn=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],$n=-1,Xn={};Xn[ft]=Xn[pt]=Xn[ht]=Xn[vt]=Xn[mt]=Xn[yt]=Xn[gt]=Xn[_t]=Xn[bt]=!0,Xn[We]=Xn[Ve]=Xn[ct]=Xn[He]=Xn[dt]=Xn[Ye]=Xn[Ge]=Xn[Qe]=Xn[Xe]=Xn[Ze]=Xn[et]=Xn[rt]=Xn[ot]=Xn[at]=Xn[lt]=!1;var Zn={};Zn[We]=Zn[Ve]=Zn[ct]=Zn[dt]=Zn[He]=Zn[Ye]=Zn[ft]=Zn[pt]=Zn[ht]=Zn[vt]=Zn[mt]=Zn[Xe]=Zn[Ze]=Zn[et]=Zn[rt]=Zn[ot]=Zn[at]=Zn[it]=Zn[yt]=Zn[gt]=Zn[_t]=Zn[bt]=!0,Zn[Ge]=Zn[Qe]=Zn[lt]=!1;var Jn={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},er={"&":"&","<":"<",">":">",'"':""","'":"'"},tr={"&":"&","<":"<",">":">",""":'"',"'":"'"},nr={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},rr=parseFloat,or=parseInt,ar="object"==typeof e&&e&&e.Object===Object&&e,ir="object"==typeof self&&self&&self.Object===Object&&self,ur=ar||ir||Function("return this")(),lr="object"==typeof t&&t&&!t.nodeType&&t,sr=lr&&"object"==typeof o&&o&&!o.nodeType&&o,cr=sr&&sr.exports===lr,dr=cr&&ar.process,fr=function(){try{return dr&&dr.binding&&dr.binding("util")}catch(e){}}(),pr=fr&&fr.isArrayBuffer,hr=fr&&fr.isDate,vr=fr&&fr.isMap,mr=fr&&fr.isRegExp,yr=fr&&fr.isSet,gr=fr&&fr.isTypedArray,_r=M("length"),br=S(Jn),Er=S(er),Or=S(tr),Pr=function e(t){function n(e){if(sl(e)&&!Ef(e)&&!(e instanceof b)){if(e instanceof o)return e;if(bc.call(e,"__wrapped__"))return ii(e)}return new o(e)}function r(){}function o(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=oe}function b(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Ue,this.__views__=[]}function S(){var e=new b(this.__wrapped__);return e.__actions__=Bo(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=Bo(this.__iteratees__), +e.__takeCount__=this.__takeCount__,e.__views__=Bo(this.__views__),e}function X(){if(this.__filtered__){var e=new b(this);e.__dir__=-1,e.__filtered__=!0}else e=this.clone(),e.__dir__*=-1;return e}function te(){var e=this.__wrapped__.value(),t=this.__dir__,n=Ef(e),r=t<0,o=n?e.length:0,a=Aa(0,o,this.__views__),i=a.start,u=a.end,l=u-i,s=r?u:i-1,c=this.__iteratees__,d=c.length,f=0,p=$c(l,this.__takeCount__);if(!n||!r&&o==l&&p==l)return Oo(e,this.__actions__);var h=[];e:for(;l--&&f-1}function dn(e,t){var n=this.__data__,r=In(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function fn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Fn(e,t,n,r,o,a){var i,u=t&fe,l=t&pe,c=t&he;if(n&&(i=o?n(e,r,o,a):n(e)),i!==oe)return i;if(!ll(e))return e;var d=Ef(e);if(d){if(i=Ia(e),!u)return Bo(e,i)}else{var f=Ad(e),p=f==Qe||f==$e;if(Pf(e))return So(e,u);if(f==et||f==We||p&&!o){if(i=l||p?{}:ja(e),!u)return l?zo(e,Ln(i,e)):Vo(e,Dn(i,e))}else{if(!Zn[f])return o?e:{};i=Da(e,f,Fn,u)}}a||(a=new En);var h=a.get(e);if(h)return h;a.set(e,i);var v=c?l?Oa:Ea:l?Hl:zl,m=d?oe:v(e);return s(m||e,function(r,o){m&&(o=r,r=e[o]),Nn(i,o,Fn(r,t,n,o,e,a))}),i}function Bn(e){var t=zl(e);return function(n){return Wn(n,e,t)}}function Wn(e,t,n){var r=n.length;if(null==e)return!r;for(e=dc(e);r--;){var o=n[r],a=t[o],i=e[o];if(i===oe&&!(o in e)||!a(i))return!1}return!0}function Hn(e,t,n){if("function"!=typeof e)throw new hc(le);return Id(function(){e.apply(oe,n)},t)}function Yn(e,t,n,r){var o=-1,a=p,i=!0,u=e.length,l=[],s=t.length;if(!u)return l;n&&(t=v(t,D(n))),r?(a=h,i=!1):t.length>=ie&&(a=R,i=!1,t=new gn(t));e:for(;++oo?0:o+n),r=r===oe||r>o?o:wl(r),r<0&&(r+=o),r=n>r?0:Tl(r);n0&&n(u)?t>1?tr(u,t-1,n,r,o):m(o,u):r||(o[o.length]=u)}return o}function nr(e,t){return e&&bd(e,t,zl)}function ar(e,t){return e&&Ed(e,t,zl)}function ir(e,t){return f(t,function(t){return al(e[t])})}function lr(e,t){t=To(t,e);for(var n=0,r=t.length;null!=e&&nt}function _r(e,t){return null!=e&&bc.call(e,t)}function Pr(e,t){return null!=e&&t in dc(e)}function xr(e,t,n){return e>=$c(t,n)&&e=120&&c.length>=120)?new gn(i&&c):oe}c=e[0];var d=-1,f=u[0];e:for(;++d-1;)u!==e&&jc.call(u,l,1),jc.call(e,l,1);return e}function to(e,t){for(var n=e?t.length:0,r=n-1;n--;){var o=t[n];if(n==r||o!==a){var a=o;Ua(o)?jc.call(e,o,1):_o(e,o)}}return e}function no(e,t){return e+Vc(Jc()*(t-e+1))}function ro(e,t,n,r){for(var o=-1,a=Qc(Wc((t-e)/(n||1)),0),i=ic(a);a--;)i[r?a:++o]=e,e+=n;return i}function oo(e,t){var n="";if(!e||t<1||t>De)return n;do t%2&&(n+=e),t=Vc(t/2),t&&(e+=e);while(t);return n}function ao(e,t){return jd(Xa(e,t,js),e+"")}function io(e){return Mn(rs(e))}function uo(e,t){var n=rs(e);return ni(n,Kn(t,0,n.length))}function lo(e,t,n,r){if(!ll(e))return e;t=To(t,e);for(var o=-1,a=t.length,i=a-1,u=e;null!=u&&++oo?0:o+t),n=n>o?o:n,n<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var a=ic(o);++r>>1,i=e[a];null!==i&&!bl(i)&&(n?i<=t:i=ie){var s=t?null:wd(e);if(s)return Q(s);i=!1,o=R,l=new gn}else l=t?[]:u;e:for(;++r=r?e:co(e,t,n)}function So(e,t){if(t)return e.slice();var n=e.length,r=Ac?Ac(n):new e.constructor(n);return e.copy(r),r}function Ao(e){var t=new e.constructor(e.byteLength);return new Sc(t).set(new Sc(e)),t}function ko(e,t){var n=t?Ao(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}function No(e,t,n){var r=t?n(Y(e),fe):Y(e);return y(r,a,new e.constructor)}function Io(e){var t=new e.constructor(e.source,Yt.exec(e));return t.lastIndex=e.lastIndex,t}function jo(e,t,n){var r=t?n(Q(e),fe):Q(e);return y(r,i,new e.constructor)}function Do(e){return vd?dc(vd.call(e)):{}}function Lo(e,t){var n=t?Ao(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function Ro(e,t){if(e!==t){var n=e!==oe,r=null===e,o=e===e,a=bl(e),i=t!==oe,u=null===t,l=t===t,s=bl(t);if(!u&&!s&&!a&&e>t||a&&i&&l&&!u&&!s||r&&i&&l||!n&&l||!o)return 1;if(!r&&!a&&!s&&e=u)return l;var s=n[r];return l*("desc"==s?-1:1)}}return e.index-t.index}function Ko(e,t,n,r){for(var o=-1,a=e.length,i=n.length,u=-1,l=t.length,s=Qc(a-i,0),c=ic(l+s),d=!r;++u1?n[o-1]:oe,i=o>2?n[2]:oe;for(a=e.length>3&&"function"==typeof a?(o--,a):oe,i&&Ka(n[0],n[1],i)&&(a=o<3?oe:a,o=1),t=dc(t);++r-1?o[a?t[i]:i]:oe}}function ta(e){return ba(function(t){var n=t.length,r=n,a=o.prototype.thru;for(e&&t.reverse();r--;){var i=t[r];if("function"!=typeof i)throw new hc(le);if(a&&!u&&"wrapper"==Pa(i))var u=new o([],!0)}for(r=u?r:n;++r1&&g.reverse(),d&&lu))return!1;var s=a.get(e);if(s&&a.get(t))return s==t;var c=-1,d=!0,f=n&me?new gn:oe;for(a.set(e,t),a.set(t,e);++c1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(Ft,"{\n/* [wrapped with "+t+"] */\n")}function Ra(e){return Ef(e)||bf(e)||!!(Dc&&e&&e[Dc])}function Ua(e,t){return t=null==t?De:t,!!t&&("number"==typeof e||Xt.test(e))&&e>-1&&e%1==0&&e0){if(++t>=Se)return arguments[0]}else t=0;return e.apply(oe,arguments)}}function ni(e,t){var n=-1,r=e.length,o=r-1;for(t=t===oe?r:t;++n=this.__values__.length,t=e?oe:this.__values__[this.__index__++];return{done:e,value:t}}function iu(){return this}function uu(e){for(var t,n=this;n instanceof r;){var o=ii(n);o.__index__=0,o.__values__=oe,t?a.__wrapped__=o:t=o;var a=o;n=n.__wrapped__}return a.__wrapped__=e,t}function lu(){var e=this.__wrapped__;if(e instanceof b){var t=e;return this.__actions__.length&&(t=new b(this)),t=t.reverse(),t.__actions__.push({func:nu,args:[Ni],thisArg:oe}),new o(t,this.__chain__)}return this.thru(Ni)}function su(){return Oo(this.__wrapped__,this.__actions__)}function cu(e,t,n){var r=Ef(e)?d:qn;return n&&Ka(e,t,n)&&(t=oe),r(e,xa(t,3))}function du(e,t){var n=Ef(e)?f:er;return n(e,xa(t,3))}function fu(e,t){return tr(gu(e,t),1)}function pu(e,t){return tr(gu(e,t),je)}function hu(e,t,n){return n=n===oe?1:wl(n),tr(gu(e,t),n)}function vu(e,t){var n=Ef(e)?s:gd;return n(e,xa(t,3))}function mu(e,t){var n=Ef(e)?c:_d;return n(e,xa(t,3))}function yu(e,t,n,r){e=$u(e)?e:rs(e),n=n&&!r?wl(n):0;var o=e.length;return n<0&&(n=Qc(o+n,0)),_l(e)?n<=o&&e.indexOf(t,n)>-1:!!o&&C(e,t,n)>-1}function gu(e,t){var n=Ef(e)?v:zr;return n(e,xa(t,3))}function _u(e,t,n,r){return null==e?[]:(Ef(t)||(t=null==t?[]:[t]),n=r?oe:n,Ef(n)||(n=null==n?[]:[n]),$r(e,t,n))}function bu(e,t,n){var r=Ef(e)?y:A,o=arguments.length<3;return r(e,xa(t,4),n,o,gd)}function Eu(e,t,n){var r=Ef(e)?g:A,o=arguments.length<3;return r(e,xa(t,4),n,o,_d)}function Ou(e,t){var n=Ef(e)?f:er;return n(e,Lu(xa(t,3)))}function Pu(e){var t=Ef(e)?Mn:io;return t(e)}function Cu(e,t,n){t=(n?Ka(e,t,n):t===oe)?1:wl(t);var r=Ef(e)?Sn:uo;return r(e,t)}function xu(e){var t=Ef(e)?An:so;return t(e)}function wu(e){if(null==e)return 0;if($u(e))return _l(e)?J(e):e.length;var t=Ad(e);return t==Xe||t==ot?e.size:Br(e).length}function Tu(e,t,n){var r=Ef(e)?_:fo;return n&&Ka(e,t,n)&&(t=oe),r(e,xa(t,3))}function Mu(e,t){if("function"!=typeof t)throw new hc(le);return e=wl(e),function(){if(--e<1)return t.apply(this,arguments); +}}function Su(e,t,n){return t=n?oe:t,t=e&&null==t?e.length:t,pa(e,Ce,oe,oe,oe,oe,t)}function Au(e,t){var n;if("function"!=typeof t)throw new hc(le);return e=wl(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=oe),n}}function ku(e,t,n){t=n?oe:t;var r=pa(e,be,oe,oe,oe,oe,oe,t);return r.placeholder=ku.placeholder,r}function Nu(e,t,n){t=n?oe:t;var r=pa(e,Ee,oe,oe,oe,oe,oe,t);return r.placeholder=Nu.placeholder,r}function Iu(e,t,n){function r(t){var n=f,r=p;return f=p=oe,g=t,v=e.apply(r,n)}function o(e){return g=e,m=Id(u,t),_?r(e):v}function a(e){var n=e-y,r=e-g,o=t-n;return b?$c(o,h-r):o}function i(e){var n=e-y,r=e-g;return y===oe||n>=t||n<0||b&&r>=h}function u(){var e=sf();return i(e)?l(e):void(m=Id(u,a(e)))}function l(e){return m=oe,E&&f?r(e):(f=p=oe,v)}function s(){m!==oe&&xd(m),g=0,f=y=p=m=oe}function c(){return m===oe?v:l(sf())}function d(){var e=sf(),n=i(e);if(f=arguments,p=this,y=e,n){if(m===oe)return o(y);if(b)return m=Id(u,t),r(y)}return m===oe&&(m=Id(u,t)),v}var f,p,h,v,m,y,g=0,_=!1,b=!1,E=!0;if("function"!=typeof e)throw new hc(le);return t=Ml(t)||0,ll(n)&&(_=!!n.leading,b="maxWait"in n,h=b?Qc(Ml(n.maxWait)||0,t):h,E="trailing"in n?!!n.trailing:E),d.cancel=s,d.flush=c,d}function ju(e){return pa(e,we)}function Du(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new hc(le);var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],a=n.cache;if(a.has(o))return a.get(o);var i=e.apply(this,r);return n.cache=a.set(o,i)||a,i};return n.cache=new(Du.Cache||fn),n}function Lu(e){if("function"!=typeof e)throw new hc(le);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}function Ru(e){return Au(2,e)}function Uu(e,t){if("function"!=typeof e)throw new hc(le);return t=t===oe?t:wl(t),ao(e,t)}function Ku(e,t){if("function"!=typeof e)throw new hc(le);return t=null==t?0:Qc(wl(t),0),ao(function(n){var r=n[t],o=Mo(n,0,t);return r&&m(o,r),u(e,this,o)})}function Fu(e,t,n){var r=!0,o=!0;if("function"!=typeof e)throw new hc(le);return ll(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),Iu(e,t,{leading:r,maxWait:t,trailing:o})}function Bu(e){return Su(e,1)}function Wu(e,t){return vf(wo(t),e)}function Vu(){if(!arguments.length)return[];var e=arguments[0];return Ef(e)?e:[e]}function zu(e){return Fn(e,he)}function Hu(e,t){return t="function"==typeof t?t:oe,Fn(e,he,t)}function Yu(e){return Fn(e,fe|he)}function qu(e,t){return t="function"==typeof t?t:oe,Fn(e,fe|he,t)}function Gu(e,t){return null==t||Wn(e,t,zl(t))}function Qu(e,t){return e===t||e!==e&&t!==t}function $u(e){return null!=e&&ul(e.length)&&!al(e)}function Xu(e){return sl(e)&&$u(e)}function Zu(e){return e===!0||e===!1||sl(e)&&dr(e)==He}function Ju(e){return sl(e)&&1===e.nodeType&&!yl(e)}function el(e){if(null==e)return!0;if($u(e)&&(Ef(e)||"string"==typeof e||"function"==typeof e.splice||Pf(e)||Mf(e)||bf(e)))return!e.length;var t=Ad(e);if(t==Xe||t==ot)return!e.size;if(za(e))return!Br(e).length;for(var n in e)if(bc.call(e,n))return!1;return!0}function tl(e,t){return Nr(e,t)}function nl(e,t,n){n="function"==typeof n?n:oe;var r=n?n(e,t):oe;return r===oe?Nr(e,t,oe,n):!!r}function rl(e){if(!sl(e))return!1;var t=dr(e);return t==Ge||t==qe||"string"==typeof e.message&&"string"==typeof e.name&&!yl(e)}function ol(e){return"number"==typeof e&&Yc(e)}function al(e){if(!ll(e))return!1;var t=dr(e);return t==Qe||t==$e||t==ze||t==nt}function il(e){return"number"==typeof e&&e==wl(e)}function ul(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=De}function ll(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function sl(e){return null!=e&&"object"==typeof e}function cl(e,t){return e===t||Dr(e,t,Ta(t))}function dl(e,t,n){return n="function"==typeof n?n:oe,Dr(e,t,Ta(t),n)}function fl(e){return ml(e)&&e!=+e}function pl(e){if(kd(e))throw new lc(ue);return Lr(e)}function hl(e){return null===e}function vl(e){return null==e}function ml(e){return"number"==typeof e||sl(e)&&dr(e)==Ze}function yl(e){if(!sl(e)||dr(e)!=et)return!1;var t=kc(e);if(null===t)return!0;var n=bc.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&_c.call(n)==Cc}function gl(e){return il(e)&&e>=-De&&e<=De}function _l(e){return"string"==typeof e||!Ef(e)&&sl(e)&&dr(e)==at}function bl(e){return"symbol"==typeof e||sl(e)&&dr(e)==it}function El(e){return e===oe}function Ol(e){return sl(e)&&Ad(e)==lt}function Pl(e){return sl(e)&&dr(e)==st}function Cl(e){if(!e)return[];if($u(e))return _l(e)?ee(e):Bo(e);if(Lc&&e[Lc])return H(e[Lc]());var t=Ad(e),n=t==Xe?Y:t==ot?Q:rs;return n(e)}function xl(e){if(!e)return 0===e?e:0;if(e=Ml(e),e===je||e===-je){var t=e<0?-1:1;return t*Le}return e===e?e:0}function wl(e){var t=xl(e),n=t%1;return t===t?n?t-n:t:0}function Tl(e){return e?Kn(wl(e),0,Ue):0}function Ml(e){if("number"==typeof e)return e;if(bl(e))return Re;if(ll(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=ll(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(Rt,"");var n=Gt.test(e);return n||$t.test(e)?or(e.slice(2),n?2:8):qt.test(e)?Re:+e}function Sl(e){return Wo(e,Hl(e))}function Al(e){return e?Kn(wl(e),-De,De):0===e?e:0}function kl(e){return null==e?"":yo(e)}function Nl(e,t){var n=yd(e);return null==t?n:Dn(n,t)}function Il(e,t){return O(e,xa(t,3),nr)}function jl(e,t){return O(e,xa(t,3),ar)}function Dl(e,t){return null==e?e:bd(e,xa(t,3),Hl)}function Ll(e,t){return null==e?e:Ed(e,xa(t,3),Hl)}function Rl(e,t){return e&&nr(e,xa(t,3))}function Ul(e,t){return e&&ar(e,xa(t,3))}function Kl(e){return null==e?[]:ir(e,zl(e))}function Fl(e){return null==e?[]:ir(e,Hl(e))}function Bl(e,t,n){var r=null==e?oe:lr(e,t);return r===oe?n:r}function Wl(e,t){return null!=e&&Na(e,t,_r)}function Vl(e,t){return null!=e&&Na(e,t,Pr)}function zl(e){return $u(e)?Tn(e):Br(e)}function Hl(e){return $u(e)?Tn(e,!0):Wr(e)}function Yl(e,t){var n={};return t=xa(t,3),nr(e,function(e,r,o){Rn(n,t(e,r,o),e)}),n}function ql(e,t){var n={};return t=xa(t,3),nr(e,function(e,r,o){Rn(n,r,t(e,r,o))}),n}function Gl(e,t){return Ql(e,Lu(xa(t)))}function Ql(e,t){if(null==e)return{};var n=v(Oa(e),function(e){return[e]});return t=xa(t),Zr(e,n,function(e,n){return t(e,n[0])})}function $l(e,t,n){t=To(t,e);var r=-1,o=t.length;for(o||(o=1,e=oe);++rt){var r=e;e=t,t=r}if(n||e%1||t%1){var o=Jc();return $c(e+o*(t-e+rr("1e-"+((o+"").length-1))),t)}return no(e,t)}function ls(e){return ep(kl(e).toLowerCase())}function ss(e){return e=kl(e),e&&e.replace(Zt,br).replace(zn,"")}function cs(e,t,n){e=kl(e),t=yo(t);var r=e.length;n=n===oe?r:Kn(wl(n),0,r);var o=n;return n-=t.length,n>=0&&e.slice(n,o)==t}function ds(e){return e=kl(e),e&&Tt.test(e)?e.replace(xt,Er):e}function fs(e){return e=kl(e),e&&Lt.test(e)?e.replace(Dt,"\\$&"):e}function ps(e,t,n){e=kl(e),t=wl(t);var r=t?J(e):0;if(!t||r>=t)return e;var o=(t-r)/2;return ia(Vc(o),n)+e+ia(Wc(o),n)}function hs(e,t,n){e=kl(e),t=wl(t);var r=t?J(e):0;return t&&r>>0)?(e=kl(e),e&&("string"==typeof t||null!=t&&!wf(t))&&(t=yo(t),!t&&V(e))?Mo(ee(e),0,n):e.split(t,n)):[]}function bs(e,t,n){return e=kl(e),n=null==n?0:Kn(wl(n),0,e.length),t=yo(t),e.slice(n,n+t.length)==t}function Es(e,t,r){var o=n.templateSettings;r&&Ka(e,t,r)&&(t=oe),e=kl(e),t=If({},t,o,ha);var a,i,u=If({},t.imports,o.imports,ha),l=zl(u),s=L(u,l),c=0,d=t.interpolate||Jt,f="__p += '",p=fc((t.escape||Jt).source+"|"+d.source+"|"+(d===At?Ht:Jt).source+"|"+(t.evaluate||Jt).source+"|$","g"),h="//# sourceURL="+("sourceURL"in t?t.sourceURL:"lodash.templateSources["+ ++$n+"]")+"\n";e.replace(p,function(t,n,r,o,u,l){return r||(r=o),f+=e.slice(c,l).replace(en,B),n&&(a=!0,f+="' +\n__e("+n+") +\n'"),u&&(i=!0,f+="';\n"+u+";\n__p += '"),r&&(f+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),c=l+t.length,t}),f+="';\n";var v=t.variable;v||(f="with (obj) {\n"+f+"\n}\n"),f=(i?f.replace(Et,""):f).replace(Ot,"$1").replace(Pt,"$1;"),f="function("+(v||"obj")+") {\n"+(v?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(a?", __e = _.escape":"")+(i?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+f+"return __p\n}";var m=tp(function(){return sc(l,h+"return "+f).apply(oe,s)});if(m.source=f,rl(m))throw m;return m}function Os(e){return kl(e).toLowerCase()}function Ps(e){return kl(e).toUpperCase()}function Cs(e,t,n){if(e=kl(e),e&&(n||t===oe))return e.replace(Rt,"");if(!e||!(t=yo(t)))return e;var r=ee(e),o=ee(t),a=U(r,o),i=K(r,o)+1;return Mo(r,a,i).join("")}function xs(e,t,n){if(e=kl(e),e&&(n||t===oe))return e.replace(Kt,"");if(!e||!(t=yo(t)))return e;var r=ee(e),o=K(r,ee(t))+1;return Mo(r,0,o).join("")}function ws(e,t,n){if(e=kl(e),e&&(n||t===oe))return e.replace(Ut,"");if(!e||!(t=yo(t)))return e;var r=ee(e),o=U(r,ee(t));return Mo(r,o).join("")}function Ts(e,t){var n=Te,r=Me;if(ll(t)){var o="separator"in t?t.separator:o;n="length"in t?wl(t.length):n,r="omission"in t?yo(t.omission):r}e=kl(e);var a=e.length;if(V(e)){var i=ee(e);a=i.length}if(n>=a)return e;var u=n-J(r);if(u<1)return r;var l=i?Mo(i,0,u).join(""):e.slice(0,u);if(o===oe)return l+r;if(i&&(u+=l.length-u),wf(o)){if(e.slice(u).search(o)){var s,c=l;for(o.global||(o=fc(o.source,kl(Yt.exec(o))+"g")),o.lastIndex=0;s=o.exec(c);)var d=s.index;l=l.slice(0,d===oe?u:d)}}else if(e.indexOf(yo(o),u)!=u){var f=l.lastIndexOf(o);f>-1&&(l=l.slice(0,f))}return l+r}function Ms(e){return e=kl(e),e&&wt.test(e)?e.replace(Ct,Or):e}function Ss(e,t,n){return e=kl(e),t=n?oe:t,t===oe?z(e)?re(e):E(e):e.match(t)||[]}function As(e){var t=null==e?0:e.length,n=xa();return e=t?v(e,function(e){if("function"!=typeof e[1])throw new hc(le);return[n(e[0]),e[1]]}):[],ao(function(n){for(var r=-1;++rDe)return[];var n=Ue,r=$c(e,Ue);t=xa(t),e-=Ue;for(var o=I(r,t);++n1?e[t-1]:oe;return n="function"==typeof n?(e.pop(),n):oe,Xi(e,n)}),Jd=ba(function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,a=function(t){return Un(t,e)};return!(t>1||this.__actions__.length)&&r instanceof b&&Ua(n)?(r=r.slice(n,+n+(t?1:0)),r.__actions__.push({func:nu,args:[a],thisArg:oe}),new o(r,this.__chain__).thru(function(e){return t&&!e.length&&e.push(oe),e})):this.thru(a)}),ef=Ho(function(e,t,n){bc.call(e,n)?++e[n]:Rn(e,n,1)}),tf=ea(vi),nf=ea(mi),rf=Ho(function(e,t,n){bc.call(e,n)?e[n].push(t):Rn(e,n,[t])}),of=ao(function(e,t,n){var r=-1,o="function"==typeof t,a=$u(e)?ic(e.length):[];return gd(e,function(e){a[++r]=o?u(t,e,n):Mr(e,t,n)}),a}),af=Ho(function(e,t,n){Rn(e,n,t)}),uf=Ho(function(e,t,n){e[n?0:1].push(t)},function(){return[[],[]]}),lf=ao(function(e,t){if(null==e)return[];var n=t.length;return n>1&&Ka(e,t[0],t[1])?t=[]:n>2&&Ka(t[0],t[1],t[2])&&(t=[t[0]]),$r(e,tr(t,1),[])}),sf=Fc||function(){return ur.Date.now()},cf=ao(function(e,t,n){var r=ye;if(n.length){var o=G(n,Ca(cf));r|=Oe}return pa(e,r,t,n,o)}),df=ao(function(e,t,n){var r=ye|ge;if(n.length){var o=G(n,Ca(df));r|=Oe}return pa(t,r,e,n,o)}),ff=ao(function(e,t){return Hn(e,1,t)}),pf=ao(function(e,t,n){return Hn(e,Ml(t)||0,n)});Du.Cache=fn;var hf=Cd(function(e,t){t=1==t.length&&Ef(t[0])?v(t[0],D(xa())):v(tr(t,1),D(xa()));var n=t.length;return ao(function(r){for(var o=-1,a=$c(r.length,n);++o=t}),bf=Sr(function(){return arguments}())?Sr:function(e){return sl(e)&&bc.call(e,"callee")&&!Ic.call(e,"callee")},Ef=ic.isArray,Of=pr?D(pr):Ar,Pf=Hc||Hs,Cf=hr?D(hr):kr,xf=vr?D(vr):jr,wf=mr?D(mr):Rr,Tf=yr?D(yr):Ur,Mf=gr?D(gr):Kr,Sf=sa(Vr),Af=sa(function(e,t){return e<=t}),kf=Yo(function(e,t){if(za(t)||$u(t))return void Wo(t,zl(t),e);for(var n in t)bc.call(t,n)&&Nn(e,n,t[n])}),Nf=Yo(function(e,t){Wo(t,Hl(t),e)}),If=Yo(function(e,t,n,r){Wo(t,Hl(t),e,r)}),jf=Yo(function(e,t,n,r){Wo(t,zl(t),e,r)}),Df=ba(Un),Lf=ao(function(e){return e.push(oe,ha),u(If,oe,e)}),Rf=ao(function(e){return e.push(oe,va),u(Wf,oe,e)}),Uf=ra(function(e,t,n){e[t]=n},Ns(js)),Kf=ra(function(e,t,n){bc.call(e,t)?e[t].push(n):e[t]=[n]},xa),Ff=ao(Mr),Bf=Yo(function(e,t,n){qr(e,t,n)}),Wf=Yo(function(e,t,n,r){qr(e,t,n,r)}),Vf=ba(function(e,t){var n={};if(null==e)return n;var r=!1;t=v(t,function(t){return t=To(t,e),r||(r=t.length>1),t}),Wo(e,Oa(e),n),r&&(n=Fn(n,fe|pe|he,ma));for(var o=t.length;o--;)_o(n,t[o]);return n}),zf=ba(function(e,t){return null==e?{}:Xr(e,t)}),Hf=fa(zl),Yf=fa(Hl),qf=Xo(function(e,t,n){return t=t.toLowerCase(),e+(n?ls(t):t)}),Gf=Xo(function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}),Qf=Xo(function(e,t,n){return e+(n?" ":"")+t.toLowerCase()}),$f=$o("toLowerCase"),Xf=Xo(function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}),Zf=Xo(function(e,t,n){return e+(n?" ":"")+ep(t)}),Jf=Xo(function(e,t,n){return e+(n?" ":"")+t.toUpperCase()}),ep=$o("toUpperCase"),tp=ao(function(e,t){try{return u(e,oe,t)}catch(e){return rl(e)?e:new lc(e)}}),np=ba(function(e,t){return s(t,function(t){t=ri(t),Rn(e,t,cf(e[t],e))}),e}),rp=ta(),op=ta(!0),ap=ao(function(e,t){return function(n){return Mr(n,e,t)}}),ip=ao(function(e,t){return function(n){return Mr(e,n,t)}}),up=aa(v),lp=aa(d),sp=aa(_),cp=la(),dp=la(!0),fp=oa(function(e,t){return e+t},0),pp=da("ceil"),hp=oa(function(e,t){return e/t},1),vp=da("floor"),mp=oa(function(e,t){return e*t},1),yp=da("round"),gp=oa(function(e,t){return e-t},0);return n.after=Mu,n.ary=Su,n.assign=kf,n.assignIn=Nf,n.assignInWith=If,n.assignWith=jf,n.at=Df,n.before=Au,n.bind=cf,n.bindAll=np,n.bindKey=df,n.castArray=Vu,n.chain=eu,n.chunk=ui,n.compact=li,n.concat=si,n.cond=As,n.conforms=ks,n.constant=Ns,n.countBy=ef,n.create=Nl,n.curry=ku,n.curryRight=Nu,n.debounce=Iu,n.defaults=Lf,n.defaultsDeep=Rf,n.defer=ff,n.delay=pf,n.difference=Ld,n.differenceBy=Rd,n.differenceWith=Ud,n.drop=ci,n.dropRight=di,n.dropRightWhile=fi,n.dropWhile=pi,n.fill=hi,n.filter=du,n.flatMap=fu,n.flatMapDeep=pu,n.flatMapDepth=hu,n.flatten=yi,n.flattenDeep=gi,n.flattenDepth=_i,n.flip=ju,n.flow=rp,n.flowRight=op,n.fromPairs=bi,n.functions=Kl,n.functionsIn=Fl,n.groupBy=rf,n.initial=Pi,n.intersection=Kd,n.intersectionBy=Fd,n.intersectionWith=Bd,n.invert=Uf,n.invertBy=Kf,n.invokeMap=of,n.iteratee=Ds,n.keyBy=af,n.keys=zl,n.keysIn=Hl,n.map=gu,n.mapKeys=Yl,n.mapValues=ql,n.matches=Ls,n.matchesProperty=Rs,n.memoize=Du,n.merge=Bf,n.mergeWith=Wf,n.method=ap,n.methodOf=ip,n.mixin=Us,n.negate=Lu,n.nthArg=Bs,n.omit=Vf,n.omitBy=Gl,n.once=Ru,n.orderBy=_u,n.over=up,n.overArgs=hf,n.overEvery=lp,n.overSome=sp,n.partial=vf,n.partialRight=mf,n.partition=uf,n.pick=zf,n.pickBy=Ql,n.property=Ws,n.propertyOf=Vs,n.pull=Wd,n.pullAll=Mi,n.pullAllBy=Si,n.pullAllWith=Ai,n.pullAt=Vd,n.range=cp,n.rangeRight=dp,n.rearg=yf,n.reject=Ou,n.remove=ki,n.rest=Uu,n.reverse=Ni,n.sampleSize=Cu,n.set=Xl,n.setWith=Zl,n.shuffle=xu,n.slice=Ii,n.sortBy=lf,n.sortedUniq=Fi,n.sortedUniqBy=Bi,n.split=_s,n.spread=Ku,n.tail=Wi,n.take=Vi,n.takeRight=zi,n.takeRightWhile=Hi,n.takeWhile=Yi,n.tap=tu,n.throttle=Fu,n.thru=nu,n.toArray=Cl,n.toPairs=Hf,n.toPairsIn=Yf,n.toPath=$s,n.toPlainObject=Sl,n.transform=Jl,n.unary=Bu,n.union=zd,n.unionBy=Hd,n.unionWith=Yd,n.uniq=qi,n.uniqBy=Gi,n.uniqWith=Qi,n.unset=es,n.unzip=$i,n.unzipWith=Xi,n.update=ts,n.updateWith=ns,n.values=rs,n.valuesIn=os,n.without=qd,n.words=Ss,n.wrap=Wu,n.xor=Gd,n.xorBy=Qd,n.xorWith=$d,n.zip=Xd,n.zipObject=Zi,n.zipObjectDeep=Ji,n.zipWith=Zd,n.entries=Hf,n.entriesIn=Yf,n.extend=Nf,n.extendWith=If,Us(n,n),n.add=fp,n.attempt=tp,n.camelCase=qf,n.capitalize=ls,n.ceil=pp,n.clamp=as,n.clone=zu,n.cloneDeep=Yu,n.cloneDeepWith=qu,n.cloneWith=Hu,n.conformsTo=Gu,n.deburr=ss,n.defaultTo=Is,n.divide=hp,n.endsWith=cs,n.eq=Qu,n.escape=ds,n.escapeRegExp=fs,n.every=cu,n.find=tf,n.findIndex=vi,n.findKey=Il,n.findLast=nf,n.findLastIndex=mi,n.findLastKey=jl,n.floor=vp,n.forEach=vu,n.forEachRight=mu,n.forIn=Dl,n.forInRight=Ll,n.forOwn=Rl,n.forOwnRight=Ul,n.get=Bl,n.gt=gf,n.gte=_f,n.has=Wl,n.hasIn=Vl,n.head=Ei,n.identity=js,n.includes=yu,n.indexOf=Oi,n.inRange=is,n.invoke=Ff,n.isArguments=bf,n.isArray=Ef,n.isArrayBuffer=Of,n.isArrayLike=$u,n.isArrayLikeObject=Xu,n.isBoolean=Zu,n.isBuffer=Pf,n.isDate=Cf,n.isElement=Ju,n.isEmpty=el,n.isEqual=tl,n.isEqualWith=nl,n.isError=rl,n.isFinite=ol,n.isFunction=al,n.isInteger=il,n.isLength=ul,n.isMap=xf,n.isMatch=cl,n.isMatchWith=dl,n.isNaN=fl,n.isNative=pl,n.isNil=vl,n.isNull=hl,n.isNumber=ml,n.isObject=ll,n.isObjectLike=sl,n.isPlainObject=yl,n.isRegExp=wf,n.isSafeInteger=gl,n.isSet=Tf,n.isString=_l,n.isSymbol=bl,n.isTypedArray=Mf,n.isUndefined=El,n.isWeakMap=Ol,n.isWeakSet=Pl,n.join=Ci,n.kebabCase=Gf,n.last=xi,n.lastIndexOf=wi,n.lowerCase=Qf,n.lowerFirst=$f,n.lt=Sf,n.lte=Af,n.max=Zs,n.maxBy=Js,n.mean=ec,n.meanBy=tc,n.min=nc,n.minBy=rc,n.stubArray=zs,n.stubFalse=Hs,n.stubObject=Ys,n.stubString=qs,n.stubTrue=Gs,n.multiply=mp,n.nth=Ti,n.noConflict=Ks,n.noop=Fs,n.now=sf,n.pad=ps,n.padEnd=hs,n.padStart=vs,n.parseInt=ms,n.random=us,n.reduce=bu,n.reduceRight=Eu,n.repeat=ys,n.replace=gs,n.result=$l,n.round=yp,n.runInContext=e,n.sample=Pu,n.size=wu,n.snakeCase=Xf,n.some=Tu,n.sortedIndex=ji,n.sortedIndexBy=Di,n.sortedIndexOf=Li,n.sortedLastIndex=Ri,n.sortedLastIndexBy=Ui,n.sortedLastIndexOf=Ki,n.startCase=Zf,n.startsWith=bs,n.subtract=gp,n.sum=oc,n.sumBy=ac,n.template=Es,n.times=Qs,n.toFinite=xl,n.toInteger=wl,n.toLength=Tl,n.toLower=Os,n.toNumber=Ml,n.toSafeInteger=Al,n.toString=kl,n.toUpper=Ps,n.trim=Cs,n.trimEnd=xs,n.trimStart=ws,n.truncate=Ts,n.unescape=Ms,n.uniqueId=Xs,n.upperCase=Jf,n.upperFirst=ep,n.each=vu,n.eachRight=mu,n.first=Ei,Us(n,function(){var e={};return nr(n,function(t,r){bc.call(n.prototype,r)||(e[r]=t)}),e}(),{chain:!1}),n.VERSION=ae,s(["bind","bindKey","curry","curryRight","partial","partialRight"],function(e){n[e].placeholder=n}),s(["drop","take"],function(e,t){b.prototype[e]=function(n){n=n===oe?1:Qc(wl(n),0);var r=this.__filtered__&&!t?new b(this):this.clone();return r.__filtered__?r.__takeCount__=$c(n,r.__takeCount__):r.__views__.push({size:$c(n,Ue),type:e+(r.__dir__<0?"Right":"")}),r},b.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}}),s(["filter","map","takeWhile"],function(e,t){var n=t+1,r=n==ke||n==Ie;b.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:xa(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}}),s(["head","last"],function(e,t){var n="take"+(t?"Right":"");b.prototype[e]=function(){return this[n](1).value()[0]}}),s(["initial","tail"],function(e,t){var n="drop"+(t?"":"Right");b.prototype[e]=function(){return this.__filtered__?new b(this):this[n](1)}}),b.prototype.compact=function(){return this.filter(js)},b.prototype.find=function(e){return this.filter(e).head()},b.prototype.findLast=function(e){return this.reverse().find(e)},b.prototype.invokeMap=ao(function(e,t){return"function"==typeof e?new b(this):this.map(function(n){return Mr(n,e,t)})}),b.prototype.reject=function(e){return this.filter(Lu(xa(e)))},b.prototype.slice=function(e,t){e=wl(e);var n=this;return n.__filtered__&&(e>0||t<0)?new b(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==oe&&(t=wl(t),n=t<0?n.dropRight(-t):n.take(t-e)),n)},b.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},b.prototype.toArray=function(){return this.take(Ue)},nr(b.prototype,function(e,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),a=/^(?:head|last)$/.test(t),i=n[a?"take"+("last"==t?"Right":""):t],u=a||/^find/.test(t);i&&(n.prototype[t]=function(){var t=this.__wrapped__,l=a?[1]:arguments,s=t instanceof b,c=l[0],d=s||Ef(t),f=function(e){var t=i.apply(n,m([e],l));return a&&p?t[0]:t};d&&r&&"function"==typeof c&&1!=c.length&&(s=d=!1);var p=this.__chain__,h=!!this.__actions__.length,v=u&&!p,y=s&&!h;if(!u&&d){t=y?t:new b(this);var g=e.apply(t,l);return g.__actions__.push({func:nu,args:[f],thisArg:oe}),new o(g,p)}return v&&y?e.apply(this,l):(g=this.thru(f),v?a?g.value()[0]:g.value():g)})}),s(["pop","push","shift","sort","splice","unshift"],function(e){var t=vc[e],r=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",o=/^(?:pop|shift)$/.test(e);n.prototype[e]=function(){var e=arguments;if(o&&!this.__chain__){var n=this.value();return t.apply(Ef(n)?n:[],e)}return this[r](function(n){return t.apply(Ef(n)?n:[],e)})}}),nr(b.prototype,function(e,t){var r=n[t];if(r){var o=r.name+"",a=ld[o]||(ld[o]=[]);a.push({name:t,func:r})}}),ld[na(oe,ge).name]=[{name:"wrapper",func:oe}],b.prototype.clone=S,b.prototype.reverse=X,b.prototype.value=te,n.prototype.at=Jd,n.prototype.chain=ru,n.prototype.commit=ou,n.prototype.next=au,n.prototype.plant=uu,n.prototype.reverse=lu,n.prototype.toJSON=n.prototype.valueOf=n.prototype.value=su,n.prototype.first=n.prototype.head,Lc&&(n.prototype[Lc]=iu),n},Cr=Pr();ur._=Cr,r=function(){return Cr}.call(t,n,t,o),!(r!==oe&&(o.exports=r))}).call(this)}).call(t,function(){return this}(),n(134)(e))},function(e,t,n){function r(e,t){var n={};return t=i(t,3),a(e,function(e,r,a){o(n,r,t(e,r,a))}),n}var o=n(158),a=n(160),i=n(27);e.exports=r},function(e,t,n){function r(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError(a);var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],a=n.cache;if(a.has(o))return a.get(o);var i=e.apply(this,r);return n.cache=a.set(o,i)||a,i};return n.cache=new(r.Cache||o),n}var o=n(154),a="Expected a function";r.Cache=o,e.exports=r},function(e,t,n){function r(e){return e&&e.length?o(e,i,a):void 0}var o=n(506),a=n(521),i=n(46);e.exports=r},function(e,t,n){var r=n(44),o=n(105),a=n(166),i=n(111),u=64,l=r(function(e,t){var n=i(t,a(l));return o(e,u,void 0,t,n)});l.placeholder={},e.exports=l},function(e,t,n){function r(e){return i(e)?o(u(e)):a(e)}var o=n(527),a=n(528),i=n(169),u=n(45);e.exports=r},function(e,t,n){var r=n(105),o=n(106),a=256,i=o(function(e,t){return r(e,a,void 0,void 0,void 0,t)});e.exports=i},function(e,t,n){var r=n(564),o=r("round");e.exports=o},function(e,t,n){var r=n(98),o=n(524),a=n(44),i=n(109),u=a(function(e,t){if(null==e)return[];var n=t.length;return n>1&&i(e,t[0],t[1])?t=[]:n>2&&i(t[0],t[1],t[2])&&(t=[t[0]]),o(e,r(t,1),[])});e.exports=u},function(e,t,n){var r=n(559),o=n(670),a=r(function(e,t,n){return e+(n?" ":"")+o(t)});e.exports=a},function(e,t){function n(){return!1}e.exports=n},function(e,t,n){function r(e){return e&&e.length?o(e,a):0}var o=n(535),a=n(46);e.exports=r},function(e,t,n){function r(e,t,n){return e&&e.length?(t=n||void 0===t?1:a(t),o(e,0,t<0?0:t)):[]}var o=n(100),a=n(35);e.exports=r},function(e,t,n){function r(e){return i(e)?o(e,s):u(e)?[e]:a(l(c(e)))}var o=n(33),a=n(103),i=n(13),u=n(53),l=n(277),s=n(45),c=n(48);e.exports=r},function(e,t,n){function r(e,t,n){var r=s(e),h=r||c(e)||p(e);if(t=u(t,4),null==n){var v=e&&e.constructor;n=h?r?new v:[]:f(e)&&d(v)?a(l(e)):{}}return(h?o:i)(e,function(e,r,o){return t(n,e,r,o)}),n}var o=n(76),a=n(77),i=n(160),u=n(27),l=n(108),s=n(13),c=n(82),d=n(47),f=n(23),p=n(116);e.exports=r},function(e,t,n){var r=n(98),o=n(44),a=n(536),i=n(114),u=o(function(e){return a(r(e,1,i,!0))});e.exports=u},function(e,t,n){var r=n(558),o=r("toUpperCase");e.exports=o},function(e,t,n){function r(e,t,n){return e=i(e),t=n?void 0:t,void 0===t?a(e)?u(e):o(e):e.match(t)||[]}var o=n(503),a=n(574),i=n(48),u=n(615);e.exports=r},function(e,t,n){function r(e){if(l(e)&&!u(e)&&!(e instanceof o)){if(e instanceof a)return e;if(d.call(e,"__wrapped__"))return s(e)}return new a(e)}var o=n(151),a=n(152),i=n(163),u=n(13),l=n(31),s=n(617),c=Object.prototype,d=c.hasOwnProperty;r.prototype=i.prototype,r.prototype.constructor=r,e.exports=r},function(e,t){function n(e){if(e=String(e),!(e.length>1e4)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var n=parseFloat(t[1]),r=(t[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return n*c;case"days":case"day":case"d":return n*s;case"hours":case"hour":case"hrs":case"hr":case"h":return n*l;case"minutes":case"minute":case"mins":case"min":case"m":return n*u;case"seconds":case"second":case"secs":case"sec":case"s":return n*i;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function r(e){return e>=s?Math.round(e/s)+"d":e>=l?Math.round(e/l)+"h":e>=u?Math.round(e/u)+"m":e>=i?Math.round(e/i)+"s":e+"ms"}function o(e){return a(e,s,"day")||a(e,l,"hour")||a(e,u,"minute")||a(e,i,"second")||e+" ms"}function a(e,t,n){if(!(e0)return n(e);if("number"===a&&isNaN(e)===!1)return t.long?o(e):r(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},function(e,t,n){"use strict";function r(e){var t=new o(o._61);return t._81=1,t._65=e,t}var o=n(300);e.exports=o;var a=r(!0),i=r(!1),u=r(null),l=r(void 0),s=r(0),c=r("");o.resolve=function(e){if(e instanceof o)return e;if(null===e)return u;if(void 0===e)return l;if(e===!0)return a;if(e===!1)return i;if(0===e)return s;if(""===e)return c;if("object"==typeof e||"function"==typeof e)try{var t=e.then;if("function"==typeof t)return new o(t.bind(e))}catch(e){return new o(function(t,n){n(e)})}return r(e)},o.all=function(e){var t=Array.prototype.slice.call(e);return new o(function(e,n){function r(i,u){if(u&&("object"==typeof u||"function"==typeof u)){if(u instanceof o&&u.then===o.prototype.then){for(;3===u._81;)u=u._65;return 1===u._81?r(i,u._65):(2===u._81&&n(u._65),void u.then(function(e){r(i,e)},n))}var l=u.then;if("function"==typeof l){var s=new o(l.bind(u));return void s.then(function(e){r(i,e)},n)}}t[i]=u,0===--a&&e(t)}if(0===t.length)return e([]);for(var a=t.length,i=0;i8&&E<=11),C=32,x=String.fromCharCode(C),w={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["topCompositionEnd","topKeyPress","topTextInput","topPaste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:["topBlur","topCompositionEnd","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:["topBlur","topCompositionStart","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:["topBlur","topCompositionUpdate","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]}},T=!1,M=null,S={eventTypes:w,extractEvents:function(e,t,n,r){return[s(e,t,n,r),f(e,t,n,r)]}};e.exports=S},function(e,t,n){"use strict";var r=n(302),o=n(21),a=(n(28),n(485),n(730)),i=n(492),u=n(495),l=(n(7),u(function(e){return i(e)})),s=!1,c="cssFloat";if(o.canUseDOM){var d=document.createElement("div").style;try{d.font=""}catch(e){s=!0}void 0===document.documentElement.style.cssFloat&&(c="styleFloat")}var f={createMarkupForStyles:function(e,t){var n="";for(var r in e)if(e.hasOwnProperty(r)){var o=e[r];null!=o&&(n+=l(r)+":",n+=a(r,o,t)+";")}return n||null},setValueForStyles:function(e,t,n){var o=e.style;for(var i in t)if(t.hasOwnProperty(i)){var u=a(i,t[i],n);if("float"!==i&&"cssFloat"!==i||(i=c),u)o[i]=u;else{var l=s&&r.shorthandPropertyExpansions[i];if(l)for(var d in l)o[d]="";else o[i]=""}}}};e.exports=f},function(e,t,n){"use strict";function r(e){var t=e.nodeName&&e.nodeName.toLowerCase();return"select"===t||"input"===t&&"file"===e.type}function o(e){var t=P.getPooled(T.change,S,e,C(e));_.accumulateTwoPhaseDispatches(t),O.batchedUpdates(a,t)}function a(e){g.enqueueEvents(e),g.processEventQueue(!1)}function i(e,t){M=e,S=t,M.attachEvent("onchange",o)}function u(){M&&(M.detachEvent("onchange",o),M=null,S=null)}function l(e,t){if("topChange"===e)return t}function s(e,t,n){"topFocus"===e?(u(),i(t,n)):"topBlur"===e&&u()}function c(e,t){M=e,S=t,A=e.value,k=Object.getOwnPropertyDescriptor(e.constructor.prototype,"value"),Object.defineProperty(M,"value",j),M.attachEvent?M.attachEvent("onpropertychange",f):M.addEventListener("propertychange",f,!1)}function d(){M&&(delete M.value,M.detachEvent?M.detachEvent("onpropertychange",f):M.removeEventListener("propertychange",f,!1),M=null,S=null,A=null,k=null)}function f(e){if("value"===e.propertyName){var t=e.srcElement.value;t!==A&&(A=t,o(e))}}function p(e,t){if("topInput"===e)return t}function h(e,t,n){"topFocus"===e?(d(),c(t,n)):"topBlur"===e&&d()}function v(e,t){if(("topSelectionChange"===e||"topKeyUp"===e||"topKeyDown"===e)&&M&&M.value!==A)return A=M.value,S}function m(e){return e.nodeName&&"input"===e.nodeName.toLowerCase()&&("checkbox"===e.type||"radio"===e.type)}function y(e,t){if("topClick"===e)return t}var g=n(83),_=n(84),b=n(21),E=n(18),O=n(32),P=n(36),C=n(189),x=n(190),w=n(319),T={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:["topBlur","topChange","topClick","topFocus","topInput","topKeyDown","topKeyUp","topSelectionChange"]}},M=null,S=null,A=null,k=null,N=!1;b.canUseDOM&&(N=x("change")&&(!document.documentMode||document.documentMode>8));var I=!1;b.canUseDOM&&(I=x("input")&&(!document.documentMode||document.documentMode>11));var j={get:function(){return k.get.call(this)},set:function(e){A=""+e,k.set.call(this,e)}},D={eventTypes:T,extractEvents:function(e,t,n,o){var a,i,u=t?E.getNodeFromInstance(t):window;if(r(u)?N?a=l:i=s:w(u)?I?a=p:(a=v,i=h):m(u)&&(a=y),a){var c=a(e,t);if(c){var d=P.getPooled(T.change,c,n,o);return d.type="change",_.accumulateTwoPhaseDispatches(d),d}}i&&i(e,u,t)}};e.exports=D},function(e,t,n){"use strict";var r=n(8),o=n(64),a=n(21),i=n(488),u=n(26),l=(n(6),{dangerouslyReplaceNodeWithMarkup:function(e,t){if(a.canUseDOM?void 0:r("56"),t?void 0:r("57"),"HTML"===e.nodeName?r("58"):void 0,"string"==typeof t){var n=i(t,u)[0];e.parentNode.replaceChild(n,e)}else o.replaceChildWithTree(e,t)}});e.exports=l},function(e,t){"use strict";var n=["ResponderEventPlugin","SimpleEventPlugin","TapEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin"];e.exports=n},function(e,t,n){"use strict";var r=n(84),o=n(18),a=n(122),i={mouseEnter:{registrationName:"onMouseEnter",dependencies:["topMouseOut","topMouseOver"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["topMouseOut","topMouseOver"]}},u={eventTypes:i,extractEvents:function(e,t,n,u){if("topMouseOver"===e&&(n.relatedTarget||n.fromElement))return null;if("topMouseOut"!==e&&"topMouseOver"!==e)return null;var l;if(u.window===u)l=u;else{var s=u.ownerDocument;l=s?s.defaultView||s.parentWindow:window}var c,d;if("topMouseOut"===e){c=t;var f=n.relatedTarget||n.toElement;d=f?o.getClosestInstanceFromNode(f):null}else c=null,d=t;if(c===d)return null;var p=null==c?l:o.getNodeFromInstance(c),h=null==d?l:o.getNodeFromInstance(d),v=a.getPooled(i.mouseLeave,c,n,u);v.type="mouseleave",v.target=p,v.relatedTarget=h;var m=a.getPooled(i.mouseEnter,d,n,u);return m.type="mouseenter",m.target=h,m.relatedTarget=p,r.accumulateEnterLeaveDispatches(v,m,c,d),[v,m]}};e.exports=u},function(e,t,n){"use strict";function r(e){this._root=e,this._startText=this.getText(),this._fallbackText=null}var o=n(15),a=n(54),i=n(317);o(r.prototype,{destructor:function(){this._root=null,this._startText=null,this._fallbackText=null},getText:function(){return"value"in this._root?this._root.value:this._root[i()]},getData:function(){if(this._fallbackText)return this._fallbackText;var e,t,n=this._startText,r=n.length,o=this.getText(),a=o.length;for(e=0;e1?1-t:void 0;return this._fallbackText=o.slice(e,u),this._fallbackText}}),a.addPoolingTo(r),e.exports=r},function(e,t,n){"use strict";var r=n(65),o=r.injection.MUST_USE_PROPERTY,a=r.injection.HAS_BOOLEAN_VALUE,i=r.injection.HAS_NUMERIC_VALUE,u=r.injection.HAS_POSITIVE_NUMERIC_VALUE,l=r.injection.HAS_OVERLOADED_BOOLEAN_VALUE,s={isCustomAttribute:RegExp.prototype.test.bind(new RegExp("^(data|aria)-["+r.ATTRIBUTE_NAME_CHAR+"]*$")),Properties:{accept:0,acceptCharset:0,accessKey:0,action:0,allowFullScreen:a,allowTransparency:0,alt:0,as:0,async:a,autoComplete:0,autoPlay:a,capture:a,cellPadding:0,cellSpacing:0,charSet:0,challenge:0,checked:o|a,cite:0,classID:0,className:0,cols:u,colSpan:0,content:0,contentEditable:0,contextMenu:0,controls:a,coords:0,crossOrigin:0,data:0,dateTime:0,default:a,defer:a,dir:0,disabled:a,download:l,draggable:0,encType:0,form:0,formAction:0,formEncType:0,formMethod:0,formNoValidate:a,formTarget:0,frameBorder:0,headers:0,height:0,hidden:a,high:0,href:0,hrefLang:0,htmlFor:0,httpEquiv:0,icon:0,id:0,inputMode:0,integrity:0,is:0,keyParams:0,keyType:0,kind:0,label:0,lang:0,list:0,loop:a,low:0,manifest:0,marginHeight:0,marginWidth:0,max:0,maxLength:0,media:0,mediaGroup:0,method:0,min:0,minLength:0,multiple:o|a,muted:o|a,name:0,nonce:0,noValidate:a,open:a,optimum:0,pattern:0,placeholder:0,playsInline:a,poster:0,preload:0,profile:0,radioGroup:0,readOnly:a,referrerPolicy:0,rel:0,required:a,reversed:a,role:0,rows:u,rowSpan:i,sandbox:0,scope:0,scoped:a,scrolling:0,seamless:a,selected:o|a,shape:0,size:u,sizes:0,span:u,spellCheck:0,src:0,srcDoc:0,srcLang:0,srcSet:0,start:i,step:0,style:0,summary:0,tabIndex:0,target:0,title:0,type:0,useMap:0,value:0,width:0,wmode:0,wrap:0,about:0,datatype:0,inlist:0,prefix:0,property:0,resource:0,typeof:0,vocab:0,autoCapitalize:0,autoCorrect:0,autoSave:0,color:0,itemProp:0,itemScope:a,itemType:0,itemID:0,itemRef:0,results:0,security:0,unselectable:0},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{}};e.exports=s},function(e,t,n){(function(t){"use strict";function r(e,t,n,r){var o=void 0===e[n];null!=t&&o&&(e[n]=a(t,!0))}var o=n(66),a=n(318),i=(n(181),n(191)),u=n(321),l=(n(7),{instantiateChildren:function(e,t,n,o){if(null==e)return null;var a={};return u(e,r,a),a},updateChildren:function(e,t,n,r,u,l,s,c,d){if(t||e){var f,p;for(f in t)if(t.hasOwnProperty(f)){p=e&&e[f];var h=p&&p._currentElement,v=t[f];if(null!=p&&i(h,v))o.receiveComponent(p,v,u,c),t[f]=p;else{p&&(r[f]=o.getHostNode(p),o.unmountComponent(p,!1));var m=a(v,!0);t[f]=m;var y=o.mountComponent(m,u,l,s,c,d);n.push(y)}}for(f in e)!e.hasOwnProperty(f)||t&&t.hasOwnProperty(f)||(p=e[f],r[f]=o.getHostNode(p),o.unmountComponent(p,!1))}},unmountChildren:function(e,t){for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];o.unmountComponent(r,t)}}});e.exports=l}).call(t,n(176))},function(e,t,n){"use strict";var r=n(177),o=n(694),a={processChildrenUpdates:o.dangerouslyProcessChildrenUpdates,replaceNodeWithMarkup:r.dangerouslyReplaceNodeWithMarkup};e.exports=a},function(e,t,n){"use strict";function r(e){}function o(e,t){}function a(e){return!(!e.prototype||!e.prototype.isReactComponent)}function i(e){return!(!e.prototype||!e.prototype.isPureReactComponent)}var u=n(8),l=n(15),s=n(67),c=n(183),d=n(37),f=n(184),p=n(85),h=(n(28),n(312)),v=n(66),m=n(75),y=(n(6),n(150)),g=n(191),_=(n(7),{ImpureClass:0,PureClass:1,StatelessFunctional:2});r.prototype.render=function(){var e=p.get(this)._currentElement.type,t=e(this.props,this.context,this.updater);return o(e,t),t};var b=1,E={construct:function(e){this._currentElement=e,this._rootNodeID=0,this._compositeType=null,this._instance=null,this._hostParent=null,this._hostContainerInfo=null,this._updateBatchNumber=null,this._pendingElement=null,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._renderedNodeType=null,this._renderedComponent=null,this._context=null,this._mountOrder=0,this._topLevelWrapper=null,this._pendingCallbacks=null,this._calledComponentWillUnmount=!1},mountComponent:function(e,t,n,l){this._context=l,this._mountOrder=b++,this._hostParent=t,this._hostContainerInfo=n;var c,d=this._currentElement.props,f=this._processContext(l),h=this._currentElement.type,v=e.getUpdateQueue(),y=a(h),g=this._constructComponent(y,d,f,v);y||null!=g&&null!=g.render?i(h)?this._compositeType=_.PureClass:this._compositeType=_.ImpureClass:(c=g,o(h,c),null===g||g===!1||s.isValidElement(g)?void 0:u("105",h.displayName||h.name||"Component"),g=new r(h),this._compositeType=_.StatelessFunctional);g.props=d,g.context=f,g.refs=m,g.updater=v,this._instance=g,p.set(g,this);var E=g.state;void 0===E&&(g.state=E=null),"object"!=typeof E||Array.isArray(E)?u("106",this.getName()||"ReactCompositeComponent"):void 0,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1;var O;return O=g.unstable_handleError?this.performInitialMountWithErrorHandling(c,t,n,e,l):this.performInitialMount(c,t,n,e,l),g.componentDidMount&&e.getReactMountReady().enqueue(g.componentDidMount,g),O},_constructComponent:function(e,t,n,r){return this._constructComponentWithoutOwner(e,t,n,r)},_constructComponentWithoutOwner:function(e,t,n,r){var o=this._currentElement.type;return e?new o(t,n,r):o(t,n,r)},performInitialMountWithErrorHandling:function(e,t,n,r,o){var a,i=r.checkpoint();try{a=this.performInitialMount(e,t,n,r,o)}catch(u){r.rollback(i),this._instance.unstable_handleError(u),this._pendingStateQueue&&(this._instance.state=this._processPendingState(this._instance.props,this._instance.context)),i=r.checkpoint(),this._renderedComponent.unmountComponent(!0),r.rollback(i),a=this.performInitialMount(e,t,n,r,o)}return a},performInitialMount:function(e,t,n,r,o){var a=this._instance,i=0;a.componentWillMount&&(a.componentWillMount(),this._pendingStateQueue&&(a.state=this._processPendingState(a.props,a.context))),void 0===e&&(e=this._renderValidatedComponent());var u=h.getType(e);this._renderedNodeType=u;var l=this._instantiateReactComponent(e,u!==h.EMPTY);this._renderedComponent=l;var s=v.mountComponent(l,r,t,n,this._processChildContext(o),i);return s},getHostNode:function(){return v.getHostNode(this._renderedComponent)},unmountComponent:function(e){if(this._renderedComponent){var t=this._instance;if(t.componentWillUnmount&&!t._calledComponentWillUnmount)if(t._calledComponentWillUnmount=!0,e){var n=this.getName()+".componentWillUnmount()";f.invokeGuardedCallback(n,t.componentWillUnmount.bind(t))}else t.componentWillUnmount();this._renderedComponent&&(v.unmountComponent(this._renderedComponent,e),this._renderedNodeType=null,this._renderedComponent=null,this._instance=null),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._pendingCallbacks=null,this._pendingElement=null,this._context=null,this._rootNodeID=0,this._topLevelWrapper=null,p.remove(t)}},_maskContext:function(e){var t=this._currentElement.type,n=t.contextTypes;if(!n)return m;var r={};for(var o in n)r[o]=e[o];return r},_processContext:function(e){var t=this._maskContext(e);return t},_processChildContext:function(e){var t,n=this._currentElement.type,r=this._instance;if(r.getChildContext&&(t=r.getChildContext()),t){"object"!=typeof n.childContextTypes?u("107",this.getName()||"ReactCompositeComponent"):void 0;for(var o in t)o in n.childContextTypes?void 0:u("108",this.getName()||"ReactCompositeComponent",o);return l({},e,t)}return e},_checkContextTypes:function(e,t,n){},receiveComponent:function(e,t,n){var r=this._currentElement,o=this._context;this._pendingElement=null,this.updateComponent(t,r,e,o,n)},performUpdateIfNecessary:function(e){null!=this._pendingElement?v.receiveComponent(this,this._pendingElement,e,this._context):null!==this._pendingStateQueue||this._pendingForceUpdate?this.updateComponent(e,this._currentElement,this._currentElement,this._context,this._context):this._updateBatchNumber=null},updateComponent:function(e,t,n,r,o){var a=this._instance;null==a?u("136",this.getName()||"ReactCompositeComponent"):void 0;var i,l=!1;this._context===o?i=a.context:(i=this._processContext(o),l=!0);var s=t.props,c=n.props;t!==n&&(l=!0),l&&a.componentWillReceiveProps&&a.componentWillReceiveProps(c,i);var d=this._processPendingState(c,i),f=!0;this._pendingForceUpdate||(a.shouldComponentUpdate?f=a.shouldComponentUpdate(c,d,i):this._compositeType===_.PureClass&&(f=!y(s,c)||!y(a.state,d))),this._updateBatchNumber=null,f?(this._pendingForceUpdate=!1,this._performComponentUpdate(n,c,d,i,e,o)):(this._currentElement=n,this._context=o,a.props=c,a.state=d,a.context=i)},_processPendingState:function(e,t){var n=this._instance,r=this._pendingStateQueue,o=this._pendingReplaceState;if(this._pendingReplaceState=!1,this._pendingStateQueue=null,!r)return n.state;if(o&&1===r.length)return r[0];for(var a=l({},o?r[0]:n.state),i=o?1:0;i=0||null!=t.is}function h(e){var t=e.type;f(t),this._currentElement=e,this._tag=t.toLowerCase(),this._namespaceURI=null,this._renderedChildren=null,this._previousStyle=null,this._previousStyleCopy=null,this._hostNode=null,this._hostParent=null,this._rootNodeID=0,this._domID=0,this._hostContainerInfo=null,this._wrapperState=null,this._topLevelWrapper=null,this._flags=0}var v=n(8),m=n(15),y=n(677),g=n(679),_=n(64),b=n(178),E=n(65),O=n(304),P=n(83),C=n(179),x=n(121),w=n(305),T=n(18),M=n(695),S=n(696),A=n(306),k=n(699),N=(n(28),n(708)),I=n(713),j=(n(26),n(124)),D=(n(6),n(190),n(150),n(192),n(7),w),L=P.deleteListener,R=T.getNodeFromInstance,U=x.listenTo,K=C.registrationNameModules,F={string:!0,number:!0},B="style",W="__html",V={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null},z=11,H={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled",topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"},Y={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},q={listing:!0,pre:!0,textarea:!0},G=m({menuitem:!0},Y),Q=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,$={},X={}.hasOwnProperty,Z=1;h.displayName="ReactDOMComponent",h.Mixin={mountComponent:function(e,t,n,r){this._rootNodeID=Z++,this._domID=n._idCounter++,this._hostParent=t,this._hostContainerInfo=n;var a=this._currentElement.props;switch(this._tag){case"audio":case"form":case"iframe":case"img":case"link":case"object":case"source":case"video":this._wrapperState={listeners:null},e.getReactMountReady().enqueue(c,this);break;case"input":M.mountWrapper(this,a,t),a=M.getHostProps(this,a),e.getReactMountReady().enqueue(c,this);break;case"option":S.mountWrapper(this,a,t),a=S.getHostProps(this,a);break;case"select":A.mountWrapper(this,a,t),a=A.getHostProps(this,a),e.getReactMountReady().enqueue(c,this);break;case"textarea":k.mountWrapper(this,a,t),a=k.getHostProps(this,a),e.getReactMountReady().enqueue(c,this)}o(this,a);var i,d;null!=t?(i=t._namespaceURI,d=t._tag):n._tag&&(i=n._namespaceURI,d=n._tag),(null==i||i===b.svg&&"foreignobject"===d)&&(i=b.html),i===b.html&&("svg"===this._tag?i=b.svg:"math"===this._tag&&(i=b.mathml)),this._namespaceURI=i;var f;if(e.useCreateElement){var p,h=n._ownerDocument;if(i===b.html)if("script"===this._tag){var v=h.createElement("div"),m=this._currentElement.type;v.innerHTML="<"+m+">",p=v.removeChild(v.firstChild)}else p=a.is?h.createElement(this._currentElement.type,a.is):h.createElement(this._currentElement.type);else p=h.createElementNS(i,this._currentElement.type);T.precacheNode(this,p),this._flags|=D.hasCachedChildNodes,this._hostParent||O.setAttributeForRoot(p),this._updateDOMProperties(null,a,e);var g=_(p);this._createInitialChildren(e,a,r,g),f=g}else{var E=this._createOpenTagMarkupAndPutListeners(e,a),P=this._createContentMarkup(e,a,r);f=!P&&Y[this._tag]?E+"/>":E+">"+P+""}switch(this._tag){case"input":e.getReactMountReady().enqueue(u,this),a.autoFocus&&e.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"textarea":e.getReactMountReady().enqueue(l,this),a.autoFocus&&e.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"select":a.autoFocus&&e.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"button":a.autoFocus&&e.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"option":e.getReactMountReady().enqueue(s,this)}return f},_createOpenTagMarkupAndPutListeners:function(e,t){var n="<"+this._currentElement.type;for(var r in t)if(t.hasOwnProperty(r)){var o=t[r];if(null!=o)if(K.hasOwnProperty(r))o&&a(this,r,o,e);else{r===B&&(o&&(o=this._previousStyleCopy=m({},t.style)),o=g.createMarkupForStyles(o,this));var i=null;null!=this._tag&&p(this._tag,t)?V.hasOwnProperty(r)||(i=O.createMarkupForCustomAttribute(r,o)):i=O.createMarkupForProperty(r,o),i&&(n+=" "+i)}}return e.renderToStaticMarkup?n:(this._hostParent||(n+=" "+O.createMarkupForRoot()),n+=" "+O.createMarkupForID(this._domID))},_createContentMarkup:function(e,t,n){var r="",o=t.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&(r=o.__html);else{var a=F[typeof t.children]?t.children:null,i=null!=a?null:t.children;if(null!=a)r=j(a);else if(null!=i){var u=this.mountChildren(i,e,n);r=u.join("")}}return q[this._tag]&&"\n"===r.charAt(0)?"\n"+r:r},_createInitialChildren:function(e,t,n,r){var o=t.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&_.queueHTML(r,o.__html);else{var a=F[typeof t.children]?t.children:null,i=null!=a?null:t.children;if(null!=a)""!==a&&_.queueText(r,a);else if(null!=i)for(var u=this.mountChildren(i,e,n),l=0;l"},receiveComponent:function(){},getHostNode:function(){return a.getNodeFromInstance(this)},unmountComponent:function(){a.uncacheNode(this)}}),e.exports=i},function(e,t){"use strict";var n={useCreateElement:!0,useFiber:!1};e.exports=n},function(e,t,n){"use strict";var r=n(177),o=n(18),a={dangerouslyProcessChildrenUpdates:function(e,t){var n=o.getNodeFromInstance(e);r.processUpdates(n,t)}};e.exports=a},function(e,t,n){"use strict";function r(){this._rootNodeID&&d.updateWrapper(this)}function o(e){var t=this._currentElement.props,n=l.executeOnChange(t,e);c.asap(r,this);var o=t.name;if("radio"===t.type&&null!=o){for(var i=s.getNodeFromInstance(this),u=i;u.parentNode;)u=u.parentNode;for(var d=u.querySelectorAll("input[name="+JSON.stringify(""+o)+'][type="radio"]'),f=0;ft.end?(n=t.end,r=t.start):(n=t.start,r=t.end),o.moveToElementText(e),o.moveStart("character",n),o.setEndPoint("EndToStart",o),o.moveEnd("character",r-n),o.select()}function u(e,t){if(window.getSelection){var n=window.getSelection(),r=e[c()].length,o=Math.min(t.start,r),a=void 0===t.end?o:Math.min(t.end,r);if(!n.extend&&o>a){var i=a;a=o,o=i}var u=s(e,o),l=s(e,a);if(u&&l){var d=document.createRange();d.setStart(u.node,u.offset),n.removeAllRanges(),o>a?(n.addRange(d),n.extend(l.node,l.offset)):(d.setEnd(l.node,l.offset),n.addRange(d))}}}var l=n(21),s=n(736),c=n(317),d=l.canUseDOM&&"selection"in document&&!("getSelection"in window),f={getOffsets:d?o:a,setOffsets:d?i:u};e.exports=f},function(e,t,n){"use strict";var r=n(8),o=n(15),a=n(177),i=n(64),u=n(18),l=n(124),s=(n(6),n(192),function(e){this._currentElement=e,this._stringText=""+e,this._hostNode=null,this._hostParent=null,this._domID=0,this._mountIndex=0,this._closingComment=null,this._commentNodes=null});o(s.prototype,{mountComponent:function(e,t,n,r){var o=n._idCounter++,a=" react-text: "+o+" ",s=" /react-text ";if(this._domID=o,this._hostParent=t,e.useCreateElement){var c=n._ownerDocument,d=c.createComment(a),f=c.createComment(s),p=i(c.createDocumentFragment());return i.queueChild(p,i(d)),this._stringText&&i.queueChild(p,i(c.createTextNode(this._stringText))),i.queueChild(p,i(f)),u.precacheNode(this,d),this._closingComment=f,p}var h=l(this._stringText);return e.renderToStaticMarkup?h:""+h+""},receiveComponent:function(e,t){if(e!==this._currentElement){this._currentElement=e;var n=""+e;if(n!==this._stringText){this._stringText=n;var r=this.getHostNode();a.replaceDelimitedText(r[0],r[1],n)}}},getHostNode:function(){var e=this._commentNodes;if(e)return e;if(!this._closingComment)for(var t=u.getNodeFromInstance(this),n=t.nextSibling;;){if(null==n?r("67",this._domID):void 0,8===n.nodeType&&" /react-text "===n.nodeValue){this._closingComment=n;break}n=n.nextSibling}return e=[this._hostNode,this._closingComment],this._commentNodes=e,e},unmountComponent:function(){this._closingComment=null,this._commentNodes=null,u.uncacheNode(this)}}),e.exports=s},function(e,t,n){"use strict";function r(){this._rootNodeID&&c.updateWrapper(this)}function o(e){var t=this._currentElement.props,n=u.executeOnChange(t,e);return s.asap(r,this),n}var a=n(8),i=n(15),u=n(182),l=n(18),s=n(32),c=(n(6),n(7),{getHostProps:function(e,t){null!=t.dangerouslySetInnerHTML?a("91"):void 0;var n=i({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue,onChange:e._wrapperState.onChange});return n},mountWrapper:function(e,t){var n=u.getValue(t),r=n;if(null==n){var i=t.defaultValue,l=t.children;null!=l&&(null!=i?a("92"):void 0,Array.isArray(l)&&(l.length<=1?void 0:a("93"),l=l[0]),i=""+l),null==i&&(i=""),r=i}e._wrapperState={initialValue:""+r,listeners:null,onChange:o.bind(e)}},updateWrapper:function(e){var t=e._currentElement.props,n=l.getNodeFromInstance(e),r=u.getValue(t);if(null!=r){var o=""+r;o!==n.value&&(n.value=o),null==t.defaultValue&&(n.defaultValue=o)}null!=t.defaultValue&&(n.defaultValue=t.defaultValue)},postMountWrapper:function(e){var t=l.getNodeFromInstance(e),n=t.textContent;n===e._wrapperState.initialValue&&(t.value=n)}});e.exports=c},function(e,t,n){"use strict";function r(e,t){"_hostNode"in e?void 0:l("33"),"_hostNode"in t?void 0:l("33");for(var n=0,r=e;r;r=r._hostParent)n++;for(var o=0,a=t;a;a=a._hostParent)o++;for(;n-o>0;)e=e._hostParent,n--;for(;o-n>0;)t=t._hostParent,o--;for(var i=n;i--;){if(e===t)return e;e=e._hostParent,t=t._hostParent}return null}function o(e,t){"_hostNode"in e?void 0:l("35"),"_hostNode"in t?void 0:l("35");for(;t;){if(t===e)return!0;t=t._hostParent}return!1}function a(e){return"_hostNode"in e?void 0:l("36"),e._hostParent}function i(e,t,n){for(var r=[];e;)r.push(e),e=e._hostParent;var o;for(o=r.length;o-- >0;)t(r[o],"captured",n);for(o=0;o0;)n(l[s],"captured",a)}var l=n(8);n(6);e.exports={isAncestor:o,getLowestCommonAncestor:r,getParentInstance:a,traverseTwoPhase:i,traverseEnterLeave:u}},function(e,t,n){"use strict";function r(){this.reinitializeTransaction()}var o=n(15),a=n(32),i=n(123),u=n(26),l={initialize:u,close:function(){f.isBatchingUpdates=!1}},s={initialize:u,close:a.flushBatchedUpdates.bind(a)},c=[s,l];o(r.prototype,i,{getTransactionWrappers:function(){return c}});var d=new r,f={isBatchingUpdates:!1,batchedUpdates:function(e,t,n,r,o,a){var i=f.isBatchingUpdates;return f.isBatchingUpdates=!0,i?e(t,n,r,o,a):d.perform(e,null,t,n,r,o,a)}};e.exports=f},function(e,t,n){"use strict";function r(){P||(P=!0,g.EventEmitter.injectReactEventListener(y),g.EventPluginHub.injectEventPluginOrder(u),g.EventPluginUtils.injectComponentTree(f),g.EventPluginUtils.injectTreeTraversal(h),g.EventPluginHub.injectEventPluginsByName({SimpleEventPlugin:O,EnterLeaveEventPlugin:l,ChangeEventPlugin:i,SelectEventPlugin:E,BeforeInputEventPlugin:a}),g.HostComponent.injectGenericComponentClass(d),g.HostComponent.injectTextComponentClass(v),g.DOMProperty.injectDOMPropertyConfig(o),g.DOMProperty.injectDOMPropertyConfig(s),g.DOMProperty.injectDOMPropertyConfig(b),g.EmptyComponent.injectEmptyComponentFactory(function(e){return new p(e)}),g.Updates.injectReconcileTransaction(_),g.Updates.injectBatchingStrategy(m),g.Component.injectEnvironment(c))}var o=n(676),a=n(678),i=n(680),u=n(682),l=n(683),s=n(685),c=n(687),d=n(690),f=n(18),p=n(692),h=n(700),v=n(698),m=n(701),y=n(705),g=n(706),_=n(711),b=n(716),E=n(717),O=n(718),P=!1;e.exports={inject:r}},323,function(e,t,n){"use strict";function r(e){o.enqueueEvents(e),o.processEventQueue(!1)}var o=n(83),a={handleTopLevel:function(e,t,n,a){var i=o.extractEvents(e,t,n,a);r(i)}};e.exports=a},function(e,t,n){"use strict";function r(e){for(;e._hostParent;)e=e._hostParent;var t=d.getNodeFromInstance(e),n=t.parentNode;return d.getClosestInstanceFromNode(n)}function o(e,t){this.topLevelType=e,this.nativeEvent=t,this.ancestors=[]}function a(e){var t=p(e.nativeEvent),n=d.getClosestInstanceFromNode(t),o=n;do e.ancestors.push(o),o=o&&r(o);while(o);for(var a=0;a/,a=/^<\!\-\-/,i={CHECKSUM_ATTR_NAME:"data-react-checksum",addChecksumToMarkup:function(e){var t=r(e);return a.test(e)?e:e.replace(o," "+i.CHECKSUM_ATTR_NAME+'="'+t+'"$&')},canReuseMarkup:function(e,t){var n=t.getAttribute(i.CHECKSUM_ATTR_NAME);n=n&&parseInt(n,10);var o=r(e);return o===n}};e.exports=i},function(e,t,n){"use strict";function r(e,t,n){return{type:"INSERT_MARKUP",content:e,fromIndex:null,fromNode:null,toIndex:n,afterNode:t}}function o(e,t,n){return{type:"MOVE_EXISTING",content:null,fromIndex:e._mountIndex,fromNode:f.getHostNode(e),toIndex:n,afterNode:t}}function a(e,t){return{type:"REMOVE_NODE",content:null,fromIndex:e._mountIndex,fromNode:t,toIndex:null,afterNode:null}}function i(e){return{type:"SET_MARKUP",content:e,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function u(e){return{type:"TEXT_CONTENT",content:e,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function l(e,t){return t&&(e=e||[],e.push(t)),e}function s(e,t){d.processChildrenUpdates(e,t)}var c=n(8),d=n(183),f=(n(85),n(28),n(37),n(66)),p=n(686),h=(n(26),n(732)),v=(n(6),{Mixin:{_reconcilerInstantiateChildren:function(e,t,n){return p.instantiateChildren(e,t,n)},_reconcilerUpdateChildren:function(e,t,n,r,o,a){var i,u=0;return i=h(t,u),p.updateChildren(e,i,n,r,o,this,this._hostContainerInfo,a,u),i},mountChildren:function(e,t,n){var r=this._reconcilerInstantiateChildren(e,t,n);this._renderedChildren=r;var o=[],a=0;for(var i in r)if(r.hasOwnProperty(i)){var u=r[i],l=0,s=f.mountComponent(u,t,this,this._hostContainerInfo,n,l);u._mountIndex=a++,o.push(s)}return o},updateTextContent:function(e){var t=this._renderedChildren;p.unmountChildren(t,!1);for(var n in t)t.hasOwnProperty(n)&&c("118");var r=[u(e)];s(this,r)},updateMarkup:function(e){var t=this._renderedChildren;p.unmountChildren(t,!1);for(var n in t)t.hasOwnProperty(n)&&c("118");var r=[i(e)];s(this,r)},updateChildren:function(e,t,n){this._updateChildren(e,t,n)},_updateChildren:function(e,t,n){var r=this._renderedChildren,o={},a=[],i=this._reconcilerUpdateChildren(r,e,a,o,t,n);if(i||r){var u,c=null,d=0,p=0,h=0,v=null;for(u in i)if(i.hasOwnProperty(u)){var m=r&&r[u],y=i[u];m===y?(c=l(c,this.moveChild(m,v,d,p)),p=Math.max(m._mountIndex,p),m._mountIndex=d):(m&&(p=Math.max(m._mountIndex,p)),c=l(c,this._mountChildAtIndex(y,a[h],v,d,t,n)),h++),d++,v=f.getHostNode(y)}for(u in o)o.hasOwnProperty(u)&&(c=l(c,this._unmountChild(r[u],o[u])));c&&s(this,c),this._renderedChildren=i}},unmountChildren:function(e){var t=this._renderedChildren;p.unmountChildren(t,e),this._renderedChildren=null},moveChild:function(e,t,n,r){if(e._mountIndex=t)return{node:o,offset:t-a};a=i}o=n(r(o))}}e.exports=o},function(e,t,n){"use strict";function r(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n["ms"+e]="MS"+t,n["O"+e]="o"+t.toLowerCase(),n}function o(e){if(u[e])return u[e];if(!i[e])return e;var t=i[e];for(var n in t)if(t.hasOwnProperty(n)&&n in l)return u[e]=t[n];return""}var a=n(21),i={animationend:r("Animation","AnimationEnd"),animationiteration:r("Animation","AnimationIteration"),animationstart:r("Animation","AnimationStart"),transitionend:r("Transition","TransitionEnd")},u={},l={};a.canUseDOM&&(l=document.createElement("div").style,"AnimationEvent"in window||(delete i.animationend.animation,delete i.animationiteration.animation,delete i.animationstart.animation),"TransitionEvent"in window||delete i.transitionend.transition),e.exports=o},function(e,t,n){"use strict";function r(e){return'"'+o(e)+'"'}var o=n(124);e.exports=r},function(e,t,n){"use strict";var r=n(311);e.exports=r.renderSubtreeIntoContainer},function(e,t,n){"undefined"==typeof Promise&&(n(675).enable(),window.Promise=n(674)),n(414),Object.assign=n(741)},function(e,t){"use strict";function n(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function r(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(t).map(function(e){return t[e]});if("0123456789"!==r.join(""))return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(e){o[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},o)).join("")}catch(e){return!1}}var o=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=r()?Object.assign:function(e,t){for(var r,u,l=n(e),s=1;s>"),T={array:i("array"),bool:i("boolean"),func:i("function"),number:i("number"),object:i("object"),string:i("string"),symbol:i("symbol"),any:u(),arrayOf:l,element:s(),instanceOf:c,node:h(),objectOf:f,oneOf:d,oneOfType:p,shape:v};o.prototype=Error.prototype,e.exports=T},710,function(e,t,n){"use strict";function r(e,t,n){this.props=e,this.context=t,this.refs=l,this.updater=n||u}function o(){}var a=n(15),i=n(193),u=n(194),l=n(75);o.prototype=i.prototype,r.prototype=new o,r.prototype.constructor=r,a(r.prototype,i.prototype),r.prototype.isPureReactComponent=!0,e.exports=r},715,function(e,t,n){"use strict";function r(e){return a.isValidElement(e)?void 0:o("143"),e}var o=n(69),a=n(68);n(6);e.exports=r},function(e,t,n){"use strict";function r(e,t){return e&&"object"==typeof e&&null!=e.key?s.escape(e.key):t.toString(36)}function o(e,t,n,a){var f=typeof e;if("undefined"!==f&&"boolean"!==f||(e=null),null===e||"string"===f||"number"===f||"object"===f&&e.$$typeof===u)return n(a,e,""===t?c+r(e,0):t),1;var p,h,v=0,m=""===t?c:t+d;if(Array.isArray(e))for(var y=0;y3&&void 0!==arguments[3]&&arguments[3],o=t[e];if(void 0!==o)return o;if(r){var a=t[x(e)];if(void 0!==a)return a;if(n){var i=n[e];if(void 0!==i)return i}}return"checked"!==e&&("value"===e?t.multiple?[]:"":void 0)},T=function(e){function t(){var e,n,r,o;(0,u.default)(this,t);for(var i=arguments.length,l=Array(i),s=0;s0&&r.setState(o)},o=n,(0,d.default)(r,o)}return(0,p.default)(t,e),(0,s.default)(t,[{key:"componentWillMount",value:function(){var e=this,t=this.constructor.autoControlledProps,n=t.reduce(function(t,n){t[n]=w(n,e.props,e.state,!0);return t},{});this.state=(0,a.default)({},this.state,n)}},{key:"componentWillReceiveProps",value:function(e){var t=this,n=this.constructor.autoControlledProps,r=n.reduce(function(n,r){var o=(0,m.default)(e[r]),a=!(0,m.default)(t.props[r])&&o;return o?a&&(n[r]=w(r,e)):n[r]=e[r],n},{});Object.keys(r).length>0&&this.setState(r)}}]),t}(C.Component);t.default=T},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.isPrivate=t.isChild=t.isParent=t.isModule=t.isView=t.isElement=t.isCollection=t.isAddon=t.isType=t.isMeta=t.TYPES=void 0;var o=n(647),a=r(o),i=n(638),u=r(i),l=n(636),s=r(l),c=n(284),d=r(c),f=n(635),p=r(f),h=n(637),v=r(h),m=n(285),y=r(m),g=n(650),_=r(g),b=t.TYPES={ADDON:"addon",COLLECTION:"collection",ELEMENT:"element",VIEW:"view",MODULE:"module"},E=(0,_.default)(b),O=t.isMeta=function(e){return(0,y.default)((0,v.default)("type",e),E)},P=function(e){return O(e)?e:O((0,v.default)("_meta",e))?e._meta:O((0,v.default)("constructor._meta",e))?e.constructor._meta:void 0},C=(0,p.default)(function(e,t,n){return(0,d.default)(P,(0,v.default)(e),(0,s.default)(t))(n)}),x=t.isType=C("type");t.isAddon=x(b.ADDON),t.isCollection=x(b.COLLECTION),t.isElement=x(b.ELEMENT),t.isView=x(b.VIEW),t.isModule=x(b.MODULE),t.isParent=(0,d.default)(P,(0,u.default)("parent"),(0,s.default)(!1)),t.isChild=(0,d.default)(P,(0,u.default)("parent")),t.isPrivate=(0,d.default)(P,(0,v.default)("name"),(0,a.default)("_"))},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.ALL_ICONS_IN_ALL_CONTEXTS=t.COMPONENT_CONTEXT_SPECIFIC_ICONS=t.ICONS_AND_ALIASES=t.ICON_ALIASES=t.ICONS=t.NETWORKS_AND_WEBSITE_ICONS=t.PAYMENT_OPTIONS_ICONS=t.CURRENCY_ICONS=t.TEXT_EDITOR_ICONS=t.TABLES_ICONS=t.MAP_LOCATIONS_TRANSPORTATION_ICONS=t.AUDIO_ICONS=t.RATING_ICONS=t.TECHNOLOGIES_ICONS=t.FILE_SYSTEM_ICONS=t.COMPUTER_ICONS=t.MOBILE_ICONS=t.POINTERS_ICONS=t.MEDIA_ICONS=t.ITEM_SELECTION_ICONS=t.SHAPES_ICONS=t.LITERAL_OBJECTS_ICONS=t.VIEW_ADJUSTMENT_ICONS=t.ACCESSIBILITY_ICONS=t.GENDER_SEXUALITY_ICONS=t.USERS_ICONS=t.MESSAGES_ICONS=t.USER_ACTIONS_ICONS=t.WEB_CONTENT_ICONS=t.WIDTHS=t.VERTICAL_ALIGNMENTS=t.TEXT_ALIGNMENTS=t.SIZES=t.FLOATS=t.COLORS=void 0;var o=n(55),a=r(o),i=n(175),u=r(i),l=n(25),s=r(l),c=n(205),d=(t.COLORS=["red","orange","yellow","olive","green","teal","blue","violet","purple","pink","brown","grey","black"],t.FLOATS=["left","right"],t.SIZES=["mini","tiny","small","medium","large","big","huge","massive"],t.TEXT_ALIGNMENTS=["left","center","right","justified"],t.VERTICAL_ALIGNMENTS=["bottom","middle","top"],t.WIDTHS=[].concat((0,a.default)((0,s.default)(c.numberToWordMap)),(0,a.default)((0,s.default)(c.numberToWordMap).map(Number)),(0,a.default)((0,u.default)(c.numberToWordMap))),t.WEB_CONTENT_ICONS=["search","mail outline","signal","setting","home","inbox","browser","tag","tags","image","calendar","comment","shop","comments","external","privacy","settings","comments","external","trophy","payment","feed","alarm outline","tasks","cloud","lab","mail","dashboard","comment outline","comments outline","sitemap","idea","alarm","terminal","code","protect","calendar outline","ticket","external square","bug","mail square","history","options","text telephone","find","wifi","alarm mute","alarm mute outline","copyright","at","eyedropper","paint brush","heartbeat","mouse pointer","hourglass empty","hourglass start","hourglass half","hourglass end","hourglass full","hand pointer","trademark","registered","creative commons","add to calendar","remove from calendar","delete calendar","checked calendar","industry","shopping bag","shopping basket","hashtag","percent","address book","address book outline","address card","address card outline","id badge","id card","id card outline","podcast","window close","window close outline","window maximize","window minimize","window restore"]),f=t.USER_ACTIONS_ICONS=["wait","download","repeat","refresh","lock","bookmark","print","write","adjust","theme","edit","external share","ban","mail forward","share","expand","compress","unhide","hide","random","retweet","sign out","pin","sign in","upload","call","remove bookmark","call square","unlock","configure","filter","wizard","undo","exchange","cloud download","cloud upload","reply","reply all","erase","unlock alternate","write square","share square","archive","translate","recycle","send","send outline","share alternate","share alternate square","add to cart","in cart","add user","remove user","object group","object ungroup","clone","talk","talk outline"],p=t.MESSAGES_ICONS=["help circle","info circle","warning circle","warning sign","announcement","help","info","warning","birthday","help circle outline"],h=t.USERS_ICONS=["user","users","doctor","handicap","student","child","spy","user circle","user circle outline","user outline"],v=t.GENDER_SEXUALITY_ICONS=["female","male","woman","man","non binary transgender","intergender","transgender","lesbian","gay","heterosexual","other gender","other gender vertical","other gender horizontal","neuter","genderless"],m=t.ACCESSIBILITY_ICONS=["universal access","wheelchair","blind","audio description","volume control phone","braille","asl","assistive listening systems","deafness","sign language","low vision"],y=t.VIEW_ADJUSTMENT_ICONS=["block layout","grid layout","list layout","zoom","zoom out","resize vertical","resize horizontal","maximize","crop"],g=t.LITERAL_OBJECTS_ICONS=["cocktail","road","flag","book","gift","leaf","fire","plane","magnet","lemon","world","travel","shipping","money","legal","lightning","umbrella","treatment","suitcase","bar","flag outline","flag checkered","puzzle","fire extinguisher","rocket","anchor","bullseye","sun","moon","fax","life ring","bomb","soccer","calculator","diamond","sticky note","sticky note outline","law","hand peace","hand rock","hand paper","hand scissors","hand lizard","hand spock","tv","thermometer empty","thermometer full","thermometer half","thermometer quarter","thermometer three quarters","bath","snowflake outline"],_=t.SHAPES_ICONS=["crosshairs","asterisk","square outline","certificate","square","quote left","quote right","spinner","circle","ellipsis horizontal","ellipsis vertical","cube","cubes","circle notched","circle thin"],b=t.ITEM_SELECTION_ICONS=["checkmark","remove","checkmark box","move","add circle","minus circle","remove circle","check circle","remove circle outline","check circle outline","plus","minus","add square","radio","minus square","minus square outline","check square","selected radio","plus square outline","toggle off","toggle on"],E=t.MEDIA_ICONS=["film","sound","photo","bar chart","camera retro","newspaper","area chart","pie chart","line chart"],O=t.POINTERS_ICONS=["arrow circle outline down","arrow circle outline up","chevron left","chevron right","arrow left","arrow right","arrow up","arrow down","chevron up","chevron down","pointing right","pointing left","pointing up","pointing down","arrow circle left","arrow circle right","arrow circle up","arrow circle down","caret down","caret up","caret left","caret right","angle double left","angle double right","angle double up","angle double down","angle left","angle right","angle up","angle down","chevron circle left","chevron circle right","chevron circle up","chevron circle down","toggle down","toggle up","toggle right","long arrow down","long arrow up","long arrow left","long arrow right","arrow circle outline right","arrow circle outline left","toggle left"],P=t.MOBILE_ICONS=["tablet","mobile","battery full","battery high","battery medium","battery low","battery empty"],C=t.COMPUTER_ICONS=["power","trash outline","disk outline","desktop","laptop","game","keyboard","plug"],x=t.FILE_SYSTEM_ICONS=["trash","file outline","folder","folder open","file text outline","folder outline","folder open outline","level up","level down","file","file text","file pdf outline","file word outline","file excel outline","file powerpoint outline","file image outline","file archive outline","file audio outline","file video outline","file code outline"],w=t.TECHNOLOGIES_ICONS=["qrcode","barcode","rss","fork","html5","css3","rss square","openid","database","server","usb","bluetooth","bluetooth alternative","microchip"],T=t.RATING_ICONS=["heart","star","empty star","thumbs outline up","thumbs outline down","star half","empty heart","smile","frown","meh","star half empty","thumbs up","thumbs down"],M=t.AUDIO_ICONS=["music","video play outline","volume off","volume down","volume up","record","step backward","fast backward","backward","play","pause","stop","forward","fast forward","step forward","eject","unmute","mute","video play","closed captioning","pause circle","pause circle outline","stop circle","stop circle outline"],S=t.MAP_LOCATIONS_TRANSPORTATION_ICONS=["marker","coffee","food","building outline","hospital","emergency","first aid","military","h","location arrow","compass","space shuttle","university","building","paw","spoon","car","taxi","tree","bicycle","bus","ship","motorcycle","street view","hotel","train","subway","map pin","map signs","map outline","map"],A=t.TABLES_ICONS=["table","columns","sort","sort descending","sort ascending","sort alphabet ascending","sort alphabet descending","sort content ascending","sort content descending","sort numeric ascending","sort numeric descending"],k=t.TEXT_EDITOR_ICONS=["font","bold","italic","text height","text width","align left","align center","align right","align justify","list","outdent","indent","linkify","cut","copy","attach","save","content","unordered list","ordered list","strikethrough","underline","paste","unlinkify","superscript","subscript","header","paragraph","text cursor"],N=t.CURRENCY_ICONS=["euro","pound","dollar","rupee","yen","ruble","won","bitcoin","lira","shekel"],I=t.PAYMENT_OPTIONS_ICONS=["paypal","google wallet","visa","mastercard","discover","american express","paypal card","stripe","japan credit bureau","diners club","credit card alternative"],j=t.NETWORKS_AND_WEBSITE_ICONS=["twitter square","facebook square","linkedin square","github square","twitter","facebook f","github","pinterest","pinterest square","google plus square","google plus","linkedin","github alternate","maxcdn","youtube square","youtube","xing","xing square","youtube play","dropbox","stack overflow","instagram","flickr","adn","bitbucket","bitbucket square","tumblr","tumblr square","apple","windows","android","linux","dribble","skype","foursquare","trello","gittip","vk","weibo","renren","pagelines","stack exchange","vimeo square","slack","wordpress","yahoo","google","reddit","reddit square","stumbleupon circle","stumbleupon","delicious","digg","pied piper","pied piper alternate","drupal","joomla","behance","behance square","steam","steam square","spotify","deviantart","soundcloud","vine","codepen","jsfiddle","rebel","empire","git square","git","hacker news","tencent weibo","qq","wechat","slideshare","twitch","yelp","lastfm","lastfm square","ioxhost","angellist","meanpath","buysellads","connectdevelop","dashcube","forumbee","leanpub","sellsy","shirtsinbulk","simplybuilt","skyatlas","facebook","pinterest","whatsapp","viacoin","medium","y combinator","optinmonster","opencart","expeditedssl","gg","gg circle","tripadvisor","odnoklassniki","odnoklassniki square","pocket","wikipedia","safari","chrome","firefox","opera","internet explorer","contao","500px","amazon","houzz","vimeo","black tie","fonticons","reddit alien","microsoft edge","codiepie","modx","fort awesome","product hunt","mixcloud","scribd","gitlab","wpbeginner","wpforms","envira gallery","glide","glide g","viadeo","viadeo square","snapchat","snapchat ghost","snapchat square","pied piper hat","first order","yoast","themeisle","google plus circle","font awesome","bandcamp","eercast","etsy","free code camp","grav","imdb","linode","meetup","quora","ravelry","superpowers","telegram","wpexplorer"],D=t.ICONS=[].concat(d,f,p,h,v,m,y,g,_,b,E,O,P,C,x,w,T,M,S,A,k,N,I,j),L=t.ICON_ALIASES=["like","favorite","video","check","close","cancel","delete","x","zoom in","magnify","shutdown","clock","time","play circle outline","headphone","camera","video camera","picture","pencil","compose","point","tint","signup","plus circle","question circle","dont","minimize","add","exclamation circle","attention","eye","exclamation triangle","shuffle","chat","cart","shopping cart","bar graph","key","cogs","discussions","like outline","dislike outline","heart outline","log out","thumb tack","winner","phone","bookmark outline","phone square","credit card","hdd outline","bullhorn","bell outline","hand outline right","hand outline left","hand outline up","hand outline down","globe","wrench","briefcase","group","linkify","chain","flask","sidebar","bars","list ul","list ol","numbered list","magic","truck","currency","triangle down","dropdown","triangle up","triangle left","triangle right","envelope","conversation","rain","clipboard","lightbulb","bell","ambulance","medkit","fighter jet","beer","plus square","computer","circle outline","gamepad","star half full","broken chain","question","exclamation","eraser","microphone","microphone slash","shield","target","play circle","pencil square","eur","gbp","usd","inr","cny","rmb","jpy","rouble","rub","krw","btc","gratipay","zip","dot circle outline","try","graduation","circle outline","sliders","weixin","tty","teletype","binoculars","power cord","wifi","visa card","mastercard card","discover card","amex","american express card","stripe card","bell slash","bell slash outline","area graph","pie graph","line graph","cc","sheqel","ils","plus cart","arrow down cart","detective","venus","mars","mercury","intersex","venus double","female homosexual","mars double","male homosexual","venus mars","mars stroke","mars alternate","mars vertical","mars stroke vertical","mars horizontal","mars stroke horizontal","asexual","facebook official","user plus","user times","user close","user cancel","user delete","user x","bed","yc","ycombinator","battery four","battery three","battery three quarters","battery two","battery half","battery one","battery quarter","battery zero","i cursor","jcb","japan credit bureau card","diners club card","balance","hourglass outline","hourglass zero","hourglass one","hourglass two","hourglass three","hourglass four","grab","hand victory","tm","r circle","television","five hundred pixels","calendar plus","calendar minus","calendar times","calendar check","factory","commenting","commenting outline","edge","ms edge","wordpress beginner","wordpress forms","envira","question circle outline","assistive listening devices","als","ald","asl interpreting","deaf","american sign language interpreting","hard of hearing","signing","new pied piper","theme isle","google plus official","fa","bathtub","drivers license","drivers license outline","s15","thermometer","times rectangle","times rectangle outline","vcard","vcard outline"],R=t.ICONS_AND_ALIASES=[].concat((0,a.default)(D),L),U=t.COMPONENT_CONTEXT_SPECIFIC_ICONS=["left dropdown"];t.ALL_ICONS_IN_ALL_CONTEXTS=[].concat((0,a.default)(R),U)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.findByType=t.someByType=void 0;var o=n(282),a=r(o),i=n(295),u=r(i),l=n(1);t.someByType=function(e,t){return(0,u.default)(l.Children.toArray(e),{type:t})},t.findByType=function(e,t){return(0,a.default)(l.Children.toArray(e),{type:t})}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.useVerticalAlignProp=t.useTextAlignProp=t.useWidthProp=t.useKeyOrValueAndKey=t.useValueAndKey=t.useKeyOnly=void 0;var o=n(87),a=r(o),i=n(205),u=(t.useKeyOnly=function(e,t){return e&&t},t.useValueAndKey=function(e,t){return e&&e!==!0&&e+" "+t});t.useKeyOrValueAndKey=function(e,t){return e&&(e===!0?t:e+" "+t)},t.useWidthProp=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(n&&"equal"===e)return"equal width";var r="undefined"==typeof e?"undefined":(0,a.default)(e);return"string"!==r&&"number"!==r||!t?(0,i.numberToWord)(e):(0,i.numberToWord)(e)+" "+t},t.useTextAlignProp=function(e){return"justified"===e?"justified":u(e,"aligned")},t.useVerticalAlignProp=function(e){return u(e,"aligned")}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.deprecate=t.collectionShorthand=t.itemShorthand=t.contentShorthand=t.demand=t.givenProps=t.some=t.every=t.disallow=t.suggest=t.as=void 0;var o=n(55),a=r(o),i=n(640),u=r(i),l=n(645),s=r(l),c=n(642),d=r(c),f=n(641),p=r(f),h=n(639),v=r(h),m=n(634),y=r(m),g=n(649),_=r(g),b=n(646),E=r(b),O=n(648),P=r(O),C=n(644),x=r(C),w=n(643),T=r(w),M=n(284),S=r(M),A=n(285),k=r(A),N=n(286),I=r(N),j=n(1),D=n(371),L=r(D),R=function(){var e;return(e=Object.prototype.toString).call.apply(e,arguments)},U=(t.as=function(){return j.PropTypes.oneOfType([j.PropTypes.string,j.PropTypes.func]).apply(void 0,arguments)},t.suggest=function(e){return function(t,n,r){if(!Array.isArray(e))throw new Error(["Invalid argument supplied to suggest, expected an instance of array."," See `"+n+"` prop in `"+r+"`."].join(""));var o=t[n];if(!(0,I.default)(o)&&o!==!1&&!(0,k.default)(o,e)){var a=o.split(" "),i=(0,S.default)((0,T.default)(function(e){var t=e.split(" "),n=(0,S.default)((0,T.default)(function(e){return(0,T.default)(function(t){return(0,L.default)(e,t)},t)}),(0,T.default)(x.default),P.default)(a),r=(0,S.default)((0,T.default)(function(e){return(0,T.default)(function(t){return(0,L.default)(e,t)},a)}),(0,T.default)(x.default),P.default)(t);return{suggestion:e,score:n+r}}),(0,E.default)(["score","suggestion"]),(0,_.default)(3))(e);if(!i.some(function(e){return 0===e.score}))return new Error(["Invalid prop `"+n+"` of value `"+o+"` supplied to `"+r+"`.","\n\nInstead of `"+o+"`, did you mean:",i.map(function(e){return"\n - "+e.suggestion}).join(""),"\n"].join(""))}}},t.disallow=function(e){return function(t,n,r){if(!Array.isArray(e))throw new Error(["Invalid argument supplied to disallow, expected an instance of array."," See `"+n+"` prop in `"+r+"`."].join(""));if(!(0,I.default)(t[n])&&t[n]!==!1){var o=e.reduce(function(e,n){return(0,I.default)(t[n])||t[n]===!1?e:[].concat((0,a.default)(e),[n])},[]);return o.length>0?new Error(["Prop `"+n+"` in `"+r+"` conflicts with props: `"+o.join("`, `")+"`.","They cannot be defined together, choose one or the other."].join(" ")):void 0}}}),K=t.every=function(e){return function(t,n,r){for(var o=arguments.length,a=Array(o>3?o-3:0),i=3;i3?o-3:0),i=3;i3?a-3:0),l=3;l0?new Error("`"+n+"` prop in `"+r+"` requires props: `"+o.join("`, `")+"`."):void 0}}},t.contentShorthand=function(){return K([U(["children"]),j.PropTypes.node]).apply(void 0,arguments)},t.itemShorthand=function(){return K([U(["children"]),j.PropTypes.oneOfType([j.PropTypes.array,j.PropTypes.node,j.PropTypes.object])]).apply(void 0,arguments)});t.collectionShorthand=function(){return K([U(["children"]),j.PropTypes.arrayOf(F)]).apply(void 0,arguments)},t.deprecate=function(e,t){return function(n,r,o){for(var a=arguments.length,i=Array(a>3?a-3:0),u=3;u3&&void 0!==arguments[3]?arguments[3]:{},o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if("function"!=typeof e&&"string"!=typeof e)throw new Error("createShorthandFactory() Component must be a string or function.");if(null===n)return null;var a=(0,y.default)(n),i=(0,v.default)(n),l=(0,b.isValidElement)(n),c=(0,p.default)(n),f=a||i||(0,d.default)(n),h=l&&n.props||c&&n||f&&t(n);r=(0,s.default)(r)?r(h):r;var m=(0,u.default)({},r,h);if(h.className&&r.className&&(m.className=(0,_.default)(r.className,h.className)),h.style&&r.style&&(m.style=(0,u.default)({},r.style,h.style)),!m.key){var g=m.childKey;g?(m.key="function"==typeof g?g(m):g,delete m.childKey):o&&(a||i)&&(m.key=n)}return l?(0,b.cloneElement)(n,m):f||c?E.default.createElement(e,m):null}function a(e,t,n){if("function"!=typeof e&&"string"!=typeof e)throw new Error("createShorthandFactory() Component must be a string or function.");return function(r,a){return o(e,t,r,a,n)}}Object.defineProperty(t,"__esModule",{value:!0}),t.createHTMLLabel=t.createHTMLInput=t.createHTMLImage=void 0;var i=n(2),u=r(i),l=n(47),s=r(l),c=n(13),d=r(c),f=n(115),p=r(f),h=n(289),v=r(h),m=n(290),y=r(m);t.createShorthand=o,t.createShorthandFactory=a;var g=n(4),_=r(g),b=n(1),E=r(b);o.handledProps=[];t.createHTMLImage=a("img",function(e){return{src:e}}),t.createHTMLInput=a("input",function(e){return{type:e}}),t.createHTMLLabel=a("label",function(e){return{children:e}})},function(e,t){"use strict";function n(e,t,n){var r=e.defaultProps,o=void 0===r?{}:r;if(t.as&&t.as!==o.as)return t.as;if(n){var a=n();if(a)return a}return t.href?"a":o.as||"div"}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e,t){var n=e.handledProps,r=void 0===n?[]:n;return Object.keys(t).reduce(function(e,n){return"childKey"===n?e:(r.indexOf(n)===-1&&(e[n]=t[n]),e)},{})};t.default=n},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(23),a=r(o),i=n(298),u=r(i),l={3:"Cancel",6:"Help",8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",28:"Convert",29:"NonConvert",30:"Accept",31:"ModeChange",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",41:"Select",42:"Print",43:"Execute",44:"PrintScreen",45:"Insert",46:"Delete",48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],91:"OS",93:"ContextMenu",144:"NumLock",145:"ScrollLock",181:"VolumeMute",182:"VolumeDown",183:"VolumeUp",186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],220:["\\","|"],221:["]","}"],222:["'",'"'],224:"Meta",225:"AltGraph",246:"Attn",247:"CrSel",248:"ExSel",249:"EraseEof",250:"Play",251:"ZoomOut"};(0,u.default)(24,function(e){return l[112+e]="F"+(e+1)}),(0,u.default)(26,function(e){var t=e+65;l[t]=[String.fromCharCode(t+32),String.fromCharCode(t)]});var s={codes:l,getCode:function(e){return(0,a.default)(e)?e.keyCode||e.which||this[e.key]:this[e]},getName:function(e){var t=(0,a.default)(e),n=l[t?e.keyCode||e.which:e];return Array.isArray(n)&&(n=t?n[e.shiftKey?1:0]:n[0]),n},Cancel:3,Help:6,Backspace:8,Tab:9,Clear:12,Enter:13,Shift:16, +Control:17,Alt:18,Pause:19,CapsLock:20,Escape:27,Convert:28,NonConvert:29,Accept:30,ModeChange:31," ":32,PageUp:33,PageDown:34,End:35,Home:36,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,Select:41,Print:42,Execute:43,PrintScreen:44,Insert:45,Delete:46,0:48,")":48,1:49,"!":49,2:50,"@":50,3:51,"#":51,4:52,$:52,5:53,"%":53,6:54,"^":54,7:55,"&":55,8:56,"*":56,9:57,"(":57,a:65,A:65,b:66,B:66,c:67,C:67,d:68,D:68,e:69,E:69,f:70,F:70,g:71,G:71,h:72,H:72,i:73,I:73,j:74,J:74,k:75,K:75,l:76,L:76,m:77,M:77,n:78,N:78,o:79,O:79,p:80,P:80,q:81,Q:81,r:82,R:82,s:83,S:83,t:84,T:84,u:85,U:85,v:86,V:86,w:87,W:87,x:88,X:88,y:89,Y:89,z:90,Z:90,OS:91,ContextMenu:93,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,F16:127,F17:128,F18:129,F19:130,F20:131,F21:132,F22:133,F23:134,F24:135,NumLock:144,ScrollLock:145,VolumeMute:181,VolumeDown:182,VolumeUp:183,";":186,":":186,"=":187,"+":187,",":188,"<":188,"-":189,_:189,".":190,">":190,"/":191,"?":191,"`":192,"~":192,"[":219,"{":219,"\\":220,"|":220,"]":221,"}":221,"'":222,'"':222,Meta:224,AltGraph:225,Attn:246,CrSel:247,ExSel:248,EraseEof:249,Play:250,ZoomOut:251};s.Spacebar=s[" "],s.Digit0=s[0],s.Digit1=s[1],s.Digit2=s[2],s.Digit3=s[3],s.Digit4=s[4],s.Digit5=s[5],s.Digit6=s[6],s.Digit7=s[7],s.Digit8=s[8],s.Digit9=s[9],s.Tilde=s["~"],s.GraveAccent=s["`"],s.ExclamationPoint=s["!"],s.AtSign=s["@"],s.PoundSign=s["#"],s.PercentSign=s["%"],s.Caret=s["^"],s.Ampersand=s["&"],s.PlusSign=s["+"],s.MinusSign=s["-"],s.EqualsSign=s["="],s.DivisionSign=s["/"],s.MultiplicationSign=s["*"],s.Comma=s[","],s.Decimal=s["."],s.Colon=s[":"],s.Semicolon=s[";"],s.Pipe=s["|"],s.BackSlash=s["\\"],s.QuestionMark=s["?"],s.SingleQuote=s['"'],s.DoubleQuote=s['"'],s.LeftCurlyBrace=s["{"],s.RightCurlyBrace=s["}"],s.LeftParenthesis=s["("],s.RightParenthesis=s[")"],s.LeftAngleBracket=s["<"],s.RightAngleBracket=s[">"],s.LeftSquareBracket=s["["],s.RightSquareBracket=s["]"],t.default=s},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.objectDiff=void 0;var o=n(173),a=r(o),i=n(63),u=r(i),l=n(668),s=r(l);t.objectDiff=function(e,t){return(0,s.default)(e,function(e,n,r){(0,u.default)(t,r)?(0,a.default)(n,t[r])||(e[r]=t[r]):e[r]="[DELETED]"},{})}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(2),a=r(o),i=n(55),u=r(i),l=n(9),s=r(l),c=n(10),d=r(c),f=n(12),p=r(f),h=n(11),v=r(h),m=n(25),y=r(m),g=n(118),_=r(g),b=n(47),E=r(b),O=n(171),P=r(O),C=n(63),x=r(C),w=n(14),T=r(w),M=n(81),S=r(M),A=n(4),k=r(A),N=n(1),I=r(N),j=n(3),D=n(372),L=r(D),R=n(373),U=r(R),K=function(e){function t(){var e;(0,s.default)(this,t);for(var n=arguments.length,r=Array(n),o=0;o0&&void 0!==arguments[0]?arguments[0]:r.state.value,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.props.options,n=r.props,o=n.multiple,a=n.search,i=n.allowAdditions,u=n.additionPosition,l=n.additionLabel,s=r.state.searchQuery,c=t;if(o&&(c=(0,R.default)(c,function(t){return!(0,Q.default)(e,t.value)})),a&&s)if((0,K.default)(a))c=a(c,s);else{var d=new RegExp((0,D.default)(s),"i");c=(0,R.default)(c,function(e){return d.test(e.text)})}if(i&&a&&s&&!(0,I.default)(c,{text:s})){var f=oe.default.isValidElement(l)?oe.default.cloneElement(l,{key:"label"}):l||"",p={text:[f,oe.default.createElement("b",{key:"addition"},s)],value:s,className:"addition","data-additional":!0};"top"===u?c.unshift(p):c.push(p)}return c},r.getSelectedItem=function(){var e=r.state.selectedIndex,t=r.getMenuOptions();return(0,q.default)(t,"["+e+"]")},r.getEnabledIndices=function(e){var t=e||r.getMenuOptions();return(0,k.default)(t,function(e,t,n){return t.disabled||e.push(n),e},[])},r.getItemByValue=function(e){var t=r.props.options;return(0,S.default)(t,{value:e})},r.getMenuItemIndexByValue=function(e,t){var n=t||r.getMenuOptions();return(0,T.default)(n,["value",e])},r.getDropdownAriaOptions=function(e){var t=r.props,n=t.loading,o=t.disabled,a=t.search,i=t.multiple,u=r.state.open,l={role:a?"combobox":"listbox","aria-busy":n,"aria-disabled":o,"aria-expanded":!!u};return"listbox"===l.role&&(l["aria-multiselectable"]=i),l},r.setValue=function(e){ge("setValue()"),ge("value",e);var t={searchQuery:""},n=r.props,o=n.multiple,a=n.search;o&&a&&r.searchRef&&r.searchRef.focus(),r.trySetState({value:e},t),r.setSelectedIndex(e)},r.setSelectedIndex=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r.state.value,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.props.options,n=r.props.multiple,o=r.state.selectedIndex,a=r.getMenuOptions(e,t),i=r.getEnabledIndices(a),u=void 0;if(!o||o<0){var l=i[0];u=n?l:r.getMenuItemIndexByValue(e,a)||i[0]}else if(n)o>=a.length-1&&(u=i[i.length-1]);else{var s=r.getMenuItemIndexByValue(e,a);u=(0,Q.default)(i,s)?s:void 0}(!u||u<0)&&(u=i[0]),r.setState({selectedIndex:u})},r.handleLabelClick=function(e,t){ge("handleLabelClick()"),e.stopPropagation(),r.setState({selectedLabel:t.value});var n=r.props.onLabelClick;n&&n(e,t)},r.handleLabelRemove=function(e,t){ge("handleLabelRemove()"),e.stopPropagation();var n=r.state.value,o=(0,x.default)(n,t.value);ge("label props:",t),ge("current value:",n),ge("remove value:",t.value),ge("new value:",o),r.setValue(o),r.handleChange(e,o)},r.moveSelectionBy=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.state.selectedIndex;ge("moveSelectionBy()"),ge("offset: "+e);var n=r.getMenuOptions(),o=n.length-1;if(!(0,P.default)(n,"disabled")){var a=t+e;if(a>o?a=0:a<0&&(a=o),n[a].disabled)return r.moveSelectionBy(e,a);r.setState({selectedIndex:a}),r.scrollSelectedItemIntoView()}},r.handleSearchRef=function(e){return r.searchRef=e},r.handleSizerRef=function(e){return r.sizerRef=e},r.handleRef=function(e){return r.ref=e},r.scrollSelectedItemIntoView=function(){ge("scrollSelectedItemIntoView()");var e=r.ref.querySelector(".menu.visible"),t=e.querySelector(".item.selected");ge("menu: "+e),ge("item: "+t);var n=t.offsetTope.scrollTop+e.clientHeight;n?e.scrollTop=t.offsetTop:o&&(e.scrollTop=t.offsetTop+t.clientHeight-e.clientHeight)},r.open=function(e){ge("open()");var t=r.props,n=t.disabled,o=t.onOpen,a=t.search;n||(a&&r.searchRef&&r.searchRef.focus(),o&&o(e,r.props),r.trySetState({open:!0}))},r.close=function(e){ge("close()");var t=r.props.onClose;t&&t(e,r.props),r.trySetState({open:!1})},r.handleClose=function(){ge("handleClose()");var e=document.activeElement===r.searchRef,t=document.activeElement===r.ref,n=e||t;e||r.ref.blur(),r.setState({focus:n})},r.toggle=function(e){return r.state.open?r.close(e):r.open(e)},r.renderText=function(){var e=r.props,t=e.multiple,n=e.placeholder,o=e.search,a=e.text,i=r.state,u=i.searchQuery,l=i.value,s=i.open,c=t?!(0,V.default)(l):!(0,E.default)(l)&&""!==l,d=(0,ne.default)(n&&!c&&"default","text",o&&u&&"filtered"),f=n;return u?f=null:a?f=a:s&&!t?f=(0,q.default)(r.getSelectedItem(),"text"):c&&(f=(0,q.default)(r.getItemByValue(l),"text")),oe.default.createElement("div",{className:d},f)},r.renderHiddenInput=function(){ge("renderHiddenInput()");var e=r.state.value,t=r.props,n=t.multiple,o=t.name,a=t.options,i=t.selection;return ge("name: "+o),ge("selection: "+i),ge("value: "+e),i?oe.default.createElement("select",{type:"hidden","aria-hidden":"true",name:o,value:e,multiple:n},oe.default.createElement("option",{value:""}),(0,_.default)(a,function(e){return oe.default.createElement("option",{key:e.value,value:e.value},e.text)})):null},r.renderSearchInput=function(){var e=r.props,t=e.disabled,n=e.search,o=e.name,a=e.tabIndex,i=r.state.searchQuery;if(!n)return null;var u=void 0;u=(0,E.default)(a)?t?-1:0:a;var l=void 0;return r.sizerRef&&i&&(r.sizerRef.style.display="inline",r.sizerRef.textContent=i,l=Math.ceil(r.sizerRef.getBoundingClientRect().width),r.sizerRef.style.removeProperty("display")),oe.default.createElement("input",{value:i,type:"text","aria-autocomplete":"list",onChange:r.handleSearchChange,className:"search",name:[o,"search"].join("-"),autoComplete:"off",tabIndex:u,style:{width:l},ref:r.handleSearchRef})},r.renderSearchSizer=function(){var e=r.props,t=e.search,n=e.multiple;return t&&n?oe.default.createElement("span",{className:"sizer",ref:r.handleSizerRef}):null},r.renderLabels=function(){ge("renderLabels()");var e=r.props,t=e.multiple,n=e.renderLabel,o=r.state,a=o.selectedLabel,i=o.value;if(t&&!(0,V.default)(i)){var u=(0,_.default)(i,r.getItemByValue);return ge("selectedItems",u),(0,_.default)((0,y.default)(u),function(e,t){var o={active:e.value===a,as:"a",key:e.value,onClick:r.handleLabelClick,onRemove:r.handleLabelRemove,value:e.value};return se.default.create(n(e,t,o),o)})}},r.renderOptions=function(){var e=r.props,t=e.multiple,n=e.search,o=e.noResultsMessage,i=r.state,u=i.selectedIndex,l=i.value,s=r.getMenuOptions();if(null!==o&&n&&(0,V.default)(s))return oe.default.createElement("div",{className:"message"},o);var c=t?function(e){return(0,Q.default)(l,e)}:function(e){return e===l};return(0,_.default)(s,function(e,t){return oe.default.createElement(pe.default,(0,a.default)({key:e.value+"-"+t,active:c(e.value),onClick:r.handleItemClick,selected:u===t},e,{style:(0,a.default)({},e.style,{pointerEvents:"all"})}))})},r.renderMenu=function(){var e=r.props,t=e.children,n=e.header,o=r.state.open,i=o?"visible":"",u=r.getDropdownMenuAriaOptions();if(!(0,E.default)(t)){var l=re.Children.only(t),s=(0,ne.default)(i,l.props.className);return(0,re.cloneElement)(l,(0,a.default)({className:s},u))}return oe.default.createElement(ye.default,(0,a.default)({},u,{className:i}),(0,ae.createShorthand)(ve.default,function(e){return{content:e}},n),r.renderOptions())},o=n,(0,d.default)(r,o)}return(0,v.default)(t,e),(0,s.default)(t,[{key:"componentWillMount",value:function(){(0,p.default)(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"componentWillMount",this)&&(0,p.default)(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"componentWillMount",this).call(this),ge("componentWillMount()");var e=this.state,n=e.open,r=e.value;this.setValue(r),n&&this.open()}},{key:"shouldComponentUpdate",value:function(e,t){return!(0,ee.default)(e,this.props)||!(0,ee.default)(t,this.state)}},{key:"componentWillReceiveProps",value:function(e){(0,p.default)(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"componentWillReceiveProps",this).call(this,e),ge("componentWillReceiveProps()"),ge("to props:",(0,ae.objectDiff)(this.props,e));(0,ee.default)(e.value,this.props.value)||(ge("value changed, setting",e.value),this.setValue(e.value)),(0,ee.default)(e.options,this.props.options)||this.setSelectedIndex(void 0,e.options)}},{key:"componentDidUpdate",value:function(e,t){if(ge("componentDidUpdate()"),ge("to state:",(0,ae.objectDiff)(t,this.state)),ae.isBrowser){if(!t.focus&&this.state.focus){if(ge("dropdown focused"),!this.isMouseDown){var n=this.props.openOnFocus;ge("mouse is not down, opening"),n&&this.open()}this.state.open?(document.addEventListener("keydown",this.moveSelectionOnKeyDown),document.addEventListener("keydown",this.selectItemOnEnter)):(document.addEventListener("keydown",this.openOnArrow),document.addEventListener("keydown",this.openOnSpace)),document.addEventListener("keydown",this.removeItemOnBackspace)}else if(t.focus&&!this.state.focus){ge("dropdown blurred");var r=this.props.closeOnBlur;!this.isMouseDown&&r&&(ge("mouse is not down and closeOnBlur=true, closing"),this.close()),document.removeEventListener("keydown",this.openOnArrow),document.removeEventListener("keydown",this.openOnSpace),document.removeEventListener("keydown",this.moveSelectionOnKeyDown),document.removeEventListener("keydown",this.selectItemOnEnter),document.removeEventListener("keydown",this.removeItemOnBackspace)}!t.open&&this.state.open?(ge("dropdown opened"),document.addEventListener("keydown",this.closeOnEscape),document.addEventListener("keydown",this.moveSelectionOnKeyDown),document.addEventListener("keydown",this.selectItemOnEnter),document.addEventListener("keydown",this.removeItemOnBackspace),document.addEventListener("click",this.closeOnDocumentClick),document.removeEventListener("keydown",this.openOnArrow),document.removeEventListener("keydown",this.openOnSpace)):t.open&&!this.state.open&&(ge("dropdown closed"),this.handleClose(),document.removeEventListener("keydown",this.closeOnEscape),document.removeEventListener("keydown",this.moveSelectionOnKeyDown),document.removeEventListener("keydown",this.selectItemOnEnter),document.removeEventListener("click",this.closeOnDocumentClick),this.state.focus||document.removeEventListener("keydown",this.removeItemOnBackspace))}}},{key:"componentWillUnmount",value:function(){ge("componentWillUnmount()"),ae.isBrowser&&(document.removeEventListener("keydown",this.openOnArrow),document.removeEventListener("keydown",this.openOnSpace),document.removeEventListener("keydown",this.moveSelectionOnKeyDown),document.removeEventListener("keydown",this.selectItemOnEnter),document.removeEventListener("keydown",this.removeItemOnBackspace),document.removeEventListener("keydown",this.closeOnEscape),document.removeEventListener("click",this.closeOnDocumentClick))}},{key:"getDropdownMenuAriaOptions",value:function(){var e=this.props,t=e.search,n=e.multiple,r={};return t&&(r["aria-multiselectable"]=n,r.role="listbox"),r}},{key:"render",value:function(){ge("render()"),ge("props",this.props),ge("state",this.state);var e=this.state.open,n=this.props,r=n.basic,o=n.button,i=n.className,u=n.compact,l=n.fluid,s=n.floating,c=n.icon,d=n.inline,f=n.item,p=n.labeled,h=n.multiple,v=n.pointing,m=n.search,y=n.selection,g=n.simple,_=n.loading,b=n.error,O=n.disabled,P=n.scrolling,C=n.tabIndex,x=n.trigger,w=(0,ne.default)("ui",(0,ae.useKeyOnly)(e,"active visible"),(0,ae.useKeyOnly)(O,"disabled"),(0,ae.useKeyOnly)(b,"error"),(0,ae.useKeyOnly)(_,"loading"),(0,ae.useKeyOnly)(r,"basic"),(0,ae.useKeyOnly)(o,"button"),(0,ae.useKeyOnly)(u,"compact"),(0,ae.useKeyOnly)(l,"fluid"),(0,ae.useKeyOnly)(s,"floating"),(0,ae.useKeyOnly)(d,"inline"),(0,ae.useKeyOnly)(p,"labeled"),(0,ae.useKeyOnly)(f,"item"),(0,ae.useKeyOnly)(h,"multiple"),(0,ae.useKeyOnly)(m,"search"),(0,ae.useKeyOnly)(y,"selection"),(0,ae.useKeyOnly)(g,"simple"),(0,ae.useKeyOnly)(P,"scrolling"),(0,ae.useKeyOrValueAndKey)(v,"pointing"),i,"dropdown"),T=(0,ae.getUnhandledProps)(t,this.props),M=(0,ae.getElementType)(t,this.props),S=this.getDropdownAriaOptions(M,this.props),A=void 0;return(0,E.default)(C)?m||(A=O?-1:0):A=C,oe.default.createElement(M,(0,a.default)({},T,S,{className:w,onBlur:this.handleBlur,onClick:this.handleClick,onMouseDown:this.handleMouseDown,onFocus:this.handleFocus,onChange:this.handleChange,tabIndex:A,ref:this.handleRef}),this.renderHiddenInput(),this.renderLabels(),this.renderSearchInput(),this.renderSearchSizer(),x||this.renderText(),ue.default.create(c),this.renderMenu())}}]),t}(ae.AutoControlledComponent);_e.defaultProps={additionLabel:"Add ",additionPosition:"top",icon:"dropdown",noResultsMessage:"No results found.",renderLabel:function(e){var t=e.text;return t},selectOnBlur:!0,openOnFocus:!0,closeOnBlur:!0},_e.autoControlledProps=["open","value","selectedLabel"],_e._meta={name:"Dropdown",type:ae.META.TYPES.MODULE},_e.Divider=de.default,_e.Header=ve.default,_e.Item=pe.default,_e.Menu=ye.default,t.default=_e,_e.handledProps=["additionLabel","additionPosition","allowAdditions","as","basic","button","children","className","closeOnBlur","closeOnChange","compact","defaultOpen","defaultSelectedLabel","defaultValue","disabled","error","floating","fluid","header","icon","inline","item","labeled","loading","multiple","name","noResultsMessage","onAddItem","onBlur","onChange","onClick","onClose","onFocus","onLabelClick","onMouseDown","onOpen","onSearchChange","open","openOnFocus","options","placeholder","pointing","renderLabel","scrolling","search","selectOnBlur","selectedLabel","selection","simple","tabIndex","text","trigger","value"]},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(2),a=r(o),i=n(9),u=r(i),l=n(10),s=r(l),c=n(12),d=r(c),f=n(11),p=r(f),h=n(5),v=r(h),m=n(4),y=r(m),g=n(1),_=r(g),b=n(3),E=n(20),O=r(E),P=function(e){function t(){var e,n,r,o;(0,u.default)(this,t);for(var i=arguments.length,l=Array(i),s=0;s=window.innerHeight,i={};r.state.marginTop!==o&&(i.marginTop=o),r.state.scrolling!==a&&(i.scrolling=a,a?e.classList.add("scrolling"):e.classList.remove("scrolling")), +Object.keys(i).length>0&&r.setState(i)}r.animationRequestId=requestAnimationFrame(r.setPosition)},o=n,(0,d.default)(r,o)}return(0,p.default)(t,e),(0,s.default)(t,[{key:"componentWillUnmount",value:function(){D("componentWillUnmount()"),this.handlePortalUnmount()}},{key:"render",value:function(){var e=this.state.open,n=this.props,r=n.basic,o=n.children,i=n.className,u=n.closeIcon,l=n.closeOnDimmerClick,s=n.closeOnDocumentClick,c=n.dimmer,d=n.size,f=this.getMountNode();if(!O.isBrowser)return null;var p=this.state,h=p.marginTop,m=p.scrolling,g=(0,_.default)("ui",d,(0,O.useKeyOnly)(r,"basic"),(0,O.useKeyOnly)(m,"scrolling"),"modal transition visible active",i),b=(0,O.getUnhandledProps)(t,this.props),P=w.default.handledProps,x=(0,y.default)(b,P),T=(0,v.default)(b,P),M=(0,O.getElementType)(t,this.props),S=u===!0?"close":u,A=E.default.createElement(M,(0,a.default)({},x,{className:g,style:{marginTop:h},ref:this.handleRef}),C.default.create(S,{onClick:this.handleClose}),o),k=c?(0,_.default)("ui","inverted"===c&&"inverted","page modals dimmer transition visible active"):null;return E.default.createElement(w.default,(0,a.default)({closeOnRootNodeClick:l,closeOnDocumentClick:s},T,{className:k,mountNode:f,onClose:this.handleClose,onMount:this.handlePortalMount,onOpen:this.handleOpen,onUnmount:this.handlePortalUnmount,open:e}),A)}}]),t}(O.AutoControlledComponent);L.defaultProps={dimmer:!0,closeOnDimmerClick:!0,closeOnDocumentClick:!1},L.autoControlledProps=["open"],L._meta={name:"Modal",type:O.META.TYPES.MODULE},L.Header=M.default,L.Content=A.default,L.Description=j.default,L.Actions=N.default,L.handledProps=["as","basic","children","className","closeIcon","closeOnDimmerClick","closeOnDocumentClick","defaultOpen","dimmer","mountNode","onClose","onMount","onOpen","onUnmount","open","size"],t.default=L},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.POSITIONS=void 0;var o=n(2),a=r(o),i=n(9),u=r(i),l=n(10),s=r(l),c=n(12),d=r(c),f=n(11),p=r(f),h=n(5),v=r(h),m=n(119),y=r(m),g=n(118),_=r(g),b=n(619),E=r(b),O=n(655),P=r(O),C=n(289),x=r(C),w=n(81),T=r(w),M=n(14),S=r(M),A=n(4),k=r(A),N=n(1),I=r(N),j=n(3),D=n(126),L=r(D),R=n(385),U=r(R),K=n(386),F=r(K),B=(0,j.makeDebugger)("popup"),W=t.POSITIONS=["top left","top right","bottom right","bottom left","right center","left center","top center","bottom center"],V=function(e){function t(){var e,n,r,o;(0,u.default)(this,t);for(var a=arguments.length,i=Array(a),l=0;ln+i)&&(!(u.leftr+a)))}},{key:"setPopupStyle",value:function(){if(this.coords&&this.popupCoords){for(var e=this.props.position,t=this.computePopupStyle(e),n=(0,S.default)(W,e),r=0;!this.isStyleInViewport(t)&&r=100||a>=o)},r.renderLabel=function(){var e=r.props,t=e.children,n=e.label;return(0,v.default)(t)?(0,T.createShorthand)("div",function(e){return{children:e}},n,{className:"label"}):w.default.createElement("div",{className:"label"},t)},r.renderProgress=function(e){var t=r.props,n=t.precision,o=t.progress,a=t.total,i=t.value;if(o||!(0,E.default)(n))return w.default.createElement("div",{className:"progress"},"ratio"!==o?e+"%":i+"/"+a)},o=n,(0,d.default)(r,o)}return(0,p.default)(t,e),(0,s.default)(t,[{key:"render",value:function(){var e=this.props,n=e.active,r=e.attached,o=e.className,i=e.color,u=e.disabled,l=e.error,s=e.indicating,c=e.inverted,d=e.size,f=e.success,p=e.warning,h=(0,C.default)("ui",i,d,(0,T.useKeyOnly)(n||s,"active"),(0,T.useKeyOnly)(u,"disabled"),(0,T.useKeyOnly)(l,"error"),(0,T.useKeyOnly)(s,"indicating"),(0,T.useKeyOnly)(c,"inverted"),(0,T.useKeyOnly)(f||this.isAutoSuccess(),"success"),(0,T.useKeyOnly)(p,"warning"),(0,T.useValueAndKey)(r,"attached"),"progress",o),v=(0,T.getUnhandledProps)(t,this.props),m=(0,T.getElementType)(t,this.props),y=this.getPercent();return w.default.createElement(m,(0,a.default)({},v,{className:h}),w.default.createElement("div",{className:"bar",style:{width:y+"%"}},this.renderProgress(y)),this.renderLabel())}}]),t}(x.Component);M._meta={name:"Progress",type:T.META.TYPES.MODULE},M.handledProps=["active","as","attached","autoSuccess","children","className","color","disabled","error","indicating","inverted","label","percent","precision","progress","size","success","total","value","warning"],t.default=M},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(812),a=r(o);t.default=a.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(2),a=r(o),i=n(9),u=r(i),l=n(10),s=r(l),c=n(12),d=r(c),f=n(11),p=r(f),h=n(298),v=r(h),m=n(288),y=r(m),g=n(14),_=(r(g),n(4)),b=r(_),E=n(1),O=r(E),P=n(3),C=n(387),x=r(C),w=function(e){function t(){var e,n,r,o;(0,u.default)(this,t);for(var a=arguments.length,i=Array(a),l=0;l=0,"selected"),"rating",r),h=(0,P.getUnhandledProps)(t,this.props),m=(0,P.getElementType)(t,this.props);return O.default.createElement(m,(0,a.default)({},h,{className:p,role:"radiogroup",onMouseLeave:this.handleMouseLeave}),(0,v.default)(u,function(t){return O.default.createElement(x.default,{active:c>=t+1,"aria-checked":c===t+1,"aria-posinset":t+1,"aria-setsize":u,index:t,key:t,onClick:e.handleIconClick,onMouseEnter:e.handleIconMouseEnter,selected:d>=t&&f})}))}}]),t}(P.AutoControlledComponent);w.autoControlledProps=["rating"],w.defaultProps={clearable:"auto",maxRating:1},w._meta={name:"Rating",type:P.META.TYPES.MODULE},w.Icon=x.default;var T=function(){var e=this;this.handleIconClick=function(t,n){var r=n.index,o=e.props,i=o.clearable,u=o.disabled,l=o.maxRating,s=o.onRate,c=e.state.rating;if(!u){var d=r+1;"auto"===i&&1===l?d=+!c:i===!0&&d===c&&(d=0),e.trySetState({rating:d},{isSelecting:!1}),s&&s(t,(0,a.default)({},e.props,{rating:d}))}},this.handleIconMouseEnter=function(t,n){var r=n.index;e.props.disabled||e.setState({selectedIndex:r,isSelecting:!0})},this.handleMouseLeave=function(){for(var t=arguments.length,n=Array(t),r=0;r0&&void 0!==arguments[0]?arguments[0]:r.state.selectedIndex,t=r.getFlattenedResults();return(0,T.default)(t,e)},r.setValue=function(e){Y("setValue()"),Y("value",e);var t=r.props.selectFirstResult;r.trySetState({value:e},{selectedIndex:t?0:-1})},r.moveSelectionBy=function(e){Y("moveSelectionBy()"),Y("offset: "+e);var t=r.state.selectedIndex,n=r.getFlattenedResults(),o=n.length-1,a=t+e;a>o?a=0:a<0&&(a=o),r.setState({selectedIndex:a}),r.scrollSelectedItemIntoView()},r.scrollSelectedItemIntoView=function(){if(Y("scrollSelectedItemIntoView()"),R.isBrowser){var e=document.querySelector(".ui.search.active.visible .results.visible"),t=e.querySelector(".result.active");Y("menu (results): "+e),Y("item (result): "+t);var n=t.offsetTope.scrollTop+e.clientHeight;n?e.scrollTop=t.offsetTop:r&&(e.scrollTop=t.offsetTop+t.clientHeight-e.clientHeight)}},r.tryOpen=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r.state.value;Y("open()");var t=r.props.minCharacters;e.length3&&void 0!==arguments[3]?arguments[3]:0,i=e.childKey,l=(0,u.default)(e,["childKey"]),s=r.props.resultRenderer,c=r.state.selectedIndex,d=t+o;return L.default.createElement(V.default,(0,a.default)({key:i||l.title,active:c===d,onClick:r.handleItemClick,renderer:s},l,{id:d}))},r.renderResults=function(){var e=r.props.results;return(0,x.default)(e,r.renderResult)},r.renderCategories=function(){var e=r.props,t=e.categoryRenderer,n=e.results,o=r.state.selectedIndex,i=0;return(0,x.default)(n,function(e,n,l){var s=e.childKey,c=(0,u.default)(e,["childKey"]),d=(0,a.default)({key:s||c.name,active:(0,P.default)(o,i,i+c.results.length),renderer:t},c),f=(0,E.default)(r.renderResult,i);return i+=c.results.length,L.default.createElement(B.default,d,c.results.map(f))})},r.renderMenuContent=function(){var e=r.props,t=e.category,n=e.showNoResults,o=e.results;return(0,_.default)(o)?n?r.renderNoResults():null:t?r.renderCategories():r.renderResults()},r.renderResultsMenu=function(){var e=r.state.open,t=e?"visible":"",n=r.renderMenuContent();if(n)return L.default.createElement(H.default,{className:t},n)},o=n,(0,p.default)(r,o)}return(0,y.default)(t,e),(0,d.default)(t,[{key:"componentWillMount",value:function(){(0,v.default)(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"componentWillMount",this)&&(0,v.default)(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"componentWillMount",this).call(this),Y("componentWillMount()");var e=this.state,n=e.open,r=e.value;this.setValue(r),n&&this.open()}},{key:"shouldComponentUpdate",value:function(e,t){return!(0,k.default)(e,this.props)||!(0,k.default)(t,this.state)}},{key:"componentWillReceiveProps",value:function(e){(0,v.default)(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"componentWillReceiveProps",this).call(this,e),Y("componentWillReceiveProps()"),Y("changed props:",(0,R.objectDiff)(e,this.props)),(0,k.default)(e.value,this.props.value)||(Y("value changed, setting",e.value),this.setValue(e.value))}},{key:"componentDidUpdate",value:function(e,t){Y("componentDidUpdate()"),Y("to state:",(0,R.objectDiff)(t,this.state)),R.isBrowser&&(!t.focus&&this.state.focus?(Y("search focused"),this.isMouseDown||(Y("mouse is not down, opening"),this.tryOpen()),this.state.open&&(document.addEventListener("keydown",this.moveSelectionOnKeyDown),document.addEventListener("keydown",this.selectItemOnEnter))):t.focus&&!this.state.focus&&(Y("search blurred"),this.isMouseDown||(Y("mouse is not down, closing"),this.close()),document.removeEventListener("keydown",this.moveSelectionOnKeyDown),document.removeEventListener("keydown",this.selectItemOnEnter)),!t.open&&this.state.open?(Y("search opened"),this.open(),document.addEventListener("keydown",this.closeOnEscape),document.addEventListener("keydown",this.moveSelectionOnKeyDown),document.addEventListener("keydown",this.selectItemOnEnter),document.addEventListener("click",this.closeOnDocumentClick)):t.open&&!this.state.open&&(Y("search closed"),this.close(),document.removeEventListener("keydown",this.closeOnEscape),document.removeEventListener("keydown",this.moveSelectionOnKeyDown),document.removeEventListener("keydown",this.selectItemOnEnter),document.removeEventListener("click",this.closeOnDocumentClick)))}},{key:"componentWillUnmount",value:function(){Y("componentWillUnmount()"),R.isBrowser&&(document.removeEventListener("keydown",this.moveSelectionOnKeyDown),document.removeEventListener("keydown",this.selectItemOnEnter),document.removeEventListener("keydown",this.closeOnEscape),document.removeEventListener("click",this.closeOnDocumentClick))}},{key:"render",value:function(){Y("render()"),Y("props",this.props),Y("state",this.state);var e=this.state,n=e.searchClasses,r=e.focus,o=e.open,i=this.props,u=i.aligned,l=i.category,s=i.className,c=i.fluid,d=i.loading,f=i.size,p=(0,j.default)("ui",o&&"active visible",f,n,(0,R.useKeyOnly)(l,"category"),(0,R.useKeyOnly)(r,"focus"),(0,R.useKeyOnly)(c,"fluid"),(0,R.useKeyOnly)(d,"loading"),(0,R.useValueAndKey)(u,"aligned"),"search",s),h=(0,R.getUnhandledProps)(t,this.props),v=(0,R.getElementType)(t,this.props);return L.default.createElement(v,(0,a.default)({},h,{className:p,onBlur:this.handleBlur,onFocus:this.handleFocus,onMouseDown:this.handleMouseDown}),this.renderSearchInput(),this.renderResultsMenu())}}]),t}(R.AutoControlledComponent);q.defaultProps={icon:"search",input:"text",minCharacters:1,noResultsMessage:"No results found.",showNoResults:!0},q.autoControlledProps=["open","value"],q._meta={name:"Search",type:R.META.TYPES.MODULE},q.Category=B.default,q.Result=V.default,q.Results=H.default,t.default=q,q.handledProps=["aligned","as","category","categoryRenderer","className","defaultOpen","defaultValue","fluid","icon","input","loading","minCharacters","noResultsDescription","noResultsMessage","onBlur","onFocus","onMouseDown","onResultSelect","onSearchChange","open","placeholder","resultRenderer","results","selectFirstResult","showNoResults","size","value"]},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(816),a=r(o);t.default=a.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(2),a=r(o),i=n(9),u=r(i),l=n(10),s=r(l),c=n(12),d=r(c),f=n(11),p=r(f),h=n(4),v=r(h),m=n(1),y=r(m),g=n(3),_=n(391),b=r(_),E=n(392),O=r(E),P=function(e){function t(){var e,n,r,o;(0,u.default)(this,t);for(var a=arguments.length,i=Array(a),l=0;l0&&void 0!==arguments[0]?arguments[0]:500;clearTimeout(r.stopAnimatingTimer),r.setState({animating:!0}),r.stopAnimatingTimer=setTimeout(function(){return r.setState({animating:!1})},e)},o=n,(0,d.default)(r,o)}return(0,p.default)(t,e),(0,s.default)(t,[{key:"componentWillReceiveProps",value:function(e){e.visible!==this.props.visible&&this.startAnimating()}},{key:"render",value:function(){var e=this.props,n=e.animation,r=e.className,o=e.children,i=e.direction,u=e.visible,l=e.width,s=this.state.animating,c=(0,v.default)("ui",n,i,l,(0,g.useKeyOnly)(s,"animating"),(0,g.useKeyOnly)(u,"visible"),"sidebar",r),d=(0,g.getUnhandledProps)(t,this.props),f=(0,g.getElementType)(t,this.props);return y.default.createElement(f,(0,a.default)({},d,{className:c}),o)}}]),t}(g.AutoControlledComponent);P.defaultProps={direction:"left"},P.autoControlledProps=["visible"],P._meta={name:"Sidebar",type:g.META.TYPES.MODULE},P.Pushable=b.default,P.Pusher=O.default,P.handledProps=["animation","as","children","className","defaultVisible","direction","visible","width"],t.default=P},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(818),a=r(o);t.default=a.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=e.className,n=e.children,r=e.collapsed,a=(0,l.default)((0,d.useKeyOnly)(r,"collapsed"),"comment",t),u=(0,d.getUnhandledProps)(o,e),s=(0,d.getElementType)(o,e);return c.default.createElement(s,(0,i.default)({},u,{className:a}),n)}Object.defineProperty(t,"__esModule",{value:!0});var a=n(2),i=r(a),u=n(4),l=r(u),s=n(1),c=r(s),d=n(3),f=n(396),p=r(f),h=n(397),v=r(h),m=n(398),y=r(m),g=n(399),_=r(g),b=n(400),E=r(b),O=n(401),P=r(O),C=n(402),x=r(C),w=n(403),T=r(w);o.handledProps=["as","children","className","collapsed"],o._meta={name:"Comment",type:d.META.TYPES.VIEW},o.Author=y.default,o.Action=p.default,o.Actions=v.default,o.Avatar=_.default,o.Content=E.default,o.Group=P.default,o.Metadata=x.default,o.Text=T.default,t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(820),a=r(o);t.default=a.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=e.children,n=e.className,r=e.events,a=e.size,u=(0,v.default)("ui",a,"feed",n),s=(0,g.getUnhandledProps)(o,e),c=(0,g.getElementType)(o,e);if(!(0,p.default)(t))return y.default.createElement(c,(0,l.default)({},s,{className:u}),t);var f=(0,d.default)(r,function(e){var t=e.childKey,n=e.date,r=e.meta,o=e.summary,a=(0,i.default)(e,["childKey","date","meta","summary"]),u=t||[n,r,o].join("-");return y.default.createElement(C.default,(0,l.default)({date:n,key:u,meta:r,summary:o},a))});return y.default.createElement(c,(0,l.default)({},s,{className:u}),f)}Object.defineProperty(t,"__esModule",{value:!0});var a=n(221),i=r(a),u=n(2),l=r(u),s=n(14),c=(r(s),n(19)),d=r(c),f=n(5),p=r(f),h=n(4),v=r(h),m=n(1),y=r(m),g=n(3),_=n(210),b=r(_),E=n(133),O=r(E),P=n(404),C=r(P),x=n(211),w=r(x),T=n(212),M=r(T),S=n(213),A=r(S),k=n(214),N=r(k),I=n(215),j=r(I),D=n(216),L=r(D);o.handledProps=["as","children","className","events","size"],o._meta={name:"Feed",type:g.META.TYPES.VIEW},o.Content=b.default,o.Date=O.default,o.Event=C.default,o.Extra=w.default,o.Label=M.default,o.Like=A.default,o.Meta=N.default,o.Summary=j.default,o.User=L.default,t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(822),a=r(o);t.default=a.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(405),a=r(o);t.default=a.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(409),a=r(o);t.default=a.default},function(e,t,n){e.exports={default:n(418),__esModule:!0}},function(e,t,n){e.exports={default:n(419),__esModule:!0}},function(e,t,n){e.exports={default:n(420),__esModule:!0}},function(e,t,n){e.exports={default:n(421),__esModule:!0}},function(e,t,n){e.exports={default:n(422),__esModule:!0}},function(e,t,n){e.exports={default:n(423),__esModule:!0}},function(e,t,n){e.exports={default:n(424),__esModule:!0}},function(e,t,n){e.exports={default:n(425),__esModule:!0}},function(e,t,n){e.exports={default:n(426),__esModule:!0}},function(e,t){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALkAAAC5AQMAAABOYwwfAAAABlBMVEX///8AAABVwtN+AAABtElEQVRYheWXQa6DMAxEjVhkmSPkJuRiSK3ExeAmHIFlFgj/GSct/d3HmyI1Knkbyx6PjcjvPllVyyQPDVdc9iIR75cXmPArE+50jWfC8ax3PiAqYpHHHjblXVwYpCfggUSMiqjcQdYzST78gdUDKdHL7r4K1RdUJVKE7fgv0b6gPsgLjmf6vHMBs5QBIrRshMu60QvkAx1wyZx4t4c7Kg+AwqcygAoOxcWob5V0B8wGFbHrplAiteEHMl+HYxbdDhFY0Cl+YIqnuYC1X7KUNNN3Aeg81sPGjoXWxOAA2AaBhodxd6bCIO/+6A2sFCupUhGgom4Afi+1/ThrLaCwugEUAPUYNSgOpqT5nwegAQgHveohCaGp1qg8QD7mhLbHirPhH8oz7q05HQCajqV4uQ8b8SXR/oCmj3rAfDntqY1UJi8w4J9FhY12gfHE25D7A+bANlq8oh5txXYCUhtxeW31MjoCC0PgOZAjVxya4OoFbLMc6qSz0Ma2ariA9jWhNu3lHvRuANlAVOh9OD+F6Qo4a+37reQ6db2A1aN+v6l9w2pVpwcwJQ4sxXup/JBoZ/Crzx+1moFq5GafSgAAAABJRU5ErkJggg=="},function(e,t,n){e.exports=n.p+"static/media/title.a5dee78b.png"},function(e,t,n,r){"use strict";var o=n(r),a=(n(6),function(e){var t=this;if(t.instancePool.length){var n=t.instancePool.pop();return t.call(n,e),n}return new t(e)}),i=function(e,t){var n=this;if(n.instancePool.length){var r=n.instancePool.pop();return n.call(r,e,t),r}return new n(e,t)},u=function(e,t,n){var r=this;if(r.instancePool.length){var o=r.instancePool.pop();return r.call(o,e,t,n),o}return new r(e,t,n)},l=function(e,t,n,r){var o=this;if(o.instancePool.length){var a=o.instancePool.pop();return o.call(a,e,t,n,r),a}return new o(e,t,n,r)},s=function(e){var t=this;e instanceof t?void 0:o("25"),e.destructor(),t.instancePool.length + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/web/static/media/icons.af7ae505.woff2 b/resources/web/static/media/icons.af7ae505.woff2 new file mode 100644 index 000000000..4d13fc604 Binary files /dev/null and b/resources/web/static/media/icons.af7ae505.woff2 differ diff --git a/resources/web/static/media/icons.b06871f2.ttf b/resources/web/static/media/icons.b06871f2.ttf new file mode 100644 index 000000000..35acda2fa Binary files /dev/null and b/resources/web/static/media/icons.b06871f2.ttf differ diff --git a/resources/web/static/media/icons.fee66e71.woff b/resources/web/static/media/icons.fee66e71.woff new file mode 100644 index 000000000..400014a4b Binary files /dev/null and b/resources/web/static/media/icons.fee66e71.woff differ diff --git a/resources/web/static/media/title.a5dee78b.png b/resources/web/static/media/title.a5dee78b.png new file mode 100644 index 000000000..526d41164 Binary files /dev/null and b/resources/web/static/media/title.a5dee78b.png differ diff --git a/scripts/xgettext.sh b/scripts/xgettext.sh new file mode 100755 index 000000000..448ea150c --- /dev/null +++ b/scripts/xgettext.sh @@ -0,0 +1,23 @@ +#!/bin/sh +NC='\033[0m' +FAIL='\033[0;31m' +PASS='\033[0;32m' +rc=0 +result=0 +for d in resources/language/*/*.po; do + printf "%-70s %s" "Checking ${d}" + xgettext "$d" 2> out || rc=$? + if [ $rc = 1 ]; then + printf "[ ${FAIL}FAIL${NC} ]\n" + while read i; do + printf " %s\n" "$i" + done < out + result=1 + else + printf "[ ${PASS} OK ${NC} ]\n" + fi + rc=0 +done +rm -f messages.po +rm -f out +exit $result diff --git a/pulsard.py b/service.py similarity index 59% rename from pulsard.py rename to service.py index 390cffd69..ebf0d1a00 100644 --- a/pulsard.py +++ b/service.py @@ -1,6 +1,6 @@ -import sys, os +import os +import sys sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'resources', 'site-packages')) -from pulsar.main import main +from quasar import service - -main() +service.run() diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 000000000..285e81624 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,7 @@ +[flake8] +ignore = E302,E402,E731,C901 +max-line-length = 370 +exclude = resources/site-packages/simplejson + +[pytest] +norecursedirs = .git