From 5e7f0b542a929cedbc86085cd955c6852927db83 Mon Sep 17 00:00:00 2001 From: mmk2410 Date: Fri, 21 Aug 2015 18:53:37 +0200 Subject: [PATCH] Initial Documentation Commit --- .gitignore | 1 - LICENSE | 22 - README.md | 96 -- articles/main/2015-03-27-09-34-Version-2.0.md | 13 - articles/main/2015-03-29-18-23-Version-2.1.md | 4 - ...5-03-29-21-34-About-the-Future-of-pBlog.md | 6 - ...06-11-15-55-What-else-we-are-developing.md | 10 - .../other-projects/2015-07-15-RCC-stable.md | 7 - .../2015-07-24-Test-the-link.md | 5 - .../2015-07-24-The-Rangitaki-Logo.md | 7 - blogs/main.md | 14 - blogs/other-projects.md | 1 - blogs/rumor-edge.md | 3 - config.php | 40 - contribute.md | 47 + documentation.md | 262 +++ index.php | 264 --- lang/de.php | 9 - lang/en.php | 9 - localization.md | 25 + media/rangitaki.png | Bin 64706 -> 0 bytes quick.md | 234 +++ rcc.md | 23 + rcc/index.php | 109 -- rcc/password.php | 3 - rcc/res/rcc.css | 213 --- rcc/uploaded/index.php | 60 - res/css/github-gist.css | 219 --- res/css/no-nav.css | 57 - res/css/rangitaki.css | 256 --- res/img/close.svg | 60 - res/img/email.svg | 60 - res/img/facebook.svg | 188 -- res/img/gplus.svg | 98 -- res/img/menu.svg | 59 - res/img/share.svg | 63 - res/img/twitter.svg | 457 ----- res/js/app.js | 97 -- res/js/highlight.pack.js | 1 - res/js/jquery-2.1.4.min.js | 4 - res/php/ArticleGenerator.php | 136 -- res/php/BlogListGenerator.php | 81 - res/php/Disqus.php | 44 - res/php/GoogleAnalytics.php | 52 - res/php/Parsedown.php | 1528 ----------------- themes.md | 103 ++ themes/background-img.css | 161 -- themes/material-dark.css | 147 -- themes/material-light.css | 146 -- 49 files changed, 694 insertions(+), 4810 deletions(-) delete mode 100644 .gitignore delete mode 100644 LICENSE delete mode 100644 README.md delete mode 100644 articles/main/2015-03-27-09-34-Version-2.0.md delete mode 100644 articles/main/2015-03-29-18-23-Version-2.1.md delete mode 100644 articles/main/2015-03-29-21-34-About-the-Future-of-pBlog.md delete mode 100644 articles/other-projects/2015-06-11-15-55-What-else-we-are-developing.md delete mode 100644 articles/other-projects/2015-07-15-RCC-stable.md delete mode 100644 articles/other-projects/2015-07-24-Test-the-link.md delete mode 100644 articles/other-projects/2015-07-24-The-Rangitaki-Logo.md delete mode 100644 blogs/main.md delete mode 100644 blogs/other-projects.md delete mode 100644 blogs/rumor-edge.md delete mode 100644 config.php create mode 100644 contribute.md create mode 100644 documentation.md delete mode 100644 index.php delete mode 100644 lang/de.php delete mode 100644 lang/en.php create mode 100644 localization.md delete mode 100644 media/rangitaki.png create mode 100644 quick.md create mode 100644 rcc.md delete mode 100644 rcc/index.php delete mode 100644 rcc/password.php delete mode 100644 rcc/res/rcc.css delete mode 100644 rcc/uploaded/index.php delete mode 100644 res/css/github-gist.css delete mode 100644 res/css/no-nav.css delete mode 100644 res/css/rangitaki.css delete mode 100644 res/img/close.svg delete mode 100644 res/img/email.svg delete mode 100644 res/img/facebook.svg delete mode 100644 res/img/gplus.svg delete mode 100644 res/img/menu.svg delete mode 100644 res/img/share.svg delete mode 100644 res/img/twitter.svg delete mode 100644 res/js/app.js delete mode 100644 res/js/highlight.pack.js delete mode 100644 res/js/jquery-2.1.4.min.js delete mode 100644 res/php/ArticleGenerator.php delete mode 100644 res/php/BlogListGenerator.php delete mode 100644 res/php/Disqus.php delete mode 100644 res/php/GoogleAnalytics.php delete mode 100644 res/php/Parsedown.php create mode 100644 themes.md delete mode 100644 themes/background-img.css delete mode 100644 themes/material-dark.css delete mode 100644 themes/material-light.css diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 80f408e..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -nbproject/ diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 48a1619..0000000 --- a/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Marcel Kapfer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/README.md b/README.md deleted file mode 100644 index 7acfb15..0000000 --- a/README.md +++ /dev/null @@ -1,96 +0,0 @@ -# Rangitaki PHP blogging engine - -Rangitaki is a simple to use and easy to configure blogging engine, written in PHP and it has absolutely no database dependencies. - -##Important - Please read - -Right now there are two versions in development. The series 0.2 and everything higher. Version 0.2 is ready for production while everything higher are development releases and not ready for productive use. I recommend you to use the latest Version of the 0.2 series which you can find in the branch "Series-0.2" or wait until 1.0 is release, which will be at the end of July. The latest version is 0.2.2 which is available in the releases section. This readme is for the version >= 0.3. - -Read also this [blog article](https://marcel-kapfer.de/rangitaki/blog/?article=2015-03-29-21-34-About-the-Future-of-pBlog) which explains the reasons behind this step. - -## What is it? - -My goal for Rangitaki was (and still is) to create a blogging engine without database dependencies (so you don't have to create database and tables and all that stuff) which is extremely easy and fast to setup and to learn. Rangitaki doesn't require any knowledge concerning PHP, JavaScript, HTML or CSS. You just need to know, how to upload something to your web server. There is also no need to compile anything, you just have to fill out twelve setting properties and then you can start writing your articles. - -For version 1.0 I will provide a documentation and a quick-start guide. - -## So, what can it do? - - - Post writing in Markdown with a few keywords for the title, tags, date and the author (all optional) - - Multiple blogs - - A Subpages for each article with a comment box (Disqus; can be disabled) - - Share buttons (FAB; can be disabled) - - Disqus integration (can be disabled) - - Fast and easy configuration - - Google Analytics (optional) - - Twitter and OpenGraph meta tags - - Different themes - - Easy localization (just 3 (!) strings) - - Custom footer - - Navigation drawer (can be disabled) - - Tags - - Set author and date - - Mobile-first - - Rangitaki Control Center (RCC; optional, requires linux know-how, do not enable this unless you know what your doing) - - Online post upload - - More will come... - -## Did you say 'themes'? - -Yes. Rangitaki has a theme support which makes it easy to customize your blog concerning design. A documentation on how to create a theme will be available with version 1.0. - -## What is that RCC? - -**This is disabled by default. Do not enable it without carefully reading the RCC documentation.** - -The RCC (Rangitaki Control Center) is still in development and features right now only a post upload. If you wanna use it you have to change file permissions manually on your server and also add some values to different text files. - -A documentation for RCC will be available with the Rangitaki 1.0 release. - -## Where can I see an example? - - - Official Rangitaki blog [marcel-kapfer.de/rangitaki/blog](https://marcel-kapfer.de/rangitaki/blog) - - - My personal blog - [marcel-kapfer.de/blog](https://marcel-kapfer.de/blog) - -Would you like to see your Rangitaki blog here? Write me a message at [marcelmichaelkapfer@yahoo.co.nz](mailto:marcelmichaelkapfer@yahoo.co.nz) - -## What do you see in your crystal ball? - -I'm thinking of releasing a Rangitaki PHP framework later this year, so you can simply build your own blog. - -I also planning to port the engine and the framework into JavaScript. Which would be good for people without a PHP server and it would also be possible to create a Polymer element. - -## Used Library - - - For converting the Markdown blog articles into HTML code I use [Parsedown](http://parsedown.org) - -## Contributing - -### Code - -1. Fork it -2. Create your feature branch (`git checkout -b my-new-feature`) -3. Commit your changes (`git commit -am 'Add some feature'`) -4. Push to the branch (`git push origin my-new-feature`) -5. Create New Pull Request - -### Localization - -Contribute localization files just like code. If you don't have a GitHub account you can also send me the files to [marcelmichaelkapfer@yahoo.co.nz](mailto:marcelmichaelkapfer@yahoo.co.nz) - -### Team - -If you want to join the Rangitaki "team" and are willing to invest some time into this project, then contact me over mail ([marcelmichaelkapfer@yahoo.co.nz](mailto:marcelmichaelkapfer@yahoo.co.nz)), Google+ ([+MarcelMichaelKapfer](https://plus.google.com/+MarcelMichaelKapfer) or Twitter ([@mmk2410](https://twitter.com/mmk2410)) and we can talk about that. - -## Social - -You can follow my personal Twitter and Google+ account to receive news about the Rangitaki blogging engine. - - - [Twitter @mmk2410](https://twitter.com/mmk2410) - - [Google+ +MarcelKapfer](https://plus.google.com/+MarcelMichaelKapfer/posts) - -## Trello - - - [Trello Board](https://trello.com/b/7qb5I6EQ/rangitaki) diff --git a/articles/main/2015-03-27-09-34-Version-2.0.md b/articles/main/2015-03-27-09-34-Version-2.0.md deleted file mode 100644 index df1b19b..0000000 --- a/articles/main/2015-03-27-09-34-Version-2.0.md +++ /dev/null @@ -1,13 +0,0 @@ -%TITLE: Version 2.0 -%DATE: 27 March 2015 -%TAGS: 0.2-Series - -This version introduces some very imporant features: - - **Own page for every article** - - Social **sharing buttons** (at the moment: google+, twitter, facebook but more will follow) - - **Disqus** integration - - Local **config file** -> no more editing the index file - -pBlog 2.0 is only partially compatible with prior versions. You don't have to change anything in the posts or intro file (in case you have one), but to switch to version 2.0 you have to replace your index.php with the new one. With this step all your settings like the title will be lost and you have to set them in the new config.php file. For more questions write me a mail to marcelmichaelkapfer@yahoo.co.nz. - -In the near future I will spend more time in writing a documentation about the blog engine and adding more comments (especially in the css file). \ No newline at end of file diff --git a/articles/main/2015-03-29-18-23-Version-2.1.md b/articles/main/2015-03-29-18-23-Version-2.1.md deleted file mode 100644 index 7a160c5..0000000 --- a/articles/main/2015-03-29-18-23-Version-2.1.md +++ /dev/null @@ -1,4 +0,0 @@ -%TITLE: Version 2.1 -%DATE: 29 March 2015 - -This version includes fixes for the article links. You only have to replace the hrefgenerator.php file in the res folder. \ No newline at end of file diff --git a/articles/main/2015-03-29-21-34-About-the-Future-of-pBlog.md b/articles/main/2015-03-29-21-34-About-the-Future-of-pBlog.md deleted file mode 100644 index 28bfb82..0000000 --- a/articles/main/2015-03-29-21-34-About-the-Future-of-pBlog.md +++ /dev/null @@ -1,6 +0,0 @@ -%TITLE: About the Future of pBlog -%DATE: 29 March 2015 -%AUTHOR: Marcel Michael Kapfer -%TAGS: Important, 0.2-Series - -I figured out that there will be many changes in the engine which will require many changes in the files (especially the posts file) and in the filestructure. I can't say right now which things will change and what you have to change. Out of this reason. I change the Version numbers and add an zero in front of them. So instead of 2.1 the latest version is now 0.2.1. The 0.2.x series is now on GitHub as an own branch and will recive bugfix updates. The series 0.3, 0.4, 0.5 and so own will be development releases which won't be compatible to the 0.2 series. I recommend current users to stay on 0.2.x - at least until the 1.0 release. I'm verry sorry for this and in case that there are requests I may write a small script that will help you switch to version 1.0. \ No newline at end of file diff --git a/articles/other-projects/2015-06-11-15-55-What-else-we-are-developing.md b/articles/other-projects/2015-06-11-15-55-What-else-we-are-developing.md deleted file mode 100644 index e34754f..0000000 --- a/articles/other-projects/2015-06-11-15-55-What-else-we-are-developing.md +++ /dev/null @@ -1,10 +0,0 @@ -%TITLE: What else are we working on? -%DATE: 11 June 2015 -%TAGS: Future - -Near the Rangitaki PHP blogging engine there are other projects were working on or where we will start development soon: - - - Rangitaki JavaScript blogging engine - - Rangitaki PHP framework - - Rangitaki JavaScript framework - - Rangitaki Polymer elements \ No newline at end of file diff --git a/articles/other-projects/2015-07-15-RCC-stable.md b/articles/other-projects/2015-07-15-RCC-stable.md deleted file mode 100644 index 77e1b7c..0000000 --- a/articles/other-projects/2015-07-15-RCC-stable.md +++ /dev/null @@ -1,7 +0,0 @@ -%TITLE: RCC stable -%DATE: 15 July 2015 -%TAGS: rcc - -RCC (Rangitaki Control Center) is now in a stable state. Even if it has just one feature right now, it is an important one: uploading your posts from the web. To use it you have to manually enable it in the config.php and you must set a password in rcc/password.php. If you were using rangitaki in an earlier version you should really upgrade to the latest version, out of security reasons. - -I will add more features to RCC in coming releases, including a media upload and other features. diff --git a/articles/other-projects/2015-07-24-Test-the-link.md b/articles/other-projects/2015-07-24-Test-the-link.md deleted file mode 100644 index ebdd2cf..0000000 --- a/articles/other-projects/2015-07-24-Test-the-link.md +++ /dev/null @@ -1,5 +0,0 @@ -%TITLE: Test the link -%DATE: 24 July 2015 -%TAGS: developing, testing - -[asdfadsfsldhfasdklhflnfkhdaskljfasdhfkhaskldhflaskjdhflkadsjhflkahfds.com/asdfadsfsldhfasdklhflnfkhdaskljfasdhfkhaskldhflaskjdhflkadsjhflkahfds/asdfadsfsldhfasdklhflnfkhdaskljfasdhfkhaskldhflaskjdhflkadsjhflkahfds](http://asdfadsfsldhfasdklhflnfkhdaskljfasdhfkhaskldhflaskjdhflkadsjhflkahfds.com/asdfadsfsldhfasdklhflnfkhdaskljfasdhfkhaskldhflaskjdhflkadsjhflkahfds) diff --git a/articles/other-projects/2015-07-24-The-Rangitaki-Logo.md b/articles/other-projects/2015-07-24-The-Rangitaki-Logo.md deleted file mode 100644 index abf5193..0000000 --- a/articles/other-projects/2015-07-24-The-Rangitaki-Logo.md +++ /dev/null @@ -1,7 +0,0 @@ -%TITLE: The Rangitaki logo -%DATE: 24 July 2015 -%TAGS: design, artwork, logo - -This is the official Rangitaki logo. - -![The Rangitaki logo](media/rangitaki.png) diff --git a/blogs/main.md b/blogs/main.md deleted file mode 100644 index c2744c3..0000000 --- a/blogs/main.md +++ /dev/null @@ -1,14 +0,0 @@ -%TITLE: main - -This is the Blog of the Blog Engine **Rangitaki** - -Rangitaki is based on PHP, XML and Markdown. It is easy to install and to configure. - -The latest Version of the 0.2 series is **0.2.2** - -The latest Version of the development stream isn' ready yet. - - -** !IMPORTANT! Please read [this](index.php?article=About-the-Future-of-pBlog) for more information about the different versions of pBlog.** - -You can find the source code on [GitHub](https://github.com/mmk2410/Rangitaki). \ No newline at end of file diff --git a/blogs/other-projects.md b/blogs/other-projects.md deleted file mode 100644 index 5a15b36..0000000 --- a/blogs/other-projects.md +++ /dev/null @@ -1 +0,0 @@ -%TITLE: Other projects \ No newline at end of file diff --git a/blogs/rumor-edge.md b/blogs/rumor-edge.md deleted file mode 100644 index 5bf0148..0000000 --- a/blogs/rumor-edge.md +++ /dev/null @@ -1,3 +0,0 @@ -%TITLE: Rumor Edge - -This is a mysterious collection about evil messages, we like to call... RUMORS. \ No newline at end of file diff --git a/config.php b/config.php deleted file mode 100644 index d5ec092..0000000 --- a/config.php +++ /dev/null @@ -1,40 +0,0 @@ - Set a specific name for your name blog -// This value is empty by default -$blogmainname = ''; -// Intro - set yes if you have a blog intro and no if you don't have one -$blogintro = 'yes'; -// Disqus - Provide here your Disqus shortname. Leave empty if you don't want to use it. -$blogdisqus = 'rangitaki'; -// Share FAB - this enables or disables the share button -$sharefab = 'yes'; -// Google Analytics - Provide here your Google Analytics Tracking-ID. Leave empty if you don't want to use it. -$bloganalytics = ''; -// Footer - set here the text for your footer (e.g. a copyright info). You can replace the whole text after the '=' with your own one. -$blogfooter = 'Rangitaki ' . date("Y") . ' github.com/mmk2410/Rangitaki'; -// This enables the optional rangitaki control center. Please read the documentation before you enable it. -$rcc = 'no'; -// Here you can disable and enable the navigation menu. Usefull if you have no subblogs and no home directory -$nav_drawer = 'yes'; -// Set here the name of your theme. Read the documentation for more themes -$theme = 'material-light'; -// Set here your language. The file must exist in the lang directory -$language = "en"; -// Favicon - Set here the path to your favicon -$favicon = "https://example.com/res/img/favicon.png"; diff --git a/contribute.md b/contribute.md new file mode 100644 index 0000000..941b22e --- /dev/null +++ b/contribute.md @@ -0,0 +1,47 @@ +# Contributing + +You want to help the Rangitaki project? There is always a way you can do that. Spreading Rangitaki on social networks would be one possibility, but there are more. + +## Content + + 1. Bugs + + 2. Code + + 3. Localization + + 4. Documentation + + 5. Team + +## 1 Bugs + +You found a bug in Rangitaki? Report it in the Rangitaki bug tracker on GitHub. + +## 2 Code + +To contribute some code to the Rangitaki project follow these steps + + 1. Fork the GitHub repository + + 2. Create your feature branch (`git checkout -b my-new-feature`) + + 3. Commit your changes (`git commit -am 'Add some feature'`) + + 4. Push to the branch (`git push origin my-new-feature`) + + 5. Create New Pull Request + + + +## 3 Localization + +The Rangitaki project is always glad if someone translates the few strings. Commit your new translation in GitHub just like a code change. Read the localization documentation for more information. If you don't have a GitHub account you can also send me the translated file at marcelmichaelkapfer@yahoo.co.nz. + +## 4 Documentation + +If you want to correct or improve this documentation follow the steps of *2. Code* but with the branch **Documentation**. + +## 5 Team + +You want to join the Rangitaki team and invest more time into coding this blogging engine? Write me a mail at marcelmichaelkapfer@yahoo.co.nz diff --git a/documentation.md b/documentation.md new file mode 100644 index 0000000..d76272a --- /dev/null +++ b/documentation.md @@ -0,0 +1,262 @@ +# Documentation + +##### For Rangitaki Version 1.0.0 + +This is the full documentation for Rangitaki 1.0. If you're new to Rangitaki I recommend you to read the Quick Starting Guide first. + +This documentation covers anything concerning usage, setup and structure. For information on how to create themes, how to use RCC, how to localize or how to contribute look in the documentations for these topics. + + +## Content + + 1. Requirements + + 1. Server + + 2. Home Computer + + 3. Personal Skills + + 2. Setup + + 1. Installation + + 2. Configuration + + 3. Usage + + 1. Blog posts + + 2. Blogs + + 3. Media + + 4. Structure + + 1. / + + 2. /articles/ + + 3. /blogs/ + + 4. /lang/ + + 5. /media/ + + 6. /rcc/ + + 7. /res/ + + 8. /themes/ + +## 1 Requirements + +In this chapter I will outline the requirements of Rangitaki concerning your web server, your home computer and your personal skills. Since Rangitaki is built to be simple and easy, the following paragraphs won't be that long. + +### 1.1 Web server + +Rangitaki itself requires a **web server** like the Apache HTTP Server or nginx, with a **PHP** installation. (For the installation and configuration read the manual of your distribution). You don't need to install any kind of database programs on your server. + +It is recommended to use (or enable) SSH access to the server, because the Rangitaki project may provides software in the future that will access your web server over SSH. + +### 1.2 Home computer + +You don't need any special software on your home computer. Just a simple text editor for writing the blog posts is needed. It is recommended (but certainly not necessary) to use an editor with syntax highlighting for Markdown. + +### 1.3 Personal skills + +Since Rangitaki tries to be as simple as possible, you don't need much skills. You should be able to upload files and directories to your server and a few basics in Markdown, which is the Markup language in which the blog posts are written. If you don't know any Markdown yet, it is very easy to learn and this can be done at . + +## 2 Setup + +If you're new to Rangitaki, I recommend you to start with the quick starting guide and come back to this page if you need more information. + +### 2.1 Installation + +There are two ways of installing Rangitaki: + +The first one is to ownload the latest release of Rangitaki from GitHub , unpack it and upload it to your server. + +You can also download Rangitaki directly to your server using `curl` or `wget` and unpack it right there. + +You can saftly delete ever file with the name example, but I recommend you to look at these files to see how things are done in Rangitaki. + +### 2.2 Configuration + +Configuring Rangitaki is quite easy and done by editing one file: the `config.php` in the source of your Rangitaki installation. + +In the following lines I will describe, what you can do with each option. Mind ALWAYS the semicolor at the and and the marks around the value. + +`$blogtitle = "Divide through zero";` + +This is the name of your blog. Set it to something you thing is right. Rangitaki takes this value at every call, so you don't have to re-generate something, if you change it. + +`$blogauthor = "Big Zero";` + +Set here you're name. This will not shown on the Rangitaki blog itself, but I is shown if you share the blog or a article in a social network. + +`$blogdescription = "Some wrong facts about the world";` + +Set here a short description of the blog. This value is also only used for sharing. + +`$bloghome = "yes";` + +Set here *yes* if your blog is a subdirectory of a website and *no* if it isn't. + +`$bloghomeurl = "/dev/null";` + +This is the URL to your main page. Only used if `$bloghome` is set to *yes* + +`$bloghomename = "Deep and Dark...";` + +This is the name of your main page as shown in the Rangitaki navigation drawer. Only used if `$bloghome` is set to *yes* + +`$blogmainname = "The complete Pi!";` + +The name of your main blog. By default this is empty and the `$blogtitle` is used for that. But in some cases it comes in quite handy. + +`$blogintro = "yes";` + +Set to *no* if you don't want to show any blog intro. Read 3.2 Blogs for more information. + +`$blogdisqus = "thelostkeyboard";` + +Set here the Disqus ID for this site if you have one. Leave empty to disable. + +`$sharefab = "yes";` + +This disables (*no*) and enables (*yes*) the share floating action button in the bottom right corner. Enabled by default. + +`$bloganalytics = "TrAcK00mE";` + +Set here the ID of your Google Analytics property. Leave empty to disable it. + +`$blogfooter = "This is the end!";` + +Set here a text for your footer. You can also write some PHP here if you know any. + +`$rcc = "no";` + +Disables / Enables the RCC. Read the RCC documentation for more. + +`$nav_drawer = "yes";` + +With *no* you can disable the navigation drawer on the left side. + +`$theme = "material-light";` + +Set here the name of the theme you wan't to use. All themes are in the folder `themes` + +`$language = "js";` + +Set here the language of your blog. All languages are in the folder `lang`. You can easily translate it to your own language since there aren't many strings. Read also the localization doc. + +`$favicon = "http://trash.your.icon/facicon.png";` + +Set here the weburl to your favicon. + +## 3 Usage + +In the following paragraphs I describe the details of using Rangitaki. + +### 3.1 Blog posts + +Every post is saved in the directory /articles/name-of-the-blog/YYYY-MM-DD-hh-mm-title.md + +You can drop the hh-mm if you don't write more than one blog post a day. Rangitaki will use this timestamp to sort your blogpost and to show them chronologically in your blog. The title doesn't need to be the complete title of your blog post. + +The blog posts itself consists of two parts. The Rangitaki keywords and the main content + +**Rangitaki Keywords** + +There are four Rangitaki keywords you can set for everey post. Each one of them is not necessary, but the most should be set. + +A keyword starts with a `%` followed by the keyword (all uppercase letters), a space, a `=`, another space and the value. Mind also the order of the keywords. It cannot changed. + +`%TITLE = How to control the whole world. Pt. 1` + +The first keyword is the title of your posts. + +`%DATE = 6 June 666 06:06` + +The second one is the date. The format is completly free to choose. + +`%AUTHER = The Devil` + +The author of the blog post. + +`%TAGS = world, evil` + +The tags of a post. Seperated by a colon and a space. + +Leave then on line emtpy and start writing your blog post. For formatting the text, use Markdown. + +### 3.2 Blogs + +Rangitaki supports multiple subblogs in one blog. The *main* blog is also just a subblog, but it is used as the default one. + +To create a blog, just create a directory in articles with the name of your blog and a file with the same name and an *.md* extension in `/blogs`. + +The `blogname.md` is the so called blogfile. In this file you have to set one keyword. And in Rangitaki 1.0.0 there is also just one keyword available. + +`%TITLE = Power off` + +The keyword is set exactly the same way as in the blog posts. + +Another special thing that Rangitaki has are blog intros. Text that are at the beginning a blog, before th first blog posts. The blog intros support also Markdown and you can write them in your blogfile. Leave one line empty after the *%TITLE* keyword and start writing your blog intro. + +### 3.3 Media + +How you save your media files is up to you. Rangitaki has a `/media` directory to store that stuff if you want. There is only one important thing: If you include some media in your blog post with relative paths, then the paths begin not in your articles directory but in the Rangitaki source directory. + +## 4 Structure + +Here I will explain the structur of the Rangitaki blogging engine. The root directory is the root directory of the blog, not of your computer. + +### 4.1 / + +In the root directory of Rangitaki you will find the following files: + + - config.php + + The file where the settings for your Rangitaki blog are stored. All the options are discussed earlier. + + - index.php + + The file which creates your blog, if you visit it in the web. + + - LICENSE + + The license of Rangitaki + + - README.md + + A short readme + +### 4.2 /articles/ + +In the articles directory are the directory for you subblogs (at least one, the main blog). These directories are filled with your blog posts. + +### 4.3 /blogs/ + +In this directory all your blog files are listed. At least you need the *main.md*. + +### 4.4 /lang/ + +Here you can find the language files that Rangitaki uses to localize some strings. Read more in the localization documentation. + +### 4.5 /media/ + +A directory where you can store your images, videos or other stuff. + +### 4.6 /rcc/ + +The directory of the Rangitaki Control Center (RCC). Read the RCC documentation for more information. + +### 4.7 /res/ + +Here are some important files for the blog like images (e.g. the share buttons), the base style sheet, some JavaScripts and a few PHP files. + +### 4.8 /themes/ + +This is the directory where the Rangitaki themes are stored. If you found another Rangitaki theme online, save it into this directory and choose it in your config.php. diff --git a/index.php b/index.php deleted file mode 100644 index 2375449..0000000 --- a/index.php +++ /dev/null @@ -1,264 +0,0 @@ - - - - - - - - - <?php echo $blogtitle; // Setting the blog article?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - skip it - if ($nav_drawer == "yes") { - ?> -
- - -
-
- - - - - - › "> - - - - -
-
- -
-
- setBreaksEnabled(true) // with linebreaks - ->text($file); - echo $intro; // PRINTS THE SH**** - ?> -
-
- tag view - $articles = scandir($articlesdir, 1); // save the content of the directory in the articles variable - foreach ($articles as $article) { // iterate through all articles - $tags = ArticleGenerator::getTags($articlesdir, $article); // get the article tags - if (in_array($gettag, $tags)) { // if the article has the requested tag - if (strlen($article) >= 3 && substr($article, -3) == ".md") { // check if the file is a article file - ArticleGenerator::newArticle($articlesdir, $article, $getblog); // generate the article - } - } - } - } elseif ($getarticle == "") { // NORMAL VIEW if there's no article request -> normal view - $articles = scandir($articlesdir, 1); // save the content of the directory in the articles variable - foreach ($articles as $article) { // iterate through this variable - if (strlen($article) >= 3 && substr($article, -3) == ".md") { // check if the file is a article file - ArticleGenerator::newArticle($articlesdir, $article, $getblog); // generate the article - } - } - } elseif (isset($getarticle)) { // ARTICLE VIEW - ArticleGenerator::newArticle($articlesdir, $getarticle . ".md", $getblog); // generate the requested article - include './res/php/Disqus.php'; // include disques - } else { // SOMETHING STRANGE: THIS SHOULDN'T HAPPEN - echo "Some error occured, please go back."; - } - ?> - - - - -
- - - - - diff --git a/lang/de.php b/lang/de.php deleted file mode 100644 index aff3bef..0000000 --- a/lang/de.php +++ /dev/null @@ -1,9 +0,0 @@ - "Blogs auf", - "Check out this blog" => "Schau dir diesen Blog an:", - "Check out" => "Schau dir das an:" -]; diff --git a/lang/en.php b/lang/en.php deleted file mode 100644 index 63b62a6..0000000 --- a/lang/en.php +++ /dev/null @@ -1,9 +0,0 @@ - "Blogs on", - "Check out this blog" => "Check out this blog:", - "Check out" => "Check out:", -]; diff --git a/localization.md b/localization.md new file mode 100644 index 0000000..e97de05 --- /dev/null +++ b/localization.md @@ -0,0 +1,25 @@ +# Localization + +##### For Rangitaki version 1.0.0 + +Translating Rangitaki in another language is quite simple, because most of the stuff is set in the config.php. There are just a few strings that are left to translate. Three to be exact. + +A language file looks like this: + +``` + "Blogs on", + "Check out this blog" => "Check out this blog:", + "Check out" => "Check out:", +]; +``` + +The only thing that need to be translated are the words between the marks on the right side of the arrows. NEVER change anyting else. + +Save the translated file as *ln.php*, where ln is your language in short form, just two letters (e.g. en for english, de for german). + +Then commit your changes to GitHub (see the contributing documentation ) or send it to marcelmichaelkapfer@yahoo.co.nz. diff --git a/media/rangitaki.png b/media/rangitaki.png deleted file mode 100644 index b25c364a590afbaa7b4eb6f40d6a50f71f9ddd82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64706 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 diff --git a/quick.md b/quick.md new file mode 100644 index 0000000..b6752bb --- /dev/null +++ b/quick.md @@ -0,0 +1,234 @@ +# Quick start Guide + +##### For Rangitaki version 1.0 + +This guide shows you how to setup Rangitaki and it teaches you the basic use. After this guide you're ready to use Rangitaki as your blogging engine. Since this is a quick starting guide I won't explain every single option. Please read the full documentation for more information. + +To fully customize your Rangitaki installation read also the localization guide and the theming guide. + +For more professional blogging (like online blog post upload) read the RCC documentation. + +## Content + 1. Requirements + + 2. Download + + 1. Download + + 2. Extract + + 3. Setup + + 1. Configuration + + 2. Files and Directories + + 4. Writing blog posts + + 1. Tags + + 2. Markdown + + 5. Publishing + + +## 1. Requirements + +#### Software + +Rangitaki needs just a **Web Server** like the Apache HTTP Server or nginx and a **PHP** installation. You *don't need a MySQL (or any other database) installation*. + +To test if you're server has a PHP installation, create a file name `info.php` and copy the follwing code into it, upload the file to your web directory and access it through a browser. + +``` + +``` + +If you're seeing an white, empty page you have no PHP installation. Otherwise you have one and you can get many information about this from this page. + +Furthermore you need a good text editor for editing the configuration files a nd writing blog posts.. Either on your private computer, if you configure your Rangitaki installation at home, or on your server. + +#### Skills + +You must know how to upload files and directories to your server and how to use a text editor. That's all. + +## 2. Download + +### 1. Download + +Download the current version of Rangitaki either from [here](http://marcel-kapfer.de/rangitaki) or from the [GitHub releases page](https://github.com/mmk2410/Rangitaki/releases). I recommend you to download a release version and not to clone the project from GitHub (at least not for daily use), because of possible security and instability. + +### 2. Extract + +#### Linux + +If you got a `.tar.gz` file: + +Fire up a terminal and run this: + +``` +tar -xvzf rangitaki.tar.gz +``` + +If you got a `.zip` file: + +Fire up a terminal and run this: + +``` +unzip rangitaki.zip +``` + +#### Mac + +Just double click the archive. + +#### Windows + +If you got a `.zip` file: + +Just right click that archive and click extract. + +If you got a `.tar.gz` file: + +Download and install [7-zip](http://www.7-zip.org/). + +Right click the archive. 7-Zip > Extract here + +## 3. Setup + +The setup of Rangitaki is as easy as downloading it. + +Again, I will only explain a few options here. For more, read the full documentation + + +### 1. Configuration + +There one configuration file for Rangitaki. It is located at the root of the extracted Rangitaki folder and has the name `config.php`. Open it with a text editor of your choice. + +The different options in the file follow this structure: + +``` +// Comment describing the following option +$option = 'some text or yes or no. mind the marks and the semicolon'; +``` + +Don't delete the marks or the semicolon. Otherwise your Rangitaki installation will not work! Also don't delete the `. + +#### $favicon + +Set here the URL to your favicon. Not a relative path or a absolute one, but the URL (e.g. 'http://example.com/favicon.png'). + + +### 2. Files and Directories + +Here a few words about some files and directories in Rangitaki. All directories and files are covered in the full documentation + +#### /articles + +This is the directory where the blog post for the different blogs are stored. There are already a few example directories, which you can delete if you don't need them. + +#### /articles/blog (e.g. /articles/main) + +The directory where the articles for that blog are stored. You have at least one directory name 'main' where the markdown files for your main blog are stored. + +There are already a few example blog posts. You can look at them to learn how Rangitaki blog posts are written or you can simply delete them. + +#### /blogs + +The files for your different blogs are stored here. You can have a look at them to learn how to create a new subblog or simply delete them, but **DON'T DELETE THE main.md!** + +#### /media + +This is a directory where you can store your used assets. You don't have to store them but it is recommended since it keeps the whole system organized. + +**When you are including a image, video, whatever in your Markdown blog post you have to use a relative path based from the Rangitaki blog main directory, not from the directory of your Markdown file** + +You can delete the example file. + +#### config.php + +This is the configuration file. I already explained that one. + +## 4. Writing blog posts + +Writing blog posts in Rangitaki is quite simple. The text is written in markdown and important information about blog posts are written with special tags. + +### 1. Tags + +In Rangitaki 1.0 there are four tags you can use. You don't have to use any tags. + +Tags have to following structure: + +``` +%TAGNAME: Some text +``` + +#### %TITLE + +Set here the title of your blog post. + +#### %DATE + +Set here the date of your blog post. You don't have to care about some format. Just set it like you want + +#### %AUTHOR + +Set here the name of the author of the blog post. + +#### %TAGS + +Set here some tags, that descripe the blog post. + +There separated through a ', ' (mind the space). + +### 2. Markdown + +Writing the text itself is also very simple. The blogging engine supports Markdown and also GitHub flavored markdown . But you can also just wite a blogpost and don't care about formatting. + +## 5. Publishing + +You are now done with the setup of the blog and you also wrote a first blog post. If you did this stuff directly on your server, visit this page with a web broswer and you see your Rangitaki blog. + +If you did this on your private machine, then upload the content of the Rangitaki directory to your server. + +You're done now! You're Rangitaki blog is running. + +For more information, read the full documentation, the FAQ and the other documentations. + + diff --git a/rcc.md b/rcc.md new file mode 100644 index 0000000..6e3f831 --- /dev/null +++ b/rcc.md @@ -0,0 +1,23 @@ +# RCC Documentation + +##### For Rangitaki version 1.0.0 + +## Content + + 1. Initializing + + 2. Usage + +## 1 Initializing + +The RCC is not enabled by default, because you have to set a password first. + +Open the file at `/rcc/password.php` and change the password variable to your password. Storing your password in this PHP file secure, because your PHP web server renders the file if someone accesses it and since the password is just saved in a variable but not printed, no one can see it through the web. + +After you set the password open your `/config.php` and enable the RCC by setting `$rcc = "yes";` + +Access now the website at *http://yourdomain.tl/blog/rcc* and see if it works. + +## 2 Usage + +In Rangitaki 1.0.0 the RCC has only one functionality: Uploading posts files (*.md*). Select the blog first and the click on "Browse", select your file and click on upload. You see a message, if the upload was possible. diff --git a/rcc/index.php b/rcc/index.php deleted file mode 100644 index ea314ef..0000000 --- a/rcc/index.php +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Rangitaki Control Center - - - - - -
- -
-
Log In
-
-

Password:

- -
-
- -
-
File Upload
-
- - - -
-
- -
-
- -
-
Wrong Password
-

- Please go back and try again. -

- GO BACK -
- -
-
Rangitaki Control Center
-

- The Rangitaki Control Center is disabled. You can enable it in your config file. But please read first the documentation. -

-
- -
- - diff --git a/rcc/password.php b/rcc/password.php deleted file mode 100644 index 973ada0..0000000 --- a/rcc/password.php +++ /dev/null @@ -1,3 +0,0 @@ - p{ - font-size: 14px; - line-height: 24px; -} - -/* FOOTER */ - -.footer{ - font-size: 12px; - text-align: center; -} - - -.footer a{ - color: #383838; - text-decoration: none; - border-bottom: 1px solid transparent; - border-bottom-color: transparent; - transition: border-bottom-color 150ms ease-in-out 100ms; -} - -.footer a:hover{ - border-bottom-color: #383838; -} - -/* BUTTON */ - -.button { - text-decoration: none; - color: #fff; - background-color: #ff4415; - line-height: 36px; - min-width: 64px; - text-align: center; - height: 36px; - padding: 8px; - border-width: 1px; - border-style: solid; - border-color: #ff4415; - box-shadow: 0.4px 1px 1.5px 1px #aaa; - -moz-box-shadow: 0.4px 1px 1.5px 1px #aaa; - -webkit-box-shadow: 0.4px 1px 1.5px 1px #aaa; - border-radius: 2px; - margin-top: 4px; - margin-bottom: 5px; - letter-spacing: 0.4px; - font-weight: 700; - font-size: 14px; - transition-property: box-shadow; - transition-delay: 50ms; - transition-duration: 125ms; - transition-timing-function: ease; - -moz-transition-property: box-shadow; - -moz-transition-delay: 50ms; - -moz-transition-duration: 125ms; - -moz-transition-timing-function: ease; - -webkit-transition-property: box-shadow; - -webkit-transition-delay: 50ms; - -webkit-transition-duration: 125ms; - -webkit-transition-timing-function: ease; - cursor: pointer; -} - -.button:hover, .button:hover { - box-shadow: 0.5px 1.8px 2.1px 1.4px #aaa; - -moz-box-shadow: 0.5px 1.8px 2.1px 1.4px #aaa; - -webkit-box-shadow: 0.5px 1.8px 2.1px 1.4px #aaa; } - -input.button{ - padding: 0px 8px; -} - -/* INPUT FIELD */ - -.itextfield{ - border-color: transparent; - border-width: 1px; - font-size: 16px; - line-height: 22px; - border-bottom-color: #aaa; - transition-property: border-bottom-color; - transition-delay: 50ms; - transition-duration: 125ms; - transition-timing-function: ease; - -moz-transition-property: border-bottom-color; - -moz-transition-delay: 50ms; - -moz-transition-duration: 125ms; - -moz-transition-timing-function: ease; - -webkit-transition-property: border-bottom-color; - -webkit-transition-delay: 50ms; - -webkit-transition-duration: 125ms; - -webkit-transition-timing-function: ease; -} - -.itextfield:focus{ - border-bottom-color: #ff4415; - border-width: 2px; - outline: none; -} - -/* FORM */ -form{ - margin-top: 20px; -} - -@media screen and (min-width: 1440px) { - - .card{ - width: 1160px; - } - -} - -@media screen and (max-width: 720px){ - - .card{ - width: 82%; - } - - .title{ - left: 25px; - } - -} \ No newline at end of file diff --git a/rcc/uploaded/index.php b/rcc/uploaded/index.php deleted file mode 100644 index d5400d1..0000000 --- a/rcc/uploaded/index.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - Rangitaki Control Center - - - - - -
-
-
File Upload
- You have to choose a file!

"; - } else { - $blog = filter_input(INPUT_POST, "blog"); - $uploaddir = "../..//articles/$blog/"; - $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); - - if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { - echo "

The post was successfully uploaded and is now published.

"; - } else { - echo "

During the uploading process an error occured!
Error Code:" . ($_FILES['userfile']['error'] . "

"); - } - } - } - ?> -
-
- - diff --git a/res/css/github-gist.css b/res/css/github-gist.css deleted file mode 100644 index 6175f68..0000000 --- a/res/css/github-gist.css +++ /dev/null @@ -1,219 +0,0 @@ -/** - * GitHub Gist Theme - * Author : Louis Barranqueiro - https://github.com/LouisBarranqueiro - */ - -.hljs { - display: block; - background: white; - padding: 0.5em; - color: #333333; - overflow-x: auto; - -webkit-text-size-adjust: none; - -ms-text-size-adjust: none; -} - -.hljs-comment, -.bash .hljs-shebang, -.java .hljs-javadoc, -.javascript .hljs-javadoc, -.rust .hljs-preprocessor { - color: #969896; -} - -.hljs-string, -.apache .hljs-sqbracket, -.coffeescript .hljs-subst, -.coffeescript .hljs-regexp, -.cpp .hljs-preprocessor, -.c .hljs-preprocessor, -.javascript .hljs-regexp, -.json .hljs-attribute, -.makefile .hljs-variable, -.markdown .hljs-value, -.markdown .hljs-link_label, -.markdown .hljs-strong, -.markdown .hljs-emphasis, -.markdown .hljs-blockquote, -.nginx .hljs-regexp, -.nginx .hljs-number, -.objectivec .hljs-preprocessor .hljs-title, -.perl .hljs-regexp, -.php .hljs-regexp, -.xml .hljs-value, -.less .hljs-built_in, -.scss .hljs-built_in { - color: #df5000; -} - -.hljs-keyword, -.css .hljs-at_rule, -.css .hljs-important, -.http .hljs-request, -.ini .hljs-setting, -.haskell .hljs-type, -.java .hljs-javadoctag, -.javascript .hljs-tag, -.javascript .hljs-javadoctag, -.nginx .hljs-title, -.objectivec .hljs-preprocessor, -.php .hljs-phpdoc, -.sql .hljs-built_in, -.less .hljs-tag, -.less .hljs-at_rule, -.scss .hljs-tag, -.scss .hljs-at_rule, -.scss .hljs-important, -.stylus .hljs-at_rule, -.go .hljs-typename, -.swift .hljs-preprocessor { - color: #a71d5d; -} - -.apache .hljs-common, -.apache .hljs-cbracket, -.apache .hljs-keyword, -.bash .hljs-literal, -.bash .hljs-built_in, -.coffeescript .hljs-literal, -.coffeescript .hljs-built_in, -.coffeescript .hljs-number, -.cpp .hljs-number, -.cpp .hljs-built_in, -.c .hljs-number, -.c .hljs-built_in, -.cs .hljs-number, -.cs .hljs-built_in, -.css .hljs-attribute, -.css .hljs-hexcolor, -.css .hljs-number, -.css .hljs-function, -.haskell .hljs-number, -.http .hljs-literal, -.http .hljs-attribute, -.java .hljs-number, -.javascript .hljs-built_in, -.javascript .hljs-literal, -.javascript .hljs-number, -.json .hljs-number, -.makefile .hljs-keyword, -.markdown .hljs-link_reference, -.nginx .hljs-built_in, -.objectivec .hljs-literal, -.objectivec .hljs-number, -.objectivec .hljs-built_in, -.php .hljs-literal, -.php .hljs-number, -.python .hljs-number, -.ruby .hljs-prompt, -.ruby .hljs-constant, -.ruby .hljs-number, -.ruby .hljs-subst .hljs-keyword, -.ruby .hljs-symbol, -.rust .hljs-number, -.sql .hljs-number, -.puppet .hljs-function, -.less .hljs-number, -.less .hljs-hexcolor, -.less .hljs-function, -.less .hljs-attribute, -.scss .hljs-preprocessor, -.scss .hljs-number, -.scss .hljs-hexcolor, -.scss .hljs-function, -.scss .hljs-attribute, -.stylus .hljs-number, -.stylus .hljs-hexcolor, -.stylus .hljs-attribute, -.stylus .hljs-params, -.go .hljs-built_in, -.go .hljs-constant, -.swift .hljs-built_in, -.swift .hljs-number { - color: #0086b3; -} - -.apache .hljs-tag, -.cs .hljs-xmlDocTag, -.css .hljs-tag, -.xml .hljs-title, -.stylus .hljs-tag { - color: #63a35c; -} - -.bash .hljs-variable, -.cs .hljs-preprocessor, -.cs .hljs-preprocessor .hljs-keyword, -.css .hljs-attr_selector, -.css .hljs-value, -.ini .hljs-value, -.ini .hljs-keyword, -.javascript .hljs-tag .hljs-title, -.makefile .hljs-constant, -.nginx .hljs-variable, -.xml .hljs-tag, -.scss .hljs-variable { - color: #333333; -} - -.bash .hljs-title, -.coffeescript .hljs-title, -.cpp .hljs-title, -.c .hljs-title, -.cs .hljs-title, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo, -.ini .hljs-title, -.haskell .hljs-title, -.haskell .hljs-pragma, -.java .hljs-title, -.javascript .hljs-title, -.makefile .hljs-title, -.objectivec .hljs-title, -.perl .hljs-sub, -.php .hljs-title, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-parent, -.ruby .hljs-title, -.rust .hljs-title, -.xml .hljs-attribute, -.puppet .hljs-title, -.less .hljs-id, -.less .hljs-pseudo, -.less .hljs-class, -.scss .hljs-id, -.scss .hljs-pseudo, -.scss .hljs-class, -.stylus .hljs-class, -.stylus .hljs-id, -.stylus .hljs-pseudo, -.stylus .hljs-title, -.swift .hljs-title, -.diff .hljs-chunk { - color: #795da3; -} - -.coffeescript .hljs-reserved, -.coffeescript .hljs-attribute { - color: #1d3e81; -} - -.diff .hljs-chunk { - font-weight: bold; -} - -.diff .hljs-addition { - color: #55a532; - background-color: #eaffea; -} - -.diff .hljs-deletion { - color: #bd2c00; - background-color: #ffecec; -} - -.markdown .hljs-link_url { - text-decoration: underline; -} diff --git a/res/css/no-nav.css b/res/css/no-nav.css deleted file mode 100644 index e455925..0000000 --- a/res/css/no-nav.css +++ /dev/null @@ -1,57 +0,0 @@ -/* -Rangitaki Project - -The MIT License - -Copyright 2015 mmk2410. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ -/* - Created on : Jun 18, 2015, 7:07:45 PM - Author : mmk2410 -*/ -/* - A stylesheet for overriding the default styles if the navigation drawer is disabled -*/ - -.nav{ /* hide the navigation drawer */ - display: none; -} - -.nav-img{ /* hide the hamburger icon */ - display: none; -} - -@media screen and (min-width: 1440px) { /* large devices */ - .header { /* full width */ - left: 0; - } - - .main{ /* full width */ - margin-left: 0; - width: 100%; - } -} - -@media screen and (max-width: 720px){ /* small devices */ - .title{ /* move the title more to the left */ - left: 25px; - } -} diff --git a/res/css/rangitaki.css b/res/css/rangitaki.css deleted file mode 100644 index d81b93a..0000000 --- a/res/css/rangitaki.css +++ /dev/null @@ -1,256 +0,0 @@ -/* -Rangitaki Project - -The MIT License - -Copyright 2015 mmk2410. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ -/* - Created on : Jun 14, 2015, 6:13:38 PM - Author : mmk2410 -*/ - -/* BODY */ - -body{ - margin-top: 94px; /* Set enough space for the header */ -} - -.main{ /* main content */ - height: 100%; - margin-left: 0; -} - -.overlay { /* overlay: used for a darker background when the navigation drawer is open */ - opacity: 0; - position: fixed; - top: 0; - left: 0; - background-color: black; - width: 100%; - z-index: 30; - height: 100%; - display: none; /* because the thing is hidden at the beginning and shown with js */ -} - -/* HEADER */ -.header{ - top: 0; - right: 0; - left: 0; - width: 100%; - height: 64px; - position: absolute; -} - -.title{ /* title in the header */ - color: #fff; - font-size: 23px; - text-decoration: none; - line-height: 64px; - vertical-align: middle; - left: 75px; -} - -.title > a{ /* and a a styling */ - text-decoration: none; - color: #fff; -} - -.fadeout{ /* a fadeout if the title is to long */ - position: absolute; - height: 64px; - top: 0; - right: 0; - width: 40px; -} - -.nav-img{ /* the hamburger icon */ - height: 26px; - padding: 19px; - cursor: pointer; -} - -/* NAV DRAWER */ - -.nav{ /* the main object */ - width: 300px; - position: fixed; - height: 100%; - top: 0; - left: -300px; - padding-top: 64px; - z-index: 40; -} - -.nav-item, .nav-item-static{ /* a nav-item */ - text-decoration: none; - text-indent: 0; - display: inline-block; - height: 48px; - vertical-align: middle; - width: 284px; - line-height: 48px; - padding-left: 16px; - transition: background-color 125ms ease-in-out 0ms; -} - -.nav-item{ /* additional setting for clickable nav items */ - cursor: pointer; -} - -.divider{ /* a simple divider with all options. better than
*/ - width: 100%; -} - -/* MAIN */ - -.card{ /* just a card */ - margin-right: auto; - margin-left: auto; - width: 75%; - padding: 24px; - margin-bottom: 40px; - max-width: 1160px; -} - -.card a{ /* and another a styling */ - -moz-hyphens: auto; - -epub-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; - word-wrap: break-word; /* until here: break long links */ -} - -.card a:hover{ /* hovered card links; just here to help you create a own theme*/ - -} - -.headline{ /* title in a card */ - display: block; - padding-bottom: 8px; -} - - -.card img{ /* image in a card*/ - max-width: 100%; /* regulate width */ - max-height: 400px; /* regulate height */ - display: block; /* centered */ - margin-left: auto; /* centerd */ - margin-right: auto; /* centred */ -} - -.date{ /* possibility to style the date */ - -} - -.articletext{ /* posibitlity to style the text */ - -} - -.author{ /* styling for the author */ - display: block; -} - -.tag{ /* possibility to style the text */ - -} - -/* FAB */ - -.fabmenu{ /* surrounds the complete fab menu */ - position: fixed; - bottom: 20px; - right: 20px; -} - -.fab{ /* the main fab (always visible if enabled) */ - height: 60px; - width: 60px; - border-radius: 30px; - cursor: pointer; -} - -.fab-img{ /* fab image for the main fab */ - width: 28px; - padding: 15px; -} - -.subfab{ /* a smaller fab in the fab menu */ - height: 45px; - width: 45px; - border-radius: 30px; - margin-right: auto; - margin-left: auto; - margin-bottom: 25px; - display: none; -} - -.subfab-img{ /* and the image for it */ - width: 22px; - padding: 12px; -} - -/* FOOTER */ - -.footer{ /* possibility for styling the footer */ - -} - - -.footer a{ /* styling of the footer a */ - transition: border-bottom-color 150ms ease-in-out 100ms; -} - -.footer a:hover{ /* and the hovered one*/ - border-bottom-color: #383838; -} - -@media screen and (min-width: 1440px) { /* make it responsive: large devices */ - - .nav{ /* always show navigation bar */ - left: 0; - } - - .nav-img{ /* always hide navigation bar icon*/ - display: none; - } - - .header{ /* move header to the right */ - left: 300px; - } - - .main{ /* move main content to the right and limit its width */ - margin-left: 300px; - width: calc(100% - 300px); - } - -} - - -@media screen and (max-width: 720px){ /* make it responsive: small devices */ - - .card{ /* wider cards */ - width: 82%; - } - -} diff --git a/res/img/close.svg b/res/img/close.svg deleted file mode 100644 index 1e05e59..0000000 --- a/res/img/close.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/res/img/email.svg b/res/img/email.svg deleted file mode 100644 index d89d662..0000000 --- a/res/img/email.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/res/img/facebook.svg b/res/img/facebook.svg deleted file mode 100644 index fb9e3df..0000000 --- a/res/img/facebook.svg +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/res/img/gplus.svg b/res/img/gplus.svg deleted file mode 100644 index 543acb1..0000000 --- a/res/img/gplus.svg +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/res/img/menu.svg b/res/img/menu.svg deleted file mode 100644 index 4b3b1eb..0000000 --- a/res/img/menu.svg +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/res/img/share.svg b/res/img/share.svg deleted file mode 100644 index 6ee5972..0000000 --- a/res/img/share.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/res/img/twitter.svg b/res/img/twitter.svg deleted file mode 100644 index 90e6377..0000000 --- a/res/img/twitter.svg +++ /dev/null @@ -1,457 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/res/js/app.js b/res/js/app.js deleted file mode 100644 index dd2a42f..0000000 --- a/res/js/app.js +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Rangitaki Project - * - * The MIT License - * - * Copyright 2015 mmk2410. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -var main = function () { // main function; called below - - var fabActive = false; // fab hidden at begin - $('.fabmenu').click( // action on fab click - function () { - if (!(fabActive)) { // if fab is hidden - fabFadeIn(); // fade fab in - fabActive = true; // fab = active - } else { // if fab is shown - fabFadeOut(); // fade fab out - fabActive = false; // fab = hidden - } - } - ); - - var navOpen = false; // nav hidden at begin - $('.nav-img, .overlay').click( // action on hamburger click - function () { - if (!(navOpen)) { // if nav is hidden - openNav(); // open the nav drawer - navOpen = true; // nav = open - } else { // if nav is closed - closeNav(); // close the nav drawer - navOpen = false; // nav = closed - } - } - ); - - -}; - -$(document).ready(main); // run if document is loaded - -function goBack() { // go back function - history.go(-1); -} - -function fabFadeIn() { // fade fab in - $('.subfab').fadeIn(125); // fade subfabs in - $('.fab-img').fadeOut( // fade fab share image out - 60, function callback() { - $('.fab-img').attr("src", "./res/img/close.svg"); // change to fab close image - } - ); - $('.fab-img').fadeIn(60); // fade fab close image in -} - -function fabFadeOut() { // fade fab out - $('.subfab').fadeOut(125); // fade subfabs out - $('.fab-img').fadeOut( // fade fab close image out - 60, function callback() { - $('.fab-img').attr("src", "./res/img/share.svg"); // change to fab share image - } - ); - $('.fab-img').fadeIn(60); // fade fab share image in -} - -function openNav() { // fade navigation drawer in - $('.nav').animate({"left": "0px"}, 125); // slide in - $('.overlay').show(); // set overlay to show ... - $('.overlay').animate({"opacity": "0.4"}, 125); // ... and fade to a darker transparent color -} - -function closeNav() { // fade navigation drawer out - $('.nav').animate({"left": "-300px"}, 125); // slide out - $('.overlay').animate( - {"opacity": "0.0"}, 125, function () { // fade the overlay to complete transparency - $('.overlay').hide(); // hide it then - } - ); -} diff --git a/res/js/highlight.pack.js b/res/js/highlight.pack.js deleted file mode 100644 index 4e7eba4..0000000 --- a/res/js/highlight.pack.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){"undefined"!=typeof exports?e(exports):(window.hljs=e({}),"function"==typeof define&&define.amd&&define("hljs",[],function(){return window.hljs}))}(function(e){function n(e){return e.replace(/&/gm,"&").replace(//gm,">")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0==t.index}function a(e){return/no-?highlight|plain|text/.test(e)}function i(e){var n,t,r,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=/\blang(?:uage)?-([\w-]+)\b/.exec(i))return E(t[1])?t[1]:"no-highlight";for(i=i.split(/\s+/),n=0,r=i.length;r>n;n++)if(E(i[n])||a(i[n]))return i[n]}function o(e,n){var t,r={};for(t in e)r[t]=e[t];if(n)for(t in n)r[t]=n[t];return r}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3==i.nodeType?a+=i.nodeValue.length:1==i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!=r[0].offset?e[0].offset"}function u(e){f+=""}function c(e){("start"==e.event?o:u)(e.node)}for(var s=0,f="",l=[];e.length||r.length;){var g=i();if(f+=n(a.substr(s,g[0].offset-s)),s=g[0].offset,g==e){l.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g==e&&g.length&&g[0].offset==s);l.reverse().forEach(o)}else"start"==g[0].event?l.push(g[0].node):l.pop(),c(g.splice(0,1)[0])}return f+n(a.substr(s))}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var u={},c=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");u[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?c("keyword",a.k):Object.keys(a.k).forEach(function(e){c(e,a.k[e])}),a.k=u}a.lR=t(a.l||/\b\w+\b/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),void 0===a.r&&(a.r=1),a.c||(a.c=[]);var s=[];a.c.forEach(function(e){e.v?e.v.forEach(function(n){s.push(o(e,n))}):s.push("self"==e?a:e)}),a.c=s,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var f=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=f.length?t(f.join("|"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){for(var t=0;t";return i+=e+'">',i+n+o}function p(){if(!L.k)return n(B);var e="",t=0;L.lR.lastIndex=0;for(var r=L.lR.exec(B);r;){e+=n(B.substr(t,r.index-t));var a=g(L,r);a?(y+=a[1],e+=h(a[0],n(r[0]))):e+=n(r[0]),t=L.lR.lastIndex,r=L.lR.exec(B)}return e+n(B.substr(t))}function d(){if(L.sL&&!x[L.sL])return n(B);var e=L.sL?f(L.sL,B,!0,M[L.sL]):l(B);return L.r>0&&(y+=e.r),"continuous"==L.subLanguageMode&&(M[L.sL]=e.top),h(e.language,e.value,!1,!0)}function b(){return void 0!==L.sL?d():p()}function v(e,t){var r=e.cN?h(e.cN,"",!0):"";e.rB?(k+=r,B=""):e.eB?(k+=n(t)+r,B=""):(k+=r,B=t),L=Object.create(e,{parent:{value:L}})}function m(e,t){if(B+=e,void 0===t)return k+=b(),0;var r=o(t,L);if(r)return k+=b(),v(r,t),r.rB?0:t.length;var a=u(L,t);if(a){var i=L;i.rE||i.eE||(B+=t),k+=b();do L.cN&&(k+=""),y+=L.r,L=L.parent;while(L!=a.parent);return i.eE&&(k+=n(t)),B="",a.starts&&v(a.starts,""),i.rE?0:t.length}if(c(t,L))throw new Error('Illegal lexeme "'+t+'" for mode "'+(L.cN||"")+'"');return B+=t,t.length||1}var N=E(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var R,L=i||N,M={},k="";for(R=L;R!=N;R=R.parent)R.cN&&(k=h(R.cN,"",!0)+k);var B="",y=0;try{for(var C,j,I=0;;){if(L.t.lastIndex=I,C=L.t.exec(t),!C)break;j=m(t.substr(I,C.index-I),C[0]),I=C.index+j}for(m(t.substr(I)),R=L;R.parent;R=R.parent)R.cN&&(k+="");return{r:y,value:k,language:e,top:L}}catch(O){if(-1!=O.message.indexOf("Illegal"))return{r:0,value:n(t)};throw O}}function l(e,t){t=t||w.languages||Object.keys(x);var r={r:0,value:n(e)},a=r;return t.forEach(function(n){if(E(n)){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}}),a.language&&(r.second_best=a),r}function g(e){return w.tabReplace&&(e=e.replace(/^((<[^>]+>|\t)+)/gm,function(e,n){return n.replace(/\t/g,w.tabReplace)})),w.useBR&&(e=e.replace(/\n/g,"
")),e}function h(e,n,t){var r=n?R[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function p(e){var n=i(e);if(!a(n)){var t;w.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e;var r=t.textContent,o=n?f(n,r,!0):l(r),s=u(t);if(s.length){var p=document.createElementNS("http://www.w3.org/1999/xhtml","div");p.innerHTML=o.value,o.value=c(s,u(p),r)}o.value=g(o.value),e.innerHTML=o.value,e.className=h(e.className,n,o.language),e.result={language:o.language,re:o.r},o.second_best&&(e.second_best={language:o.second_best.language,re:o.second_best.r})}}function d(e){w=o(w,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");Array.prototype.forEach.call(e,p)}}function v(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function m(n,t){var r=x[n]=t(e);r.aliases&&r.aliases.forEach(function(e){R[e]=n})}function N(){return Object.keys(x)}function E(e){return x[e]||x[R[e]]}var w={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},x={},R={};return e.highlight=f,e.highlightAuto=l,e.fixMarkup=g,e.highlightBlock=p,e.configure=d,e.initHighlighting=b,e.initHighlightingOnLoad=v,e.registerLanguage=m,e.listLanguages=N,e.getLanguage=E,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="\\b(0[xX][a-fA-F0-9]+|(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",bK:"TODO FIXME NOTE BUG XXX",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e});hljs.registerLanguage("coffeescript",function(e){var c={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",reserved:"case default function var void with const let enum export import native __hasProp __extends __slice __bind __indexOf",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",t={cN:"subst",b:/#\{/,e:/}/,k:c},r=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,t]},{b:/"/,e:/"/,c:[e.BE,t]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[t,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{cN:"property",b:"@"+n},{b:"`",e:"`",eB:!0,eE:!0,sL:"javascript"}];t.c=r;var i=e.inherit(e.TM,{b:n}),s="(\\(.*\\))?\\s*\\B[-=]>",o={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:c,c:["self"].concat(r)}]};return{aliases:["coffee","cson","iced"],k:c,i:/\/\*/,c:r.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+n+"\\s*=\\s*"+s,e:"[-=]>",rB:!0,c:[i,o]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:s,e:"[-=]>",rB:!0,c:[o]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[i]},i]},{cN:"attribute",b:n+":",e:":",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage("cpp",function(t){var e={cN:"keyword",b:"[a-z\\d_]*_t"},r={keyword:"false int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using true class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept nullptr static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong",built_in:"std string cin cout cerr clog stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf"};return{aliases:["c","cc","h","c++","h++","hpp"],k:r,i:""]',k:"include",i:"\\n"},t.CLCM]},{b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:r,c:["self",e]},{b:t.IR+"::",k:r},{bK:"new throw return else",r:0},{cN:"function",b:"("+t.IR+"\\s+)+"+t.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:t.IR+"\\s*\\(",rB:!0,c:[t.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:r,r:0,c:[t.CBCM]},t.CLCM,t.CBCM]}]}});hljs.registerLanguage("python",function(e){var r={cN:"prompt",b:/^(>>>|\.\.\.) /},b={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[r],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[r],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]},l={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},c={cN:"params",b:/\(/,e:/\)/,c:["self",r,l,b]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[r,l,b,e.HCM,{v:[{cN:"function",bK:"def",r:10},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,c]},{cN:"decorator",b:/@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>]/,c:[{cN:"operator",bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate savepoint release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke",e:/;/,eW:!0,k:{keyword:"abs absolute acos action add adddate addtime aes_decrypt aes_encrypt after aggregate all allocate alter analyze and any are as asc ascii asin assertion at atan atan2 atn2 authorization authors avg backup before begin benchmark between bin binlog bit_and bit_count bit_length bit_or bit_xor both by cache call cascade cascaded case cast catalog ceil ceiling chain change changed char_length character_length charindex charset check checksum checksum_agg choose close coalesce coercibility collate collation collationproperty column columns columns_updated commit compress concat concat_ws concurrent connect connection connection_id consistent constraint constraints continue contributors conv convert convert_tz corresponding cos cot count count_big crc32 create cross cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime data database databases datalength date_add date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts datetimeoffsetfromparts day dayname dayofmonth dayofweek dayofyear deallocate declare decode default deferrable deferred degrees delayed delete des_decrypt des_encrypt des_key_file desc describe descriptor diagnostics difference disconnect distinct distinctrow div do domain double drop dumpfile each else elt enclosed encode encrypt end end-exec engine engines eomonth errors escape escaped event eventdata events except exception exec execute exists exp explain export_set extended external extract fast fetch field fields find_in_set first first_value floor flush for force foreign format found found_rows from from_base64 from_days from_unixtime full function get get_format get_lock getdate getutcdate global go goto grant grants greatest group group_concat grouping grouping_id gtid_subset gtid_subtract handler having help hex high_priority hosts hour ident_current ident_incr ident_seed identified identity if ifnull ignore iif ilike immediate in index indicator inet6_aton inet6_ntoa inet_aton inet_ntoa infile initially inner innodb input insert install instr intersect into is is_free_lock is_ipv4 is_ipv4_compat is_ipv4_mapped is_not is_not_null is_used_lock isdate isnull isolation join key kill language last last_day last_insert_id last_value lcase lead leading least leaves left len lenght level like limit lines ln load load_file local localtime localtimestamp locate lock log log10 log2 logfile logs low_priority lower lpad ltrim make_set makedate maketime master master_pos_wait match matched max md5 medium merge microsecond mid min minute mod mode module month monthname mutex name_const names national natural nchar next no no_write_to_binlog not now nullif nvarchar oct octet_length of old_password on only open optimize option optionally or ord order outer outfile output pad parse partial partition password patindex percent_rank percentile_cont percentile_disc period_add period_diff pi plugin position pow power pragma precision prepare preserve primary prior privileges procedure procedure_analyze processlist profile profiles public publishingservername purge quarter query quick quote quotename radians rand read references regexp relative relaylog release release_lock rename repair repeat replace replicate reset restore restrict return returns reverse revoke right rlike rollback rollup round row row_count rows rpad rtrim savepoint schema scroll sec_to_time second section select serializable server session session_user set sha sha1 sha2 share show sign sin size slave sleep smalldatetimefromparts snapshot some soname soundex sounds_like space sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sql_variant_property sqlstate sqrt square start starting status std stddev stddev_pop stddev_samp stdev stdevp stop str str_to_date straight_join strcmp string stuff subdate substr substring subtime subtring_index sum switchoffset sysdate sysdatetime sysdatetimeoffset system_user sysutcdatetime table tables tablespace tan temporary terminated tertiary_weights then time time_format time_to_sec timediff timefromparts timestamp timestampadd timestampdiff timezone_hour timezone_minute to to_base64 to_days to_seconds todatetimeoffset trailing transaction translation trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse ucase uncompress uncompressed_length unhex unicode uninstall union unique unix_timestamp unknown unlock update upgrade upped upper usage use user user_resources using utc_date utc_time utc_timestamp uuid uuid_short validate_password_strength value values var var_pop var_samp variables variance varp version view warnings week weekday weekofyear weight_string when whenever where with work write xml xor year yearweek zon",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int integer interval number numeric real serial smallint varchar varying int8 serial8 text"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}});hljs.registerLanguage("java",function(e){var a=e.UIR+"(<"+e.UIR+">)?",t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",c="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",r={cN:"number",b:c,r:0};return{aliases:["jsp"],k:t,i:/<\//,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+a+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:t,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},r,{cN:"annotation",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("ruby",function(e){var c="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r="and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",b={cN:"doctag",b:"@[A-Za-z]+"},a={cN:"value",b:"#<",e:">"},n=[e.C("#","$",{c:[b]}),e.C("^\\=begin","^\\=end",{c:[b],r:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:r},t={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]},i={cN:"params",b:"\\(",e:"\\)",k:r},d=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+e.IR+"::)?"+e.IR}]}].concat(n)},{cN:"function",bK:"def",e:" |$|;",r:0,c:[e.inherit(e.TM,{b:c}),i].concat(n)},{cN:"constant",b:"(::)?(\\b[A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":",c:[t,{b:c}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+e.RSR+")\\s*",c:[a,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(n),r:0}].concat(n);s.c=d,i.c=d;var o="[>?]>",l="[\\w#]+\\(\\w+\\):\\d+:\\d+>",u="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",N=[{b:/^\s*=>/,cN:"status",starts:{e:"$",c:d}},{cN:"prompt",b:"^("+o+"|"+l+"|"+u+")",starts:{e:"$",c:d}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,c:n.concat(N).concat(d)}});hljs.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"(AV|CA|CF|CG|CI|MK|MP|NS|UI)\\w+"},i={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},o=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:i,l:o,i:""}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:o,c:[e.UTM]},{cN:"variable",b:"\\."+e.UIR,r:0}]}});hljs.registerLanguage("javascript",function(e){return{aliases:["js"],k:{keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},c:[{cN:"pi",r:10,b:/^\s*['"]use (strict|asm)['"]/},e.ASM,e.QSM,{cN:"string",b:"`",e:"`",c:[e.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{b:/\s*[);\]]/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:[e.CLCM,e.CBCM],i:/["'\(]/}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+e.IR,r:0},{bK:"import",e:"[;$]",k:"import from as",c:[e.ASM,e.QSM]},{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]}]}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{built_in:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{cN:"url",b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"title",b:e.UIR,starts:b}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"header",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"blockquote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{cN:"horizontal_rule",b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"link_label",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link_url",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"link_reference",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:"^\\[.+\\]:",rB:!0,c:[{cN:"link_reference",b:"\\[",e:"\\]:",eB:!0,eE:!0,starts:{cN:"link_url",e:"$"}}]}]}});hljs.registerLanguage("json",function(e){var t={literal:"true false null"},i=[e.QSM,e.CNM],l={cN:"value",e:",",eW:!0,eE:!0,c:i,k:t},c={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:!0,eE:!0,c:[e.BE],i:"\\n",starts:l}],i:"\\S"},n={b:"\\[",e:"\\]",c:[e.inherit(l,{cN:null})],i:"\\S"};return i.splice(i.length,0,c,n),{c:i,k:t,i:"\\S"}});hljs.registerLanguage("php",function(e){var c={cN:"variable",b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},a={cN:"preprocessor",b:/<\?(php)?|\?>/},i={cN:"string",c:[e.BE,a],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.CLCM,e.HCM,e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"},a]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[e.BE]},a,c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,i,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},i,n]}});hljs.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"chunk",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"header",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\-\-\-/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+\+\+/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"change",b:"^\\!",e:"$"}]}});hljs.registerLanguage("apache",function(e){var r={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"tag",b:""},{cN:"keyword",b:/\w+/,r:0,k:{common:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"sqbracket",b:"\\s\\[",e:"\\]$"},{cN:"cbracket",b:"[\\$%]\\{",e:"\\}",c:["self",r]},r,e.QSM]}}],i:/\S/}});hljs.registerLanguage("http",function(t){return{aliases:["https"],i:"\\S",c:[{cN:"status",b:"^HTTP/[0-9\\.]+",e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{cN:"request",b:"^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{cN:"string",e:"$"}},{b:"\\n\\n",starts:{sL:"",eW:!0}}]}});hljs.registerLanguage("css",function(e){var c="[a-zA-Z-][a-zA-Z0-9_-]*",a={cN:"function",b:c+"\\(",rB:!0,eE:!0,e:"\\("},r={cN:"rule",b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{cN:"value",eW:!0,eE:!0,c:[a,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"hexcolor",b:"#[0-9A-Fa-f]+"},{cN:"important",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,r,{cN:"id",b:/\#[A-Za-z0-9_-]+/},{cN:"class",b:/\.[A-Za-z0-9_-]+/},{cN:"attr_selector",b:/\[/,e:/\]/,i:"$"},{cN:"pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"']+/},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[a,e.ASM,e.QSM,e.CSSNM]}]},{cN:"tag",b:c,r:0},{cN:"rules",b:"{",e:"}",i:/\S/,c:[e.CBCM,r]}]}});hljs.registerLanguage("cs",function(e){var r="abstract as base bool break byte case catch char checked const continue decimal dynamic default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long null when object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async protected public private internal ascending descending from get group into join let orderby partial select set value var where yield",t=e.IR+"(<"+e.IR+">)?";return{aliases:["csharp"],k:r,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"xmlDocTag",v:[{b:"///",r:0},{b:""},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line region endregion pragma checksum"},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},e.ASM,e.QSM,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[{cN:"title",b:"[a-zA-Z](\\.?\\w)*",r:0},e.CLCM,e.CBCM]},{bK:"new return throw await",r:0},{cN:"function",b:"("+t+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage("xml",function(t){var e="[A-Za-z0-9\\._:-]+",s={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php",subLanguageMode:"continuous"},c={eW:!0,i:/]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xsl","plist"],cI:!0,c:[{cN:"doctype",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},t.C("",{r:10}),{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"|$)",e:">",k:{title:"style"},c:[c],starts:{e:"",rE:!0,sL:"css"}},{cN:"tag",b:"|$)",e:">",k:{title:"script"},c:[c],starts:{e:"",rE:!0,sL:""}},s,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"",c:[{cN:"title",b:/[^ \/><\n\t]+/,r:0},c]}]}});hljs.registerLanguage("makefile",function(e){var a={cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]};return{aliases:["mk","mak"],c:[e.HCM,{b:/^\w+\s*\W*=/,rB:!0,r:0,starts:{cN:"constant",e:/\s*\W*=/,eE:!0,starts:{e:/$/,r:0,c:[a]}}},{cN:"title",b:/^[\w]+:\s*$/},{cN:"phony",b:/^\.PHONY:/,e:/$/,k:".PHONY",l:/[\.\w]+/},{b:/^\t+/,e:/$/,r:0,c:[e.QSM,a]}]}});hljs.registerLanguage("ini",function(e){return{cI:!0,i:/\S/,c:[e.C(";","$"),{cN:"title",b:"^\\[",e:"\\]"},{cN:"setting",b:"^[a-z0-9\\[\\]_-]+[ \\t]*=[ \\t]*",e:"$",c:[{cN:"value",eW:!0,k:"on off true false yes no",c:[e.QSM,e.NM],r:0}]}]}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\.]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",operator:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"shebang",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,e.NM,s,a,t]}});hljs.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},s={b:"->{",e:"}"},n={cN:"variable",v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=e.C("^(__END__|__DATA__)","\\n$",{r:5}),o=[e.BE,r,n],a=[n,e.HCM,i,e.C("^\\=\\w","\\=cut",{eW:!0}),s,{cN:"string",c:o,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,i,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"sub",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",r:5},{cN:"operator",b:"-\\w\\b",r:0}];return r.c=a,s.c=a,{aliases:["pl"],k:t,c:a}}); \ No newline at end of file diff --git a/res/js/jquery-2.1.4.min.js b/res/js/jquery-2.1.4.min.js deleted file mode 100644 index 49990d6..0000000 --- a/res/js/jquery-2.1.4.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ -return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("