From 184bf17742cee86be378b2d6062592d7bc4cde14 Mon Sep 17 00:00:00 2001 From: Jerry xu Date: Thu, 3 May 2018 17:14:57 +0800 Subject: [PATCH 001/163] add LICENSE and README.md --- LICENSE | 21 +++++++++++++++++++++ README.md | 8 ++++++++ 2 files changed, 29 insertions(+) create mode 100644 LICENSE create mode 100644 README.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..80f46a893 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Jerry xu + +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 new file mode 100644 index 000000000..ba5fb8d0b --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +

+ BladeCode +

+ +### Thanks +1. [Node](https://nodejs.org) +2. [Hexo](https://hexo.io) +3. [Next](https://github.com/theme-next/hexo-theme-next) \ No newline at end of file From 35102f1222e74842a83eaed4b781d68e014dfa55 Mon Sep 17 00:00:00 2001 From: Jerry xu Date: Thu, 3 May 2018 17:30:36 +0800 Subject: [PATCH 002/163] init landscape themes --- .gitignore | 7 + _config.yml | 83 + package-lock.json | 13625 ++++++++++++++++ package.json | 23 + scaffolds/draft.md | 4 + scaffolds/page.md | 4 + scaffolds/post.md | 5 + source/CNAME | 1 + source/README.md | 8 + source/_posts/hello-world.md | 38 + themes/landscape/.gitignore | 3 + themes/landscape/Gruntfile.js | 46 + themes/landscape/LICENSE | 7 + themes/landscape/README.md | 112 + themes/landscape/_config.yml | 37 + themes/landscape/languages/de.yml | 19 + themes/landscape/languages/default.yml | 19 + themes/landscape/languages/es.yml | 19 + themes/landscape/languages/fr.yml | 19 + themes/landscape/languages/ja.yml | 19 + themes/landscape/languages/ko.yml | 19 + themes/landscape/languages/nl.yml | 20 + themes/landscape/languages/no.yml | 19 + themes/landscape/languages/pt.yml | 19 + themes/landscape/languages/ru.yml | 19 + themes/landscape/languages/zh-CN.yml | 19 + themes/landscape/languages/zh-TW.yml | 19 + .../layout/_partial/after-footer.ejs | 25 + .../layout/_partial/archive-post.ejs | 8 + themes/landscape/layout/_partial/archive.ejs | 34 + themes/landscape/layout/_partial/article.ejs | 44 + themes/landscape/layout/_partial/footer.ejs | 11 + .../layout/_partial/gauges-analytics.ejs | 18 + .../layout/_partial/google-analytics.ejs | 14 + themes/landscape/layout/_partial/head.ejs | 36 + themes/landscape/layout/_partial/header.ejs | 32 + .../landscape/layout/_partial/mobile-nav.ejs | 5 + .../layout/_partial/post/category.ejs | 10 + .../landscape/layout/_partial/post/date.ejs | 3 + .../layout/_partial/post/gallery.ejs | 11 + themes/landscape/layout/_partial/post/nav.ejs | 22 + themes/landscape/layout/_partial/post/tag.ejs | 6 + .../landscape/layout/_partial/post/title.ejs | 15 + themes/landscape/layout/_partial/sidebar.ejs | 5 + themes/landscape/layout/_widget/archive.ejs | 8 + themes/landscape/layout/_widget/category.ejs | 8 + .../landscape/layout/_widget/recent_posts.ejs | 14 + themes/landscape/layout/_widget/tag.ejs | 8 + themes/landscape/layout/_widget/tagcloud.ejs | 8 + themes/landscape/layout/archive.ejs | 1 + themes/landscape/layout/category.ejs | 1 + themes/landscape/layout/index.ejs | 1 + themes/landscape/layout/layout.ejs | 18 + themes/landscape/layout/page.ejs | 1 + themes/landscape/layout/post.ejs | 1 + themes/landscape/layout/tag.ejs | 1 + themes/landscape/package.json | 12 + themes/landscape/scripts/fancybox.js | 24 + themes/landscape/source/css/_extend.styl | 63 + .../source/css/_partial/archive.styl | 80 + .../source/css/_partial/article.styl | 357 + .../source/css/_partial/comment.styl | 9 + .../landscape/source/css/_partial/footer.styl | 14 + .../landscape/source/css/_partial/header.styl | 165 + .../source/css/_partial/highlight.styl | 158 + .../landscape/source/css/_partial/mobile.styl | 19 + .../source/css/_partial/sidebar-aside.styl | 27 + .../source/css/_partial/sidebar-bottom.styl | 27 + .../source/css/_partial/sidebar.styl | 35 + themes/landscape/source/css/_util/grid.styl | 38 + themes/landscape/source/css/_util/mixin.styl | 31 + themes/landscape/source/css/_variables.styl | 63 + .../source/css/fonts/FontAwesome.otf | Bin 0 -> 62856 bytes .../source/css/fonts/fontawesome-webfont.eot | Bin 0 -> 38205 bytes .../source/css/fonts/fontawesome-webfont.svg | 414 + .../source/css/fonts/fontawesome-webfont.ttf | Bin 0 -> 80652 bytes .../source/css/fonts/fontawesome-webfont.woff | Bin 0 -> 44432 bytes themes/landscape/source/css/images/banner.jpg | Bin 0 -> 224710 bytes themes/landscape/source/css/style.styl | 89 + themes/landscape/source/fancybox/blank.gif | Bin 0 -> 43 bytes .../source/fancybox/fancybox_loading.gif | Bin 0 -> 6567 bytes .../source/fancybox/fancybox_loading@2x.gif | Bin 0 -> 13984 bytes .../source/fancybox/fancybox_overlay.png | Bin 0 -> 1003 bytes .../source/fancybox/fancybox_sprite.png | Bin 0 -> 1362 bytes .../source/fancybox/fancybox_sprite@2x.png | Bin 0 -> 6553 bytes .../fancybox/helpers/fancybox_buttons.png | Bin 0 -> 1080 bytes .../helpers/jquery.fancybox-buttons.css | 97 + .../helpers/jquery.fancybox-buttons.js | 122 + .../fancybox/helpers/jquery.fancybox-media.js | 199 + .../helpers/jquery.fancybox-thumbs.css | 55 + .../helpers/jquery.fancybox-thumbs.js | 165 + .../source/fancybox/jquery.fancybox.css | 273 + .../source/fancybox/jquery.fancybox.js | 2017 +++ .../source/fancybox/jquery.fancybox.pack.js | 46 + themes/landscape/source/js/script.js | 137 + 95 files changed, 19337 insertions(+) create mode 100644 .gitignore create mode 100644 _config.yml create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 scaffolds/draft.md create mode 100644 scaffolds/page.md create mode 100644 scaffolds/post.md create mode 100644 source/CNAME create mode 100644 source/README.md create mode 100644 source/_posts/hello-world.md create mode 100644 themes/landscape/.gitignore create mode 100644 themes/landscape/Gruntfile.js create mode 100644 themes/landscape/LICENSE create mode 100644 themes/landscape/README.md create mode 100644 themes/landscape/_config.yml create mode 100644 themes/landscape/languages/de.yml create mode 100644 themes/landscape/languages/default.yml create mode 100644 themes/landscape/languages/es.yml create mode 100644 themes/landscape/languages/fr.yml create mode 100644 themes/landscape/languages/ja.yml create mode 100644 themes/landscape/languages/ko.yml create mode 100644 themes/landscape/languages/nl.yml create mode 100644 themes/landscape/languages/no.yml create mode 100644 themes/landscape/languages/pt.yml create mode 100644 themes/landscape/languages/ru.yml create mode 100644 themes/landscape/languages/zh-CN.yml create mode 100644 themes/landscape/languages/zh-TW.yml create mode 100644 themes/landscape/layout/_partial/after-footer.ejs create mode 100644 themes/landscape/layout/_partial/archive-post.ejs create mode 100644 themes/landscape/layout/_partial/archive.ejs create mode 100644 themes/landscape/layout/_partial/article.ejs create mode 100644 themes/landscape/layout/_partial/footer.ejs create mode 100644 themes/landscape/layout/_partial/gauges-analytics.ejs create mode 100644 themes/landscape/layout/_partial/google-analytics.ejs create mode 100644 themes/landscape/layout/_partial/head.ejs create mode 100644 themes/landscape/layout/_partial/header.ejs create mode 100644 themes/landscape/layout/_partial/mobile-nav.ejs create mode 100644 themes/landscape/layout/_partial/post/category.ejs create mode 100644 themes/landscape/layout/_partial/post/date.ejs create mode 100644 themes/landscape/layout/_partial/post/gallery.ejs create mode 100644 themes/landscape/layout/_partial/post/nav.ejs create mode 100644 themes/landscape/layout/_partial/post/tag.ejs create mode 100644 themes/landscape/layout/_partial/post/title.ejs create mode 100644 themes/landscape/layout/_partial/sidebar.ejs create mode 100644 themes/landscape/layout/_widget/archive.ejs create mode 100644 themes/landscape/layout/_widget/category.ejs create mode 100644 themes/landscape/layout/_widget/recent_posts.ejs create mode 100644 themes/landscape/layout/_widget/tag.ejs create mode 100644 themes/landscape/layout/_widget/tagcloud.ejs create mode 100644 themes/landscape/layout/archive.ejs create mode 100644 themes/landscape/layout/category.ejs create mode 100644 themes/landscape/layout/index.ejs create mode 100644 themes/landscape/layout/layout.ejs create mode 100644 themes/landscape/layout/page.ejs create mode 100644 themes/landscape/layout/post.ejs create mode 100644 themes/landscape/layout/tag.ejs create mode 100644 themes/landscape/package.json create mode 100644 themes/landscape/scripts/fancybox.js create mode 100644 themes/landscape/source/css/_extend.styl create mode 100644 themes/landscape/source/css/_partial/archive.styl create mode 100644 themes/landscape/source/css/_partial/article.styl create mode 100644 themes/landscape/source/css/_partial/comment.styl create mode 100644 themes/landscape/source/css/_partial/footer.styl create mode 100644 themes/landscape/source/css/_partial/header.styl create mode 100644 themes/landscape/source/css/_partial/highlight.styl create mode 100644 themes/landscape/source/css/_partial/mobile.styl create mode 100644 themes/landscape/source/css/_partial/sidebar-aside.styl create mode 100644 themes/landscape/source/css/_partial/sidebar-bottom.styl create mode 100644 themes/landscape/source/css/_partial/sidebar.styl create mode 100644 themes/landscape/source/css/_util/grid.styl create mode 100644 themes/landscape/source/css/_util/mixin.styl create mode 100644 themes/landscape/source/css/_variables.styl create mode 100644 themes/landscape/source/css/fonts/FontAwesome.otf create mode 100644 themes/landscape/source/css/fonts/fontawesome-webfont.eot create mode 100644 themes/landscape/source/css/fonts/fontawesome-webfont.svg create mode 100644 themes/landscape/source/css/fonts/fontawesome-webfont.ttf create mode 100644 themes/landscape/source/css/fonts/fontawesome-webfont.woff create mode 100644 themes/landscape/source/css/images/banner.jpg create mode 100644 themes/landscape/source/css/style.styl create mode 100644 themes/landscape/source/fancybox/blank.gif create mode 100644 themes/landscape/source/fancybox/fancybox_loading.gif create mode 100644 themes/landscape/source/fancybox/fancybox_loading@2x.gif create mode 100644 themes/landscape/source/fancybox/fancybox_overlay.png create mode 100644 themes/landscape/source/fancybox/fancybox_sprite.png create mode 100644 themes/landscape/source/fancybox/fancybox_sprite@2x.png create mode 100644 themes/landscape/source/fancybox/helpers/fancybox_buttons.png create mode 100644 themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.css create mode 100644 themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.js create mode 100644 themes/landscape/source/fancybox/helpers/jquery.fancybox-media.js create mode 100644 themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.css create mode 100644 themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.js create mode 100644 themes/landscape/source/fancybox/jquery.fancybox.css create mode 100644 themes/landscape/source/fancybox/jquery.fancybox.js create mode 100644 themes/landscape/source/fancybox/jquery.fancybox.pack.js create mode 100644 themes/landscape/source/js/script.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..063b0e4ce --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.DS_Store +Thumbs.db +db.json +*.log +node_modules/ +public/ +.deploy*/ \ No newline at end of file diff --git a/_config.yml b/_config.yml new file mode 100644 index 000000000..613ccdd47 --- /dev/null +++ b/_config.yml @@ -0,0 +1,83 @@ +# Hexo Configuration +## Docs: https://hexo.io/docs/configuration.html +## Source: https://github.com/hexojs/hexo/ + +# Site +title: BladeCode +subtitle: Life's a struggle! +description: +keywords: +author: Jerry xu +language: +timezone: + +# URL +## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/' +url: https://www.incoder.org +root: / +permalink: :year/:month/:day/:title/ +permalink_defaults: + +# Directory +source_dir: source +public_dir: public +tag_dir: tags +archive_dir: archives +category_dir: categories +code_dir: downloads/code +i18n_dir: :lang +skip_render: + +# Writing +new_post_name: :title.md # File name of new posts +default_layout: post +titlecase: false # Transform title into titlecase +external_link: true # Open external links in new tab +filename_case: 0 +render_drafts: false +post_asset_folder: false +relative_link: false +future: true +highlight: + enable: true + line_number: true + auto_detect: false + tab_replace: + +# Home page setting +# path: Root path for your blogs index page. (default = '') +# per_page: Posts displayed per page. (0 = disable pagination) +# order_by: Posts order. (Order by date descending by default) +index_generator: + path: '' + per_page: 10 + order_by: -date + +# Category & Tag +default_category: uncategorized +category_map: +tag_map: + +# Date / Time format +## Hexo uses Moment.js to parse and display date +## You can customize the date format as defined in +## http://momentjs.com/docs/#/displaying/format/ +date_format: YYYY-MM-DD +time_format: HH:mm:ss + +# Pagination +## Set per_page to 0 to disable pagination +per_page: 10 +pagination_dir: page + +# Extensions +## Plugins: https://hexo.io/plugins/ +## Themes: https://hexo.io/themes/ +theme: landscape + +# Deployment +## Docs: https://hexo.io/docs/deployment.html +deploy: + type: git + repo: https://github.com/BladeCode/BladeCode.github.io.git + branch: master diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..ee1159f45 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13625 @@ +{ + "name": "hexo-site", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "JSONStream": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", + "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } + }, + "a-sync-waterfall": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.0.tgz", + "integrity": "sha1-OOgxnXk3niRiiEW1O5ZyKyng5Hw=" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "requires": { + "mime-types": "2.1.18", + "negotiator": "0.6.1" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-bgblack": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz", + "integrity": "sha1-poulAHiHcBtqr74/oNrf36juPKI=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bgblue": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bgblue/-/ansi-bgblue-0.1.1.tgz", + "integrity": "sha1-Z73ATtybm1J4lp2hlt6j11yMNhM=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bgcyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bgcyan/-/ansi-bgcyan-0.1.1.tgz", + "integrity": "sha1-WEiUJWAL3p9VBwaN2Wnr/bUP52g=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bggreen": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bggreen/-/ansi-bggreen-0.1.1.tgz", + "integrity": "sha1-TjGRJIUplD9DIelr8THRwTgWr0k=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bgmagenta": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bgmagenta/-/ansi-bgmagenta-0.1.1.tgz", + "integrity": "sha1-myhDLAduqpmUGGcqPvvhk5HCx6E=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bgred": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bgred/-/ansi-bgred-0.1.1.tgz", + "integrity": "sha1-p2+Sg4OCukMpCmwXeEJPmE1vEEE=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bgwhite": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bgwhite/-/ansi-bgwhite-0.1.1.tgz", + "integrity": "sha1-ZQRlE3elim7OzQMxmU5IAljhG6g=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bgyellow": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bgyellow/-/ansi-bgyellow-0.1.1.tgz", + "integrity": "sha1-w/4usIzUdmSAKeaHTRWgs49h1E8=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-black": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-black/-/ansi-black-0.1.1.tgz", + "integrity": "sha1-9hheiJNgslRaHsUMC/Bj/EMDJFM=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-blue": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-blue/-/ansi-blue-0.1.1.tgz", + "integrity": "sha1-FbgEmQ6S/JyoxUds6PaZd3wh7b8=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-bold": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-bold/-/ansi-bold-0.1.1.tgz", + "integrity": "sha1-PmOVCvWswq4uZw5vZ96xFdGl9QU=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-colors": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-0.2.0.tgz", + "integrity": "sha1-csMd4qDZoszQysMMyYI+6y9kNLU=", + "requires": { + "ansi-bgblack": "0.1.1", + "ansi-bgblue": "0.1.1", + "ansi-bgcyan": "0.1.1", + "ansi-bggreen": "0.1.1", + "ansi-bgmagenta": "0.1.1", + "ansi-bgred": "0.1.1", + "ansi-bgwhite": "0.1.1", + "ansi-bgyellow": "0.1.1", + "ansi-black": "0.1.1", + "ansi-blue": "0.1.1", + "ansi-bold": "0.1.1", + "ansi-cyan": "0.1.1", + "ansi-dim": "0.1.1", + "ansi-gray": "0.1.1", + "ansi-green": "0.1.1", + "ansi-grey": "0.1.1", + "ansi-hidden": "0.1.1", + "ansi-inverse": "0.1.1", + "ansi-italic": "0.1.1", + "ansi-magenta": "0.1.1", + "ansi-red": "0.1.1", + "ansi-reset": "0.1.1", + "ansi-strikethrough": "0.1.1", + "ansi-underline": "0.1.1", + "ansi-white": "0.1.1", + "ansi-yellow": "0.1.1", + "lazy-cache": "2.0.2" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "ansi-cyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", + "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-dim": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-dim/-/ansi-dim-0.1.1.tgz", + "integrity": "sha1-QN5MYDqoCG2Oeoa4/5mNXDbu/Ww=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-green": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", + "integrity": "sha1-il2al55FjVfEDjNYCzc5C44Q0Pc=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-grey": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-grey/-/ansi-grey-0.1.1.tgz", + "integrity": "sha1-WdmLasK6GfilF5jphT+6eDOaM8E=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-hidden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-hidden/-/ansi-hidden-0.1.1.tgz", + "integrity": "sha1-7WpMSY0rt8uyidvyqNHcyFZ/rg8=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-inverse": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-inverse/-/ansi-inverse-0.1.1.tgz", + "integrity": "sha1-tq9Fgm/oJr+1KKbHmIV5Q1XM0mk=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-italic": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-italic/-/ansi-italic-0.1.1.tgz", + "integrity": "sha1-EEdDRj9iXBQqA2c5z4XtpoiYbyM=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-magenta": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-magenta/-/ansi-magenta-0.1.1.tgz", + "integrity": "sha1-BjtboW+z8j4c/aKwfAqJ3hHkMK4=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-reset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-reset/-/ansi-reset-0.1.1.tgz", + "integrity": "sha1-5+cSksPH3c1NYu9KbHwFmAkRw7c=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-strikethrough": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-strikethrough/-/ansi-strikethrough-0.1.1.tgz", + "integrity": "sha1-2Eh3FAss/wfRyT685pkE9oiF5Wg=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "1.9.1" + } + }, + "ansi-underline": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-underline/-/ansi-underline-0.1.1.tgz", + "integrity": "sha1-38kg9Ml7WXfqFi34/7mIMIqqcaQ=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-white": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-white/-/ansi-white-0.1.1.tgz", + "integrity": "sha1-nHe3wZPF7pkuYBHTbsTJIbRXiUQ=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + }, + "ansi-yellow": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-yellow/-/ansi-yellow-0.1.1.tgz", + "integrity": "sha1-y5NW8vRscy8OMZnmEClVp32oPB0=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "requires": { + "make-iterator": "1.0.1" + } + }, + "arr-pluck": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/arr-pluck/-/arr-pluck-0.1.0.tgz", + "integrity": "sha1-+K1tcI+HkAiB4jr9gw1SKQp2Z3U=", + "requires": { + "arr-map": "2.0.2" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-sort": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-0.1.4.tgz", + "integrity": "sha512-BNcM+RXxndPxiZ2rd76k6nyQLRZr2/B/sdi8pQ+Joafr5AH279L40dfokSUTp8O+AaqYjXWhblBWa2st2nc4fQ==", + "requires": { + "default-compare": "1.0.0", + "get-value": "2.0.6", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "arrayify-compact": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/arrayify-compact/-/arrayify-compact-0.2.0.tgz", + "integrity": "sha1-RZFw4VXKErtRRISDnJ1xUHyA7E0=", + "requires": { + "arr-flatten": "1.1.0" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "assemble-core": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/assemble-core/-/assemble-core-0.25.0.tgz", + "integrity": "sha1-ZZF7/K+c1rFNm5HQMaDdmar0OWQ=", + "requires": { + "assemble-fs": "0.6.0", + "assemble-render-file": "0.7.2", + "assemble-streams": "0.6.0", + "base-task": "0.6.2", + "define-property": "0.2.5", + "lazy-cache": "2.0.2", + "templates": "0.24.3" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "assemble-fs": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/assemble-fs/-/assemble-fs-0.6.0.tgz", + "integrity": "sha1-uky+t0tdG97m1SipZa07fZbe8Og=", + "requires": { + "assemble-handle": "0.1.4", + "extend-shallow": "2.0.1", + "is-valid-app": "0.2.1", + "lazy-cache": "2.0.2", + "stream-combiner": "0.2.2", + "through2": "2.0.3", + "vinyl-fs": "2.4.4" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "assemble-handle": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/assemble-handle/-/assemble-handle-0.1.4.tgz", + "integrity": "sha1-6De1uyPnXJsFJX2AfhYvaSzOIW4=", + "requires": { + "through2": "2.0.3" + } + }, + "assemble-loader": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/assemble-loader/-/assemble-loader-0.6.1.tgz", + "integrity": "sha1-0GmqZBhOFzKEP+HsGAghI1dpVdg=", + "requires": { + "extend-shallow": "2.0.1", + "file-contents": "0.2.4", + "fs-exists-sync": "0.1.0", + "has-glob": "0.1.1", + "is-registered": "0.1.5", + "is-valid-glob": "0.3.0", + "is-valid-instance": "0.1.0", + "isobject": "2.1.0", + "lazy-cache": "2.0.2", + "load-templates": "0.11.4" + }, + "dependencies": { + "is-valid-instance": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", + "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", + "requires": { + "isobject": "2.1.0", + "pascalcase": "0.1.1" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "assemble-render-file": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/assemble-render-file/-/assemble-render-file-0.7.2.tgz", + "integrity": "sha1-g6qV9e131ctK6oq8dPIkoVRVccY=", + "requires": { + "debug": "2.6.9", + "is-valid-app": "0.1.2", + "lazy-cache": "2.0.2", + "mixin-deep": "1.3.1", + "through2": "2.0.3" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "is-valid-app": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.1.2.tgz", + "integrity": "sha1-L2fLs7r2TWWccNBD/JETm1qLlZA=", + "requires": { + "debug": "2.6.9", + "is-registered": "0.1.5", + "is-valid-instance": "0.1.0", + "lazy-cache": "2.0.2" + } + }, + "is-valid-instance": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", + "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", + "requires": { + "isobject": "2.1.0", + "pascalcase": "0.1.1" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "assemble-streams": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/assemble-streams/-/assemble-streams-0.6.0.tgz", + "integrity": "sha1-kOkhaoNpltJoNwvtrHG7MdjJq18=", + "requires": { + "assemble-handle": "0.1.4", + "is-registered": "0.1.5", + "is-valid-instance": "0.1.0", + "lazy-cache": "2.0.2", + "match-file": "0.2.2", + "src-stream": "0.1.1", + "through2": "2.0.3" + }, + "dependencies": { + "is-valid-instance": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", + "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", + "requires": { + "isobject": "2.1.0", + "pascalcase": "0.1.1" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "assign-deep": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/assign-deep/-/assign-deep-0.4.7.tgz", + "integrity": "sha512-tYlXoIH6RM2rclkx9uLXDKPKrDGsnxoWHE2J5+9tq2StAXeAAo8hLPZtOqwt22p8r6H5hnMgd8Oz8qPJl3W31g==", + "requires": { + "assign-symbols": "0.1.1", + "is-primitive": "2.0.0", + "kind-of": "5.1.0" + }, + "dependencies": { + "assign-symbols": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-0.1.1.tgz", + "integrity": "sha1-ywJZRO9OyKNpPwhunhEsdOOg/tk=" + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" + }, + "async-array-reduce": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/async-array-reduce/-/async-array-reduce-0.2.1.tgz", + "integrity": "sha1-yL4BCitc0A3qlsgRFgNGk9/dgtE=" + }, + "async-done": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.2.4.tgz", + "integrity": "sha512-mxc+yISkb0vjsuvG3dJCIZXzRWjKndQ9Zo9zNDJ1K2wh9eP0E0oGmOWm+4cFOvW4dA0tGFImTW5tQJHCtn1kIQ==", + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0", + "process-nextick-args": "1.0.7", + "stream-exhaust": "1.0.2" + }, + "dependencies": { + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + } + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + }, + "async-each-series": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz", + "integrity": "sha1-9C/YFV048hpbjqB8KOBj7RcAsTg=" + }, + "async-helpers": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/async-helpers/-/async-helpers-0.3.17.tgz", + "integrity": "sha512-LfgCyvmK6ZiC7pyqOgli2zfkWL4HYbEb+HXvGgdmqVBgsOOtQz5rSF8Ii/H/1cNNtrfj1KsdZE/lUMeIY3Qcwg==", + "requires": { + "co": "4.6.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "async-settle": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-0.2.1.tgz", + "integrity": "sha1-dnRi1XOACNx16sQkYiNSjyE3E5Y=", + "requires": { + "async-done": "0.4.0" + }, + "dependencies": { + "async-done": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-0.4.0.tgz", + "integrity": "sha1-q4BT9fYikPi/xY83zZtzBwszB7k=", + "requires": { + "end-of-stream": "0.1.5", + "next-tick": "0.2.2", + "once": "1.4.0", + "stream-exhaust": "1.0.2" + } + }, + "end-of-stream": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "requires": { + "once": "1.3.3" + }, + "dependencies": { + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "requires": { + "wrappy": "1.0.2" + } + } + } + } + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "babel-eslint": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.5", + "regenerator-runtime": "0.11.1" + }, + "dependencies": { + "core-js": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", + "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=" + } + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.10" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "bach": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-0.5.0.tgz", + "integrity": "sha1-P/pqN0F3PrwNJL5f2kvF6FtbHaE=", + "requires": { + "async-done": "1.2.4", + "async-settle": "0.2.1", + "lodash.filter": "4.6.0", + "lodash.flatten": "4.4.0", + "lodash.foreach": "4.5.0", + "lodash.initial": "4.1.1", + "lodash.last": "3.0.0", + "lodash.map": "4.6.0", + "now-and-later": "0.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "base-argv": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/base-argv/-/base-argv-0.4.5.tgz", + "integrity": "sha1-BalXHNwnaUDeGW/8h07uuJnLED0=", + "requires": { + "arr-diff": "2.0.0", + "arr-union": "3.1.0", + "debug": "2.6.9", + "define-property": "0.2.5", + "expand-args": "0.4.3", + "extend-shallow": "2.0.1", + "lazy-cache": "1.0.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "base-cli": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/base-cli/-/base-cli-0.5.0.tgz", + "integrity": "sha1-U+Zdjg9bKKoRBo/sjdTpXXLvPOg=", + "requires": { + "base-argv": "0.4.5", + "base-config": "0.5.2" + } + }, + "base-cli-process": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/base-cli-process/-/base-cli-process-0.1.19.tgz", + "integrity": "sha1-Mg08gVTfcQltSBgY52/m1+R5NjY=", + "requires": { + "arr-union": "3.1.0", + "arrayify-compact": "0.2.0", + "base-cli": "0.5.0", + "base-cli-schema": "0.1.19", + "base-config-process": "0.1.9", + "base-cwd": "0.3.4", + "base-option": "0.8.4", + "base-pkg": "0.2.5", + "debug": "2.6.9", + "export-files": "2.1.1", + "fs-exists-sync": "0.1.0", + "is-valid-app": "0.2.1", + "kind-of": "3.2.2", + "lazy-cache": "2.0.2", + "log-utils": "0.2.1", + "merge-deep": "3.0.1", + "mixin-deep": "1.3.1", + "object.pick": "1.3.0", + "pad-right": "0.2.2", + "union-value": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "base-cli-schema": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/base-cli-schema/-/base-cli-schema-0.1.19.tgz", + "integrity": "sha1-gfQYL0zwu4NnHxF2PknLBbkugkE=", + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.2.1", + "debug": "2.6.9", + "define-property": "0.2.5", + "export-files": "2.1.1", + "extend-shallow": "2.0.1", + "falsey": "0.3.2", + "fs-exists-sync": "0.1.0", + "has-glob": "0.1.1", + "has-value": "0.3.1", + "kind-of": "3.2.2", + "lazy-cache": "2.0.2", + "map-schema": "0.2.4", + "merge-deep": "3.0.1", + "mixin-deep": "1.3.1", + "resolve": "1.7.1", + "tableize-object": "0.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "base-compose": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/base-compose/-/base-compose-0.2.1.tgz", + "integrity": "sha1-reSal/WiRIvVa8s0C090aMb74tc=", + "requires": { + "copy-task": "0.1.0", + "lazy-cache": "2.0.2", + "mixin-deep": "1.3.1" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "base-config": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/base-config/-/base-config-0.5.2.tgz", + "integrity": "sha1-q2A8AdExWL4uYux3/7Ix4o9Ijh8=", + "requires": { + "isobject": "2.1.0", + "lazy-cache": "1.0.4", + "map-config": "0.5.0", + "resolve-dir": "0.1.1" + } + }, + "base-config-process": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/base-config-process/-/base-config-process-0.1.9.tgz", + "integrity": "sha1-imOmGYnuY1UMyM/cP2wCdf2gtG4=", + "requires": { + "base-config": "0.5.2", + "base-config-schema": "0.1.24", + "base-cwd": "0.3.4", + "base-option": "0.8.4", + "debug": "2.6.9", + "export-files": "2.1.1", + "is-valid-app": "0.2.1", + "lazy-cache": "2.0.2", + "micromatch": "2.3.11", + "mixin-deep": "1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "base-config-schema": { + "version": "0.1.24", + "resolved": "https://registry.npmjs.org/base-config-schema/-/base-config-schema-0.1.24.tgz", + "integrity": "sha1-T74UvsVtwa7ef+3QaSjpGfhyH6k=", + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "base-pkg": "0.2.5", + "camel-case": "3.0.0", + "debug": "2.6.9", + "define-property": "1.0.0", + "export-files": "2.1.1", + "extend-shallow": "2.0.1", + "has-glob": "1.0.0", + "has-value": "0.3.1", + "inflection": "1.12.0", + "kind-of": "3.2.2", + "lazy-cache": "2.0.2", + "load-templates": "1.0.2", + "map-schema": "0.2.4", + "matched": "0.4.4", + "mixin-deep": "1.3.1", + "resolve": "1.7.1" + }, + "dependencies": { + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=" + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "file-contents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/file-contents/-/file-contents-1.0.1.tgz", + "integrity": "sha1-ryW7/T00RjhPrYBmSdiAi8/uHsg=", + "requires": { + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "is-buffer": "1.1.6", + "kind-of": "3.2.2", + "lazy-cache": "2.0.2", + "strip-bom-buffer": "0.1.1", + "strip-bom-string": "0.1.2", + "through2": "2.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + } + }, + "has-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz", + "integrity": "sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc=", + "requires": { + "is-glob": "3.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + }, + "load-templates": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/load-templates/-/load-templates-1.0.2.tgz", + "integrity": "sha1-CfOOlcjvS/t4W9f8qOv9MrIwvIc=", + "requires": { + "extend-shallow": "2.0.1", + "file-contents": "1.0.1", + "glob-parent": "3.1.0", + "is-glob": "3.1.0", + "kind-of": "3.2.2", + "lazy-cache": "2.0.2", + "matched": "0.4.4", + "vinyl": "2.1.0" + } + }, + "matched": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/matched/-/matched-0.4.4.tgz", + "integrity": "sha1-Vte36xgDPwz5vFLrIJD6x9weifo=", + "requires": { + "arr-union": "3.1.0", + "async-array-reduce": "0.2.1", + "extend-shallow": "2.0.1", + "fs-exists-sync": "0.1.0", + "glob": "7.1.2", + "has-glob": "0.1.1", + "is-valid-glob": "0.3.0", + "lazy-cache": "2.0.2", + "resolve-dir": "0.1.1" + }, + "dependencies": { + "has-glob": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-0.1.1.tgz", + "integrity": "sha1-omHEwqbGZ+DHe3AKfyl8Oe86pYk=", + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + } + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "vinyl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", + "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", + "requires": { + "clone": "2.1.1", + "clone-buffer": "1.0.0", + "clone-stats": "1.0.0", + "cloneable-readable": "1.1.2", + "remove-trailing-separator": "1.1.0", + "replace-ext": "1.0.0" + } + } + } + }, + "base-cwd": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/base-cwd/-/base-cwd-0.3.4.tgz", + "integrity": "sha1-TQCrY1CgRuGtSrnCMm2heUs+TwE=", + "requires": { + "empty-dir": "0.2.1", + "find-pkg": "0.1.2", + "is-valid-app": "0.2.1" + } + }, + "base-data": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/base-data/-/base-data-0.6.2.tgz", + "integrity": "sha512-wH2ViG6CUO2AaeHSEt6fJTyQAk5gl0oY456DoSC5h8mnHrWUbvdctMCuF53CXgBmi0oalZQppKNH0iamG5+uqw==", + "requires": { + "arr-flatten": "1.1.0", + "cache-base": "1.0.1", + "extend-shallow": "2.0.1", + "get-value": "2.0.6", + "has-glob": "1.0.0", + "has-value": "1.0.0", + "is-registered": "0.1.5", + "is-valid-app": "0.3.0", + "kind-of": "5.1.0", + "lazy-cache": "2.0.2", + "merge-value": "1.0.0", + "mixin-deep": "1.3.1", + "read-file": "0.2.0", + "resolve-glob": "1.0.0", + "set-value": "2.0.0", + "union-value": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "has-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz", + "integrity": "sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc=", + "requires": { + "is-glob": "3.1.0" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-valid-app": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.3.0.tgz", + "integrity": "sha1-eBBrdR88oyOF+0VJK/KUF7WZPIA=", + "requires": { + "debug": "2.6.9", + "is-registered": "0.1.5", + "is-valid-instance": "0.3.0", + "lazy-cache": "2.0.2" + } + }, + "is-valid-instance": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.3.0.tgz", + "integrity": "sha1-9KxzAjxNTYubw7PsPmZjBRbijp4=", + "requires": { + "isobject": "3.0.1", + "pascalcase": "0.1.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + } + } + } + }, + "base-engines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/base-engines/-/base-engines-0.2.1.tgz", + "integrity": "sha1-aXgAyoq4iKM3iXONv6zLgYoqWns=", + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "engine-cache": "0.19.4", + "is-valid-app": "0.1.2", + "lazy-cache": "2.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "is-valid-app": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.1.2.tgz", + "integrity": "sha1-L2fLs7r2TWWccNBD/JETm1qLlZA=", + "requires": { + "debug": "2.6.9", + "is-registered": "0.1.5", + "is-valid-instance": "0.1.0", + "lazy-cache": "2.0.2" + } + }, + "is-valid-instance": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", + "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", + "requires": { + "isobject": "2.1.0", + "pascalcase": "0.1.1" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "base-env": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/base-env/-/base-env-0.3.0.tgz", + "integrity": "sha1-a6t5ZzKTMm34X6YfVRaG9MLx9HI=", + "requires": { + "base-namespace": "0.2.0", + "contains-path": "0.1.0", + "debug": "2.6.9", + "extend-shallow": "2.0.1", + "fs-exists-sync": "0.1.0", + "global-modules": "0.2.3", + "is-absolute": "0.2.6", + "is-valid-app": "0.1.2", + "is-valid-instance": "0.1.0", + "kind-of": "3.2.2", + "lazy-cache": "2.0.2", + "os-homedir": "1.0.2", + "resolve-file": "github:jonschlinkert/resolve-file#261082c95a5f407c43d82797c13bae3527462842" + }, + "dependencies": { + "cwd": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", + "integrity": "sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc=", + "requires": { + "find-pkg": "0.1.2", + "fs-exists-sync": "0.1.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "requires": { + "os-homedir": "1.0.2" + } + }, + "is-valid-app": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.1.2.tgz", + "integrity": "sha1-L2fLs7r2TWWccNBD/JETm1qLlZA=", + "requires": { + "debug": "2.6.9", + "is-registered": "0.1.5", + "is-valid-instance": "0.1.0", + "lazy-cache": "2.0.2" + } + }, + "is-valid-instance": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", + "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", + "requires": { + "isobject": "2.1.0", + "pascalcase": "0.1.1" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + }, + "resolve-file": { + "version": "github:jonschlinkert/resolve-file#261082c95a5f407c43d82797c13bae3527462842", + "requires": { + "cwd": "0.10.0", + "expand-tilde": "1.2.2", + "extend-shallow": "2.0.1", + "fs-exists-sync": "0.1.0", + "global-modules": "0.2.3", + "lazy-cache": "2.0.2", + "os-homedir": "1.0.2", + "resolve": "1.7.1" + } + } + } + }, + "base-generators": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/base-generators/-/base-generators-0.4.6.tgz", + "integrity": "sha1-4amTYh5bRCr44MgRMVoyb5h8nqY=", + "requires": { + "async-each-series": "1.1.0", + "base-compose": "0.2.1", + "base-cwd": "0.3.4", + "base-data": "0.6.2", + "base-env": "0.3.0", + "base-option": "0.8.4", + "base-pkg": "0.2.5", + "base-plugins": "0.4.13", + "base-task": "0.6.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "global-modules": "0.2.3", + "is-valid-app": "0.2.1", + "is-valid-instance": "0.2.0", + "kind-of": "3.2.2", + "lazy-cache": "2.0.2", + "mixin-deep": "1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "base-helpers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/base-helpers/-/base-helpers-0.1.1.tgz", + "integrity": "sha1-2k4eKy+ACOzc6T8R79223gYzP7M=", + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "is-valid-app": "0.1.2", + "lazy-cache": "2.0.2", + "load-helpers": "0.2.11" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "is-valid-app": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.1.2.tgz", + "integrity": "sha1-L2fLs7r2TWWccNBD/JETm1qLlZA=", + "requires": { + "debug": "2.6.9", + "is-registered": "0.1.5", + "is-valid-instance": "0.1.0", + "lazy-cache": "2.0.2" + } + }, + "is-valid-instance": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", + "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", + "requires": { + "isobject": "2.1.0", + "pascalcase": "0.1.1" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "base-namespace": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/base-namespace/-/base-namespace-0.2.0.tgz", + "integrity": "sha1-RLLLumZ1Y8xE5trrTv5AO7CrPaA=", + "requires": { + "is-valid-app": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "is-valid-app": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.1.2.tgz", + "integrity": "sha1-L2fLs7r2TWWccNBD/JETm1qLlZA=", + "requires": { + "debug": "2.6.9", + "is-registered": "0.1.5", + "is-valid-instance": "0.1.0", + "lazy-cache": "2.0.2" + } + }, + "is-valid-instance": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", + "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", + "requires": { + "isobject": "2.1.0", + "pascalcase": "0.1.1" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "base-option": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/base-option/-/base-option-0.8.4.tgz", + "integrity": "sha1-EUF/qSRPInpNU3tNKRcjRieH1cc=", + "requires": { + "define-property": "0.2.5", + "get-value": "2.0.6", + "is-valid-app": "0.2.1", + "isobject": "2.1.0", + "lazy-cache": "2.0.2", + "mixin-deep": "1.3.1", + "option-cache": "3.5.0", + "set-value": "0.3.3" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "base-pkg": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/base-pkg/-/base-pkg-0.2.5.tgz", + "integrity": "sha512-/POxajlgBhVsknwLXnqnbp//bAMh7SkDgHF+z/uoYnFqk46e05c3MxSEmn5vFCB8g4rHHKxAPLKrU/4Yb3vUdA==", + "requires": { + "cache-base": "1.0.1", + "debug": "2.6.9", + "define-property": "1.0.0", + "expand-pkg": "0.1.8", + "extend-shallow": "2.0.1", + "is-valid-app": "0.3.0", + "log-utils": "0.2.1", + "pkg-store": "0.2.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "is-valid-app": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.3.0.tgz", + "integrity": "sha1-eBBrdR88oyOF+0VJK/KUF7WZPIA=", + "requires": { + "debug": "2.6.9", + "is-registered": "0.1.5", + "is-valid-instance": "0.3.0", + "lazy-cache": "2.0.2" + } + }, + "is-valid-instance": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.3.0.tgz", + "integrity": "sha1-9KxzAjxNTYubw7PsPmZjBRbijp4=", + "requires": { + "isobject": "3.0.1", + "pascalcase": "0.1.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "base-plugins": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/base-plugins/-/base-plugins-0.4.13.tgz", + "integrity": "sha1-kd8XjcN/hoQt6ihteeSPuGtarD0=", + "requires": { + "define-property": "0.2.5", + "is-registered": "0.1.5", + "isobject": "2.1.0" + } + }, + "base-questions": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/base-questions/-/base-questions-0.7.4.tgz", + "integrity": "sha1-9k+EgmHtbIKPSYPXgS9A0wN4IUY=", + "requires": { + "base-store": "0.4.4", + "clone-deep": "0.2.4", + "debug": "2.6.9", + "define-property": "0.2.5", + "is-valid-app": "0.2.1", + "isobject": "2.1.0", + "lazy-cache": "2.0.2", + "mixin-deep": "1.3.1", + "question-store": "0.11.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "base-routes": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/base-routes/-/base-routes-0.2.2.tgz", + "integrity": "sha1-CmFNFy1JBF2Mk4dxP4YN88QFNB4=", + "requires": { + "debug": "2.6.9", + "en-route": "0.7.5", + "is-valid-app": "0.2.1", + "lazy-cache": "2.0.2", + "template-error": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "base-runtimes": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/base-runtimes/-/base-runtimes-0.2.0.tgz", + "integrity": "sha1-GI4+ZoJMyxWYsyh7TqW5NaG4UEU=", + "requires": { + "extend-shallow": "2.0.1", + "is-valid-app": "0.2.1", + "lazy-cache": "2.0.2", + "log-utils": "0.1.5", + "micromatch": "2.3.11", + "time-diff": "0.3.1" + }, + "dependencies": { + "ansi-colors": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-0.1.0.tgz", + "integrity": "sha1-M0rDbNPq1wjeXGnhmpjRhkImtD8=", + "requires": { + "ansi-bgblack": "0.1.1", + "ansi-bgblue": "0.1.1", + "ansi-bgcyan": "0.1.1", + "ansi-bggreen": "0.1.1", + "ansi-bgmagenta": "0.1.1", + "ansi-bgred": "0.1.1", + "ansi-bgwhite": "0.1.1", + "ansi-bgyellow": "0.1.1", + "ansi-black": "0.1.1", + "ansi-blue": "0.1.1", + "ansi-bold": "0.1.1", + "ansi-cyan": "0.1.1", + "ansi-dim": "0.1.1", + "ansi-gray": "0.1.1", + "ansi-green": "0.1.1", + "ansi-grey": "0.1.1", + "ansi-hidden": "0.1.1", + "ansi-inverse": "0.1.1", + "ansi-italic": "0.1.1", + "ansi-magenta": "0.1.1", + "ansi-red": "0.1.1", + "ansi-reset": "0.1.1", + "ansi-strikethrough": "0.1.1", + "ansi-underline": "0.1.1", + "ansi-white": "0.1.1", + "ansi-yellow": "0.1.1", + "lazy-cache": "0.2.7" + }, + "dependencies": { + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + } + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + }, + "log-utils": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/log-utils/-/log-utils-0.1.5.tgz", + "integrity": "sha1-3g84+Vf0zW69Xctoddijua4HT3c=", + "requires": { + "ansi-colors": "0.1.0", + "error-symbol": "0.1.0", + "info-symbol": "0.1.0", + "log-ok": "0.1.1", + "success-symbol": "0.1.0", + "time-stamp": "1.1.0", + "warning-symbol": "0.1.0" + } + } + } + }, + "base-store": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/base-store/-/base-store-0.4.4.tgz", + "integrity": "sha1-JY32uKYu4G/xUADJSdD9fCi68mY=", + "requires": { + "data-store": "0.16.1", + "debug": "2.6.9", + "extend-shallow": "2.0.1", + "is-registered": "0.1.5", + "is-valid-instance": "0.1.0", + "lazy-cache": "2.0.2", + "project-name": "0.2.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "is-valid-instance": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", + "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", + "requires": { + "isobject": "2.1.0", + "pascalcase": "0.1.1" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "base-task": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/base-task/-/base-task-0.6.2.tgz", + "integrity": "sha1-Rn1guuBzezuJab/1f6RElJiZgcA=", + "requires": { + "composer": "0.13.0", + "is-valid-app": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "is-valid-app": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.1.2.tgz", + "integrity": "sha1-L2fLs7r2TWWccNBD/JETm1qLlZA=", + "requires": { + "debug": "2.6.9", + "is-registered": "0.1.5", + "is-valid-instance": "0.1.0", + "lazy-cache": "2.0.2" + } + }, + "is-valid-instance": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", + "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", + "requires": { + "isobject": "2.1.0", + "pascalcase": "0.1.1" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "basic-auth": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", + "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", + "requires": { + "safe-buffer": "5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + } + } + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "browser-fingerprint": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/browser-fingerprint/-/browser-fingerprint-0.0.1.tgz", + "integrity": "sha1-jfPNyiW/fVs1QtYVRdcwBT/OYEo=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + } + } + } + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash.assignin": "4.2.0", + "lodash.bind": "4.2.1", + "lodash.defaults": "4.2.0", + "lodash.filter": "4.6.0", + "lodash.flatten": "4.4.0", + "lodash.foreach": "4.5.0", + "lodash.map": "4.6.0", + "lodash.merge": "4.6.1", + "lodash.pick": "4.4.0", + "lodash.reduce": "4.6.0", + "lodash.reject": "4.6.0", + "lodash.some": "4.6.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.2.2", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "requires": { + "restore-cursor": "1.0.1" + } + }, + "cli-width": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-1.1.1.tgz", + "integrity": "sha1-pNKT72frt7iNSk1CwMzwDE0eNm0=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" + }, + "clone-deep": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", + "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", + "requires": { + "for-own": "0.1.5", + "is-plain-object": "2.0.4", + "kind-of": "3.2.2", + "lazy-cache": "1.0.4", + "shallow-clone": "0.1.2" + } + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" + }, + "cloneable-readable": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "requires": { + "inherits": "2.0.3", + "process-nextick-args": "2.0.0", + "readable-stream": "2.3.6" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "command-exists": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.6.tgz", + "integrity": "sha512-Qst/zUUNmS/z3WziPxyqjrcz09pm+2Knbs5mAZL4VAE0sSrNY1/w8+/YxeHcoBTsO6iojA6BW7eFf27Eg2MRuw==" + }, + "common-config": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/common-config/-/common-config-0.1.0.tgz", + "integrity": "sha1-0fGnQa+gy/al7wl1K9/C5nfYtO8=", + "requires": { + "composer": "0.13.0", + "data-store": "0.16.1", + "get-value": "2.0.6", + "lazy-cache": "2.0.2", + "log-utils": "0.2.1", + "object.pick": "1.3.0", + "omit-empty": "0.4.1", + "question-cache": "0.4.0", + "set-value": "0.3.3", + "strip-color": "0.1.0", + "tableize-object": "0.1.0", + "text-table": "0.2.0", + "yargs-parser": "2.4.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + }, + "question-cache": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/question-cache/-/question-cache-0.4.0.tgz", + "integrity": "sha1-4rmTf8X7fcYPu58QXx+iVLM96n0=", + "requires": { + "arr-flatten": "1.1.0", + "arr-union": "3.1.0", + "async": "1.5.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "get-value": "2.0.6", + "has-value": "0.3.1", + "inquirer2": "0.1.1", + "is-answer": "0.1.1", + "isobject": "2.1.0", + "lazy-cache": "1.0.4", + "mixin-deep": "1.3.1", + "omit-empty": "0.3.6", + "option-cache": "3.5.0", + "os-homedir": "1.0.2", + "project-name": "0.2.6", + "set-value": "0.3.3", + "to-choices": "0.2.0", + "use": "1.1.2" + }, + "dependencies": { + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "omit-empty": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/omit-empty/-/omit-empty-0.3.6.tgz", + "integrity": "sha1-bThAXyqmHJEetQT+aIBcVm2FwxY=", + "requires": { + "has-values": "0.1.4", + "is-date-object": "1.0.1", + "isobject": "2.1.0", + "reduce-object": "0.1.3" + } + } + } + } + } + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "composer": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/composer/-/composer-0.13.0.tgz", + "integrity": "sha1-HbyxXxmpBt7uSanD0TfmVLvG0OI=", + "requires": { + "array-unique": "0.2.1", + "bach": "0.5.0", + "co": "4.6.0", + "component-emitter": "1.2.1", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "is-generator": "1.0.3", + "is-glob": "2.0.1", + "isobject": "2.1.0", + "lazy-cache": "2.0.2", + "micromatch": "2.3.11", + "nanoseconds": "0.1.0" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "compressible": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", + "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", + "requires": { + "mime-db": "1.33.0" + } + }, + "compression": { + "version": "1.7.2", + "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", + "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", + "requires": { + "accepts": "1.3.5", + "bytes": "3.0.0", + "compressible": "2.0.13", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "copy-task": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/copy-task/-/copy-task-0.1.0.tgz", + "integrity": "sha1-TDT+muVPKq9gntMvhbj3l6H0arY=" + }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "requires": { + "lru-cache": "4.1.2", + "which": "1.3.0" + } + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=" + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" + }, + "cuid": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/cuid/-/cuid-1.3.8.tgz", + "integrity": "sha1-S4deCWm612T37AcGz0T1+wgx9rc=", + "requires": { + "browser-fingerprint": "0.0.1", + "core-js": "1.2.7", + "node-fingerprint": "0.0.2" + } + }, + "cwd": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.9.1.tgz", + "integrity": "sha1-QeEKfhq4M9xZwuyoOBTH3ne1pP0=", + "requires": { + "find-pkg": "0.1.2" + } + }, + "data-store": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/data-store/-/data-store-0.16.1.tgz", + "integrity": "sha1-5pwDpcrBXR/zPwJUyWeDZT5ogwQ=", + "requires": { + "cache-base": "0.8.5", + "clone-deep": "0.2.4", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "graceful-fs": "4.1.11", + "has-own-deep": "0.1.4", + "lazy-cache": "2.0.2", + "mkdirp": "0.5.1", + "project-name": "0.2.6", + "resolve-dir": "0.1.1", + "rimraf": "2.6.2", + "union-value": "0.2.4" + }, + "dependencies": { + "cache-base": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-0.8.5.tgz", + "integrity": "sha1-YM6zUEAh7O7HAR/TOEt/TpVym/o=", + "requires": { + "collection-visit": "0.2.3", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "0.3.1", + "isobject": "3.0.1", + "lazy-cache": "2.0.2", + "set-value": "0.4.3", + "to-object-path": "0.3.0", + "union-value": "0.2.4", + "unset-value": "0.1.2" + } + }, + "collection-visit": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-0.2.3.tgz", + "integrity": "sha1-L2JIPK7MlfCDuaRUo+6eYTmteVc=", + "requires": { + "lazy-cache": "2.0.2", + "map-visit": "0.1.5", + "object-visit": "0.3.4" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + }, + "map-visit": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-0.1.5.tgz", + "integrity": "sha1-2+Q5J85VJbgN/BVzpE1oxR8mgWs=", + "requires": { + "lazy-cache": "2.0.2", + "object-visit": "0.3.4" + } + }, + "object-visit": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-0.3.4.tgz", + "integrity": "sha1-rhXPhvCy/dVRdxY2RIRSxUw9qCk=", + "requires": { + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "7.1.2" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + }, + "union-value": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz", + "integrity": "sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA=", + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + } + }, + "unset-value": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-0.1.2.tgz", + "integrity": "sha1-UGgQuGfyfCpabpsEgzYx9t5Y0xA=", + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + } + } + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "deep-bind": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/deep-bind/-/deep-bind-0.3.0.tgz", + "integrity": "sha1-lcMd2Eoc0bOBEZosQu25DbSFvDM=", + "requires": { + "mixin-deep": "1.3.1" + } + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "requires": { + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "delimiter-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/delimiter-regex/-/delimiter-regex-2.0.0.tgz", + "integrity": "sha1-DQ9vYdmRVZH9Qwh6jpWF0+IRWnU=", + "requires": { + "extend-shallow": "1.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "requires": { + "kind-of": "1.1.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=" + } + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + }, + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "duplexify": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", + "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "2.5.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.9.tgz", + "integrity": "sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ==" + }, + "empty-dir": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/empty-dir/-/empty-dir-0.2.1.tgz", + "integrity": "sha1-gJ7kih60rRy1EMJXLWb9DthNAas=", + "requires": { + "fs-exists-sync": "0.1.0" + } + }, + "en-route": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/en-route/-/en-route-0.7.5.tgz", + "integrity": "sha1-6CMOc4NsXpXGdX4EQtPBExJL3Zg=", + "requires": { + "arr-flatten": "1.1.0", + "debug": "2.6.9", + "extend-shallow": "2.0.1", + "kind-of": "3.2.2", + "lazy-cache": "1.0.4", + "path-to-regexp": "1.7.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "1.4.0" + } + }, + "engine": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/engine/-/engine-0.1.12.tgz", + "integrity": "sha1-+H6MkLuAzT9YWXrFaVk+5G2idC0=", + "requires": { + "assign-deep": "0.4.7", + "collection-visit": "0.2.3", + "get-value": "1.3.1", + "kind-of": "2.0.1", + "lazy-cache": "0.2.7", + "object.omit": "2.0.1", + "set-value": "0.2.0" + }, + "dependencies": { + "collection-visit": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-0.2.3.tgz", + "integrity": "sha1-L2JIPK7MlfCDuaRUo+6eYTmteVc=", + "requires": { + "lazy-cache": "2.0.2", + "map-visit": "0.1.5", + "object-visit": "0.3.4" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "get-value": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-1.3.1.tgz", + "integrity": "sha1-isfvTyA4I5KyZGVI+bmtLcbIlkI=", + "requires": { + "arr-flatten": "1.1.0", + "is-extendable": "0.1.1", + "lazy-cache": "0.2.7", + "noncharacters": "1.1.0" + } + }, + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + }, + "map-visit": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-0.1.5.tgz", + "integrity": "sha1-2+Q5J85VJbgN/BVzpE1oxR8mgWs=", + "requires": { + "lazy-cache": "2.0.2", + "object-visit": "0.3.4" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "object-visit": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-0.3.4.tgz", + "integrity": "sha1-rhXPhvCy/dVRdxY2RIRSxUw9qCk=", + "requires": { + "isobject": "2.1.0" + } + }, + "set-value": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.2.0.tgz", + "integrity": "sha1-c7CmglwVjGoWqCu9yVd1vyqCX6s=", + "requires": { + "isobject": "1.0.2", + "noncharacters": "1.1.0" + }, + "dependencies": { + "isobject": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz", + "integrity": "sha1-8Pm4zpLdVA+gdAiC44NaLgIux4o=" + } + } + } + } + }, + "engine-base": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/engine-base/-/engine-base-0.1.3.tgz", + "integrity": "sha1-1ZycxS591t0rSa579ftEmU9wFqU=", + "requires": { + "component-emitter": "1.2.1", + "delimiter-regex": "2.0.0", + "engine": "0.1.12", + "engine-utils": "0.1.1", + "lazy-cache": "2.0.2", + "mixin-deep": "1.3.1", + "object.omit": "2.0.1", + "object.pick": "1.3.0" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "engine-cache": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/engine-cache/-/engine-cache-0.19.4.tgz", + "integrity": "sha1-giSWb732pl54Dsed+HtrLLgjlbI=", + "requires": { + "async-helpers": "0.3.17", + "extend-shallow": "2.0.1", + "helper-cache": "0.7.2", + "isobject": "3.0.1", + "lazy-cache": "2.0.2", + "mixin-deep": "1.3.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "engine-utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/engine-utils/-/engine-utils-0.1.1.tgz", + "integrity": "sha1-rd9HCN2FoFoyF6l3l+q4oBPE+A4=" + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + }, + "error-symbol": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/error-symbol/-/error-symbol-0.1.0.tgz", + "integrity": "sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" + }, + "expand-args": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/expand-args/-/expand-args-0.4.3.tgz", + "integrity": "sha1-OoZiJBxYF1fIzTf7d2d6xgL/nZg=", + "requires": { + "expand-object": "0.4.2", + "kind-of": "3.2.2", + "lazy-cache": "2.0.2", + "minimist": "1.2.0", + "mixin-deep": "1.3.1", + "omit-empty": "0.4.1", + "set-value": "0.3.3" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-object": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/expand-object/-/expand-object-0.4.2.tgz", + "integrity": "sha1-t/J+9pwv3MYrD5OQwMtHvAa7Buo=", + "requires": { + "get-stdin": "5.0.1", + "is-number": "2.1.0", + "minimist": "1.2.0", + "set-value": "0.3.3" + } + }, + "expand-pkg": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/expand-pkg/-/expand-pkg-0.1.8.tgz", + "integrity": "sha1-JhIwIzQMvABiBsujm4Kh0XbD9oc=", + "requires": { + "component-emitter": "1.2.1", + "debug": "2.6.9", + "export-files": "2.1.1", + "get-value": "2.0.6", + "kind-of": "3.2.2", + "lazy-cache": "2.0.2", + "load-pkg": "3.0.1", + "mixin-deep": "1.3.1", + "normalize-pkg": "0.3.20", + "omit-empty": "0.4.1", + "parse-author": "1.0.0", + "parse-git-config": "1.1.1", + "repo-utils": "0.3.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "2.2.3" + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "1.0.1" + } + }, + "export-files": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/export-files/-/export-files-2.1.1.tgz", + "integrity": "sha1-u/ZFdAU6CeTrmOX0NQHVcrLDzn8=", + "requires": { + "lazy-cache": "1.0.4" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "falsey": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/falsey/-/falsey-0.3.2.tgz", + "integrity": "sha512-lxEuefF5MBIVDmE6XeqCdM4BWk1+vYmGZtkbKZ/VFcg6uBBw6fXNEbWmxCjDdQlFc9hy450nkiWwM3VAW6G1qg==", + "requires": { + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "file-contents": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/file-contents/-/file-contents-0.2.4.tgz", + "integrity": "sha1-BQb3uO/2KvpFrkXaTfnp1H30U8s=", + "requires": { + "extend-shallow": "2.0.1", + "file-stat": "0.1.3", + "graceful-fs": "4.1.11", + "is-buffer": "1.1.6", + "is-utf8": "0.2.1", + "lazy-cache": "0.2.7", + "through2": "2.0.3" + }, + "dependencies": { + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + } + } + }, + "file-is-binary": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-is-binary/-/file-is-binary-1.0.0.tgz", + "integrity": "sha1-XkGAbRvK5FjI/sMv484SLbu8Q1Y=", + "requires": { + "is-binary-buffer": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "file-name": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/file-name/-/file-name-0.1.0.tgz", + "integrity": "sha1-ErEi8SD5w028F2wauBpUis7W3vc=" + }, + "file-stat": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/file-stat/-/file-stat-0.1.3.tgz", + "integrity": "sha1-0PGWHX0QcykoEgpuaVVHHCpbVBE=", + "requires": { + "graceful-fs": "4.1.11", + "lazy-cache": "0.2.7", + "through2": "2.0.3" + }, + "dependencies": { + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + } + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "find-file-up": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz", + "integrity": "sha1-z2gJG8+fMApA2kEbN9pczlovvqA=", + "requires": { + "fs-exists-sync": "0.1.0", + "resolve-dir": "0.1.1" + } + }, + "find-pkg": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz", + "integrity": "sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc=", + "requires": { + "find-file-up": "0.1.3" + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "1.0.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.2.tgz", + "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==", + "optional": true, + "requires": { + "nan": "2.10.0", + "node-pre-gyp": "0.9.1" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "2.2.4" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "optional": true, + "requires": { + "minipass": "2.2.4" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.9.1", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.0", + "nopt": "4.0.1", + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.6", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.6", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "optional": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "optional": true, + "requires": { + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true + } + } + }, + "get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "get-view": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/get-view/-/get-view-0.1.3.tgz", + "integrity": "sha1-NmCsBYuhPfl0nKvKpry5bUGqDqA=", + "requires": { + "isobject": "3.0.1", + "match-file": "0.2.2" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "git-config-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/git-config-path/-/git-config-path-1.0.1.tgz", + "integrity": "sha1-bTP37WPbDQ4RgTFQO6s6ykfVRmQ=", + "requires": { + "extend-shallow": "2.0.1", + "fs-exists-sync": "0.1.0", + "homedir-polyfill": "1.0.1" + } + }, + "git-repo-name": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/git-repo-name/-/git-repo-name-0.6.0.tgz", + "integrity": "sha1-rwmIRlaqU37GJccIcAgXXNYSKP8=", + "requires": { + "cwd": "0.9.1", + "file-name": "0.1.0", + "lazy-cache": "1.0.4", + "remote-origin-url": "0.5.3" + } + }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "optional": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "2.0.1" + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", + "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "requires": { + "extend": "3.0.1", + "glob": "5.0.15", + "glob-parent": "3.1.0", + "micromatch": "2.3.11", + "ordered-read-streams": "0.3.0", + "through2": "0.6.5", + "to-absolute-glob": "0.1.1", + "unique-stream": "2.2.1" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } + } + }, + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "requires": { + "global-prefix": "0.1.5", + "is-windows": "0.2.0" + }, + "dependencies": { + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "requires": { + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "0.2.0", + "which": "1.3.0" + } + }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=" + } + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "2.0.2", + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "1.0.2", + "which": "1.3.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "gray-matter": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-3.1.1.tgz", + "integrity": "sha512-nZ1qjLmayEv0/wt3sHig7I0s3/sJO0dkAaKYQ5YAOApUtYEOonXSFdWvL1khvnZMTvov4UufkqlFsilPnejEXA==", + "requires": { + "extend-shallow": "2.0.1", + "js-yaml": "3.11.0", + "kind-of": "5.1.0", + "strip-bom-string": "1.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" + } + } + }, + "group-array": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/group-array/-/group-array-0.3.3.tgz", + "integrity": "sha1-u9nS9xjfS+M/D7kEMqrxtDYOSY8=", + "requires": { + "arr-flatten": "1.1.0", + "for-own": "0.1.5", + "get-value": "2.0.6", + "kind-of": "3.2.2", + "split-string": "1.0.1", + "union-value": "0.2.4" + }, + "dependencies": { + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + }, + "split-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-1.0.1.tgz", + "integrity": "sha1-vLqz9BUqzuOg1qskecDSh5w9s84=", + "requires": { + "extend-shallow": "2.0.1" + } + }, + "union-value": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz", + "integrity": "sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA=", + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + } + } + } + }, + "gulp-choose-files": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/gulp-choose-files/-/gulp-choose-files-0.1.3.tgz", + "integrity": "sha1-hrFfBjAHOrZz1XJb7sY+qhSFUPk=", + "requires": { + "extend-shallow": "2.0.1", + "question-cache": "0.5.1", + "through2": "2.0.3" + } + }, + "gulp-sourcemaps": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", + "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", + "requires": { + "convert-source-map": "1.5.1", + "graceful-fs": "4.1.11", + "strip-bom": "2.0.0", + "through2": "2.0.3", + "vinyl": "1.2.0" + } + }, + "handy": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/handy/-/handy-0.0.13.tgz", + "integrity": "sha1-gls40+0ozJ+rsGlXWItKiUM8hGc=" + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-glob": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-0.1.1.tgz", + "integrity": "sha1-omHEwqbGZ+DHe3AKfyl8Oe86pYk=", + "requires": { + "is-glob": "2.0.1" + } + }, + "has-own-deep": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-own-deep/-/has-own-deep-0.1.4.tgz", + "integrity": "sha1-kesM2ieAgxWPgEKigxZDTpr+eHY=" + }, + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "helper-cache": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/helper-cache/-/helper-cache-0.7.2.tgz", + "integrity": "sha1-AkVixLS4sqsqtTHQC+FuxJZRi5A=", + "requires": { + "extend-shallow": "2.0.1", + "lazy-cache": "0.2.7", + "lodash.bind": "3.1.0" + }, + "dependencies": { + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + }, + "lodash.bind": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-3.1.0.tgz", + "integrity": "sha1-+V9IY419i7tYVPkIJmUnmZ+/pLs=", + "requires": { + "lodash._createwrapper": "3.2.0", + "lodash._replaceholders": "3.0.0", + "lodash.restparam": "3.6.1" + } + } + } + }, + "hexo": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/hexo/-/hexo-3.7.1.tgz", + "integrity": "sha512-+RRN4C8oWYzEnW0NtqNrIfIITRTvXpMoE6OrK5aK4nrO+4lzp0JfZkoxnsINVXUPmzHRimLWUzO95x9lt33jEg==", + "requires": { + "abbrev": "1.1.1", + "archy": "1.0.0", + "bluebird": "3.5.1", + "chalk": "2.4.1", + "cheerio": "0.22.0", + "hexo-cli": "1.1.0", + "hexo-front-matter": "0.2.3", + "hexo-fs": "0.2.3", + "hexo-i18n": "0.2.1", + "hexo-log": "0.2.0", + "hexo-util": "0.6.3", + "js-yaml": "3.11.0", + "lodash": "4.17.10", + "minimatch": "3.0.4", + "moment": "2.22.1", + "moment-timezone": "0.5.16", + "nunjucks": "3.1.2", + "pretty-hrtime": "1.0.3", + "resolve": "1.7.1", + "strip-ansi": "4.0.0", + "strip-indent": "2.0.0", + "swig-extras": "0.0.1", + "swig-templates": "2.0.2", + "text-table": "0.2.0", + "tildify": "1.2.0", + "titlecase": "1.1.2", + "warehouse": "2.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "hexo-cli": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-1.1.0.tgz", + "integrity": "sha512-IWQPppwgmj1iBUcP5mpcMg3Tre6a8Qlr8ejXw6naZiJNSepSgh4mS3KiNPKDa2qQIgPDqJYJzNVFLw+RLA9CkA==", + "requires": { + "abbrev": "1.1.1", + "bluebird": "3.5.1", + "chalk": "1.1.3", + "command-exists": "1.2.6", + "hexo-fs": "0.2.3", + "hexo-log": "0.2.0", + "hexo-util": "0.6.3", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "resolve": "1.7.1", + "tildify": "1.2.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "hexo-bunyan": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-bunyan/-/hexo-bunyan-1.0.0.tgz", + "integrity": "sha512-RymT8Ck+K77mLt9BEYNb4uyfC7RIQnU5N3laXowMrS28jj2h89VHJCOnhV00mmta4fHRqNa07kP1Hrn17nvMkQ==", + "requires": { + "moment": "2.22.1", + "mv": "2.1.1", + "safe-json-stringify": "1.1.0" + } + }, + "hexo-deployer-git": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-0.3.1.tgz", + "integrity": "sha512-JSwSmTSknGpaiooGXwmP7sAhoSNW3c+xmBiCc5yyrvRSfQ3zIYWjmcqNXSj8m2DmheqQNgt5D4M7quYjw+L6tA==", + "requires": { + "babel-eslint": "7.2.3", + "bluebird": "3.5.1", + "chalk": "1.1.3", + "hexo-fs": "0.2.3", + "hexo-util": "0.6.3", + "moment": "2.22.1", + "swig": "1.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "source-map": { + "version": "0.1.34", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=", + "requires": { + "amdefine": "1.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "swig": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/swig/-/swig-1.4.2.tgz", + "integrity": "sha1-QIXKBFM2kQS11IPihBs5t64aq6U=", + "requires": { + "optimist": "0.6.1", + "uglify-js": "2.4.24" + } + }, + "uglify-js": { + "version": "2.4.24", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=", + "requires": { + "async": "0.2.10", + "source-map": "0.1.34", + "uglify-to-browserify": "1.0.2", + "yargs": "3.5.4" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, + "yargs": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=", + "requires": { + "camelcase": "1.2.1", + "decamelize": "1.2.0", + "window-size": "0.1.0", + "wordwrap": "0.0.2" + } + } + } + }, + "hexo-front-matter": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-0.2.3.tgz", + "integrity": "sha1-x8qO9CDqNr2F6ECKLoyb9J76YF4=", + "requires": { + "js-yaml": "3.11.0" + } + }, + "hexo-fs": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-0.2.3.tgz", + "integrity": "sha512-rLB1rMVUW3csAljvJgHfyjemL0BrmcUZfBf9hJe6S0pA53igFa3ON0PFwomvoLs1Wdmjs9Awnw9Tru4PjWFSlQ==", + "requires": { + "bluebird": "3.5.1", + "chokidar": "1.7.0", + "escape-string-regexp": "1.0.5", + "graceful-fs": "4.1.11" + } + }, + "hexo-generator-archive": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/hexo-generator-archive/-/hexo-generator-archive-0.1.5.tgz", + "integrity": "sha512-jPbMtibqkJnAX3hCwhYhK3r6cqy9OKQsVEScjk7LDok+iPmFmkKCNdU/OccxGe1CWAZpT+ta4+LknwNeHG2G4w==", + "requires": { + "hexo-pagination": "0.0.2", + "object-assign": "2.1.1" + }, + "dependencies": { + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + } + } + }, + "hexo-generator-category": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/hexo-generator-category/-/hexo-generator-category-0.1.3.tgz", + "integrity": "sha1-uealhiUwqDvdfaTIGcG58+TMtLI=", + "requires": { + "hexo-pagination": "0.0.2", + "object-assign": "2.1.1" + }, + "dependencies": { + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + } + } + }, + "hexo-generator-index": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/hexo-generator-index/-/hexo-generator-index-0.2.1.tgz", + "integrity": "sha1-kEIin8rHmq9wBXXaGTMr8/fuXF0=", + "requires": { + "hexo-pagination": "0.0.2", + "object-assign": "4.1.1" + } + }, + "hexo-generator-tag": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/hexo-generator-tag/-/hexo-generator-tag-0.2.0.tgz", + "integrity": "sha1-xXFYRrtB5X2cIMHWbX2yGhq/emI=", + "requires": { + "hexo-pagination": "0.0.2", + "object-assign": "4.1.1" + } + }, + "hexo-i18n": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-0.2.1.tgz", + "integrity": "sha1-hPFBQyvwnYtVjth4xygWS20c1t4=", + "requires": { + "sprintf-js": "1.0.3" + } + }, + "hexo-log": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-0.2.0.tgz", + "integrity": "sha512-fzoc+GQexxPPILTjoOQILnA3ZG2MFgqMBVel4xvJ11pXptw9+f97ynTgDAExXafyp9Nz2ChXRuqlCYgPtZSlxQ==", + "requires": { + "chalk": "1.1.3", + "hexo-bunyan": "1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "hexo-pagination": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/hexo-pagination/-/hexo-pagination-0.0.2.tgz", + "integrity": "sha1-jPRwx9sN5bGKOSanbesZQBXffys=", + "requires": { + "utils-merge": "1.0.1" + } + }, + "hexo-renderer-ejs": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/hexo-renderer-ejs/-/hexo-renderer-ejs-0.3.1.tgz", + "integrity": "sha512-XN8pYJU+Wr3dT8ipqEPRlOBySJpd1C5NUBBzgZpVSVBC/6L36O0YZI/Qd5NxQqwfGfSuKQ8N5iMyjmRXSR1MdA==", + "requires": { + "ejs": "2.5.9", + "object-assign": "4.1.1" + } + }, + "hexo-renderer-marked": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/hexo-renderer-marked/-/hexo-renderer-marked-0.3.2.tgz", + "integrity": "sha512-joSLeHB0YRkuViIPQlRz4A+zfJKPNHT+rABFgPHiT1zL9eeTUPxoLL4h7kcgOwRLAontVScaxP2Sie15mNitFg==", + "requires": { + "hexo-util": "0.6.3", + "marked": "0.3.19", + "object-assign": "4.1.1", + "strip-indent": "2.0.0" + } + }, + "hexo-renderer-stylus": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/hexo-renderer-stylus/-/hexo-renderer-stylus-0.3.3.tgz", + "integrity": "sha1-xU6ifh/Y48ipp6hM+6itNUEiyn8=", + "requires": { + "nib": "1.1.2", + "stylus": "0.54.5" + } + }, + "hexo-server": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/hexo-server/-/hexo-server-0.2.2.tgz", + "integrity": "sha512-/KkOYMIGylNoMtnlgas84Kw18A60WU3BVfo8ZnTHy8omCsAz2Z+aK6ddR4PpSmTdLeKDsiZj4ZSg86ZQ+FZzrA==", + "requires": { + "bluebird": "3.5.1", + "chalk": "1.1.3", + "compression": "1.7.2", + "connect": "3.6.6", + "mime": "1.6.0", + "morgan": "1.9.0", + "object-assign": "4.1.1", + "opn": "4.0.2", + "serve-static": "1.13.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "hexo-util": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-0.6.3.tgz", + "integrity": "sha512-zPxaqCWZz3/25SAB4FlrRtWktJ+Pr+vBiv/nyHpXKgXPt1m70liViKlRwWLqDmRjJ72x6/k4qCEeXHajvcGHUw==", + "requires": { + "bluebird": "3.5.1", + "camel-case": "3.0.0", + "cross-spawn": "4.0.2", + "highlight.js": "9.12.0", + "html-entities": "1.2.1", + "striptags": "2.2.1" + } + }, + "highlight.js": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", + "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=" + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "requires": { + "parse-passwd": "1.0.0" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + }, + "htmlparser": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/htmlparser/-/htmlparser-1.7.7.tgz", + "integrity": "sha1-GeezmX/2+6yZrlp9J2ZInv5+LQ4=" + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": "1.5.0" + }, + "dependencies": { + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + } + } + }, + "inflection": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", + "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "info-symbol": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/info-symbol/-/info-symbol-0.1.0.tgz", + "integrity": "sha1-J4QdcoZ920JCzWEtecEGM4gcang=" + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inquirer2": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inquirer2/-/inquirer2-0.1.1.tgz", + "integrity": "sha1-vFQkqBQ1fEHmXi6Vf+U2ruqb8fY=", + "requires": { + "ansi-escapes": "1.4.0", + "ansi-regex": "2.1.1", + "arr-flatten": "1.1.0", + "arr-pluck": "0.1.0", + "array-unique": "0.2.1", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "1.1.1", + "extend-shallow": "2.0.1", + "figures": "1.7.0", + "is-number": "2.1.0", + "is-plain-object": "2.0.4", + "lazy-cache": "1.0.4", + "lodash.where": "3.1.0", + "readline2": "1.0.1", + "run-async": "0.1.0", + "rx-lite": "4.0.8", + "strip-color": "0.1.0", + "through2": "2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-absolute": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", + "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", + "requires": { + "is-relative": "0.2.1", + "is-windows": "0.2.0" + }, + "dependencies": { + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=" + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-answer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-answer/-/is-answer-0.1.1.tgz", + "integrity": "sha1-zBwvGG+FzyZQIgveNZ2GIYfUnLY=", + "requires": { + "has-values": "0.1.4", + "is-primitive": "2.0.0", + "omit-empty": "0.4.1" + }, + "dependencies": { + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "is-arguments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.2.tgz", + "integrity": "sha1-B+MK15UxhEF5tkLS2DmUNRgshyc=" + }, + "is-binary-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-binary-buffer/-/is-binary-buffer-1.0.0.tgz", + "integrity": "sha1-vGAxKQtly/eZudlQK1D9U3VSQAc=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-generator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-generator/-/is-generator-1.0.3.tgz", + "integrity": "sha1-wUwhBX7TbjKNuANHlmxpP4hjifM=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-registered": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/is-registered/-/is-registered-0.1.5.tgz", + "integrity": "sha1-HTRpd0GdZl4qxshAE1NWheb3b38=", + "requires": { + "define-property": "0.2.5", + "isobject": "2.1.0" + } + }, + "is-relative": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", + "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", + "requires": { + "is-unc-path": "0.1.2" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-unc-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", + "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", + "requires": { + "unc-path-regex": "0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-valid-app": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.2.1.tgz", + "integrity": "sha1-Zc8ZW71xvXdssWGZHGhCSNZd/4k=", + "requires": { + "debug": "2.6.9", + "is-registered": "0.1.5", + "is-valid-instance": "0.2.0", + "lazy-cache": "2.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "is-valid-glob": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", + "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=" + }, + "is-valid-instance": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.2.0.tgz", + "integrity": "sha1-4an/EQa4y64AB+pqIPidVGoqWg8=", + "requires": { + "isobject": "2.1.0", + "pascalcase": "0.1.1" + } + }, + "is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.0" + } + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "0.0.0" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "layouts": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/layouts/-/layouts-0.11.0.tgz", + "integrity": "sha1-xiDos8uI/IxJLbRTin3VQKTffyI=", + "requires": { + "delimiter-regex": "1.3.1", + "falsey": "0.3.2", + "get-view": "0.1.3", + "lazy-cache": "1.0.4" + }, + "dependencies": { + "delimiter-regex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/delimiter-regex/-/delimiter-regex-1.3.1.tgz", + "integrity": "sha1-Y4XK4UAE28DBzY3//+uGPVGZnv8=", + "requires": { + "extend-shallow": "1.1.4" + } + }, + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "requires": { + "kind-of": "1.1.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=" + } + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "requires": { + "readable-stream": "2.3.6" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-helpers": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/load-helpers/-/load-helpers-0.2.11.tgz", + "integrity": "sha1-9L2LIYQ1wFLl4536dxMinVcepCM=", + "requires": { + "extend-shallow": "2.0.1", + "is-valid-glob": "0.3.0", + "lazy-cache": "2.0.2", + "matched": "0.4.4", + "resolve-dir": "0.1.1" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + }, + "matched": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/matched/-/matched-0.4.4.tgz", + "integrity": "sha1-Vte36xgDPwz5vFLrIJD6x9weifo=", + "requires": { + "arr-union": "3.1.0", + "async-array-reduce": "0.2.1", + "extend-shallow": "2.0.1", + "fs-exists-sync": "0.1.0", + "glob": "7.1.2", + "has-glob": "0.1.1", + "is-valid-glob": "0.3.0", + "lazy-cache": "2.0.2", + "resolve-dir": "0.1.1" + } + } + } + }, + "load-pkg": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/load-pkg/-/load-pkg-3.0.1.tgz", + "integrity": "sha1-kjCzfsBOVpADBgvFiVHj7VCNWU8=", + "requires": { + "find-pkg": "0.1.2" + } + }, + "load-templates": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/load-templates/-/load-templates-0.11.4.tgz", + "integrity": "sha1-zyk977a1hg/1uMRJ2qHAx7tyjek=", + "requires": { + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "glob-parent": "2.0.0", + "has-glob": "0.1.1", + "is-valid-glob": "0.3.0", + "lazy-cache": "2.0.2", + "matched": "0.4.4", + "to-file": "0.2.0" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + }, + "matched": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/matched/-/matched-0.4.4.tgz", + "integrity": "sha1-Vte36xgDPwz5vFLrIJD6x9weifo=", + "requires": { + "arr-union": "3.1.0", + "async-array-reduce": "0.2.1", + "extend-shallow": "2.0.1", + "fs-exists-sync": "0.1.0", + "glob": "7.1.2", + "has-glob": "0.1.1", + "is-valid-glob": "0.3.0", + "lazy-cache": "2.0.2", + "resolve-dir": "0.1.1" + } + } + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + }, + "lodash._arrayfilter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._arrayfilter/-/lodash._arrayfilter-3.0.0.tgz", + "integrity": "sha1-LevhHuxp5dzG9LhhNxKKSPFSQjc=" + }, + "lodash._basecallback": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/lodash._basecallback/-/lodash._basecallback-3.3.1.tgz", + "integrity": "sha1-t7K7Q9whYEJKIczybFfkQ3cqjic=", + "requires": { + "lodash._baseisequal": "3.0.7", + "lodash._bindcallback": "3.0.1", + "lodash.isarray": "3.0.4", + "lodash.pairs": "3.0.1" + } + }, + "lodash._baseeach": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash._baseeach/-/lodash._baseeach-3.0.4.tgz", + "integrity": "sha1-z4cGVyyhROjZ11InyZDamC+TKvM=", + "requires": { + "lodash.keys": "3.1.2" + } + }, + "lodash._basefilter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basefilter/-/lodash._basefilter-3.0.0.tgz", + "integrity": "sha1-S3ZAPfDihtA9Xg9yle00QeEB0SE=", + "requires": { + "lodash._baseeach": "3.0.4" + } + }, + "lodash._baseisequal": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz", + "integrity": "sha1-2AJfdjOdKTQnZ9zIh85cuVpbUfE=", + "requires": { + "lodash.isarray": "3.0.4", + "lodash.istypedarray": "3.0.6", + "lodash.keys": "3.1.2" + } + }, + "lodash._baseismatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lodash._baseismatch/-/lodash._baseismatch-3.1.3.tgz", + "integrity": "sha1-Byj8SO+hFpnT1fLXMEnyqxPED9U=", + "requires": { + "lodash._baseisequal": "3.0.7" + } + }, + "lodash._basematches": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._basematches/-/lodash._basematches-3.2.0.tgz", + "integrity": "sha1-9H4D8H7CB4SrCWjQy2y1l+IQEVg=", + "requires": { + "lodash._baseismatch": "3.1.3", + "lodash.pairs": "3.0.1" + } + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" + }, + "lodash._createwrapper": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._createwrapper/-/lodash._createwrapper-3.2.0.tgz", + "integrity": "sha1-30U+ZkFjIXuJWkVAZa8cR6DqPE0=", + "requires": { + "lodash._root": "3.0.1" + } + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + }, + "lodash._replaceholders": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._replaceholders/-/lodash._replaceholders-3.0.0.tgz", + "integrity": "sha1-iru3EmxDH37XRPe6rznwi8m9nVg=" + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=" + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" + }, + "lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" + }, + "lodash.initial": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.initial/-/lodash.initial-4.1.1.tgz", + "integrity": "sha1-5T9kiRJl3cQE6YbSwo93vtlDWRo=" + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "lodash.istypedarray": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz", + "integrity": "sha1-yaR3SYYHUB2OhJTSg7h8OSgc72I=" + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.last": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash.last/-/lodash.last-3.0.0.tgz", + "integrity": "sha1-JC9mMRLdTG5jcoxgo8kJ0b2tvUw=" + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" + }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" + }, + "lodash.pairs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.pairs/-/lodash.pairs-3.0.1.tgz", + "integrity": "sha1-u+CNV4bu6qCaFckevw3LfSvjJqk=", + "requires": { + "lodash.keys": "3.1.2" + } + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" + }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" + }, + "lodash.where": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.where/-/lodash.where-3.1.0.tgz", + "integrity": "sha1-LnhLnJM2jV11qu4zLOF2Ai8rlVM=", + "requires": { + "lodash._arrayfilter": "3.0.0", + "lodash._basecallback": "3.3.1", + "lodash._basefilter": "3.0.0", + "lodash._basematches": "3.2.0", + "lodash.isarray": "3.0.4" + } + }, + "log-ok": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/log-ok/-/log-ok-0.1.1.tgz", + "integrity": "sha1-vqPdNqzQuKckDXhza1uXxlREozQ=", + "requires": { + "ansi-green": "0.1.1", + "success-symbol": "0.1.0" + } + }, + "log-utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/log-utils/-/log-utils-0.2.1.tgz", + "integrity": "sha1-pMIXoN2aUFFdm5ICBgkas9TgMc8=", + "requires": { + "ansi-colors": "0.2.0", + "error-symbol": "0.1.0", + "info-symbol": "0.1.0", + "log-ok": "0.1.1", + "success-symbol": "0.1.0", + "time-stamp": "1.1.0", + "warning-symbol": "0.1.0" + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "3.0.2" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + }, + "lru-cache": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "map-config": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/map-config/-/map-config-0.5.0.tgz", + "integrity": "sha1-FwJgfiZ696NwyKnQxiumUk/rb+U=", + "requires": { + "array-unique": "0.2.1", + "async": "1.5.2" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + } + } + }, + "map-schema": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/map-schema/-/map-schema-0.2.4.tgz", + "integrity": "sha1-wZVRg0/DwHoEWXt6WvtEpHWvlbQ=", + "requires": { + "arr-union": "3.1.0", + "collection-visit": "0.2.3", + "component-emitter": "1.2.1", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "get-value": "2.0.6", + "is-primitive": "2.0.0", + "kind-of": "3.2.2", + "lazy-cache": "2.0.2", + "log-utils": "0.2.1", + "longest": "1.0.1", + "mixin-deep": "1.3.1", + "object.omit": "2.0.1", + "object.pick": "1.3.0", + "omit-empty": "0.4.1", + "pad-right": "0.2.2", + "set-value": "0.4.3", + "sort-object-arrays": "0.1.1", + "union-value": "0.2.4" + }, + "dependencies": { + "collection-visit": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-0.2.3.tgz", + "integrity": "sha1-L2JIPK7MlfCDuaRUo+6eYTmteVc=", + "requires": { + "lazy-cache": "2.0.2", + "map-visit": "0.1.5", + "object-visit": "0.3.4" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + }, + "map-visit": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-0.1.5.tgz", + "integrity": "sha1-2+Q5J85VJbgN/BVzpE1oxR8mgWs=", + "requires": { + "lazy-cache": "2.0.2", + "object-visit": "0.3.4" + } + }, + "object-visit": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-0.3.4.tgz", + "integrity": "sha1-rhXPhvCy/dVRdxY2RIRSxUw9qCk=", + "requires": { + "isobject": "2.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + }, + "union-value": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz", + "integrity": "sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA=", + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + } + } + } + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "1.0.1" + } + }, + "markdown": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", + "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=", + "requires": { + "nopt": "2.1.2" + } + }, + "marked": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", + "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==" + }, + "match-file": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/match-file/-/match-file-0.2.2.tgz", + "integrity": "sha1-Jua88bOQpmH2Em+visUB4z7M+uk=", + "requires": { + "is-glob": "3.1.0", + "isobject": "3.0.1", + "micromatch": "2.3.11" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "matched": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/matched/-/matched-1.0.2.tgz", + "integrity": "sha512-7ivM1jFZVTOOS77QsR+TtYHH0ecdLclMkqbf5qiJdX2RorqfhsL65QHySPZgDE0ZjHoh+mQUNHTanNXIlzXd0Q==", + "requires": { + "arr-union": "3.1.0", + "async-array-reduce": "0.2.1", + "glob": "7.1.2", + "has-glob": "1.0.0", + "is-valid-glob": "1.0.0", + "resolve-dir": "1.0.1" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "1.0.2", + "is-windows": "1.0.2", + "resolve-dir": "1.0.1" + } + }, + "has-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz", + "integrity": "sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc=", + "requires": { + "is-glob": "3.1.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "2.0.2", + "global-modules": "1.0.0" + } + } + } + }, + "merge-deep": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.1.tgz", + "integrity": "sha512-N+5I5QfuiwzJOUecCejlshp8RrBPJAHUXL6pWeXjF7u0fOpKFUAD1YRJ0dEJEzQcuOes4rHQTvGm0B8cgvA1OA==", + "requires": { + "arr-union": "3.1.0", + "clone-deep": "0.2.4", + "kind-of": "3.2.2", + "lazy-cache": "1.0.4" + } + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "requires": { + "readable-stream": "2.3.6" + } + }, + "merge-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/merge-value/-/merge-value-1.0.0.tgz", + "integrity": "sha512-fJMmvat4NeKz63Uv9iHWcPDjCWcCkoiRoajRTEO8hlhUC6rwaHg0QCF9hBOTjZmm4JuglPckPSTtcuJL5kp0TQ==", + "requires": { + "get-value": "2.0.6", + "is-extendable": "1.0.1", + "mixin-deep": "1.3.1", + "set-value": "2.0.0" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + } + } + } + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "1.33.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "requires": { + "for-in": "0.1.8", + "is-extendable": "0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "moment": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", + "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==" + }, + "moment-timezone": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.16.tgz", + "integrity": "sha512-4d1l92plNNqnMkqI/7boWNVXJvwGL2WyByl1Hxp3h/ao3HZiAqaoQY+6KBkYdiN5QtNDpndq+58ozl8W4GVoNw==", + "requires": { + "moment": "2.22.1" + } + }, + "morgan": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", + "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", + "requires": { + "basic-auth": "2.0.0", + "debug": "2.6.9", + "depd": "1.1.2", + "on-finished": "2.3.0", + "on-headers": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=" + }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "ncp": "2.0.0", + "rimraf": "2.4.5" + } + }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "optional": true + }, + "nanoseconds": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/nanoseconds/-/nanoseconds-0.1.0.tgz", + "integrity": "sha1-aew5/NAOd6s6ct4KQzQoJM15Izo=" + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "optional": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "next-tick": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz", + "integrity": "sha1-ddpKkn7liH45BliABltzNkE7MQ0=" + }, + "nib": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", + "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", + "requires": { + "stylus": "0.54.5" + } + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "1.1.4" + } + }, + "node-fingerprint": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/node-fingerprint/-/node-fingerprint-0.0.2.tgz", + "integrity": "sha1-Mcur63GmeufdWn3AQuUcPHWGhQE=" + }, + "noncharacters": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/noncharacters/-/noncharacters-1.1.0.tgz", + "integrity": "sha1-rzPfMP1Q7TxTzSAiWPJa2pC1QNI=" + }, + "nopt": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", + "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", + "requires": { + "abbrev": "1.1.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-pkg": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/normalize-pkg/-/normalize-pkg-0.3.20.tgz", + "integrity": "sha1-Luc3FJUXhQ2c7/WmI0r174nFFag=", + "requires": { + "arr-union": "3.1.0", + "array-unique": "0.3.2", + "component-emitter": "1.2.1", + "export-files": "2.1.1", + "extend-shallow": "2.0.1", + "fs-exists-sync": "0.1.0", + "get-value": "2.0.6", + "kind-of": "3.2.2", + "lazy-cache": "2.0.2", + "map-schema": "0.2.4", + "minimist": "1.2.0", + "mixin-deep": "1.3.1", + "omit-empty": "0.4.1", + "parse-git-config": "1.1.1", + "repo-utils": "0.3.7", + "semver": "5.5.0", + "stringify-author": "0.1.3", + "write-json": "0.2.2" + }, + "dependencies": { + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "now-and-later": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.6.tgz", + "integrity": "sha1-GKFNw/xJXcBs++Ao8AvhbdrE+uo=", + "requires": { + "once": "1.4.0" + } + }, + "npm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-6.0.0.tgz", + "integrity": "sha512-EtM7gNAgMdQeUh8SW2bsaogywVS37lPhf2GYAf2vxR1pktxxT02CW8BHrx59MSbG3ZrRBbcOhpe03gts+eAbdA==", + "requires": { + "JSONStream": "1.3.2", + "abbrev": "1.1.1", + "ansi-regex": "3.0.0", + "ansicolors": "0.3.2", + "ansistyles": "0.1.3", + "aproba": "1.2.0", + "archy": "1.0.0", + "bin-links": "1.1.2", + "bluebird": "3.5.1", + "byte-size": "4.0.2", + "cacache": "11.0.1", + "call-limit": "1.1.0", + "chownr": "1.0.1", + "cli-columns": "3.1.2", + "cli-table2": "0.2.0", + "cmd-shim": "2.0.2", + "columnify": "1.5.4", + "config-chain": "1.1.11", + "debuglog": "1.0.1", + "detect-indent": "5.0.0", + "detect-newline": "2.1.0", + "dezalgo": "1.0.3", + "editor": "1.0.0", + "figgy-pudding": "3.1.0", + "find-npm-prefix": "1.0.2", + "fs-vacuum": "1.2.10", + "fs-write-stream-atomic": "1.0.10", + "gentle-fs": "2.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "has-unicode": "2.0.1", + "hosted-git-info": "2.6.0", + "iferr": "1.0.0", + "imurmurhash": "0.1.4", + "inflight": "1.0.6", + "inherits": "2.0.3", + "ini": "1.3.5", + "init-package-json": "1.10.3", + "is-cidr": "2.0.5", + "json-parse-better-errors": "1.0.2", + "lazy-property": "1.0.0", + "libcipm": "1.6.2", + "libnpmhook": "4.0.1", + "libnpx": "10.2.0", + "lockfile": "1.0.3", + "lodash._baseindexof": "3.1.0", + "lodash._baseuniq": "4.6.0", + "lodash._bindcallback": "3.0.1", + "lodash._cacheindexof": "3.0.2", + "lodash._createcache": "3.1.2", + "lodash._getnative": "3.9.1", + "lodash.clonedeep": "4.5.0", + "lodash.restparam": "3.6.1", + "lodash.union": "4.6.0", + "lodash.uniq": "4.5.0", + "lodash.without": "4.4.0", + "lru-cache": "4.1.2", + "meant": "1.0.1", + "mississippi": "3.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "node-gyp": "3.6.2", + "nopt": "4.0.1", + "normalize-package-data": "2.4.0", + "npm-audit-report": "1.0.5", + "npm-cache-filename": "1.0.2", + "npm-install-checks": "3.0.0", + "npm-lifecycle": "2.0.1", + "npm-package-arg": "6.1.0", + "npm-packlist": "1.1.10", + "npm-pick-manifest": "2.1.0", + "npm-profile": "3.0.1", + "npm-registry-client": "8.5.1", + "npm-registry-fetch": "1.1.0", + "npm-user-validate": "1.0.0", + "npmlog": "4.1.2", + "once": "1.4.0", + "opener": "1.4.3", + "osenv": "0.1.5", + "pacote": "8.1.0", + "path-is-inside": "1.0.2", + "promise-inflight": "1.0.1", + "qrcode-terminal": "0.12.0", + "query-string": "6.0.0", + "qw": "1.0.1", + "read": "1.0.7", + "read-cmd-shim": "1.0.1", + "read-installed": "4.0.3", + "read-package-json": "2.0.13", + "read-package-tree": "5.2.1", + "readable-stream": "2.3.6", + "readdir-scoped-modules": "1.0.2", + "request": "2.85.0", + "retry": "0.12.0", + "rimraf": "2.6.2", + "safe-buffer": "5.1.1", + "semver": "5.5.0", + "sha": "2.0.1", + "slide": "1.1.6", + "sorted-object": "2.0.1", + "sorted-union-stream": "2.1.3", + "ssri": "6.0.0", + "strip-ansi": "4.0.0", + "tar": "4.4.1", + "text-table": "0.2.0", + "tiny-relative-date": "1.3.0", + "uid-number": "0.0.6", + "umask": "1.1.0", + "unique-filename": "1.1.0", + "unpipe": "1.0.0", + "update-notifier": "2.4.0", + "uuid": "3.2.1", + "validate-npm-package-license": "3.0.3", + "validate-npm-package-name": "3.0.0", + "which": "1.3.0", + "worker-farm": "1.6.0", + "wrappy": "1.0.2", + "write-file-atomic": "2.3.0" + }, + "dependencies": { + "JSONStream": { + "version": "1.3.2", + "bundled": true, + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + }, + "dependencies": { + "jsonparse": { + "version": "1.3.1", + "bundled": true + }, + "through": { + "version": "2.3.8", + "bundled": true + } + } + }, + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "ansicolors": { + "version": "0.3.2", + "bundled": true + }, + "ansistyles": { + "version": "0.1.3", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "archy": { + "version": "1.0.0", + "bundled": true + }, + "bin-links": { + "version": "1.1.2", + "bundled": true, + "requires": { + "bluebird": "3.5.1", + "cmd-shim": "2.0.2", + "gentle-fs": "2.0.1", + "graceful-fs": "4.1.11", + "write-file-atomic": "2.3.0" + } + }, + "bluebird": { + "version": "3.5.1", + "bundled": true + }, + "byte-size": { + "version": "4.0.2", + "bundled": true + }, + "cacache": { + "version": "11.0.1", + "bundled": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "figgy-pudding": "3.1.0", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.2", + "mississippi": "3.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "6.0.0", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + }, + "dependencies": { + "y18n": { + "version": "4.0.0", + "bundled": true + } + } + }, + "call-limit": { + "version": "1.1.0", + "bundled": true + }, + "chownr": { + "version": "1.0.1", + "bundled": true + }, + "cli-columns": { + "version": "3.1.2", + "bundled": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true + } + } + } + } + }, + "cli-table2": { + "version": "0.2.0", + "bundled": true, + "requires": { + "colors": "1.1.2", + "lodash": "3.10.1", + "string-width": "1.0.2" + }, + "dependencies": { + "colors": { + "version": "1.1.2", + "bundled": true, + "optional": true + }, + "lodash": { + "version": "3.10.1", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + }, + "dependencies": { + "number-is-nan": { + "version": "1.0.1", + "bundled": true + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true + } + } + } + } + } + } + }, + "cmd-shim": { + "version": "2.0.2", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1" + } + }, + "columnify": { + "version": "1.5.4", + "bundled": true, + "requires": { + "strip-ansi": "3.0.1", + "wcwidth": "1.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true + } + } + }, + "wcwidth": { + "version": "1.0.1", + "bundled": true, + "requires": { + "defaults": "1.0.3" + }, + "dependencies": { + "defaults": { + "version": "1.0.3", + "bundled": true, + "requires": { + "clone": "1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.2", + "bundled": true + } + } + } + } + } + } + }, + "config-chain": { + "version": "1.1.11", + "bundled": true, + "requires": { + "ini": "1.3.5", + "proto-list": "1.2.4" + }, + "dependencies": { + "proto-list": { + "version": "1.2.4", + "bundled": true + } + } + }, + "debuglog": { + "version": "1.0.1", + "bundled": true + }, + "detect-indent": { + "version": "5.0.0", + "bundled": true + }, + "detect-newline": { + "version": "2.1.0", + "bundled": true + }, + "dezalgo": { + "version": "1.0.3", + "bundled": true, + "requires": { + "asap": "2.0.5", + "wrappy": "1.0.2" + }, + "dependencies": { + "asap": { + "version": "2.0.5", + "bundled": true + } + } + }, + "editor": { + "version": "1.0.0", + "bundled": true + }, + "figgy-pudding": { + "version": "3.1.0", + "bundled": true + }, + "find-npm-prefix": { + "version": "1.0.2", + "bundled": true + }, + "fs-vacuum": { + "version": "1.2.10", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "path-is-inside": "1.0.2", + "rimraf": "2.6.2" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.6" + }, + "dependencies": { + "iferr": { + "version": "0.1.5", + "bundled": true + } + } + }, + "gentle-fs": { + "version": "2.0.1", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "fs-vacuum": "1.2.10", + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "path-is-inside": "1.0.2", + "read-cmd-shim": "1.0.1", + "slide": "1.1.6" + }, + "dependencies": { + "iferr": { + "version": "0.1.5", + "bundled": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + }, + "dependencies": { + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + } + } + } + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "hosted-git-info": { + "version": "2.6.0", + "bundled": true + }, + "iferr": { + "version": "1.0.0", + "bundled": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "init-package-json": { + "version": "1.10.3", + "bundled": true, + "requires": { + "glob": "7.1.2", + "npm-package-arg": "6.1.0", + "promzard": "0.3.0", + "read": "1.0.7", + "read-package-json": "2.0.13", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3", + "validate-npm-package-name": "3.0.0" + }, + "dependencies": { + "promzard": { + "version": "0.3.0", + "bundled": true, + "requires": { + "read": "1.0.7" + } + } + } + }, + "is-cidr": { + "version": "2.0.5", + "bundled": true, + "requires": { + "cidr-regex": "2.0.8" + }, + "dependencies": { + "cidr-regex": { + "version": "2.0.8", + "bundled": true, + "requires": { + "ip-regex": "2.1.0" + }, + "dependencies": { + "ip-regex": { + "version": "2.1.0", + "bundled": true + } + } + } + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "bundled": true + }, + "lazy-property": { + "version": "1.0.0", + "bundled": true + }, + "libcipm": { + "version": "1.6.2", + "bundled": true, + "requires": { + "bin-links": "1.1.2", + "bluebird": "3.5.1", + "find-npm-prefix": "1.0.2", + "graceful-fs": "4.1.11", + "lock-verify": "2.0.1", + "npm-lifecycle": "2.0.1", + "npm-logical-tree": "1.2.1", + "npm-package-arg": "6.1.0", + "pacote": "7.6.1", + "protoduck": "5.0.0", + "read-package-json": "2.0.13", + "rimraf": "2.6.2", + "worker-farm": "1.6.0" + }, + "dependencies": { + "lock-verify": { + "version": "2.0.1", + "bundled": true, + "requires": { + "npm-package-arg": "5.1.2", + "semver": "5.5.0" + }, + "dependencies": { + "npm-package-arg": { + "version": "5.1.2", + "bundled": true, + "requires": { + "hosted-git-info": "2.6.0", + "osenv": "0.1.5", + "semver": "5.5.0", + "validate-npm-package-name": "3.0.0" + } + } + } + }, + "npm-logical-tree": { + "version": "1.2.1", + "bundled": true + }, + "pacote": { + "version": "7.6.1", + "bundled": true, + "requires": { + "bluebird": "3.5.1", + "cacache": "10.0.4", + "get-stream": "3.0.0", + "glob": "7.1.2", + "lru-cache": "4.1.2", + "make-fetch-happen": "2.6.0", + "minimatch": "3.0.4", + "mississippi": "3.0.0", + "mkdirp": "0.5.1", + "normalize-package-data": "2.4.0", + "npm-package-arg": "6.1.0", + "npm-packlist": "1.1.10", + "npm-pick-manifest": "2.1.0", + "osenv": "0.1.5", + "promise-inflight": "1.0.1", + "promise-retry": "1.1.1", + "protoduck": "5.0.0", + "rimraf": "2.6.2", + "safe-buffer": "5.1.1", + "semver": "5.5.0", + "ssri": "5.3.0", + "tar": "4.4.1", + "unique-filename": "1.1.0", + "which": "1.3.0" + }, + "dependencies": { + "cacache": { + "version": "10.0.4", + "bundled": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.2", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.3.0", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + }, + "dependencies": { + "mississippi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "concat-stream": "1.6.2", + "duplexify": "3.5.4", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "bundled": true, + "requires": { + "buffer-from": "1.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "buffer-from": { + "version": "1.0.0", + "bundled": true + }, + "typedarray": { + "version": "0.0.6", + "bundled": true + } + } + }, + "duplexify": { + "version": "3.5.4", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "1.4.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.6" + }, + "dependencies": { + "cyclist": { + "version": "0.2.2", + "bundled": true + } + } + }, + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "bundled": true, + "requires": { + "duplexify": "3.5.4", + "inherits": "2.0.3", + "pump": "2.0.1" + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + }, + "dependencies": { + "xtend": { + "version": "4.0.1", + "bundled": true + } + } + } + } + }, + "y18n": { + "version": "4.0.0", + "bundled": true + } + } + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "make-fetch-happen": { + "version": "2.6.0", + "bundled": true, + "requires": { + "agentkeepalive": "3.4.1", + "cacache": "10.0.4", + "http-cache-semantics": "3.8.1", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.1", + "lru-cache": "4.1.2", + "mississippi": "1.3.1", + "node-fetch-npm": "2.0.2", + "promise-retry": "1.1.1", + "socks-proxy-agent": "3.0.1", + "ssri": "5.3.0" + }, + "dependencies": { + "agentkeepalive": { + "version": "3.4.1", + "bundled": true, + "requires": { + "humanize-ms": "1.2.1" + }, + "dependencies": { + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "requires": { + "ms": "2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "bundled": true + } + } + } + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + } + } + }, + "https-proxy-agent": { + "version": "2.2.1", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + } + } + }, + "mississippi": { + "version": "1.3.1", + "bundled": true, + "requires": { + "concat-stream": "1.6.2", + "duplexify": "3.5.4", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "1.0.3", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "bundled": true, + "requires": { + "buffer-from": "1.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "buffer-from": { + "version": "1.0.0", + "bundled": true + }, + "typedarray": { + "version": "0.0.6", + "bundled": true + } + } + }, + "duplexify": { + "version": "3.5.4", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "1.4.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.6" + }, + "dependencies": { + "cyclist": { + "version": "0.2.2", + "bundled": true + } + } + }, + "pump": { + "version": "1.0.3", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "bundled": true, + "requires": { + "duplexify": "3.5.4", + "inherits": "2.0.3", + "pump": "2.0.1" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + }, + "dependencies": { + "xtend": { + "version": "4.0.1", + "bundled": true + } + } + } + } + }, + "node-fetch-npm": { + "version": "2.0.2", + "bundled": true, + "requires": { + "encoding": "0.1.12", + "json-parse-better-errors": "1.0.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "encoding": { + "version": "0.1.12", + "bundled": true, + "requires": { + "iconv-lite": "0.4.21" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "requires": { + "safer-buffer": "2.1.2" + }, + "dependencies": { + "safer-buffer": { + "version": "2.1.2", + "bundled": true + } + } + } + } + } + } + }, + "socks-proxy-agent": { + "version": "3.0.1", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "socks": "1.1.10" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "socks": { + "version": "1.1.10", + "bundled": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "1.1.15" + }, + "dependencies": { + "ip": { + "version": "1.1.5", + "bundled": true + }, + "smart-buffer": { + "version": "1.1.15", + "bundled": true + } + } + } + } + } + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.11" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + } + } + } + } + }, + "promise-retry": { + "version": "1.1.1", + "bundled": true, + "requires": { + "err-code": "1.1.2", + "retry": "0.10.1" + }, + "dependencies": { + "err-code": { + "version": "1.1.2", + "bundled": true + }, + "retry": { + "version": "0.10.1", + "bundled": true + } + } + }, + "ssri": { + "version": "5.3.0", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "protoduck": { + "version": "5.0.0", + "bundled": true, + "requires": { + "genfun": "4.0.1" + }, + "dependencies": { + "genfun": { + "version": "4.0.1", + "bundled": true + } + } + } + } + }, + "libnpmhook": { + "version": "4.0.1", + "bundled": true, + "requires": { + "figgy-pudding": "3.1.0", + "npm-registry-fetch": "3.1.1" + }, + "dependencies": { + "npm-registry-fetch": { + "version": "3.1.1", + "bundled": true, + "requires": { + "bluebird": "3.5.1", + "figgy-pudding": "3.1.0", + "lru-cache": "4.1.2", + "make-fetch-happen": "4.0.1", + "npm-package-arg": "6.1.0" + }, + "dependencies": { + "make-fetch-happen": { + "version": "4.0.1", + "bundled": true, + "requires": { + "agentkeepalive": "3.4.1", + "cacache": "11.0.1", + "http-cache-semantics": "3.8.1", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.1", + "lru-cache": "4.1.2", + "mississippi": "3.0.0", + "node-fetch-npm": "2.0.2", + "promise-retry": "1.1.1", + "socks-proxy-agent": "4.0.0", + "ssri": "6.0.0" + }, + "dependencies": { + "agentkeepalive": { + "version": "3.4.1", + "bundled": true, + "requires": { + "humanize-ms": "1.2.1" + }, + "dependencies": { + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "requires": { + "ms": "2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "bundled": true + } + } + } + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + } + } + }, + "https-proxy-agent": { + "version": "2.2.1", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + } + } + }, + "node-fetch-npm": { + "version": "2.0.2", + "bundled": true, + "requires": { + "encoding": "0.1.12", + "json-parse-better-errors": "1.0.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "encoding": { + "version": "0.1.12", + "bundled": true, + "requires": { + "iconv-lite": "0.4.21" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "requires": { + "safer-buffer": "2.1.2" + }, + "dependencies": { + "safer-buffer": { + "version": "2.1.2", + "bundled": true + } + } + } + } + } + } + }, + "promise-retry": { + "version": "1.1.1", + "bundled": true, + "requires": { + "err-code": "1.1.2", + "retry": "0.10.1" + }, + "dependencies": { + "err-code": { + "version": "1.1.2", + "bundled": true + }, + "retry": { + "version": "0.10.1", + "bundled": true + } + } + }, + "socks-proxy-agent": { + "version": "4.0.0", + "bundled": true, + "requires": { + "agent-base": "4.1.2", + "socks": "2.1.6" + }, + "dependencies": { + "agent-base": { + "version": "4.1.2", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "socks": { + "version": "2.1.6", + "bundled": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "4.0.1" + }, + "dependencies": { + "ip": { + "version": "1.1.5", + "bundled": true + }, + "smart-buffer": { + "version": "4.0.1", + "bundled": true + } + } + } + } + } + } + } + } + } + } + }, + "libnpx": { + "version": "10.2.0", + "bundled": true, + "requires": { + "dotenv": "5.0.1", + "npm-package-arg": "6.1.0", + "rimraf": "2.6.2", + "safe-buffer": "5.1.1", + "update-notifier": "2.4.0", + "which": "1.3.0", + "y18n": "4.0.0", + "yargs": "11.0.0" + }, + "dependencies": { + "dotenv": { + "version": "5.0.1", + "bundled": true + }, + "y18n": { + "version": "4.0.0", + "bundled": true + }, + "yargs": { + "version": "11.0.0", + "bundled": true, + "requires": { + "cliui": "4.0.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" + }, + "dependencies": { + "cliui": { + "version": "4.0.0", + "bundled": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + }, + "dependencies": { + "number-is-nan": { + "version": "1.0.1", + "bundled": true + } + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true + } + } + } + } + } + } + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "requires": { + "locate-path": "2.0.0" + }, + "dependencies": { + "locate-path": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "p-locate": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-limit": "1.2.0" + }, + "dependencies": { + "p-limit": { + "version": "1.2.0", + "bundled": true, + "requires": { + "p-try": "1.0.0" + }, + "dependencies": { + "p-try": { + "version": "1.0.0", + "bundled": true + } + } + } + } + }, + "path-exists": { + "version": "3.0.0", + "bundled": true + } + } + } + } + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + }, + "dependencies": { + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "4.1.2", + "shebang-command": "1.2.0", + "which": "1.3.0" + }, + "dependencies": { + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "1.0.0" + }, + "dependencies": { + "shebang-regex": { + "version": "1.0.0", + "bundled": true + } + } + } + } + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "2.0.1" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "bundled": true + } + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + } + } + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "1.0.0" + }, + "dependencies": { + "invert-kv": { + "version": "1.0.0", + "bundled": true + } + } + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "requires": { + "mimic-fn": "1.2.0" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "bundled": true + } + } + } + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + } + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "y18n": { + "version": "3.2.1", + "bundled": true + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true + } + } + } + } + } + } + }, + "lockfile": { + "version": "1.0.3", + "bundled": true + }, + "lodash._baseindexof": { + "version": "3.1.0", + "bundled": true + }, + "lodash._baseuniq": { + "version": "4.6.0", + "bundled": true, + "requires": { + "lodash._createset": "4.0.3", + "lodash._root": "3.0.1" + }, + "dependencies": { + "lodash._createset": { + "version": "4.0.3", + "bundled": true + }, + "lodash._root": { + "version": "3.0.1", + "bundled": true + } + } + }, + "lodash._bindcallback": { + "version": "3.0.1", + "bundled": true + }, + "lodash._cacheindexof": { + "version": "3.0.2", + "bundled": true + }, + "lodash._createcache": { + "version": "3.1.2", + "bundled": true, + "requires": { + "lodash._getnative": "3.9.1" + } + }, + "lodash._getnative": { + "version": "3.9.1", + "bundled": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "bundled": true + }, + "lodash.restparam": { + "version": "3.6.1", + "bundled": true + }, + "lodash.union": { + "version": "4.6.0", + "bundled": true + }, + "lodash.uniq": { + "version": "4.5.0", + "bundled": true + }, + "lodash.without": { + "version": "4.4.0", + "bundled": true + }, + "lru-cache": { + "version": "4.1.2", + "bundled": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + }, + "dependencies": { + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true + } + } + }, + "meant": { + "version": "1.0.1", + "bundled": true + }, + "mississippi": { + "version": "3.0.0", + "bundled": true, + "requires": { + "concat-stream": "1.6.1", + "duplexify": "3.5.4", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "3.0.0", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.1", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "typedarray": { + "version": "0.0.6", + "bundled": true + } + } + }, + "duplexify": { + "version": "3.5.4", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "1.4.0" + } + }, + "flush-write-stream": { + "version": "1.0.2", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.6" + }, + "dependencies": { + "cyclist": { + "version": "0.2.2", + "bundled": true + } + } + }, + "pump": { + "version": "3.0.0", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "bundled": true, + "requires": { + "duplexify": "3.5.4", + "inherits": "2.0.3", + "pump": "2.0.1" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + }, + "dependencies": { + "xtend": { + "version": "4.0.1", + "bundled": true + } + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + }, + "dependencies": { + "copy-concurrently": { + "version": "1.0.5", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + }, + "dependencies": { + "iferr": { + "version": "0.1.5", + "bundled": true + } + } + }, + "run-queue": { + "version": "1.0.3", + "bundled": true, + "requires": { + "aproba": "1.2.0" + } + } + } + }, + "node-gyp": { + "version": "3.6.2", + "bundled": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.5", + "request": "2.85.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.0" + }, + "dependencies": { + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.11" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + } + } + } + } + }, + "nopt": { + "version": "3.0.6", + "bundled": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "semver": { + "version": "5.3.0", + "bundled": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + }, + "dependencies": { + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + } + } + } + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "requires": { + "hosted-git-info": "2.6.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" + }, + "dependencies": { + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "requires": { + "builtin-modules": "1.1.1" + }, + "dependencies": { + "builtin-modules": { + "version": "1.1.1", + "bundled": true + } + } + } + } + }, + "npm-audit-report": { + "version": "1.0.5", + "bundled": true, + "requires": { + "ansicolors": "0.3.2", + "ansistyles": "0.1.3", + "cli-table2": "0.2.0" + } + }, + "npm-cache-filename": { + "version": "1.0.2", + "bundled": true + }, + "npm-install-checks": { + "version": "3.0.0", + "bundled": true, + "requires": { + "semver": "5.5.0" + } + }, + "npm-lifecycle": { + "version": "2.0.1", + "bundled": true, + "requires": { + "byline": "5.0.0", + "graceful-fs": "4.1.11", + "node-gyp": "3.6.2", + "resolve-from": "4.0.0", + "slide": "1.1.6", + "uid-number": "0.0.6", + "umask": "1.1.0", + "which": "1.3.0" + }, + "dependencies": { + "byline": { + "version": "5.0.0", + "bundled": true + }, + "resolve-from": { + "version": "4.0.0", + "bundled": true + } + } + }, + "npm-package-arg": { + "version": "6.1.0", + "bundled": true, + "requires": { + "hosted-git-info": "2.6.0", + "osenv": "0.1.5", + "semver": "5.5.0", + "validate-npm-package-name": "3.0.0" + } + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" + }, + "dependencies": { + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "requires": { + "minimatch": "3.0.4" + }, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + } + } + } + } + } + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true + } + } + }, + "npm-pick-manifest": { + "version": "2.1.0", + "bundled": true, + "requires": { + "npm-package-arg": "6.1.0", + "semver": "5.5.0" + } + }, + "npm-profile": { + "version": "3.0.1", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "make-fetch-happen": "2.6.0" + }, + "dependencies": { + "make-fetch-happen": { + "version": "2.6.0", + "bundled": true, + "requires": { + "agentkeepalive": "3.3.0", + "cacache": "10.0.4", + "http-cache-semantics": "3.8.1", + "http-proxy-agent": "2.0.0", + "https-proxy-agent": "2.1.1", + "lru-cache": "4.1.2", + "mississippi": "1.3.1", + "node-fetch-npm": "2.0.2", + "promise-retry": "1.1.1", + "socks-proxy-agent": "3.0.1", + "ssri": "5.3.0" + }, + "dependencies": { + "agentkeepalive": { + "version": "3.3.0", + "bundled": true, + "requires": { + "humanize-ms": "1.2.1" + }, + "dependencies": { + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "requires": { + "ms": "2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "bundled": true + } + } + } + } + }, + "cacache": { + "version": "10.0.4", + "bundled": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.2", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.3.0", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + }, + "dependencies": { + "mississippi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "concat-stream": "1.6.2", + "duplexify": "3.5.4", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "bundled": true, + "requires": { + "buffer-from": "1.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "buffer-from": { + "version": "1.0.0", + "bundled": true + }, + "typedarray": { + "version": "0.0.6", + "bundled": true + } + } + }, + "duplexify": { + "version": "3.5.4", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "1.4.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.6" + }, + "dependencies": { + "cyclist": { + "version": "0.2.2", + "bundled": true + } + } + }, + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "bundled": true, + "requires": { + "duplexify": "3.5.4", + "inherits": "2.0.3", + "pump": "2.0.1" + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + }, + "dependencies": { + "xtend": { + "version": "4.0.1", + "bundled": true + } + } + } + } + }, + "y18n": { + "version": "4.0.0", + "bundled": true + } + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true + }, + "http-proxy-agent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "debug": "2.6.9" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + } + } + }, + "https-proxy-agent": { + "version": "2.1.1", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + } + } + }, + "mississippi": { + "version": "1.3.1", + "bundled": true, + "requires": { + "concat-stream": "1.6.0", + "duplexify": "3.5.3", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "1.0.3", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "typedarray": { + "version": "0.0.6", + "bundled": true + } + } + }, + "duplexify": { + "version": "3.5.3", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "1.4.0" + } + }, + "flush-write-stream": { + "version": "1.0.2", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.6" + }, + "dependencies": { + "cyclist": { + "version": "0.2.2", + "bundled": true + } + } + }, + "pump": { + "version": "1.0.3", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "bundled": true, + "requires": { + "duplexify": "3.5.3", + "inherits": "2.0.3", + "pump": "2.0.1" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + }, + "dependencies": { + "xtend": { + "version": "4.0.1", + "bundled": true + } + } + } + } + }, + "node-fetch-npm": { + "version": "2.0.2", + "bundled": true, + "requires": { + "encoding": "0.1.12", + "json-parse-better-errors": "1.0.1", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "encoding": { + "version": "0.1.12", + "bundled": true, + "requires": { + "iconv-lite": "0.4.19" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.19", + "bundled": true + } + } + }, + "json-parse-better-errors": { + "version": "1.0.1", + "bundled": true + } + } + }, + "promise-retry": { + "version": "1.1.1", + "bundled": true, + "requires": { + "err-code": "1.1.2", + "retry": "0.10.1" + }, + "dependencies": { + "err-code": { + "version": "1.1.2", + "bundled": true + }, + "retry": { + "version": "0.10.1", + "bundled": true + } + } + }, + "socks-proxy-agent": { + "version": "3.0.1", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "socks": "1.1.10" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "socks": { + "version": "1.1.10", + "bundled": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "1.1.15" + }, + "dependencies": { + "ip": { + "version": "1.1.5", + "bundled": true + }, + "smart-buffer": { + "version": "1.1.15", + "bundled": true + } + } + } + } + }, + "ssri": { + "version": "5.3.0", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + } + } + }, + "npm-registry-client": { + "version": "8.5.1", + "bundled": true, + "requires": { + "concat-stream": "1.6.1", + "graceful-fs": "4.1.11", + "normalize-package-data": "2.4.0", + "npm-package-arg": "6.1.0", + "npmlog": "4.1.2", + "once": "1.4.0", + "request": "2.85.0", + "retry": "0.10.1", + "safe-buffer": "5.1.1", + "semver": "5.5.0", + "slide": "1.1.6", + "ssri": "5.3.0" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.1", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "typedarray": { + "version": "0.0.6", + "bundled": true + } + } + }, + "retry": { + "version": "0.10.1", + "bundled": true + }, + "ssri": { + "version": "5.3.0", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "npm-registry-fetch": { + "version": "1.1.0", + "bundled": true, + "requires": { + "bluebird": "3.5.1", + "figgy-pudding": "2.0.1", + "lru-cache": "4.1.2", + "make-fetch-happen": "3.0.0", + "npm-package-arg": "6.1.0", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "figgy-pudding": { + "version": "2.0.1", + "bundled": true + }, + "make-fetch-happen": { + "version": "3.0.0", + "bundled": true, + "requires": { + "agentkeepalive": "3.4.1", + "cacache": "10.0.4", + "http-cache-semantics": "3.8.1", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.1", + "lru-cache": "4.1.2", + "mississippi": "3.0.0", + "node-fetch-npm": "2.0.2", + "promise-retry": "1.1.1", + "socks-proxy-agent": "3.0.1", + "ssri": "5.3.0" + }, + "dependencies": { + "agentkeepalive": { + "version": "3.4.1", + "bundled": true, + "requires": { + "humanize-ms": "1.2.1" + }, + "dependencies": { + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "requires": { + "ms": "2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "bundled": true + } + } + } + } + }, + "cacache": { + "version": "10.0.4", + "bundled": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.2", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.3.0", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + }, + "dependencies": { + "mississippi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "concat-stream": "1.6.2", + "duplexify": "3.5.4", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "bundled": true, + "requires": { + "buffer-from": "1.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "buffer-from": { + "version": "1.0.0", + "bundled": true + }, + "typedarray": { + "version": "0.0.6", + "bundled": true + } + } + }, + "duplexify": { + "version": "3.5.4", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "1.4.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.6" + }, + "dependencies": { + "cyclist": { + "version": "0.2.2", + "bundled": true + } + } + }, + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "bundled": true, + "requires": { + "duplexify": "3.5.4", + "inherits": "2.0.3", + "pump": "2.0.1" + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + }, + "dependencies": { + "xtend": { + "version": "4.0.1", + "bundled": true + } + } + } + } + }, + "y18n": { + "version": "4.0.0", + "bundled": true + } + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + } + } + }, + "https-proxy-agent": { + "version": "2.2.1", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + } + } + }, + "node-fetch-npm": { + "version": "2.0.2", + "bundled": true, + "requires": { + "encoding": "0.1.12", + "json-parse-better-errors": "1.0.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "encoding": { + "version": "0.1.12", + "bundled": true, + "requires": { + "iconv-lite": "0.4.21" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "requires": { + "safer-buffer": "2.1.2" + }, + "dependencies": { + "safer-buffer": { + "version": "2.1.2", + "bundled": true + } + } + } + } + } + } + }, + "promise-retry": { + "version": "1.1.1", + "bundled": true, + "requires": { + "err-code": "1.1.2", + "retry": "0.10.1" + }, + "dependencies": { + "err-code": { + "version": "1.1.2", + "bundled": true + }, + "retry": { + "version": "0.10.1", + "bundled": true + } + } + }, + "socks-proxy-agent": { + "version": "3.0.1", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "socks": "1.1.10" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "socks": { + "version": "1.1.10", + "bundled": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "1.1.15" + }, + "dependencies": { + "ip": { + "version": "1.1.5", + "bundled": true + }, + "smart-buffer": { + "version": "1.1.15", + "bundled": true + } + } + } + } + }, + "ssri": { + "version": "5.3.0", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + } + } + }, + "npm-user-validate": { + "version": "1.0.0", + "bundled": true + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + }, + "dependencies": { + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.6" + }, + "dependencies": { + "delegates": { + "version": "1.0.0", + "bundled": true + } + } + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + }, + "dependencies": { + "number-is-nan": { + "version": "1.0.1", + "bundled": true + } + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true + } + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "requires": { + "string-width": "1.0.2" + } + } + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + } + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "opener": { + "version": "1.4.3", + "bundled": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + }, + "dependencies": { + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + } + } + }, + "pacote": { + "version": "8.1.0", + "bundled": true, + "requires": { + "bluebird": "3.5.1", + "cacache": "11.0.1", + "get-stream": "3.0.0", + "glob": "7.1.2", + "lru-cache": "4.1.2", + "make-fetch-happen": "4.0.1", + "minimatch": "3.0.4", + "mississippi": "3.0.0", + "mkdirp": "0.5.1", + "normalize-package-data": "2.4.0", + "npm-package-arg": "6.1.0", + "npm-packlist": "1.1.10", + "npm-pick-manifest": "2.1.0", + "osenv": "0.1.5", + "promise-inflight": "1.0.1", + "promise-retry": "1.1.1", + "protoduck": "5.0.0", + "rimraf": "2.6.2", + "safe-buffer": "5.1.1", + "semver": "5.5.0", + "ssri": "6.0.0", + "tar": "4.4.1", + "unique-filename": "1.1.0", + "which": "1.3.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "make-fetch-happen": { + "version": "4.0.1", + "bundled": true, + "requires": { + "agentkeepalive": "3.4.1", + "cacache": "11.0.1", + "http-cache-semantics": "3.8.1", + "http-proxy-agent": "2.1.0", + "https-proxy-agent": "2.2.1", + "lru-cache": "4.1.2", + "mississippi": "3.0.0", + "node-fetch-npm": "2.0.2", + "promise-retry": "1.1.1", + "socks-proxy-agent": "4.0.1", + "ssri": "6.0.0" + }, + "dependencies": { + "agentkeepalive": { + "version": "3.4.1", + "bundled": true, + "requires": { + "humanize-ms": "1.2.1" + }, + "dependencies": { + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "requires": { + "ms": "2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "bundled": true + } + } + } + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + } + } + }, + "https-proxy-agent": { + "version": "2.2.1", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + } + } + }, + "node-fetch-npm": { + "version": "2.0.2", + "bundled": true, + "requires": { + "encoding": "0.1.12", + "json-parse-better-errors": "1.0.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "encoding": { + "version": "0.1.12", + "bundled": true, + "requires": { + "iconv-lite": "0.4.21" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "requires": { + "safer-buffer": "2.1.2" + }, + "dependencies": { + "safer-buffer": { + "version": "2.1.2", + "bundled": true + } + } + } + } + } + } + }, + "socks-proxy-agent": { + "version": "4.0.1", + "bundled": true, + "requires": { + "agent-base": "4.2.0", + "socks": "2.2.0" + }, + "dependencies": { + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "4.2.4" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.4", + "bundled": true + } + } + } + } + }, + "socks": { + "version": "2.2.0", + "bundled": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "4.0.1" + }, + "dependencies": { + "ip": { + "version": "1.1.5", + "bundled": true + }, + "smart-buffer": { + "version": "4.0.1", + "bundled": true + } + } + } + } + } + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.11" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + } + } + } + } + }, + "promise-retry": { + "version": "1.1.1", + "bundled": true, + "requires": { + "err-code": "1.1.2", + "retry": "0.10.1" + }, + "dependencies": { + "err-code": { + "version": "1.1.2", + "bundled": true + }, + "retry": { + "version": "0.10.1", + "bundled": true + } + } + }, + "protoduck": { + "version": "5.0.0", + "bundled": true, + "requires": { + "genfun": "4.0.1" + }, + "dependencies": { + "genfun": { + "version": "4.0.1", + "bundled": true + } + } + } + } + }, + "path-is-inside": { + "version": "1.0.2", + "bundled": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true + }, + "qrcode-terminal": { + "version": "0.12.0", + "bundled": true + }, + "query-string": { + "version": "6.0.0", + "bundled": true, + "requires": { + "decode-uri-component": "0.2.0", + "strict-uri-encode": "2.0.0" + }, + "dependencies": { + "decode-uri-component": { + "version": "0.2.0", + "bundled": true + }, + "strict-uri-encode": { + "version": "2.0.0", + "bundled": true + } + } + }, + "qw": { + "version": "1.0.1", + "bundled": true + }, + "read": { + "version": "1.0.7", + "bundled": true, + "requires": { + "mute-stream": "0.0.7" + }, + "dependencies": { + "mute-stream": { + "version": "0.0.7", + "bundled": true + } + } + }, + "read-cmd-shim": { + "version": "1.0.1", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "read-installed": { + "version": "4.0.3", + "bundled": true, + "requires": { + "debuglog": "1.0.1", + "graceful-fs": "4.1.11", + "read-package-json": "2.0.13", + "readdir-scoped-modules": "1.0.2", + "semver": "5.5.0", + "slide": "1.1.6", + "util-extend": "1.0.3" + }, + "dependencies": { + "util-extend": { + "version": "1.0.3", + "bundled": true + } + } + }, + "read-package-json": { + "version": "2.0.13", + "bundled": true, + "requires": { + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "json-parse-better-errors": "1.0.1", + "normalize-package-data": "2.4.0", + "slash": "1.0.0" + }, + "dependencies": { + "json-parse-better-errors": { + "version": "1.0.1", + "bundled": true + }, + "slash": { + "version": "1.0.0", + "bundled": true + } + } + }, + "read-package-tree": { + "version": "5.2.1", + "bundled": true, + "requires": { + "debuglog": "1.0.1", + "dezalgo": "1.0.3", + "once": "1.4.0", + "read-package-json": "2.0.13", + "readdir-scoped-modules": "1.0.2" + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + } + } + }, + "readdir-scoped-modules": { + "version": "1.0.2", + "bundled": true, + "requires": { + "debuglog": "1.0.1", + "dezalgo": "1.0.3", + "graceful-fs": "4.1.11", + "once": "1.4.0" + } + }, + "request": { + "version": "2.85.0", + "bundled": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + }, + "dependencies": { + "aws-sign2": { + "version": "0.7.0", + "bundled": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true + }, + "combined-stream": { + "version": "1.0.6", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + }, + "dependencies": { + "delayed-stream": { + "version": "1.0.0", + "bundled": true + } + } + }, + "extend": { + "version": "3.0.1", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true + }, + "form-data": { + "version": "2.3.2", + "bundled": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + }, + "dependencies": { + "asynckit": { + "version": "0.4.0", + "bundled": true + } + } + }, + "har-validator": { + "version": "5.0.3", + "bundled": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "bundled": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + }, + "dependencies": { + "co": { + "version": "4.6.0", + "bundled": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "bundled": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "bundled": true + } + } + }, + "hawk": { + "version": "6.0.2", + "bundled": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.1", + "sntp": "2.1.0" + }, + "dependencies": { + "boom": { + "version": "4.3.1", + "bundled": true, + "requires": { + "hoek": "4.2.1" + } + }, + "cryptiles": { + "version": "3.1.2", + "bundled": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "bundled": true, + "requires": { + "hoek": "4.2.1" + } + } + } + }, + "hoek": { + "version": "4.2.1", + "bundled": true + }, + "sntp": { + "version": "2.1.0", + "bundled": true, + "requires": { + "hoek": "4.2.1" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "bundled": true + } + } + } + } + }, + "sshpk": { + "version": "1.14.1", + "bundled": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "asn1": { + "version": "0.2.3", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + } + } + } + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true + }, + "mime-types": { + "version": "2.1.18", + "bundled": true, + "requires": { + "mime-db": "1.33.0" + }, + "dependencies": { + "mime-db": { + "version": "1.33.0", + "bundled": true + } + } + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true + }, + "performance-now": { + "version": "2.1.0", + "bundled": true + }, + "qs": { + "version": "6.5.1", + "bundled": true + }, + "stringstream": { + "version": "0.0.5", + "bundled": true + }, + "tough-cookie": { + "version": "2.3.4", + "bundled": true, + "requires": { + "punycode": "1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "bundled": true + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "retry": { + "version": "0.12.0", + "bundled": true + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "semver": { + "version": "5.5.0", + "bundled": true + }, + "sha": { + "version": "2.0.1", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "readable-stream": "2.3.6" + } + }, + "slide": { + "version": "1.1.6", + "bundled": true + }, + "sorted-object": { + "version": "2.0.1", + "bundled": true + }, + "sorted-union-stream": { + "version": "2.1.3", + "bundled": true, + "requires": { + "from2": "1.3.0", + "stream-iterate": "1.2.0" + }, + "dependencies": { + "from2": { + "version": "1.3.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "1.1.14" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "isarray": { + "version": "0.0.1", + "bundled": true + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true + } + } + } + } + }, + "stream-iterate": { + "version": "1.2.0", + "bundled": true, + "requires": { + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + }, + "dependencies": { + "stream-shift": { + "version": "1.0.0", + "bundled": true + } + } + } + } + }, + "ssri": { + "version": "6.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + } + } + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "requires": { + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + }, + "dependencies": { + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "requires": { + "minipass": "2.2.4" + } + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "requires": { + "minipass": "2.2.4" + } + }, + "yallist": { + "version": "3.0.2", + "bundled": true + } + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true + }, + "tiny-relative-date": { + "version": "1.3.0", + "bundled": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true + }, + "umask": { + "version": "1.1.0", + "bundled": true + }, + "unique-filename": { + "version": "1.1.0", + "bundled": true, + "requires": { + "unique-slug": "2.0.0" + }, + "dependencies": { + "unique-slug": { + "version": "2.0.0", + "bundled": true, + "requires": { + "imurmurhash": "0.1.4" + } + } + } + }, + "unpipe": { + "version": "1.0.0", + "bundled": true + }, + "update-notifier": { + "version": "2.4.0", + "bundled": true, + "requires": { + "boxen": "1.3.0", + "chalk": "2.3.2", + "configstore": "3.1.2", + "import-lazy": "2.1.0", + "is-ci": "1.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + }, + "dependencies": { + "boxen": { + "version": "1.3.0", + "bundled": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.2", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" + }, + "dependencies": { + "ansi-align": { + "version": "2.0.0", + "bundled": true, + "requires": { + "string-width": "2.1.1" + } + }, + "camelcase": { + "version": "4.1.0", + "bundled": true + }, + "cli-boxes": { + "version": "1.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + } + } + }, + "term-size": { + "version": "1.2.0", + "bundled": true, + "requires": { + "execa": "0.7.0" + }, + "dependencies": { + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "4.1.2", + "shebang-command": "1.2.0", + "which": "1.3.0" + }, + "dependencies": { + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "1.0.0" + }, + "dependencies": { + "shebang-regex": { + "version": "1.0.0", + "bundled": true + } + } + } + } + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "2.0.1" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "bundled": true + } + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + } + } + } + } + }, + "widest-line": { + "version": "2.0.0", + "bundled": true, + "requires": { + "string-width": "2.1.1" + } + } + } + }, + "chalk": { + "version": "2.3.2", + "bundled": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "requires": { + "color-convert": "1.9.1" + }, + "dependencies": { + "color-convert": { + "version": "1.9.1", + "bundled": true, + "requires": { + "color-name": "1.1.3" + }, + "dependencies": { + "color-name": { + "version": "1.1.3", + "bundled": true + } + } + } + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "supports-color": { + "version": "5.3.0", + "bundled": true, + "requires": { + "has-flag": "3.0.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "bundled": true + } + } + } + } + }, + "configstore": { + "version": "3.1.2", + "bundled": true, + "requires": { + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.2.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" + }, + "dependencies": { + "dot-prop": { + "version": "4.2.0", + "bundled": true, + "requires": { + "is-obj": "1.0.1" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "bundled": true + } + } + }, + "make-dir": { + "version": "1.2.0", + "bundled": true, + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "bundled": true + } + } + }, + "unique-string": { + "version": "1.0.0", + "bundled": true, + "requires": { + "crypto-random-string": "1.0.0" + }, + "dependencies": { + "crypto-random-string": { + "version": "1.0.0", + "bundled": true + } + } + } + } + }, + "import-lazy": { + "version": "2.1.0", + "bundled": true + }, + "is-ci": { + "version": "1.1.0", + "bundled": true, + "requires": { + "ci-info": "1.1.3" + }, + "dependencies": { + "ci-info": { + "version": "1.1.3", + "bundled": true + } + } + }, + "is-installed-globally": { + "version": "0.1.0", + "bundled": true, + "requires": { + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" + }, + "dependencies": { + "global-dirs": { + "version": "0.1.1", + "bundled": true, + "requires": { + "ini": "1.3.5" + } + }, + "is-path-inside": { + "version": "1.0.1", + "bundled": true, + "requires": { + "path-is-inside": "1.0.2" + } + } + } + }, + "is-npm": { + "version": "1.0.0", + "bundled": true + }, + "latest-version": { + "version": "3.1.0", + "bundled": true, + "requires": { + "package-json": "4.0.1" + }, + "dependencies": { + "package-json": { + "version": "4.0.1", + "bundled": true, + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0", + "semver": "5.5.0" + }, + "dependencies": { + "got": { + "version": "6.7.1", + "bundled": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.1", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + }, + "dependencies": { + "create-error-class": { + "version": "3.0.2", + "bundled": true, + "requires": { + "capture-stack-trace": "1.0.0" + }, + "dependencies": { + "capture-stack-trace": { + "version": "1.0.0", + "bundled": true + } + } + }, + "duplexer3": { + "version": "0.1.4", + "bundled": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "is-redirect": { + "version": "1.0.0", + "bundled": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "lowercase-keys": { + "version": "1.0.1", + "bundled": true + }, + "timed-out": { + "version": "4.0.1", + "bundled": true + }, + "unzip-response": { + "version": "2.0.1", + "bundled": true + }, + "url-parse-lax": { + "version": "1.0.0", + "bundled": true, + "requires": { + "prepend-http": "1.0.4" + }, + "dependencies": { + "prepend-http": { + "version": "1.0.4", + "bundled": true + } + } + } + } + }, + "registry-auth-token": { + "version": "3.3.2", + "bundled": true, + "requires": { + "rc": "1.2.6", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "rc": { + "version": "1.2.6", + "bundled": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "deep-extend": { + "version": "0.4.2", + "bundled": true + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + } + } + } + } + }, + "registry-url": { + "version": "3.1.0", + "bundled": true, + "requires": { + "rc": "1.2.6" + }, + "dependencies": { + "rc": { + "version": "1.2.6", + "bundled": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "deep-extend": { + "version": "0.4.2", + "bundled": true + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + } + } + } + } + } + } + } + } + }, + "semver-diff": { + "version": "2.1.0", + "bundled": true, + "requires": { + "semver": "5.5.0" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "bundled": true + } + } + }, + "uuid": { + "version": "3.2.1", + "bundled": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "bundled": true, + "requires": { + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" + }, + "dependencies": { + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" + }, + "dependencies": { + "spdx-license-ids": { + "version": "3.0.0", + "bundled": true + } + } + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + }, + "dependencies": { + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true + }, + "spdx-license-ids": { + "version": "3.0.0", + "bundled": true + } + } + } + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "bundled": true, + "requires": { + "builtins": "1.0.3" + }, + "dependencies": { + "builtins": { + "version": "1.0.3", + "bundled": true + } + } + }, + "which": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isexe": "2.0.0" + }, + "dependencies": { + "isexe": { + "version": "2.0.0", + "bundled": true + } + } + }, + "worker-farm": { + "version": "1.6.0", + "bundled": true, + "requires": { + "errno": "0.1.7" + }, + "dependencies": { + "errno": { + "version": "0.1.7", + "bundled": true, + "requires": { + "prr": "1.0.1" + }, + "dependencies": { + "prr": { + "version": "1.0.1", + "bundled": true + } + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write-file-atomic": { + "version": "2.3.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + }, + "dependencies": { + "signal-exit": { + "version": "3.0.2", + "bundled": true + } + } + } + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "requires": { + "boolbase": "1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nunjucks": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.1.2.tgz", + "integrity": "sha512-pJXncV07mmiuIDL9OqdNkcpvifuDMzMq9qBQT9SHasAS7AEwzNp/r/jHNl+9O0+zsldcdWG9ZtXo/nwu2cTqXA==", + "requires": { + "a-sync-waterfall": "1.0.0", + "asap": "2.0.6", + "chokidar": "1.7.0", + "postinstall-build": "5.0.1", + "yargs": "3.32.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "omit-empty": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/omit-empty/-/omit-empty-0.4.1.tgz", + "integrity": "sha1-KUo3gvLLIMdJfEEitiN8ncwMY6s=", + "requires": { + "has-values": "0.1.4", + "kind-of": "3.2.2", + "reduce-object": "0.1.3" + }, + "dependencies": { + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + }, + "opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "requires": { + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.3" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + } + } + }, + "option-cache": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/option-cache/-/option-cache-3.5.0.tgz", + "integrity": "sha1-y3ZRVboqhhwRCf8m4qIOqgZhKys=", + "requires": { + "arr-flatten": "1.1.0", + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "0.3.1", + "kind-of": "3.2.2", + "lazy-cache": "2.0.2", + "set-value": "0.4.3", + "to-object-path": "0.3.0" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "ordered-read-streams": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", + "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", + "requires": { + "is-stream": "1.1.0", + "readable-stream": "2.3.6" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "1.0.0" + } + }, + "pad-right": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", + "integrity": "sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q=", + "requires": { + "repeat-string": "1.6.1" + } + }, + "paginationator": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/paginationator/-/paginationator-0.1.4.tgz", + "integrity": "sha1-hHht04UKrh8Ru7kRsMHghRtTgQY=" + }, + "parse-author": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-1.0.0.tgz", + "integrity": "sha1-XsFZAGKXe9nLOWLpFzuHWGQ39d8=" + }, + "parse-git-config": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-git-config/-/parse-git-config-1.1.1.tgz", + "integrity": "sha1-06mYQxcTL1c5hxK7pDjhKVkN34w=", + "requires": { + "extend-shallow": "2.0.1", + "fs-exists-sync": "0.1.0", + "git-config-path": "1.0.1", + "ini": "1.3.5" + } + }, + "parse-github-url": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-0.3.2.tgz", + "integrity": "sha1-du8B6/4LHpwPSTZylSzGpM2csmA=" + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, + "parser-front-matter": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/parser-front-matter/-/parser-front-matter-1.6.4.tgz", + "integrity": "sha512-eqtUnI5+COkf1CQOYo8FmykN5Zs+5Yr60f/7GcPgQDZEEjdE/VZ4WMaMo9g37foof8h64t/TH2Uvk2Sq0fDy/g==", + "requires": { + "extend-shallow": "2.0.1", + "file-is-binary": "1.0.0", + "gray-matter": "3.1.1", + "isobject": "3.0.1", + "lazy-cache": "2.0.2", + "mixin-deep": "1.3.1", + "trim-leading-lines": "0.1.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } + } + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-store": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pkg-store/-/pkg-store-0.2.2.tgz", + "integrity": "sha1-sfXA+GIKWf1mWGrMXiVvTCw3oNg=", + "requires": { + "cache-base": "0.8.5", + "kind-of": "3.2.2", + "lazy-cache": "1.0.4", + "union-value": "0.2.4", + "write-json": "0.2.2" + }, + "dependencies": { + "cache-base": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-0.8.5.tgz", + "integrity": "sha1-YM6zUEAh7O7HAR/TOEt/TpVym/o=", + "requires": { + "collection-visit": "0.2.3", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "0.3.1", + "isobject": "3.0.1", + "lazy-cache": "2.0.2", + "set-value": "0.4.3", + "to-object-path": "0.3.0", + "union-value": "0.2.4", + "unset-value": "0.1.2" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "collection-visit": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-0.2.3.tgz", + "integrity": "sha1-L2JIPK7MlfCDuaRUo+6eYTmteVc=", + "requires": { + "lazy-cache": "2.0.2", + "map-visit": "0.1.5", + "object-visit": "0.3.4" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "map-visit": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-0.1.5.tgz", + "integrity": "sha1-2+Q5J85VJbgN/BVzpE1oxR8mgWs=", + "requires": { + "lazy-cache": "2.0.2", + "object-visit": "0.3.4" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "object-visit": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-0.3.4.tgz", + "integrity": "sha1-rhXPhvCy/dVRdxY2RIRSxUw9qCk=", + "requires": { + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + }, + "union-value": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz", + "integrity": "sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA=", + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + } + }, + "unset-value": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-0.1.2.tgz", + "integrity": "sha1-UGgQuGfyfCpabpsEgzYx9t5Y0xA=", + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + } + } + } + }, + "postinstall-build": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postinstall-build/-/postinstall-build-5.0.1.tgz", + "integrity": "sha1-uRepB5smF42aJK9aXNjLSpkdEbk=" + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" + }, + "pretty-time": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-0.2.0.tgz", + "integrity": "sha1-ejvexAScYgzXxCt/NCt01W5z104=", + "requires": { + "is-number": "2.1.0", + "nanoseconds": "0.1.0" + } + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "project-name": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/project-name/-/project-name-0.2.6.tgz", + "integrity": "sha1-Pk94H+HulLB4apuuU1BjdsN5r2k=", + "requires": { + "find-pkg": "0.1.2", + "git-repo-name": "0.6.0", + "minimist": "1.2.0" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "question-cache": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/question-cache/-/question-cache-0.5.1.tgz", + "integrity": "sha1-C8JzKRdTQXB99azTHvLd9nApFo0=", + "requires": { + "arr-flatten": "1.1.0", + "arr-union": "3.1.0", + "async-each-series": "1.1.0", + "debug": "2.6.9", + "define-property": "0.2.5", + "get-value": "2.0.6", + "has-value": "0.3.1", + "inquirer2": "0.1.1", + "is-answer": "0.1.1", + "isobject": "2.1.0", + "lazy-cache": "2.0.2", + "mixin-deep": "1.3.1", + "omit-empty": "0.4.1", + "option-cache": "3.5.0", + "os-homedir": "1.0.2", + "project-name": "0.2.6", + "set-value": "0.3.3", + "to-choices": "0.2.0", + "use": "2.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + }, + "use": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", + "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "requires": { + "define-property": "0.2.5", + "isobject": "3.0.1", + "lazy-cache": "2.0.2" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + } + } + }, + "question-store": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/question-store/-/question-store-0.11.1.tgz", + "integrity": "sha1-gf1NRF9NWtwqYiPCUj+nEj4E/X0=", + "requires": { + "common-config": "0.1.0", + "data-store": "0.16.1", + "debug": "2.6.9", + "is-answer": "0.1.1", + "lazy-cache": "2.0.2", + "project-name": "0.2.6", + "question-cache": "0.5.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "read-file": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/read-file/-/read-file-0.2.0.tgz", + "integrity": "sha1-cMa6+IQux9FUD5gf0Oau1Mgb1UU=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.6", + "set-immediate-shim": "1.0.1" + } + }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "mute-stream": "0.0.5" + } + }, + "reduce-object": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/reduce-object/-/reduce-object-0.1.3.tgz", + "integrity": "sha1-1UnUCmwpNvpOPpt4yonJMxRZQhg=", + "requires": { + "for-own": "0.1.5" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "relative": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/relative/-/relative-3.0.2.tgz", + "integrity": "sha1-Dc2OxUpdNaPBXhBFA9ZTdbWlNn8=", + "requires": { + "isobject": "2.1.0" + } + }, + "remote-origin-url": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/remote-origin-url/-/remote-origin-url-0.5.3.tgz", + "integrity": "sha512-crQ7Xk1m/F2IiwBx5oTqk/c0hjoumrEz+a36+ZoVupskQRE/q7pAwHKsTNeiZ31sbSTELvVlVv4h1W0Xo5szKg==", + "requires": { + "parse-git-config": "1.1.1" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" + }, + "repo-utils": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/repo-utils/-/repo-utils-0.3.7.tgz", + "integrity": "sha1-SrZq80DLEfp+XPgFgekr6Xwb964=", + "requires": { + "extend-shallow": "2.0.1", + "get-value": "2.0.6", + "git-config-path": "1.0.1", + "is-absolute": "0.2.6", + "kind-of": "3.2.2", + "lazy-cache": "2.0.2", + "mixin-deep": "1.3.1", + "omit-empty": "0.4.1", + "parse-author": "1.0.0", + "parse-git-config": "1.1.1", + "parse-github-url": "0.3.2", + "project-name": "0.2.6" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "requires": { + "expand-tilde": "1.2.2", + "global-modules": "0.2.3" + }, + "dependencies": { + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "requires": { + "os-homedir": "1.0.2" + } + } + } + }, + "resolve-file": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/resolve-file/-/resolve-file-0.2.2.tgz", + "integrity": "sha1-FNvsWhnThPXW3GSin9ZigV0xdpY=", + "requires": { + "cwd": "0.10.0", + "expand-tilde": "2.0.2", + "extend-shallow": "2.0.1", + "fs-exists-sync": "0.1.0", + "global-modules": "0.2.3", + "homedir-polyfill": "1.0.1", + "lazy-cache": "2.0.2", + "resolve": "1.7.1" + }, + "dependencies": { + "cwd": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", + "integrity": "sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc=", + "requires": { + "find-pkg": "0.1.2", + "fs-exists-sync": "0.1.0" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "resolve-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-glob/-/resolve-glob-1.0.0.tgz", + "integrity": "sha512-wSW9pVGJRs89k0wEXhM7C6+va9998NsDhgc0Y+6Nv8hrHsu0hUS7Ug10J1EiVtU6N2tKlSNvx9wLihL8Ao22Lg==", + "requires": { + "extend-shallow": "2.0.1", + "is-valid-glob": "1.0.0", + "matched": "1.0.2", + "relative": "3.0.2", + "resolve-dir": "1.0.1" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "1.0.2", + "is-windows": "1.0.2", + "resolve-dir": "1.0.1" + } + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "2.0.2", + "global-modules": "1.0.0" + } + } + } + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "rethrow": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/rethrow/-/rethrow-0.2.3.tgz", + "integrity": "sha1-xVKPGQ6J7HU1iJRSob5omWtfZhY=", + "requires": { + "ansi-bgred": "0.1.1", + "ansi-red": "0.1.1", + "ansi-yellow": "0.1.1", + "extend-shallow": "1.1.4", + "lazy-cache": "0.2.7", + "right-align": "0.1.3" + }, + "dependencies": { + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "requires": { + "kind-of": "1.1.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=" + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + } + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "optional": true, + "requires": { + "glob": "6.0.4" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "requires": { + "once": "1.4.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-json-stringify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.1.0.tgz", + "integrity": "sha512-EzBtUaFH9bHYPc69wqjp0efJI/DPNHdFbGE3uIMn4sVbO0zx8vZ8cG4WKxQfOpUOKsQyGBiT2mTqnCw+6nLswA==", + "optional": true + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=" + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.3", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-getter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "requires": { + "to-object-path": "0.3.0" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "set-value": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.3.3.tgz", + "integrity": "sha1-uBIjaBY4oQiP2IpDW4qdMtro2bo=", + "requires": { + "extend-shallow": "2.0.1", + "isobject": "2.1.0", + "to-object-path": "0.2.0" + }, + "dependencies": { + "to-object-path": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.2.0.tgz", + "integrity": "sha1-FjThtSqIugDjlJYZ/ACB3Jo7B8o=", + "requires": { + "arr-flatten": "1.1.0", + "is-arguments": "1.0.2" + } + } + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "requires": { + "is-extendable": "0.1.1", + "kind-of": "2.0.1", + "lazy-cache": "0.2.7", + "mixin-object": "2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + } + } + }, + "sort-object-arrays": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sort-object-arrays/-/sort-object-arrays-0.1.1.tgz", + "integrity": "sha1-mfVc8gWkkd3h9S8Jajaiawm0gy8=", + "requires": { + "kind-of": "3.2.2" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "src-stream": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/src-stream/-/src-stream-0.1.1.tgz", + "integrity": "sha1-2T9G0oGjcAKB7A8wszoDFDiUpoE=", + "requires": { + "duplexify": "3.5.4", + "merge-stream": "0.1.8", + "through2": "2.0.3" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "merge-stream": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-0.1.8.tgz", + "integrity": "sha1-SKB7O0oSHXSj7b/c20sIrb8CQLE=", + "requires": { + "through2": "0.6.5" + }, + "dependencies": { + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", + "requires": { + "duplexer": "0.1.1", + "through": "2.3.8" + } + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "stringify-author": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stringify-author/-/stringify-author-0.1.3.tgz", + "integrity": "sha1-1YHgLOC1XNo8lT5irdIR+uSw72Y=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + } + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-bom-buffer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-bom-buffer/-/strip-bom-buffer-0.1.1.tgz", + "integrity": "sha1-yj3cSRnBP5/d8wsd/xAKmDUki00=", + "requires": { + "is-buffer": "1.1.6", + "is-utf8": "0.2.1" + } + }, + "strip-bom-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", + "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", + "requires": { + "first-chunk-stream": "1.0.0", + "strip-bom": "2.0.0" + } + }, + "strip-bom-string": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-0.1.2.tgz", + "integrity": "sha1-nG5yCjE7qYNliVGEBcz7iKX0G5w=" + }, + "strip-color": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/strip-color/-/strip-color-0.1.0.tgz", + "integrity": "sha1-EG9l09PmotlAHKwOsM6LinArT3s=" + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" + }, + "striptags": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/striptags/-/striptags-2.2.1.tgz", + "integrity": "sha1-TEULcI1BuL85zyTEn/I0/Gqr/TI=" + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "requires": { + "css-parse": "1.7.0", + "debug": "3.1.0", + "glob": "7.0.6", + "mkdirp": "0.5.1", + "sax": "0.5.8", + "source-map": "0.1.43" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "success-symbol": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz", + "integrity": "sha1-JAIuSG878c3KCUKDt2nEctO3KJc=" + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "requires": { + "has-flag": "3.0.0" + } + }, + "swig-extras": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/swig-extras/-/swig-extras-0.0.1.tgz", + "integrity": "sha1-tQP+3jcqucJMasaMr2VrzvGHIyg=", + "requires": { + "markdown": "0.5.0" + } + }, + "swig-templates": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/swig-templates/-/swig-templates-2.0.2.tgz", + "integrity": "sha1-0lAqcwMBk1b06nbqkGXU9Yr2q3U=", + "requires": { + "optimist": "0.6.1", + "uglify-js": "2.6.0" + } + }, + "tableize-object": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tableize-object/-/tableize-object-0.1.0.tgz", + "integrity": "sha1-fCngEzsn1ItWuedtOijSQd8bOiQ=", + "requires": { + "isobject": "2.1.0" + } + }, + "template-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/template-error/-/template-error-0.1.2.tgz", + "integrity": "sha1-GMn2ANkPLz37oIM+N/fLb0E1QtQ=", + "requires": { + "engine": "0.1.12", + "kind-of": "2.0.1", + "lazy-cache": "0.2.7", + "rethrow": "0.2.3" + }, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + } + } + }, + "templates": { + "version": "0.24.3", + "resolved": "https://registry.npmjs.org/templates/-/templates-0.24.3.tgz", + "integrity": "sha1-i6uicOGlcnR022hXX4Ic4bT+TQU=", + "requires": { + "array-sort": "0.1.4", + "async-each": "1.0.1", + "base": "0.11.2", + "base-data": "0.6.2", + "base-engines": "0.2.1", + "base-helpers": "0.1.1", + "base-option": "0.8.4", + "base-plugins": "0.4.13", + "base-routes": "0.2.2", + "debug": "2.6.9", + "deep-bind": "0.3.0", + "define-property": "0.2.5", + "engine-base": "0.1.3", + "export-files": "2.1.1", + "extend-shallow": "2.0.1", + "falsey": "0.3.2", + "get-value": "2.0.6", + "get-view": "0.1.3", + "group-array": "0.3.3", + "has-glob": "0.1.1", + "has-value": "0.3.1", + "inflection": "1.12.0", + "is-valid-app": "0.2.1", + "layouts": "0.11.0", + "lazy-cache": "2.0.2", + "match-file": "0.2.2", + "mixin-deep": "1.3.1", + "paginationator": "0.1.4", + "pascalcase": "0.1.1", + "set-value": "0.3.3", + "template-error": "0.1.2", + "vinyl-item": "0.1.0", + "vinyl-view": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + } + }, + "through2-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "requires": { + "through2": "2.0.3", + "xtend": "4.0.1" + } + }, + "tildify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", + "requires": { + "os-homedir": "1.0.2" + } + }, + "time-diff": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/time-diff/-/time-diff-0.3.1.tgz", + "integrity": "sha1-Jej7c07qnmy15LA5TwWBC5yHwtg=", + "requires": { + "extend-shallow": "2.0.1", + "is-number": "2.1.0", + "log-utils": "0.1.5", + "pretty-time": "0.2.0" + }, + "dependencies": { + "ansi-colors": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-0.1.0.tgz", + "integrity": "sha1-M0rDbNPq1wjeXGnhmpjRhkImtD8=", + "requires": { + "ansi-bgblack": "0.1.1", + "ansi-bgblue": "0.1.1", + "ansi-bgcyan": "0.1.1", + "ansi-bggreen": "0.1.1", + "ansi-bgmagenta": "0.1.1", + "ansi-bgred": "0.1.1", + "ansi-bgwhite": "0.1.1", + "ansi-bgyellow": "0.1.1", + "ansi-black": "0.1.1", + "ansi-blue": "0.1.1", + "ansi-bold": "0.1.1", + "ansi-cyan": "0.1.1", + "ansi-dim": "0.1.1", + "ansi-gray": "0.1.1", + "ansi-green": "0.1.1", + "ansi-grey": "0.1.1", + "ansi-hidden": "0.1.1", + "ansi-inverse": "0.1.1", + "ansi-italic": "0.1.1", + "ansi-magenta": "0.1.1", + "ansi-red": "0.1.1", + "ansi-reset": "0.1.1", + "ansi-strikethrough": "0.1.1", + "ansi-underline": "0.1.1", + "ansi-white": "0.1.1", + "ansi-yellow": "0.1.1", + "lazy-cache": "0.2.7" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + }, + "log-utils": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/log-utils/-/log-utils-0.1.5.tgz", + "integrity": "sha1-3g84+Vf0zW69Xctoddijua4HT3c=", + "requires": { + "ansi-colors": "0.1.0", + "error-symbol": "0.1.0", + "info-symbol": "0.1.0", + "log-ok": "0.1.1", + "success-symbol": "0.1.0", + "time-stamp": "1.1.0", + "warning-symbol": "0.1.0" + } + } + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" + }, + "titlecase": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/titlecase/-/titlecase-1.1.2.tgz", + "integrity": "sha1-eBE9EQgIa4MmMxoyR96o9aSeqFM=" + }, + "to": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/to/-/to-0.2.9.tgz", + "integrity": "sha1-C6Wlb+U1ONuSBc621+0heq5GNcQ=", + "requires": { + "handy": "0.0.13", + "htmlparser": "1.7.7", + "js-yaml": "3.11.0", + "optimist": "0.6.1", + "underscore": "1.9.0" + } + }, + "to-absolute-glob": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", + "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", + "requires": { + "extend-shallow": "2.0.1" + } + }, + "to-choices": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/to-choices/-/to-choices-0.2.0.tgz", + "integrity": "sha1-IufnWgfWl9fkzsvVaxvwPBVlTXM=", + "requires": { + "ansi-gray": "0.1.1", + "mixin-deep": "1.3.1" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "to-file": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/to-file/-/to-file-0.2.0.tgz", + "integrity": "sha1-I2xsCIBl5XDe+9Fc9LTlZb5G6pM=", + "requires": { + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "file-contents": "0.2.4", + "glob-parent": "2.0.0", + "is-valid-glob": "0.3.0", + "isobject": "2.1.0", + "lazy-cache": "2.0.2", + "vinyl": "1.2.0" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "3.2.2" + } + }, + "trim-leading-lines": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/trim-leading-lines/-/trim-leading-lines-0.1.1.tgz", + "integrity": "sha1-DnysPoMELc+Vp07TaWbxd0TVwWk=", + "requires": { + "is-whitespace": "0.3.0" + } + }, + "uglify-js": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.0.tgz", + "integrity": "sha1-JeqhzDVQ45QQzu+v0c+7a20V8AE=", + "requires": { + "async": "0.2.10", + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" + }, + "underscore": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.0.tgz", + "integrity": "sha512-4IV1DSSxC1QK48j9ONFK1MoIAKKkbE8i7u55w2R6IqBqbT7A/iG7aZBCR2Bi8piF0Uz+i/MG1aeqLwl/5vqF+A==" + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "requires": { + "json-stable-stringify": "1.0.1", + "through2-filter": "2.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "update": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/update/-/update-0.7.4.tgz", + "integrity": "sha1-saCRwRo+KK4xui7vWLcRuCzpixQ=", + "requires": { + "arr-union": "3.1.0", + "assemble-core": "0.25.0", + "assemble-loader": "0.6.1", + "base-cli-process": "0.1.19", + "base-config-process": "0.1.9", + "base-generators": "0.4.6", + "base-questions": "0.7.4", + "base-runtimes": "0.2.0", + "base-store": "0.4.4", + "common-config": "0.1.0", + "data-store": "0.16.1", + "export-files": "2.1.1", + "extend-shallow": "2.0.1", + "find-pkg": "0.1.2", + "fs-exists-sync": "0.1.0", + "global-modules": "0.2.3", + "gulp-choose-files": "0.1.3", + "is-valid-app": "0.2.1", + "isobject": "2.1.0", + "lazy-cache": "2.0.2", + "log-utils": "0.2.1", + "parser-front-matter": "1.6.4", + "resolve-dir": "0.1.1", + "resolve-file": "0.2.2", + "set-blocking": "2.0.0", + "strip-color": "0.1.0", + "text-table": "0.2.0", + "through2": "2.0.3", + "yargs-parser": "2.4.1" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, + "use": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use/-/use-1.1.2.tgz", + "integrity": "sha1-bjgy/rholXNJSsanrLX++zd7LNE=", + "requires": { + "define-property": "0.2.5", + "isobject": "2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vali-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", + "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "1.0.4", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", + "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "requires": { + "duplexify": "3.5.4", + "glob-stream": "5.3.5", + "graceful-fs": "4.1.11", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "0.3.0", + "lazystream": "1.0.0", + "lodash.isequal": "4.5.0", + "merge-stream": "1.0.1", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "readable-stream": "2.3.6", + "strip-bom": "2.0.0", + "strip-bom-stream": "1.0.0", + "through2": "2.0.3", + "through2-filter": "2.0.0", + "vali-date": "1.0.0", + "vinyl": "1.2.0" + } + }, + "vinyl-item": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/vinyl-item/-/vinyl-item-0.1.0.tgz", + "integrity": "sha1-8ngTyBFC66ScpYSd5PQvb6Dl4Jg=", + "requires": { + "base": "0.8.1", + "base-option": "0.8.4", + "base-plugins": "0.4.13", + "clone": "1.0.4", + "clone-stats": "1.0.0", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "isobject": "2.1.0", + "lazy-cache": "2.0.2", + "vinyl": "1.2.0" + }, + "dependencies": { + "base": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/base/-/base-0.8.1.tgz", + "integrity": "sha1-aQC7MA8sdZbJnz2DurhyLYGLdI8=", + "requires": { + "arr-union": "3.1.0", + "cache-base": "0.8.5", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "debug": "2.6.9", + "define-property": "0.2.5", + "lazy-cache": "1.0.4", + "mixin-deep": "1.3.1" + }, + "dependencies": { + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + } + } + }, + "cache-base": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-0.8.5.tgz", + "integrity": "sha1-YM6zUEAh7O7HAR/TOEt/TpVym/o=", + "requires": { + "collection-visit": "0.2.3", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "0.3.1", + "isobject": "3.0.1", + "lazy-cache": "2.0.2", + "set-value": "0.4.3", + "to-object-path": "0.3.0", + "union-value": "0.2.4", + "unset-value": "0.1.2" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, + "collection-visit": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-0.2.3.tgz", + "integrity": "sha1-L2JIPK7MlfCDuaRUo+6eYTmteVc=", + "requires": { + "lazy-cache": "2.0.2", + "map-visit": "0.1.5", + "object-visit": "0.3.4" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + }, + "map-visit": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-0.1.5.tgz", + "integrity": "sha1-2+Q5J85VJbgN/BVzpE1oxR8mgWs=", + "requires": { + "lazy-cache": "2.0.2", + "object-visit": "0.3.4" + } + }, + "object-visit": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-0.3.4.tgz", + "integrity": "sha1-rhXPhvCy/dVRdxY2RIRSxUw9qCk=", + "requires": { + "isobject": "2.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + }, + "union-value": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz", + "integrity": "sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA=", + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + } + }, + "unset-value": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-0.1.2.tgz", + "integrity": "sha1-UGgQuGfyfCpabpsEgzYx9t5Y0xA=", + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + } + } + }, + "vinyl-view": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/vinyl-view/-/vinyl-view-0.1.2.tgz", + "integrity": "sha1-CaxtfIASEr8JJr2dQQb0XmxPyXc=", + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "engine-base": "0.1.3", + "isobject": "2.1.0", + "lazy-cache": "2.0.2", + "mixin-deep": "1.3.1", + "vinyl-item": "0.1.0" + }, + "dependencies": { + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "warehouse": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/warehouse/-/warehouse-2.2.0.tgz", + "integrity": "sha1-XQnWSUKZK+Zn2PfIagnCuK6gQGI=", + "requires": { + "JSONStream": "1.3.2", + "bluebird": "3.5.1", + "cuid": "1.3.8", + "graceful-fs": "4.1.11", + "is-plain-object": "2.0.4", + "lodash": "4.17.10" + } + }, + "warning-symbol": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/warning-symbol/-/warning-symbol-0.1.0.tgz", + "integrity": "sha1-uzHdEbeg+dZ6su2V9Fe2WCW7rSE=" + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "requires": { + "isexe": "2.0.0" + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "requires": { + "mkdirp": "0.5.1" + } + }, + "write-json": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/write-json/-/write-json-0.2.2.tgz", + "integrity": "sha1-+k4VKennY6T5LwfZhBMX49JI2vM=", + "requires": { + "write": "0.2.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "requires": { + "camelcase": "2.1.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "string-width": "1.0.2", + "window-size": "0.1.4", + "y18n": "3.2.1" + } + }, + "yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "requires": { + "camelcase": "3.0.0", + "lodash.assign": "4.2.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..ff61df0a6 --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "hexo-site", + "version": "0.0.0", + "private": true, + "hexo": { + "version": "3.7.1" + }, + "dependencies": { + "hexo": "^3.7.1", + "hexo-deployer-git": "^0.3.1", + "hexo-generator-archive": "^0.1.4", + "hexo-generator-category": "^0.1.3", + "hexo-generator-index": "^0.2.0", + "hexo-generator-tag": "^0.2.0", + "hexo-renderer-ejs": "^0.3.0", + "hexo-renderer-marked": "^0.3.0", + "hexo-renderer-stylus": "^0.3.1", + "hexo-server": "^0.2.0", + "npm": "^6.0.0", + "to": "^0.2.9", + "update": "^0.7.4" + } +} diff --git a/scaffolds/draft.md b/scaffolds/draft.md new file mode 100644 index 000000000..498e95baf --- /dev/null +++ b/scaffolds/draft.md @@ -0,0 +1,4 @@ +--- +title: {{ title }} +tags: +--- diff --git a/scaffolds/page.md b/scaffolds/page.md new file mode 100644 index 000000000..f01ba3cd8 --- /dev/null +++ b/scaffolds/page.md @@ -0,0 +1,4 @@ +--- +title: {{ title }} +date: {{ date }} +--- diff --git a/scaffolds/post.md b/scaffolds/post.md new file mode 100644 index 000000000..1f9b9a465 --- /dev/null +++ b/scaffolds/post.md @@ -0,0 +1,5 @@ +--- +title: {{ title }} +date: {{ date }} +tags: +--- diff --git a/source/CNAME b/source/CNAME new file mode 100644 index 000000000..c5eb9eade --- /dev/null +++ b/source/CNAME @@ -0,0 +1 @@ +incoder.org \ No newline at end of file diff --git a/source/README.md b/source/README.md new file mode 100644 index 000000000..ba5fb8d0b --- /dev/null +++ b/source/README.md @@ -0,0 +1,8 @@ +

+ BladeCode +

+ +### Thanks +1. [Node](https://nodejs.org) +2. [Hexo](https://hexo.io) +3. [Next](https://github.com/theme-next/hexo-theme-next) \ No newline at end of file diff --git a/source/_posts/hello-world.md b/source/_posts/hello-world.md new file mode 100644 index 000000000..c090297cd --- /dev/null +++ b/source/_posts/hello-world.md @@ -0,0 +1,38 @@ +--- +title: Hello World +--- +Welcome to [Hexo](https://hexo.io/)! This is your very first post. Check [documentation](https://hexo.io/docs/) for more info. If you get any problems when using Hexo, you can find the answer in [troubleshooting](https://hexo.io/docs/troubleshooting.html) or you can ask me on [GitHub](https://github.com/hexojs/hexo/issues). + +## Quick Start + +### Create a new post + +``` bash +$ hexo new "My New Post" +``` + +More info: [Writing](https://hexo.io/docs/writing.html) + +### Run server + +``` bash +$ hexo server +``` + +More info: [Server](https://hexo.io/docs/server.html) + +### Generate static files + +``` bash +$ hexo generate +``` + +More info: [Generating](https://hexo.io/docs/generating.html) + +### Deploy to remote sites + +``` bash +$ hexo deploy +``` + +More info: [Deployment](https://hexo.io/docs/deployment.html) diff --git a/themes/landscape/.gitignore b/themes/landscape/.gitignore new file mode 100644 index 000000000..6e3a08a1a --- /dev/null +++ b/themes/landscape/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +node_modules +tmp \ No newline at end of file diff --git a/themes/landscape/Gruntfile.js b/themes/landscape/Gruntfile.js new file mode 100644 index 000000000..59fd5df35 --- /dev/null +++ b/themes/landscape/Gruntfile.js @@ -0,0 +1,46 @@ +module.exports = function(grunt){ + grunt.initConfig({ + gitclone: { + fontawesome: { + options: { + repository: 'https://github.com/FortAwesome/Font-Awesome.git', + directory: 'tmp/fontawesome' + }, + }, + fancybox: { + options: { + repository: 'https://github.com/fancyapps/fancyBox.git', + directory: 'tmp/fancybox' + } + } + }, + copy: { + fontawesome: { + expand: true, + cwd: 'tmp/fontawesome/fonts/', + src: ['**'], + dest: 'source/css/fonts/' + }, + fancybox: { + expand: true, + cwd: 'tmp/fancybox/source/', + src: ['**'], + dest: 'source/fancybox/' + } + }, + _clean: { + tmp: ['tmp'], + fontawesome: ['source/css/fonts'], + fancybox: ['source/fancybox'] + } + }); + + require('load-grunt-tasks')(grunt); + + grunt.renameTask('clean', '_clean'); + + grunt.registerTask('fontawesome', ['gitclone:fontawesome', 'copy:fontawesome', '_clean:tmp']); + grunt.registerTask('fancybox', ['gitclone:fancybox', 'copy:fancybox', '_clean:tmp']); + grunt.registerTask('default', ['gitclone', 'copy', '_clean:tmp']); + grunt.registerTask('clean', ['_clean']); +}; \ No newline at end of file diff --git a/themes/landscape/LICENSE b/themes/landscape/LICENSE new file mode 100644 index 000000000..9ce4d329b --- /dev/null +++ b/themes/landscape/LICENSE @@ -0,0 +1,7 @@ +Copyright (c) 2013 Tommy Chen + +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. \ No newline at end of file diff --git a/themes/landscape/README.md b/themes/landscape/README.md new file mode 100644 index 000000000..90ecccd0a --- /dev/null +++ b/themes/landscape/README.md @@ -0,0 +1,112 @@ +# Landscape + +A brand new default theme for [Hexo]. + +- [Preview](http://hexo.io/hexo-theme-landscape/) + +## Installation + +### Install + +``` bash +$ git clone https://github.com/hexojs/hexo-theme-landscape.git themes/landscape +``` + +**Landscape requires Hexo 2.4 and above.** If you would like to enable the RSS, the [hexo-generate-feed] plugin is also required. + +### Enable + +Modify `theme` setting in `_config.yml` to `landscape`. + +### Update + +``` bash +cd themes/landscape +git pull +``` + +## Configuration + +``` yml +# Header +menu: + Home: / + Archives: /archives +rss: /atom.xml + +# Content +excerpt_link: Read More +fancybox: true + +# Sidebar +sidebar: right +widgets: +- category +- tag +- tagcloud +- archives +- recent_posts + +# Miscellaneous +google_analytics: +favicon: /favicon.png +twitter: +google_plus: +``` + +- **menu** - Navigation menu +- **rss** - RSS link +- **excerpt_link** - "Read More" link at the bottom of excerpted articles. `false` to hide the link. +- **fancybox** - Enable [Fancybox] +- **sidebar** - Sidebar style. You can choose `left`, `right`, `bottom` or `false`. +- **widgets** - Widgets displaying in sidebar +- **google_analytics** - Google Analytics ID +- **favicon** - Favicon path +- **twitter** - Twiiter ID +- **google_plus** - Google+ ID + +## Features + +### Fancybox + +Landscape uses [Fancybox] to showcase your photos. You can use Markdown syntax or fancybox tag plugin to add your photos. + +``` +![img caption](img url) + +{% fancybox img_url [img_thumbnail] [img_caption] %} +``` + +### Sidebar + +You can put your sidebar in left side, right side or bottom of your site by editing `sidebar` setting. + +Landscape provides 5 built-in widgets: + +- category +- tag +- tagcloud +- archives +- recent_posts + +All of them are enabled by default. You can edit them in `widget` setting. + +## Development + +### Requirements + +- [Grunt] 0.4+ +- Hexo 2.4+ + +### Grunt tasks + +- **default** - Download [Fancybox] and [Font Awesome]. +- **fontawesome** - Only download [Font Awesome]. +- **fancybox** - Only download [Fancybox]. +- **clean** - Clean temporarily files and downloaded files. + +[Hexo]: https://hexo.io/ +[Fancybox]: http://fancyapps.com/fancybox/ +[Font Awesome]: http://fontawesome.io/ +[Grunt]: http://gruntjs.com/ +[hexo-generate-feed]: https://github.com/hexojs/hexo-generator-feed diff --git a/themes/landscape/_config.yml b/themes/landscape/_config.yml new file mode 100644 index 000000000..ca223747c --- /dev/null +++ b/themes/landscape/_config.yml @@ -0,0 +1,37 @@ +# Header +menu: + Home: / + Archives: /archives +rss: /atom.xml + +# Content +excerpt_link: Read More +fancybox: true + +# Sidebar +sidebar: right +widgets: +- category +- tag +- tagcloud +- archive +- recent_posts + +# display widgets at the bottom of index pages (pagination == 2) +index_widgets: +# - category +# - tagcloud +# - archive + +# widget behavior +archive_type: 'monthly' +show_count: false + +# Miscellaneous +google_analytics: +gauges_analytics: +favicon: /favicon.png +twitter: +google_plus: +fb_admins: +fb_app_id: diff --git a/themes/landscape/languages/de.yml b/themes/landscape/languages/de.yml new file mode 100644 index 000000000..630055f5b --- /dev/null +++ b/themes/landscape/languages/de.yml @@ -0,0 +1,19 @@ +categories: Kategorien +search: Suche +tags: Tags +tagcloud: Tag Cloud +tweets: Tweets +prev: zurück +next: weiter +comment: Kommentare +archive_a: Archiv +archive_b: "Archive: %s" +page: Seite %d +recent_posts: letzter Beitrag +newer: Neuer +older: Älter +share: Teilen +powered_by: Powered by +rss_feed: RSS Feed +category: Kategorie +tag: Tag diff --git a/themes/landscape/languages/default.yml b/themes/landscape/languages/default.yml new file mode 100644 index 000000000..3ef7e921c --- /dev/null +++ b/themes/landscape/languages/default.yml @@ -0,0 +1,19 @@ +categories: Categories +search: Search +tags: Tags +tagcloud: Tag Cloud +tweets: Tweets +prev: Prev +next: Next +comment: Comments +archive_a: Archives +archive_b: "Archives: %s" +page: Page %d +recent_posts: Recent Posts +newer: Newer +older: Older +share: Share +powered_by: Powered by +rss_feed: RSS Feed +category: Category +tag: Tag \ No newline at end of file diff --git a/themes/landscape/languages/es.yml b/themes/landscape/languages/es.yml new file mode 100644 index 000000000..d862e8798 --- /dev/null +++ b/themes/landscape/languages/es.yml @@ -0,0 +1,19 @@ +categories: Categorías +search: Buscar +tags: Tags +tagcloud: Nube de Tags +tweets: Tweets +prev: Previo +next: Siguiente +comment: Comentarios +archive_a: Archivos +archive_b: "Archivos: %s" +page: Página %d +recent_posts: Posts recientes +newer: Nuevo +older: Viejo +share: Compartir +powered_by: Construido por +rss_feed: RSS +category: Categoría +tag: Tag \ No newline at end of file diff --git a/themes/landscape/languages/fr.yml b/themes/landscape/languages/fr.yml new file mode 100644 index 000000000..c84f51b1e --- /dev/null +++ b/themes/landscape/languages/fr.yml @@ -0,0 +1,19 @@ +categories: Catégories +search: Rechercher +tags: Mot-clés +tagcloud: Nuage de mot-clés +tweets: Tweets +prev: Précédent +next: Suivant +comment: Commentaires +archive_a: Archives +archive_b: "Archives: %s" +page: Page %d +recent_posts: Articles récents +newer: Récent +older: Ancien +share: Partager +powered_by: Propulsé par +rss_feed: Flux RSS +category: Catégorie +tag: Mot-clé diff --git a/themes/landscape/languages/ja.yml b/themes/landscape/languages/ja.yml new file mode 100644 index 000000000..af0f7fedf --- /dev/null +++ b/themes/landscape/languages/ja.yml @@ -0,0 +1,19 @@ +categories: カテゴリ +search: 検索 +tags: タグ +tagcloud: タグクラウド +tweets: ツイート +prev: 戻る +next: 次へ +comment: コメント +archive_a: アーカイブ +archive_b: "アーカイブ: %s" +page: ページ %d +recent_posts: 最近の投稿 +newer: 次の記事 +older: 前の記事 +share: 共有 +powered_by: Powered by +rss_feed: RSSフィード +category: カテゴリ +tag: タグ diff --git a/themes/landscape/languages/ko.yml b/themes/landscape/languages/ko.yml new file mode 100644 index 000000000..1d27b43f7 --- /dev/null +++ b/themes/landscape/languages/ko.yml @@ -0,0 +1,19 @@ +categories: 카테고리 +search: 검색 +tags: 태그 +tagcloud: 태그 클라우드 +tweets: 트윗 +prev: 이전 +next: 다음 +comment: 댓글 +archive_a: 아카이브 +archive_b: "아카이브: %s" +page: 페이지 %d +recent_posts: 최근 포스트 +newer: 최신 +older: 이전 +share: 공유 +powered_by: Powered by +rss_feed: RSS Feed +category: 카테고리 +tag: 태그 diff --git a/themes/landscape/languages/nl.yml b/themes/landscape/languages/nl.yml new file mode 100644 index 000000000..568d33eb7 --- /dev/null +++ b/themes/landscape/languages/nl.yml @@ -0,0 +1,20 @@ + +categories: Categorieën +search: Zoeken +tags: Labels +tagcloud: Tag Cloud +tweets: Tweets +prev: Vorige +next: Volgende +comment: Commentaren +archive_a: Archieven +archive_b: "Archieven: %s" +page: Pagina %d +recent_posts: Recente berichten +newer: Nieuwer +older: Ouder +share: Delen +powered_by: Powered by +rss_feed: RSS Feed +category: Categorie +tag: Label diff --git a/themes/landscape/languages/no.yml b/themes/landscape/languages/no.yml new file mode 100644 index 000000000..b997691c4 --- /dev/null +++ b/themes/landscape/languages/no.yml @@ -0,0 +1,19 @@ +categories: Kategorier +search: Søk +tags: Tags +tagcloud: Tag Cloud +tweets: Tweets +prev: Forrige +next: Neste +comment: Kommentarer +archive_a: Arkiv +archive_b: "Arkiv: %s" +page: Side %d +recent_posts: Siste innlegg +newer: Newer +older: Older +share: Share +powered_by: Powered by +rss_feed: RSS Feed +category: Category +tag: Tag \ No newline at end of file diff --git a/themes/landscape/languages/pt.yml b/themes/landscape/languages/pt.yml new file mode 100644 index 000000000..3d74af326 --- /dev/null +++ b/themes/landscape/languages/pt.yml @@ -0,0 +1,19 @@ +categories: Categorias +search: Buscar +tags: Tags +tagcloud: Nuvem de Tags +tweets: Tweets +prev: Anterior +next: Próximo +comment: Comentários +archive_a: Arquivos +archive_b: "Arquivos: %s" +page: Página %d +recent_posts: Postagens Recentes +newer: Mais Recente +older: Mais Antigo +share: Compartilhar +powered_by: Desenvolvido por +rss_feed: Feed RSS +category: Categoria +tag: Tag diff --git a/themes/landscape/languages/ru.yml b/themes/landscape/languages/ru.yml new file mode 100644 index 000000000..625a83c2a --- /dev/null +++ b/themes/landscape/languages/ru.yml @@ -0,0 +1,19 @@ +categories: Категории +search: Поиск +tags: Метки +tagcloud: Облако меток +tweets: Твиты +prev: Назад +next: Вперед +comment: Комментарии +archive_a: Архив +archive_b: "Архив: %s" +page: Страница %d +recent_posts: Недавние записи +newer: Следующий +older: Предыдущий +share: Поделиться +powered_by: Создано с помощью +rss_feed: RSS-каналы +category: Категория +tag: Метка \ No newline at end of file diff --git a/themes/landscape/languages/zh-CN.yml b/themes/landscape/languages/zh-CN.yml new file mode 100644 index 000000000..51e13212e --- /dev/null +++ b/themes/landscape/languages/zh-CN.yml @@ -0,0 +1,19 @@ +categories: 分类 +search: 搜索 +tags: 标签 +tagcloud: 标签云 +tweets: 推文 +prev: 上一页 +next: 下一页 +comment: 留言 +archive_a: 归档 +archive_b: 归档:%s +page: 第 %d 页 +recent_posts: 最新文章 +newer: Newer +older: Older +share: Share +powered_by: Powered by +rss_feed: RSS Feed +category: Category +tag: Tag \ No newline at end of file diff --git a/themes/landscape/languages/zh-TW.yml b/themes/landscape/languages/zh-TW.yml new file mode 100644 index 000000000..76d291619 --- /dev/null +++ b/themes/landscape/languages/zh-TW.yml @@ -0,0 +1,19 @@ +categories: 分類 +search: 搜尋 +tags: 標籤 +tagcloud: 標籤雲 +tweets: 推文 +prev: 上一頁 +next: 下一頁 +comment: 留言 +archive_a: 彙整 +archive_b: 彙整:%s +page: 第 %d 頁 +recent_posts: 最新文章 +newer: Newer +older: Older +share: Share +powered_by: Powered by +rss_feed: RSS Feed +category: Category +tag: Tag \ No newline at end of file diff --git a/themes/landscape/layout/_partial/after-footer.ejs b/themes/landscape/layout/_partial/after-footer.ejs new file mode 100644 index 000000000..ff2d509be --- /dev/null +++ b/themes/landscape/layout/_partial/after-footer.ejs @@ -0,0 +1,25 @@ +<% if (config.disqus_shortname){ %> + +<% } %> + + + +<% if (theme.fancybox){ %> + <%- css('fancybox/jquery.fancybox') %> + <%- js('fancybox/jquery.fancybox.pack') %> +<% } %> + +<%- js('js/script') %> +<%- partial('gauges-analytics') %> diff --git a/themes/landscape/layout/_partial/archive-post.ejs b/themes/landscape/layout/_partial/archive-post.ejs new file mode 100644 index 000000000..36f2cc31f --- /dev/null +++ b/themes/landscape/layout/_partial/archive-post.ejs @@ -0,0 +1,8 @@ +
+
+
+ <%- partial('post/date', {class_name: 'archive-article-date', date_format: 'MMM D'}) %> + <%- partial('post/title', {class_name: 'archive-article-title'}) %> +
+
+
\ No newline at end of file diff --git a/themes/landscape/layout/_partial/archive.ejs b/themes/landscape/layout/_partial/archive.ejs new file mode 100644 index 000000000..9da934a3c --- /dev/null +++ b/themes/landscape/layout/_partial/archive.ejs @@ -0,0 +1,34 @@ +<% if (pagination == 2){ %> + <% page.posts.each(function(post){ %> + <%- partial('article', {post: post, index: true}) %> + <% }) %> +<% } else { %> + <% var last; %> + <% page.posts.each(function(post, i){ %> + <% var year = post.date.year(); %> + <% if (last != year){ %> + <% if (last != null){ %> + + <% } %> + <% last = year; %> +
+ +
+ <% } %> + <%- partial('archive-post', {post: post, even: i % 2 == 0}) %> + <% }) %> + <% if (page.posts.length){ %> +
+ <% } %> +<% } %> +<% if (page.total > 1){ %> + +<% } %> diff --git a/themes/landscape/layout/_partial/article.ejs b/themes/landscape/layout/_partial/article.ejs new file mode 100644 index 000000000..0f951a902 --- /dev/null +++ b/themes/landscape/layout/_partial/article.ejs @@ -0,0 +1,44 @@ +
+ +
+ <%- partial('post/gallery') %> + <% if (post.link || post.title){ %> +
+ <%- partial('post/title', {class_name: 'article-title'}) %> +
+ <% } %> +
+ <% if (post.excerpt && index){ %> + <%- post.excerpt %> + <% if (theme.excerpt_link){ %> +

+ <%= theme.excerpt_link %> +

+ <% } %> + <% } else { %> + <%- post.content %> + <% } %> +
+ +
+ <% if (!index){ %> + <%- partial('post/nav') %> + <% } %> +
+ +<% if (!index && post.comments && config.disqus_shortname){ %> +
+
+ +
+
+<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/_partial/footer.ejs b/themes/landscape/layout/_partial/footer.ejs new file mode 100644 index 000000000..3aca6187d --- /dev/null +++ b/themes/landscape/layout/_partial/footer.ejs @@ -0,0 +1,11 @@ +
+ <% if (theme.sidebar === 'bottom'){ %> + <%- partial('_partial/sidebar') %> + <% } %> +
+ +
+
\ No newline at end of file diff --git a/themes/landscape/layout/_partial/gauges-analytics.ejs b/themes/landscape/layout/_partial/gauges-analytics.ejs new file mode 100644 index 000000000..d64be389f --- /dev/null +++ b/themes/landscape/layout/_partial/gauges-analytics.ejs @@ -0,0 +1,18 @@ +<% if (theme.gauges_analytics){ %> + + + +<% } %> diff --git a/themes/landscape/layout/_partial/google-analytics.ejs b/themes/landscape/layout/_partial/google-analytics.ejs new file mode 100644 index 000000000..84e75f04f --- /dev/null +++ b/themes/landscape/layout/_partial/google-analytics.ejs @@ -0,0 +1,14 @@ +<% if (theme.google_analytics){ %> + + + +<% } %> diff --git a/themes/landscape/layout/_partial/head.ejs b/themes/landscape/layout/_partial/head.ejs new file mode 100644 index 000000000..43d5f93c8 --- /dev/null +++ b/themes/landscape/layout/_partial/head.ejs @@ -0,0 +1,36 @@ + + + + + <%- partial('google-analytics') %> + <% + var title = page.title; + + if (is_archive()){ + title = __('archive_a'); + + if (is_month()){ + title += ': ' + page.year + '/' + page.month; + } else if (is_year()){ + title += ': ' + page.year; + } + } else if (is_category()){ + title = __('category') + ': ' + page.category; + } else if (is_tag()){ + title = __('tag') + ': ' + page.tag; + } + %> + <% if (title){ %><%= title %> | <% } %><%= config.title %> + + <%- open_graph({twitter_id: theme.twitter, google_plus: theme.google_plus, fb_admins: theme.fb_admins, fb_app_id: theme.fb_app_id}) %> + <% if (theme.rss){ %> + + <% } %> + <% if (theme.favicon){ %> + + <% } %> + <% if (config.highlight.enable){ %> + + <% } %> + <%- css('css/style') %> + diff --git a/themes/landscape/layout/_partial/header.ejs b/themes/landscape/layout/_partial/header.ejs new file mode 100644 index 000000000..e8a305e3e --- /dev/null +++ b/themes/landscape/layout/_partial/header.ejs @@ -0,0 +1,32 @@ + \ No newline at end of file diff --git a/themes/landscape/layout/_partial/mobile-nav.ejs b/themes/landscape/layout/_partial/mobile-nav.ejs new file mode 100644 index 000000000..7c1d2af1d --- /dev/null +++ b/themes/landscape/layout/_partial/mobile-nav.ejs @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/themes/landscape/layout/_partial/post/category.ejs b/themes/landscape/layout/_partial/post/category.ejs new file mode 100644 index 000000000..db2ed4842 --- /dev/null +++ b/themes/landscape/layout/_partial/post/category.ejs @@ -0,0 +1,10 @@ +<% if (post.categories && post.categories.length){ %> + +<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/_partial/post/date.ejs b/themes/landscape/layout/_partial/post/date.ejs new file mode 100644 index 000000000..3f4961367 --- /dev/null +++ b/themes/landscape/layout/_partial/post/date.ejs @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/themes/landscape/layout/_partial/post/gallery.ejs b/themes/landscape/layout/_partial/post/gallery.ejs new file mode 100644 index 000000000..886c8ece4 --- /dev/null +++ b/themes/landscape/layout/_partial/post/gallery.ejs @@ -0,0 +1,11 @@ +<% if (post.photos && post.photos.length){ %> +
+
+ <% post.photos.forEach(function(photo, i){ %> + + + + <% }) %> +
+
+<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/_partial/post/nav.ejs b/themes/landscape/layout/_partial/post/nav.ejs new file mode 100644 index 000000000..720798a6f --- /dev/null +++ b/themes/landscape/layout/_partial/post/nav.ejs @@ -0,0 +1,22 @@ +<% if (post.prev || post.next){ %> + +<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/_partial/post/tag.ejs b/themes/landscape/layout/_partial/post/tag.ejs new file mode 100644 index 000000000..e0f327f62 --- /dev/null +++ b/themes/landscape/layout/_partial/post/tag.ejs @@ -0,0 +1,6 @@ +<% if (post.tags && post.tags.length){ %> + <%- list_tags(post.tags, { + show_count: false, + class: 'article-tag' + }) %> +<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/_partial/post/title.ejs b/themes/landscape/layout/_partial/post/title.ejs new file mode 100644 index 000000000..69d646f93 --- /dev/null +++ b/themes/landscape/layout/_partial/post/title.ejs @@ -0,0 +1,15 @@ +<% if (post.link){ %> +

+ +

+<% } else if (post.title){ %> + <% if (index){ %> +

+ <%= post.title %> +

+ <% } else { %> +

+ <%= post.title %> +

+ <% } %> +<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/_partial/sidebar.ejs b/themes/landscape/layout/_partial/sidebar.ejs new file mode 100644 index 000000000..c1e48e53c --- /dev/null +++ b/themes/landscape/layout/_partial/sidebar.ejs @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/themes/landscape/layout/_widget/archive.ejs b/themes/landscape/layout/_widget/archive.ejs new file mode 100644 index 000000000..a20c58cc6 --- /dev/null +++ b/themes/landscape/layout/_widget/archive.ejs @@ -0,0 +1,8 @@ +<% if (site.posts.length){ %> +
+

<%= __('archive_a') %>

+
+ <%- list_archives({show_count: theme.show_count, type: theme.archive_type}) %> +
+
+<% } %> diff --git a/themes/landscape/layout/_widget/category.ejs b/themes/landscape/layout/_widget/category.ejs new file mode 100644 index 000000000..8d9e5e9ed --- /dev/null +++ b/themes/landscape/layout/_widget/category.ejs @@ -0,0 +1,8 @@ +<% if (site.categories.length){ %> +
+

<%= __('categories') %>

+
+ <%- list_categories({show_count: theme.show_count}) %> +
+
+<% } %> diff --git a/themes/landscape/layout/_widget/recent_posts.ejs b/themes/landscape/layout/_widget/recent_posts.ejs new file mode 100644 index 000000000..7a38547db --- /dev/null +++ b/themes/landscape/layout/_widget/recent_posts.ejs @@ -0,0 +1,14 @@ +<% if (site.posts.length){ %> +
+

<%= __('recent_posts') %>

+
+ +
+
+<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/_widget/tag.ejs b/themes/landscape/layout/_widget/tag.ejs new file mode 100644 index 000000000..ea5fb2c1b --- /dev/null +++ b/themes/landscape/layout/_widget/tag.ejs @@ -0,0 +1,8 @@ +<% if (site.tags.length){ %> +
+

<%= __('tags') %>

+
+ <%- list_tags({show_count: theme.show_count}) %> +
+
+<% } %> diff --git a/themes/landscape/layout/_widget/tagcloud.ejs b/themes/landscape/layout/_widget/tagcloud.ejs new file mode 100644 index 000000000..5feb435ab --- /dev/null +++ b/themes/landscape/layout/_widget/tagcloud.ejs @@ -0,0 +1,8 @@ +<% if (site.tags.length){ %> +
+

<%= __('tagcloud') %>

+
+ <%- tagcloud() %> +
+
+<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/archive.ejs b/themes/landscape/layout/archive.ejs new file mode 100644 index 000000000..52f9b2105 --- /dev/null +++ b/themes/landscape/layout/archive.ejs @@ -0,0 +1 @@ +<%- partial('_partial/archive', {pagination: config.archive, index: true}) %> \ No newline at end of file diff --git a/themes/landscape/layout/category.ejs b/themes/landscape/layout/category.ejs new file mode 100644 index 000000000..3ffe25271 --- /dev/null +++ b/themes/landscape/layout/category.ejs @@ -0,0 +1 @@ +<%- partial('_partial/archive', {pagination: config.category, index: true}) %> \ No newline at end of file diff --git a/themes/landscape/layout/index.ejs b/themes/landscape/layout/index.ejs new file mode 100644 index 000000000..60a2c6884 --- /dev/null +++ b/themes/landscape/layout/index.ejs @@ -0,0 +1 @@ +<%- partial('_partial/archive', {pagination: 2, index: true}) %> \ No newline at end of file diff --git a/themes/landscape/layout/layout.ejs b/themes/landscape/layout/layout.ejs new file mode 100644 index 000000000..cf88daf85 --- /dev/null +++ b/themes/landscape/layout/layout.ejs @@ -0,0 +1,18 @@ +<%- partial('_partial/head') %> + +
+
+ <%- partial('_partial/header', null, {cache: !config.relative_link}) %> +
+
<%- body %>
+ <% if (theme.sidebar && theme.sidebar !== 'bottom'){ %> + <%- partial('_partial/sidebar', null, {cache: !config.relative_link}) %> + <% } %> +
+ <%- partial('_partial/footer', null, {cache: !config.relative_link}) %> +
+ <%- partial('_partial/mobile-nav', null, {cache: !config.relative_link}) %> + <%- partial('_partial/after-footer') %> +
+ + \ No newline at end of file diff --git a/themes/landscape/layout/page.ejs b/themes/landscape/layout/page.ejs new file mode 100644 index 000000000..bea631879 --- /dev/null +++ b/themes/landscape/layout/page.ejs @@ -0,0 +1 @@ +<%- partial('_partial/article', {post: page, index: false}) %> \ No newline at end of file diff --git a/themes/landscape/layout/post.ejs b/themes/landscape/layout/post.ejs new file mode 100644 index 000000000..bea631879 --- /dev/null +++ b/themes/landscape/layout/post.ejs @@ -0,0 +1 @@ +<%- partial('_partial/article', {post: page, index: false}) %> \ No newline at end of file diff --git a/themes/landscape/layout/tag.ejs b/themes/landscape/layout/tag.ejs new file mode 100644 index 000000000..048cdb0ec --- /dev/null +++ b/themes/landscape/layout/tag.ejs @@ -0,0 +1 @@ +<%- partial('_partial/archive', {pagination: config.tag, index: true}) %> \ No newline at end of file diff --git a/themes/landscape/package.json b/themes/landscape/package.json new file mode 100644 index 000000000..ac0df3d7f --- /dev/null +++ b/themes/landscape/package.json @@ -0,0 +1,12 @@ +{ + "name": "hexo-theme-landscape", + "version": "0.0.2", + "private": true, + "devDependencies": { + "grunt": "~0.4.2", + "load-grunt-tasks": "~0.2.0", + "grunt-git": "~0.2.2", + "grunt-contrib-clean": "~0.5.0", + "grunt-contrib-copy": "~0.4.1" + } +} diff --git a/themes/landscape/scripts/fancybox.js b/themes/landscape/scripts/fancybox.js new file mode 100644 index 000000000..83f1fdc32 --- /dev/null +++ b/themes/landscape/scripts/fancybox.js @@ -0,0 +1,24 @@ +var rUrl = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[.\!\/\\w]*))?)/; + +/** +* Fancybox tag +* +* Syntax: +* {% fancybox /path/to/image [/path/to/thumbnail] [title] %} +*/ + +hexo.extend.tag.register('fancybox', function(args){ + var original = args.shift(), + thumbnail = ''; + + if (args.length && rUrl.test(args[0])){ + thumbnail = args.shift(); + } + + var title = args.join(' '); + + return '' + + '' + title + '' + '' + + (title ? '' + title + '' : ''); +}); \ No newline at end of file diff --git a/themes/landscape/source/css/_extend.styl b/themes/landscape/source/css/_extend.styl new file mode 100644 index 000000000..96a181799 --- /dev/null +++ b/themes/landscape/source/css/_extend.styl @@ -0,0 +1,63 @@ +$block-caption + text-decoration: none + text-transform: uppercase + letter-spacing: 2px + color: color-grey + margin-bottom: 1em + margin-left: 5px + line-height: 1em + text-shadow: 0 1px #fff + font-weight: bold + +$block + background: #fff + box-shadow: 1px 2px 3px #ddd + border: 1px solid color-border + border-radius: 3px + +$base-style + h1 + font-size: 2em + h2 + font-size: 1.5em + h3 + font-size: 1.3em + h4 + font-size: 1.2em + h5 + font-size: 1em + h6 + font-size: 1em + color: color-grey + hr + border: 1px dashed color-border + strong + font-weight: bold + em, cite + font-style: italic + sup, sub + font-size: 0.75em + line-height: 0 + position: relative + vertical-align: baseline + sup + top: -0.5em + sub + bottom: -0.2em + small + font-size: 0.85em + acronym, abbr + border-bottom: 1px dotted + ul, ol, dl + margin: 0 20px + line-height: line-height + ul, ol + ul, ol + margin-top: 0 + margin-bottom: 0 + ul + list-style: disc + ol + list-style: decimal + dt + font-weight: bold \ No newline at end of file diff --git a/themes/landscape/source/css/_partial/archive.styl b/themes/landscape/source/css/_partial/archive.styl new file mode 100644 index 000000000..90ef0531e --- /dev/null +++ b/themes/landscape/source/css/_partial/archive.styl @@ -0,0 +1,80 @@ +.archives-wrap + margin: block-margin 0 + +.archives + clearfix() + +.archive-year-wrap + margin-bottom: 1em + +.archive-year + @extend $block-caption + +.archives + column-gap: 10px + @media mq-tablet + column-count: 2 + @media mq-normal + column-count: 3 + +.archive-article + avoid-column-break() + +.archive-article-inner + @extend $block + padding: 10px + margin-bottom: 15px + +.archive-article-title + text-decoration: none + font-weight: bold + color: color-default + transition: color 0.2s + line-height: line-height + &:hover + color: color-link + +.archive-article-footer + margin-top: 1em + +.archive-article-date + color: color-grey + text-decoration: none + font-size: 0.85em + line-height: 1em + margin-bottom: 0.5em + display: block + +#page-nav + clearfix() + margin: block-margin auto + background: #fff + box-shadow: 1px 2px 3px #ddd + border: 1px solid color-border + border-radius: 3px + text-align: center + color: color-grey + overflow: hidden + a, span + padding: 10px 20px + line-height: 1 + height: 2ex + a + color: color-grey + text-decoration: none + &:hover + background: color-grey + color: #fff + .prev + float: left + .next + float: right + .page-number + display: inline-block + @media mq-mobile + display: none + .current + color: color-default + font-weight: bold + .space + color: color-border \ No newline at end of file diff --git a/themes/landscape/source/css/_partial/article.styl b/themes/landscape/source/css/_partial/article.styl new file mode 100644 index 000000000..46094f9fa --- /dev/null +++ b/themes/landscape/source/css/_partial/article.styl @@ -0,0 +1,357 @@ +.article + margin: block-margin 0 + +.article-inner + @extend $block + overflow: hidden + +.article-meta + clearfix() + +.article-date + @extend $block-caption + float: left + +.article-category + float: left + line-height: 1em + color: #ccc + text-shadow: 0 1px #fff + margin-left: 8px + &:before + content: "\2022" + +.article-category-link + @extend $block-caption + margin: 0 12px 1em + +.article-header + padding: article-padding article-padding 0 + +.article-title + text-decoration: none + font-size: 2em + font-weight: bold + color: color-default + line-height: line-height-title + transition: color 0.2s + a&:hover + color: color-link + +.article-entry + @extend $base-style + clearfix() + color: color-default + padding: 0 article-padding + p, table + line-height: line-height + margin: line-height 0 + h1, h2, h3, h4, h5, h6 + font-weight: bold + h1, h2, h3, h4, h5, h6 + line-height: line-height-title + margin: line-height-title 0 + a + color: color-link + text-decoration: none + &:hover + text-decoration: underline + ul, ol, dl + margin-top: line-height + margin-bottom: line-height + img, video + max-width: 100% + height: auto + display: block + margin: auto + iframe + border: none + table + width: 100% + border-collapse: collapse + border-spacing: 0 + th + font-weight: bold + border-bottom: 3px solid color-border + padding-bottom: 0.5em + td + border-bottom: 1px solid color-border + padding: 10px 0 + blockquote + font-family: font-serif + font-size: 1.4em + margin: line-height 20px + text-align: center + footer + font-size: font-size + margin: line-height 0 + font-family: font-sans + cite + &:before + content: "—" + padding: 0 0.5em + .pullquote + text-align: left + width: 45% + margin: 0 + &.left + margin-left: 0.5em + margin-right: 1em + &.right + margin-right: 0.5em + margin-left: 1em + .caption + color: color-grey + display: block + font-size: 0.9em + margin-top: 0.5em + position: relative + text-align: center + // http://webdesignerwall.com/tutorials/css-elastic-videos + .video-container + position: relative + padding-top: (9 / 16 * 100)% // 16:9 ratio + height: 0 + overflow: hidden + iframe, object, embed + position: absolute + top: 0 + left: 0 + width: 100% + height: 100% + margin-top: 0 + +.article-more-link a + display: inline-block + line-height: 1em + padding: 6px 15px + border-radius: 15px + background: color-background + color: color-grey + text-shadow: 0 1px #fff + text-decoration: none + &:hover + background: color-link + color: #fff + text-decoration: none + text-shadow: 0 1px darken(color-link, 20%) + +.article-footer + clearfix() + font-size: 0.85em + line-height: line-height + border-top: 1px solid color-border + padding-top: line-height + margin: 0 article-padding article-padding + a + color: color-grey + text-decoration: none + &:hover + color: color-default + +.article-tag-list-item + float: left + margin-right: 10px + +.article-tag-list-link + &:before + content: "#" + +.article-comment-link + float: right + &:before + content: "\f075" + font-family: font-icon + padding-right: 8px + +.article-share-link + cursor: pointer + float: right + margin-left: 20px + &:before + content: "\f064" + font-family: font-icon + padding-right: 6px + +#article-nav + clearfix() + position: relative + @media mq-normal + margin: block-margin 0 + &:before + absolute-center(8px) + content: "" + border-radius: 50% + background: color-border + box-shadow: 0 1px 2px #fff + +.article-nav-link-wrap + text-decoration: none + text-shadow: 0 1px #fff + color: color-grey + box-sizing: border-box + margin-top: block-margin + text-align: center + display: block + &:hover + color: color-default + @media mq-normal + width: 50% + margin-top: 0 + +#article-nav-newer + @media mq-normal + float: left + text-align: right + padding-right: 20px + +#article-nav-older + @media mq-normal + float: right + text-align: left + padding-left: 20px + +.article-nav-caption + text-transform: uppercase + letter-spacing: 2px + color: color-border + line-height: 1em + font-weight: bold + #article-nav-newer & + margin-right: -2px + +.article-nav-title + font-size: 0.85em + line-height: line-height + margin-top: 0.5em + +.article-share-box + position: absolute + display: none + background: #fff + box-shadow: 1px 2px 10px rgba(0, 0, 0, 0.2) + border-radius: 3px + margin-left: -145px + overflow: hidden + z-index: 1 + &.on + display: block + +.article-share-input + width: 100% + background: none + box-sizing: border-box + font: 14px font-sans + padding: 0 15px + color: color-default + outline: none + border: 1px solid color-border + border-radius: 3px 3px 0 0 + height: 36px + line-height: 36px + +.article-share-links + clearfix() + background: color-background + +$article-share-link + width: 50px + height: 36px + display: block + float: left + position: relative + color: #999 + text-shadow: 0 1px #fff + &:before + font-size: 20px + font-family: font-icon + absolute-center(@font-size) + text-align: center + &:hover + color: #fff + +.article-share-twitter + @extend $article-share-link + &:before + content: "\f099" + &:hover + background: color-twitter + text-shadow: 0 1px darken(color-twitter, 20%) + +.article-share-facebook + @extend $article-share-link + &:before + content: "\f09a" + &:hover + background: color-facebook + text-shadow: 0 1px darken(color-facebook, 20%) + +.article-share-pinterest + @extend $article-share-link + &:before + content: "\f0d2" + &:hover + background: color-pinterest + text-shadow: 0 1px darken(color-pinterest, 20%) + +.article-share-google + @extend $article-share-link + &:before + content: "\f0d5" + &:hover + background: color-google + text-shadow: 0 1px darken(color-google, 20%) + +.article-gallery + background: #000 + position: relative + +.article-gallery-photos + position: relative + overflow: hidden + +.article-gallery-img + display: none + max-width: 100% + &:first-child + display: block + &.loaded + position: absolute + display: block + img + display: block + max-width: 100% + margin: 0 auto +/* +$article-gallery-ctrl + position: absolute + top: 0 + height: 100% + width: 60px + color: #fff + text-shadow: 0 0 3px rgba(0, 0, 0, 0.3) + opacity: 0.3 + transition: opacity 0.2s + cursor: pointer + &:hover + opacity: 0.8 + &:before + font-size: 30px + font-family: font-icon + position: absolute + top: 50% + margin-top: @font-size * -0.5 + +.article-gallery-prev + @extend $article-gallery-ctrl + left: 0 + &:before + content: "\f053" + left: 15px + +.article-gallery-next + @extend $article-gallery-ctrl + right: 0 + &:before + content: "\f054" + right: 15px*/ \ No newline at end of file diff --git a/themes/landscape/source/css/_partial/comment.styl b/themes/landscape/source/css/_partial/comment.styl new file mode 100644 index 000000000..296b7dd6b --- /dev/null +++ b/themes/landscape/source/css/_partial/comment.styl @@ -0,0 +1,9 @@ +#comments + background: #fff + box-shadow: 1px 2px 3px #ddd + padding: article-padding + border: 1px solid color-border + border-radius: 3px + margin: block-margin 0 + a + color: color-link \ No newline at end of file diff --git a/themes/landscape/source/css/_partial/footer.styl b/themes/landscape/source/css/_partial/footer.styl new file mode 100644 index 000000000..fe2fd2462 --- /dev/null +++ b/themes/landscape/source/css/_partial/footer.styl @@ -0,0 +1,14 @@ +#footer + background: color-footer-background + padding: 50px 0 + border-top: 1px solid color-border + color: color-grey + a + color: color-link + text-decoration: none + &:hover + text-decoration: underline + +#footer-info + line-height: line-height + font-size: 0.85em \ No newline at end of file diff --git a/themes/landscape/source/css/_partial/header.styl b/themes/landscape/source/css/_partial/header.styl new file mode 100644 index 000000000..d18ebc8d5 --- /dev/null +++ b/themes/landscape/source/css/_partial/header.styl @@ -0,0 +1,165 @@ +#header + height: banner-height + position: relative + border-bottom: 1px solid color-border + &:before, &:after + content: "" + position: absolute + left: 0 + right: 0 + height: 40px + &:before + top: 0 + background: linear-gradient(rgba(0, 0, 0, 0.2), transparent) + &:after + bottom: 0 + background: linear-gradient(transparent, rgba(0, 0, 0, 0.2)) + +#header-outer + height: 100% + position: relative + +#header-inner + position: relative + overflow: hidden + +#banner + position: absolute + top: 0 + left: 0 + width: 100% + height: 100% + background: url(banner-url) center #000 + background-size: cover + z-index: -1 + +#header-title + text-align: center + height: logo-size + position: absolute + top: 50% + left: 0 + margin-top: logo-size * -0.5 + +$logo-text + text-decoration: none + color: #fff + font-weight: 300 + text-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) + +#logo + @extend $logo-text + font-size: logo-size + line-height: logo-size + letter-spacing: 2px + +#subtitle + @extend $logo-text + font-size: subtitle-size + line-height: subtitle-size + letter-spacing: 1px + +#subtitle-wrap + margin-top: subtitle-size + +#main-nav + float: left + margin-left: -15px + +$nav-link + float: left + color: #fff + opacity: 0.6 + text-decoration: none + text-shadow: 0 1px rgba(0, 0, 0, 0.2) + transition: opacity 0.2s + display: block + padding: 20px 15px + &:hover + opacity: 1 + +.nav-icon + @extend $nav-link + font-family: font-icon + text-align: center + font-size: font-size + width: font-size + height: font-size + padding: 20px 15px + position: relative + cursor: pointer + +.main-nav-link + @extend $nav-link + font-weight: 300 + letter-spacing: 1px + @media mq-mobile + display: none + +#main-nav-toggle + display: none + &:before + content: "\f0c9" + @media mq-mobile + display: block + +#sub-nav + float: right + margin-right: -15px + +#nav-rss-link + &:before + content: "\f09e" + +#nav-search-btn + &:before + content: "\f002" + +#search-form-wrap + position: absolute + top: 15px + width: 150px + height: 30px + right: -150px + opacity: 0 + transition: 0.2s ease-out + &.on + opacity: 1 + right: 0 + @media mq-mobile + width: 100% + right: -100% + +.search-form + position: absolute + top: 0 + left: 0 + right: 0 + background: #fff + padding: 5px 15px + border-radius: 15px + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) + +.search-form-input + border: none + background: none + color: color-default + width: 100% + font: 13px font-sans + outline: none + &::-webkit-search-results-decoration + &::-webkit-search-cancel-button + -webkit-appearance: none + +.search-form-submit + position: absolute + top: 50% + right: 10px + margin-top: -7px + font: 13px font-icon + border: none + background: none + color: #bbb + cursor: pointer + &:hover, &:focus + color: #777 \ No newline at end of file diff --git a/themes/landscape/source/css/_partial/highlight.styl b/themes/landscape/source/css/_partial/highlight.styl new file mode 100644 index 000000000..c932ec3bb --- /dev/null +++ b/themes/landscape/source/css/_partial/highlight.styl @@ -0,0 +1,158 @@ +// https://github.com/chriskempson/tomorrow-theme +highlight-background = #2d2d2d +highlight-current-line = #393939 +highlight-selection = #515151 +highlight-foreground = #cccccc +highlight-comment = #999999 +highlight-red = #f2777a +highlight-orange = #f99157 +highlight-yellow = #ffcc66 +highlight-green = #99cc99 +highlight-aqua = #66cccc +highlight-blue = #6699cc +highlight-purple = #cc99cc + +$code-block + background: highlight-background + margin: 0 article-padding * -1 + padding: 15px article-padding + border-style: solid + border-color: color-border + border-width: 1px 0 + overflow: auto + color: highlight-foreground + line-height: font-size * line-height + +$line-numbers + color: #666 + font-size: 0.85em + +.article-entry + pre, code + font-family: font-mono + code + background: color-background + text-shadow: 0 1px #fff + padding: 0 0.3em + pre + @extend $code-block + code + background: none + text-shadow: none + padding: 0 + .highlight + @extend $code-block + pre + border: none + margin: 0 + padding: 0 + table + margin: 0 + width: auto + td + border: none + padding: 0 + figcaption + clearfix() + font-size: 0.85em + color: highlight-comment + line-height: 1em + margin-bottom: 1em + a + float: right + .gutter pre + @extend $line-numbers + text-align: right + padding-right: 20px + .line + height: font-size * line-height + .line.marked + background: highlight-selection + .gist + margin: 0 article-padding * -1 + border-style: solid + border-color: color-border + border-width: 1px 0 + background: highlight-background + padding: 15px article-padding 15px 0 + .gist-file + border: none + font-family: font-mono + margin: 0 + .gist-data + background: none + border: none + .line-numbers + @extend $line-numbers + background: none + border: none + padding: 0 20px 0 0 + .line-data + padding: 0 !important + .highlight + margin: 0 + padding: 0 + border: none + .gist-meta + background: highlight-background + color: highlight-comment + font: 0.85em font-sans + text-shadow: 0 0 + padding: 0 + margin-top: 1em + margin-left: article-padding + a + color: color-link + font-weight: normal + &:hover + text-decoration: underline + +pre + .comment + .title + color: highlight-comment + .variable + .attribute + .tag + .regexp + .ruby .constant + .xml .tag .title + .xml .pi + .xml .doctype + .html .doctype + .css .id + .css .class + .css .pseudo + color: highlight-red + .number + .preprocessor + .built_in + .literal + .params + .constant + color: highlight-orange + .class + .ruby .class .title + .css .rules .attribute + color: highlight-green + .string + .value + .inheritance + .header + .ruby .symbol + .xml .cdata + color: highlight-green + .css .hexcolor + color: highlight-aqua + .function + .python .decorator + .python .title + .ruby .function .title + .ruby .title .keyword + .perl .sub + .javascript .title + .coffeescript .title + color: highlight-blue + .keyword + .javascript .function + color: highlight-purple diff --git a/themes/landscape/source/css/_partial/mobile.styl b/themes/landscape/source/css/_partial/mobile.styl new file mode 100644 index 000000000..eb68b3a2d --- /dev/null +++ b/themes/landscape/source/css/_partial/mobile.styl @@ -0,0 +1,19 @@ +@media mq-mobile + #mobile-nav + position: absolute + top: 0 + left: 0 + width: mobile-nav-width + height: 100% + background: color-mobile-nav-background + border-right: 1px solid #fff + +@media mq-mobile + .mobile-nav-link + display: block + color: color-grey + text-decoration: none + padding: 15px 20px + font-weight: bold + &:hover + color: #fff diff --git a/themes/landscape/source/css/_partial/sidebar-aside.styl b/themes/landscape/source/css/_partial/sidebar-aside.styl new file mode 100644 index 000000000..838b1675b --- /dev/null +++ b/themes/landscape/source/css/_partial/sidebar-aside.styl @@ -0,0 +1,27 @@ +#sidebar + @media mq-normal + column(sidebar-column) + +.widget-wrap + margin: block-margin 0 + +.widget-title + @extend $block-caption + +.widget + color: color-sidebar-text + text-shadow: 0 1px #fff + background: color-widget-background + box-shadow: 0 -1px 4px color-widget-border inset + border: 1px solid color-widget-border + padding: 15px + border-radius: 3px + a + color: color-link + text-decoration: none + &:hover + text-decoration: underline + ul, ol, dl + ul, ol, dl + margin-left: 15px + list-style: disc \ No newline at end of file diff --git a/themes/landscape/source/css/_partial/sidebar-bottom.styl b/themes/landscape/source/css/_partial/sidebar-bottom.styl new file mode 100644 index 000000000..e2403fd4b --- /dev/null +++ b/themes/landscape/source/css/_partial/sidebar-bottom.styl @@ -0,0 +1,27 @@ +.widget-wrap + margin-bottom: block-margin !important + @media mq-normal + column(main-column) + +.widget-title + color: #ccc + text-transform: uppercase + letter-spacing: 2px + margin-bottom: .5em + line-height: 1em + font-weight: bold + +.widget + color: color-grey + ul, ol + li + display: inline-block + zoom:1 + *display:inline + padding-right: .75em +/* Having problems getting balanced white space between items + li:before + content: " | " + li:first-child:before + content: none + */ diff --git a/themes/landscape/source/css/_partial/sidebar.styl b/themes/landscape/source/css/_partial/sidebar.styl new file mode 100644 index 000000000..e43d66afb --- /dev/null +++ b/themes/landscape/source/css/_partial/sidebar.styl @@ -0,0 +1,35 @@ +if sidebar is bottom + @import "sidebar-bottom" +else + @import "sidebar-aside" + +.widget + @extend $base-style + line-height: line-height + word-wrap: break-word + font-size: 0.9em + ul, ol + list-style: none + margin: 0 + ul, ol + margin: 0 20px + ul + list-style: disc + ol + list-style: decimal + +.category-list-count +.tag-list-count +.archive-list-count + padding-left: 5px + color: color-grey + font-size: 0.85em + &:before + content: "(" + &:after + content: ")" + +.tagcloud + a + margin-right: 5px + display: inline-block diff --git a/themes/landscape/source/css/_util/grid.styl b/themes/landscape/source/css/_util/grid.styl new file mode 100644 index 000000000..2a14dd238 --- /dev/null +++ b/themes/landscape/source/css/_util/grid.styl @@ -0,0 +1,38 @@ +///////////////// +// Semantic.gs // for Stylus: http://learnboost.github.com/stylus/ +///////////////// + +// Utility function — you should never need to modify this +// _gridsystem-width = (column-width + gutter-width) * columns +gridsystem-width(_columns = columns) + (column-width + gutter-width) * _columns + +// Set @total-width to 100% for a fluid layout +// total-width = gridsystem-width(columns) +total-width = 100% + +////////// +// GRID // +////////// + +body + clearfix() + width: 100% + +row(_columns = columns) + clearfix() + display: block + width: total-width * ((gutter-width + gridsystem-width(_columns)) / gridsystem-width(_columns)) + margin: 0 total-width * (((gutter-width * .5) / gridsystem-width(_columns)) * -1) + +column(x, _columns = columns) + display: inline + float: left + width: total-width * ((((gutter-width + column-width) * x) - gutter-width) / gridsystem-width(_columns)) + margin: 0 total-width * ((gutter-width * .5) / gridsystem-width(_columns)) + +push(offset = 1) + margin-left: total-width * (((gutter-width + column-width) * offset) / gridsystem-width(columns)) + +pull(offset = 1) + margin-right: total-width * (((gutter-width + column-width) * offset) / gridsystem-width(columns)) \ No newline at end of file diff --git a/themes/landscape/source/css/_util/mixin.styl b/themes/landscape/source/css/_util/mixin.styl new file mode 100644 index 000000000..b56f03778 --- /dev/null +++ b/themes/landscape/source/css/_util/mixin.styl @@ -0,0 +1,31 @@ +// http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/ +hide-text() + text-indent: 100% + white-space: nowrap + overflow: hidden + +// http://codepen.io/shshaw/full/gEiDt +absolute-center(width, height = width) + // margin: auto + // position: absolute + // top: 50% + // top: 0 + // left: 0 + // bottom: 0 + // right: 0 + // width: width + // height: height + // overflow: auto + width: width + height: height + position: absolute + top: 50% + left: 50% + margin-top: width * -0.5 + margin-left: height * -0.5 + +avoid-column-break() + vendor("column-break-inside", avoid, only: webkit) + page-break-inside: avoid // for firefox + overflow: hidden // fix for firefox + break-inside: avoid-column diff --git a/themes/landscape/source/css/_variables.styl b/themes/landscape/source/css/_variables.styl new file mode 100644 index 000000000..456291133 --- /dev/null +++ b/themes/landscape/source/css/_variables.styl @@ -0,0 +1,63 @@ +// Config +support-for-ie = false +vendor-prefixes = webkit moz ms official + +// Colors +color-default = #555 +color-grey = #999 +color-border = #ddd +color-link = #258fb8 +color-background = #eee +color-sidebar-text = #777 +color-widget-background = #ddd +color-widget-border = #ccc +color-footer-background = #262a30 +color-mobile-nav-background = #191919 +color-twitter = #00aced +color-facebook = #3b5998 +color-pinterest = #cb2027 +color-google = #dd4b39 + +// Fonts +font-sans = -apple-system, BlinkMacSystemFont, + "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", + "Fira Sans", "Droid Sans", "Helvetica Neue", + sans-serif +font-serif = Georgia, "Times New Roman", serif +font-mono = "Source Code Pro", Consolas, Monaco, Menlo, Consolas, monospace +font-icon = FontAwesome +font-icon-path = "fonts/fontawesome-webfont" +font-icon-version = "4.0.3" +font-size = 14px +line-height = 1.6em +line-height-title = 1.1em + +// Header +logo-size = 40px +subtitle-size = 16px +banner-height = 300px +banner-url = "images/banner.jpg" + +sidebar = hexo-config("sidebar") + +// Layout +block-margin = 50px +article-padding = 20px +mobile-nav-width = 280px +main-column = 9 +sidebar-column = 3 + +if sidebar and sidebar isnt bottom + _sidebar-column = sidebar-column +else + _sidebar-column = 0 + +// Grids +column-width = 80px +gutter-width = 20px +columns = main-column + _sidebar-column + +// Media queries +mq-mobile = "screen and (max-width: 479px)" +mq-tablet = "screen and (min-width: 480px) and (max-width: 767px)" +mq-normal = "screen and (min-width: 768px)" \ No newline at end of file diff --git a/themes/landscape/source/css/fonts/FontAwesome.otf b/themes/landscape/source/css/fonts/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..8b0f54e47e1d356dcf1496942a50e228e0f1ee14 GIT binary patch literal 62856 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 oMn#JeYGU{pbzL1U=O}QIp<2eKYy*8l(j literal 0 HcmV?d00001 diff --git a/themes/landscape/source/css/fonts/fontawesome-webfont.eot b/themes/landscape/source/css/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..7c79c6a6bc9a128a2a8eaffbe49a4338625fdbc2 GIT binary patch literal 38205 zcmZ^IWlSYp%;vqo1upLH?(XjH?(XhB4DRmk?(Q(SyX)W#I)m#B?7N%&@gNzPg3A9y|F{1i{C~vS%_!vmy8pvq0i*!V z04IP4KosB&umrgOcXRyD0su$=wg0R&z!TsAFa@~%hfn~t{zKgUi?RJbIV1oM026@a zKV<`u{HH7cRsj2daa8}Gnk4^EMF2odUHbodF(eRY6Og71NK*#{I$+FQ#4RkN>Xu5t zDV|CZ0erHH%7mJ7f9C(hMgfc`(&`gnuuiqhEZtN@Gm6qm9jtBTu`bUstuVt`VE1U^ zQeRP-GNx@G1O+8HnNjpn78T|1$sHu=pO{n+?Hbd%?rXh*b{x)ZZ9Ey*heliTM$ph9 zeSOvxJI7sn2z_VOStQwpj}H7Y+@M&VY|#ngtbu=`HY)^$pT2Bh?F%Qz)A!hd^bxco z(ph?3k$*g}cpvrc9fcXhjj;5WPot~Co6>e-hv7*v=?ht4ZzfafOKSl*nvanjGNp%5 zqVHEAb0A25 ztDEMbuMI$uR5*rQ;Ex2f;9~>x3rZo2m^kwR6UQRPZz@Czx8NQJM6qF(2xu!inpqCE zp&p-KF}@yM;D2@511uFKw|p7`rR5E%Q=P-zPeXA1Ktriy6is`S1oMudP6;lGGo*>+ z8#MeQ*S6fE;37Z&V&V2oyeT_l1gp@&a)ah*E|M@ELRv^E70jhArQEOCVR(XrnfK5q zp=6hd;d{^XAPeI<#-L-CBvNu5_(Jtd*&!2*tS%|-yzds5)A{0f(w};Y^KBe@AdynU zQL37Co!%Eq%0_)~bcR`#k94J}qgc4SSR@Ul!8_*tW{Z3Z>U6}ivNUHWn8P$)EbfkT z@k>R%?c7o_o;AP3>Pi=p)K`@mYLKBdm&H(%0ai{ls$|XAptE5F3tx6U{?(i@T>GA3 z^_!F+A*NF}bxUB`5ssZLyE(_w@^Dbsgs-6_CGq92Gx|oi!cA-HhDACy{4K)xs|&hF z>LTWj1(w}4LTGz@)0q87y$|wm>pEPvgpR{F10WY$v~2DYt@t>2Z4;zPN_He3aPb@z ziE0^tt>sf2&yu8qR?@PaDB@HEgBHaU>ZnpXEB^D(;d~K@`H3P(?)J@Vn z@CfT^4qS#V(v@+Tim_UUz_Xd-$p=1fq8#h)@{UE|bVYBR`b>ehNCJ;D5bU7L26}ay zF9bjM0OWm1Ao>6*BK&HtwoOBWueI2fo{G7Y(GD|!_MzfV9ur=<&-+oRNRfybM70FE ziI3L556BV<%TDstB!_UPon6HAw*b{&kueNsC+=#&J+)243^;t8PopRU4eb)@)UjTC z%|J@gDtLqz=z5jdArpDBF8$;L=m(uEBXxr?n&v3{9kTU@&#yiW%YPB)RIU}%aSn`6 z$@EM;F;6}0Oe=&L&gfL&?rfC)Kx@IRPdd3jy;|W(cPJI&mJ)b22%#Jh)6+MBXi}{R zv^IAae*Q9Ff|}Y>L3KPUWC=0h^@i;U8!M>_cS{w^1mL3n#)V zzLDJBVg}IArNIql9*}a_j5k%x5~ySF{kx7~rG&ilzkAtDE&P%=41?qbzUVW>mJ;wI zG5?8dPhnkm~3cU8v`qiyh&L1E1^VPh=!%X+Uo>1c96Q;$2#!T1Ajyyr?xG>dq*93%MpnA#<7B$B#7=HPXzf=n$eqoJt`+9|FBhvLb+Wa z4m8GHx>=pcMvH?ROyEX%6zNvTMAD1qZ;AsG_0HNgMRs*xMPr|7Ah1x>6n>WIU!Rbx zAYDQVirff^+o%FmVd0B_;=cS=Pb5fBM{XhmuA5{$CX^gd>K>tNd;Lue-*M39)i8u$ zvloM|Alu~~`DW*t3*x9MP(pP*a$yx_Za4IsuM$&kOP znIjBTyD&_q?33=(F8vwuz4}#@VC5b=BR^1qta#WB)w-2XWN|LD`9AlpS}&US6%rj_ zR)6|i3w@-sbdLY*wIZzMyd+h(eZ#``O&@Bi9YU38yi!ozx7p}(2j2!@LD^z z=Hq^=#||B`(#WvR3+)d*sr80BN|Ky6Jt`#Qjwg11 zG(HT7qi~b5*RMzyF*&HHxNqS2WkJBe>I_J0^)kQLmlNmelxf#>?%GJIl_lQcfQhMcCHR zpjs9>tRLYo;~E98pm1*t7SyL+0x}cVhI- z>CT#lG-N@6SO=jawi;8;(_?PT(9ie_1fvY;Jk2=I_w!E z!Y^R`3t#8*m?I|Ud>4es$FXWl2HUO$%~7*kxDsbkG4Q&Gd8^ez857WVF=K{GnKur# zV9TxY3P)fpjfiFra;dkVwPR>95jhb+kD|;*iA+l2Oqxik?B99KpfozgmzxwxSylWb zg)%DWt{5oQP7NgLljJDmH3}IPvoJ+PtxxycCnYT&69cDw>&}In&F09a^uTC0WeDa( zEL8Nxmcz5q4LfwxV%sU0hvQRh+z2C;vEp+E2B3SEF-f|#6-mSx*mK)c0$fDM7kPz8 z?`_-7=l0}C#Zht53SIt`Y4vfg!7WuL-bBA!&v`K(@{u2PXiuNAgvs0jjDCI?mYq<; z@mZQ{ZtFKytujvz#Oopf6!|7kA*r+I0ob}^W8~7^gRdfY+9S_F(zSHB!HwR(Y{(zI z-ibb7)VpopINsALOXkwt^<)cm?aV--LZ?;j*$ezC^n=3iBOB=!JGQ8>rYy~O6p6Wf zY~=*?XKaLp<&Qo6W*RX!e1xBb&9_ct3YV5z_iE#2JViml)_rvMZsp2wS_7iXxJvew%gf;mkQY%&1+`Gi*e*2*B>O@GO()_#LH6z(C{)jcjQ~2H z)FMk)q>Sp8;Wk^A>(}J1pqse|RN~jF+6{lt1bbson9)wiI+YmW7Np-sVNxH|T&AA! zBI7Xjs!)N);7)_r(h`BeuV_SgPbsHm*uRBUVktIpforWVBjVz-avd%1F&mvltBvF? zfNt|pMlEQ@*r7Zr@j1anSI{yWHPQ$!*)ikAEYb7Vw$0#qFN1VR2OI)KFA*m1z+qk`Qy*pW{`d{N@Nn-0){$edMYF#Lln)aUBU%x zpbeNn0tProp-?4C-fLh&EA7jUs3uXR>mE(WMi;sRvb?M`LI&#S!`abZ>*?LAUzBEv z;)Sf?7eJk&T&RX^Zw74e7XPe{@Ple&hu)^v@rLAWVA)heayJ-&0YhI9ste5a#M@pF z()}*Gekga)6xf{ah%_;p~T z+j{vjFu{}Ns1UWUeQeT)f!3d>d;a(X|5DX!wu&XZ9eRYc!uzZQ6r{8oI2ArhVA%G? zHyb=YT19dD63$YpPa%n8ND7_Z+Jr5NQ>dEfM3VIVW%dBxo*UEF9g+=Z` z3D|>we0$`qMMT%+#&?bKsMuGo8^3qSNM2?u$wL0_nc8UkL68&{gP*hNYcXSBRb%cB?pVTSk*kfIOciI=QQrZ1JZwiYyN9#?{qgO7Q!32 zgX+p(BAS0u%GTgED?@bG%^)gzHm;AuU5;tPf-`#gsCDOP-I(3&c+iFWwqT)~_?WRs z0IY9YJeXjU!Nm%OqKuR|k8Mk;_D%MBlM=Kp?lshdEZwvMKMFR{C5D4la_j_TyeaQ~ zdSvtTk@H$=sJHwFks8_|tO%{fojwPmtKj`Q1zQ>HauCfT53_ze)l zTG-M87<=xxy| zDdO)&IMC;(lZM18FVB?v=R|Rw@)!k9^%zF2N_oFCDrd~Y_ws}mz~dKX%-kV41cU}} zQ~qUWCv|=_P_%uplL?G&6J|d>Wk_c3gKFN@F)jA%#ii3cI4UcpfE7lu4V5L?>N`$! zk)h#WZ(15(Finwk1ceGKs3lJx3!EAjUatNdO{TJTR0f@n1S1an1=2=8TU1Ml9{F^EsNZr(g5=z%U97>sgM zril2uR`W@#-Wt5t4Bn5Yz{|T;kcFdy!DE^@u598ty3OaS54s~Hb)tkY7zz6}Z_G@k z&5BO9g?I?$$5+Ud9=`SC0y?M!A2=yUZ(a`GKLJ%Ec-W*#J(z zal~$;zmv0W6y8{yxu3p}rN~roYmS7RdYm}J=#D391J6{cb%T#4)$PQp>Q8-uV-c7&nmY~uoMX$~7PY5dy=uY?@pM1GFC@wI|v|Qrw-=$Sf4{wk5&4_=sF>gnp z*P({nvArrS(l#^E8wXB^60 zjj8eIprA~2PY#gR{Q)B%m?ITG#X@32;je#;)B6g}9@Lo{@=*J&tl^#@&d70hV zqvdqNZSrNvD`pj@qo;n?u+SB3dYiht9J6DcMtae}KQt|F%fb$wYUmT-k7u?}UG8yl z)Fn}2q?zp*uBGX@u7bNWI76Nt7RMm)!sbX2Hz;8bW%E3gv$UWV_F%`6i4Cp7qpcfJ zDggycgt){-@q3Xf(|fbVc=5I>92_~)!?urM`!cFbfKnO~Et7=kL&!+Ci3&hjX#21i zKFjJr(e$x^2(e2@eFplc?uR%6Bo=N#WU7i-P3r}$20vvC5=maef9!lE`8^MhF~c2C zpe=9m1d%QT;koR$`WI=uIaOv;*&wjp4F`WIs*eFc#p^<+tI9=knDS`Y5Hk`w5F|r_ z4?}k75;f>g@CXGS58Xp^u#Y!M9~*|c8HAWY>=({SS*)Ox9&@4z<~uD-@;AQcA~6`) znp0N7D_`!W=)@bxJMyWUz#U*pQ{cN0!i%$t+J2M;9RU6#E3;dfkcw9t9*NT*lcI1S zbVTz`ZG|Ev(sHZt5`F5KoNfAh|<`q^eO8loN$OjJIl2#PXtQA)~wGv&f^-Al_TjJ58Pa+M5kmz-NhD0 z>XD-aM~}AOprfr!hqfUw;f(eLw$1NUyo!L*Yc&h>8ZR3PcRsr zpYsNmhGRf-y508v%`$L8SaCUt#Le-|`Pk(FB`->6b$q*QiU>;5;ZO^-`(W`&3^SQ( zkqH=nN4>YBjf+!y{$c`$oM{CvIf05nmqxq36o*w@|2|2@sQgRAPEnrIYoiG6NcTuA zi20@ezU2fusTA{G1B8BuLkp+2=rSrPB@K@xP~VI_i<*3sk11&W&=Hk2t3r5-zDpV6 z#dQ?z6_e_cU_h5fCw*a;JR+eAljWPV_Vci#Oh=B8idNeaXLW~$1j{iF5rJu`*b1F% zh*c0OefvNb3TPm=QtqJnS&kg0IhUac=EH`4_JOdO2>dyQq`rdoW9z5}NrSU|aEVe@ z!0U9?EzH~X@v58!f-M3vXUndSwO;G6qI#e7_sY;FZ`~pD{4qHs6Dq@w0jvTvuB-~N z8+2+lf)Uo1oXzp{W-SR*n2#9tSW9am$`FVl_l@Qnkpcu$B>@qN%5&yQ1Sw+BnKemL zRfpwW%f=D?SAe7)%1{97X=s}IQA|YiL6S9K$N>{4hvtXo3ypJsGLwUJwmpXvvPb`i zPkFFE0I#G&1qC%RlILTgZcE(q9+YC<%6We|>5Vf%t>CBZCH(2j~p;r3-+a*1_ko zbDXT3(;;8uXXy6+1Dk)LQsHjW_wQy>RZ=1Ndb*^$3dPZD;?iXgYVT4mXTRmuV@H@d z+u^8>gmn-Ztx&?PG9OW)by86jFo4ZHASsxOGZ=Hk?0FLtV$3cds2baN$3E4A#Cl31p{Ux18pUuLY!{ z4`cJ3-aWj(HRT`W2eeMg9XCNOM0LZ3*_F@?(ptb*MXl6wMq(2O8`(E*p^_64!N@mh zN}T6Iy|eL?DEPiQ3hfe{h(y80^dA*EwBR9&WeP}~^-1)Q!~NsxR;~NduFokawu-+X zBk?;o@e$fU1Ti{AzikyOdXzd22eX9kBS`pQkdEjn{K^EqmgG`{$d@+XqZ9O6SY_gu zVF`tjkVmDrsCq}^dc~hYd`tGM!y0j&M8QMw%5XSu{5J^=s>#z|3VD@{Gx!}uptysk zT-+YXFP4p2TEnMWl(`?Zi-2;tKPjKmJ|@->q=`h8(^8lcI;rt9Vh4rL1X0bU&<>to zQ6;sD%}9Rgx_URn9|V~;>{Y$#W1I~`l^ZP`I}3}K2ERDD$UwHe2|PEk(Z?gSX5)<+ zdUVERMQ8fU8wU?*Omoc^6-f@ZzMlOCCI4JZ6pFU7w%(&U3w2ffD{wNRM)kBsFp1D~ z$hptcdV!tgO9it8id@_=mRh|S1`n@*{P87e8yPYawPY3Ej4zfgPmjpJt2xkQ)}yWE z8!BwmbeSH$?$nPCXocC}BuHU>8G_#JzpON-o8dHDrRT}GC=zG4n-7RYj5gxvKZ=Te zSOn$?;)Y`Oh+*oP4+?!cN|V?jhT*7k+1UwXf3vmw_`8RK38Xw0v`a;iv1{x~`@aLM%hM*qtStGVzXCYf`q* z_(Exk=MfFjEUpAv%V>G@&>gR|FJndsyiouJU(}m+h$7w~k3( zW%y9pi}!Z98ob(Mvpx~OfountwA-jxjjOYhbyE7{fri?p4n@6qdH^jr7&38fVczz`O5|rS zdy!`@=)KgM`o`*xTGX6Xu3ZvA3j2C&@tIF-vj3*NrQ~{bnX;X!<-Ae3z#`X$V(A?- zR>Eba34!GF`jUademjbn#TO6DETFmI1 zzS4Ag!l8Mt{T_^WuF)6(;xNHm4}e?OJGCJrNUFcL`Kh&jmc&pBdHbLT;X{(%Yck+$ z9rjdgp4HO5J=y1e6o0fXPkuh0x`e&vK^jbN zLp|T>34R?^3!C<1=U?}@-t=y2v*M`L27Wk8BFOxfx|1;Xni@||$FAh)b)?sBW> zzw>aD<;V80(-5HXqbXyvg-F(qA6|AbNFJ@SK>r2 z1KK76v~3*m5M?RO@~rZr4@<>T$Pxjuw=^e(_#E?V8&W8b5hz8G9Og?S%wxe24~VR& z0*ZpRTVmJdRbj=qb<5uLm(abvLXYTU9@-jw)?ms&mfc8AE!QY0D)J>g-lmy@O#5rY z6WLsH{weaGczE8jONV{}7m$23_L)sEBHTLA?Zbb6s1(3*q~4x|K72BGM_9-U=s9sU39y!~V5p@k##Z1v$ zRm8R`n7%GrkuQ9-DMesZFZqp1B@nB$^Rq%jm}XzRNYPx9EK!;LbE>VkX}0H7VYmtx zJjuxDl_{Gm<0co4N93{5g1C}PR|$ebo?XxyrGGPoPNS1T35K!QkOYXJjNv~{hQ<}) zj=PwUzrPmNOe$M3S>%bIQ{zQ?gB@@uBh3V44xG940Al0GE|aM6Jr(w5h1=03lZIFbBq;fVp3GD+(ARJ!+=|3t4d~)LXIZ2?0`BfXcHj8 zbFHKWn9noh6O;9%f2%6a{o=6@ySg)Fj7Dl80r{ry(Q=;~OrOv@ysCr@xCg4Q?h) z0>WslwOatjzulyT&7q=aiqW`VEU)869Tu$`L`7jXD3k3&LeBAPXqa?S`Pd|7 z2qFA79}#)cd|QZvZPO?h+Y&M#*`{8bO5oYngy#14(vLt|k0Chlj3L@1ZEP_ANPmHY|$QXQ!wD`4GueT7t zb9DaP`^6}`7+hfI+Lt3byh=*|2RmW|5RYL%|k;X#f~6nsc z*CEiAl#o!);6?bZ&&7Cuw=)?`YsI9rCORFy;ceZau=(}DK+fzi?8WFD6_MBMG$ml= zMsh-4ss&nJ$hgT~NSX41@Jwctel6t^3f!aS7D~w?`X92Uy{}4vADR1Y?ObuRR)4U} z2pv1}O4qjvl5YamQNHtoGN&HSZttO^zz9Oa6hS-=n2);DK{SzE6Q+vde1;^FCjSC9$*dy_*- zJ%hTbBmFU~CdErX%Nyeb$#OsI&ESCeA;@k@I4(q&7^1U1`s(G-VP}*LfJS{r7`{#t z3XBp#j3T)A zE{aoA15z}9lo-8(YRQ(SblP(l(>v_To=WdGwoOA(@uxpNPV2il0IpNJ2f3e-`Bpo!hL?RGM5E3eh8=8p>5^l_lXR9EPYY1}o z(k*0k1kU9Jyl--}Xw&XwA1P8^Q?cdv!cZY&l&Kq>B9GCGmdj4wHT^9dwMXYPap)$` zHcW`T%JL;fA%H>*c_mB?l#JLN?qHDW%PHjlUn{q>GpoUxp}-?hslNMUVKQVajYo`7 z>$&QaAbR9@gn)v*X_q1S^FTc3n^;^>(C45_gJ;x8ksNA!J8?Eww{X(y5t1#x)f`Qv z$afQ#`DUDiAP+HE#XzFQfSdoe-ssF`yXbms&A6+g4ZQu2BGnb5t5;(%?va?q$&kRJ6O8P9QtkTz$f0HLozGu3sL1T)XQ$jv*TKZZcy0*t| zK_TQs!%2>%4P>HGk!Wh`(xKdSBv*e;=wIYw7-Vd3f_575 z(1=MApsGiLJ4hjLR@)szko>7!=Mo)iqa96vMJ&dRf?a3#D;$evQ z{_YY+Q+@rn5PCc^9*jnFAMTfUSH-g22#!1STP2Pao1A(Ln%MXc8bY?jv~j`xipY2wT{IOb13X&AJk-5nTR+wl5td2i1=+j94+tN z#ltppQ4jMkmI!9MfaNY_6h(w`qsE!^;@090RmQ!EZH8N8Qs0vKiosb!dcr~y0z;3Y zc?m2$yi;?v#SgG}?w`?N$lDPxJUGnrqzyF6ECSA6iHE zMmXjfI#M|SwM2gyozz_z3C})%JT?s!dVF)l`84z(f|d!j{UQ}Ap@rBDEw3W{Itg{I zNJZsRdQPFi!zloCuI^&>(+Blj{~CtNs_W>xFkZX125*_wJ98t$i=ehjc`5@(yd(2u zT?>W>QqvI(U(%#Yz#1J9RBWcyAngI(;j%jXs@elcsgk zjas-ld1lL{O~fH~9q|_tC9}!DV`;gM=*! z8ip;mpc5sz9uI7RwZ8;>dJ+ele$aWeoXuWdAdG)CWRFuFEcP@LxmdwxSkc?z&}UJ_ z08WXvLj!wjn}~#TCX9NPIc`2z*W@bg%&xvOIewG`y0STb1mq~gp%uS^6(Q2#as80L z|18VSW315517}JcsqYkA`{6di;aW;2wkA=R*}KLiI|h=(ZGMB;EvE)S-hI2->&k0% z9XqG;&yK?V5qPfiI~0EURzMh8%w+%yGtpQbwTJUzWxcJ04&k#-5q-L>x4-B58gbL6 z2xm7dvGamFUVE4Zr@ae^f-=YsOjlm-GtAO}f{z+x7G{VW%aDvWBS9C{t6kOzj6H0^ z8YEmZmqmb$bHtEg+s8(GP#b=%AwIf3^lBpJg*Iv)ludv@gk@!u2{OHFA6|f=Fq7aj zD+OB~lm_FIcUcWY;}m@2*m(lKDEH|8!o1JKb|~q19`#wLQ_GD~ON#)q2!G}Hvt*)$ zd9t^xsn0=5lknsVSWEoU0229mEB7LcH>W7Vgsl%_@8?~uWwUD} z`XxhMRw~@(gYFi7+syt*GUAJxp0gKYG=_J&X?gwDFQyc*lF^iqR$g!<7wKhv-j6q& zzvr-n4l-w3hE0T=>}pxf__W3O`L&E&t$3^wrU9$^^ zTq~O8NYqYbldSWw*?>enK`TBbRn4&WcxtJ4QS?lHx}AtuYG_I?@`rj4X*rCV_~hukuD?XojV7i&{J2ZIr-*=BAMJ&k0JU9NIq# zkz0mMp78F9fe^?!Lg>!&0Zv9yf1mgsQlc6Q2-;;B1cw%=UqR+R=4DvR@&Cl2mBVKp z^$`k`%+4)*RPDpZ+$`m!LPH4&7pOZJ^plAKLhYLIT;iCK$q`45h2sKPP+o4cvJ{4+ zpZ%hK0QCWZEa(A+(-JPhPI>g+A@NBZ4C1@Z-ovz)*y?$kP0pSY@G|23zIIL@AFT2F zs-71oJ&Y}5MHOWGq@sArAoRIn$v&m}RBSsfUX8-fT)OITeMh~nx83g&vx-Oqcgs|* z0bOZp(4vsA!q{KcO(H5w3TQmzrO>)0VYDJ+$~Uf)iS6H$2*$^fsf}xz&Yd&Y5X0HZ zjHgQtaD};It7$bx3Z?b+Fq}>o!)(VO$Jw!?$W@^;heX|Rh=zOW3}!StFr>yb+lI=g zJcd3Yp$`6a*px@(a0;3x=(&u1`w?jX71o9Wt9FhHFEp(_D{=3x62uA}6M*ayf6r`9 z{auu7q^{SrEDhaj2Rnth^rvap#Bh}zQhGPu7Cg6vIMx20KW7#nSo9ih-fDL||8rD| z?F30se51-f=q|`|T*15_ITLh-woarjY*hr4YRGl)Q{BK8@AEZqf4Nti}!Cu+IxrT8t+nm2+GO*-^Y=+7-}W$WHpXp&=F_>|8~SXJ;k>(5GYwS}>~9;4YWl$R5|{36(|VO1 zwA-mm_p+urSKUi)o32KYVnVxTZ^R6m7W2CBzih2-%sCYD18CZgOx?(EU;#>TVzC z00(zo?At;%HQ60Bfd^w)H!PbA>p26=*O9x30bYiwULWM8Z1)w>k0~~hV*-x2hl`^5 zwvGQLmgWW69OCf}RVH|!GS^Kqj3uFc*8R z>e>_(uv`W0+l#JF-(pIhARC;Vf_Ng2GxaJ;u7u6$exj3mrNpQ&j8R5-_%w#@_dyFn zvfSFh;%61eB05sSi z`Yhwg!&_DQtF z@0MJfCj_nYMS;n0llhGVkt;VYD^)vdca2fi&Jxmb>Q(!TcrtN+d|{4d!pqNB58zvq zN6-gHE(cK#CVr}E+uMbADdD5Fx1CzLaF1G$h-i^8M~qM+U23HtrBU;fPGThCE3r#% zopji+n%!Bnw33WI6yuFBU6F8W<0iVBzZHiZWi_U8T>yt@>h4K-BC1D$QCEsYhW~%%K(pj127tbyQhk7Ay!gYzjdO6Jt%k64wTo!kNfR0(2(dmneO zNT(;B$nIq^p)NRYG&JB=)I$JLR%< zzmjY5$0?7q491IWEL@6lbW(tFH3cm-iZR96WL+7riuoI&%Wvc%f~Rk&UVc2OqyLh0 zt)zq%Ry*TI#p1L$g8ypa{k};(6X(P$bCI95$H>}a^Py)5qYzY!9`U4vuN1P2rcC?$ zlVNL5_VeCzjsC-y)gptp;v=bE95bAGZY=oqD|OdI`#wjEs&x1K_?Vh-aSb&0BW~pF zs_jI6Q42NGbW9u1-kcK!^Cb(GHYHzs2!5ZWm;*f(d>Rf96ldZ=5^gw|n50nHT?n#+ zm;B|@@%4;pV=36ej{7<&-t{k{6hYExI-_M{D1Igphg@gvS5->f7_GdMA|ZD`{{(7& znEZjFK$xuM77w{$+D~*8T*P3WT1s#b5Q4u3&1k}6%e}2$Kk#&_wV}x|e-b-#^-6Fz zYTo-I_g zT!2Be5zcJp=#oOI`tRcwDTDphmGbYOy+Sz4xg5n@({V^nWI{v3uHv~MNTwqAD3yoo zXuN)7AcX>t?kRET5$a=B0h5q9xBQG;s!LDHZ2bYy^Icm_ej+o+SP5`$Jv1f%z~3yf zP$(J&Gv_JQaf`vy|1lauI~cJY`u7{0h;ONdWBoh;0Zu|S9*(5HDdOq;z-DAQ83$ua z$3$3P{qZ%b;Tr8TR6eMpX;~)9WQyE7>E&uHhlxf)j?>=2#ILCvT8Y37Yr(th(MYRWZ!h1J(B(s@fbpan5 zN!;*SXL=%wfQf*u8edjrRe}VIxd)(`@`S8pv<^cB3GPr~O5j%vV+_XR*J?o$HB+kn z4Y9}N78Xe-Kgh_5F}hK3)kB?}_`hl5D_2M)#Dg!nVO|fcgZS;a%r)26Q2> z5s+VrrE-t79bfCeEzP8gG@&>rv>9OLf`*wCd+8eHPnwf^d1b6*BBP#@uy{NcJURbR zn?^PGElmeWUbqANIGDFOsRx{weXt5hSaGCZ5!UuYo_#03-SBZvVyOHi@C7fKc={u! zy4obhWSV$($=o?lSk|VBEosrdiomxzXx0$?t32;oPxD`smBja5{XM|GkytzG7HB+i zI+_xONpRW*Wd-t^I!(3t7vo7RQW9G!Ly6#|(XcAj8qJ;fwg=fURXgNm3T~Jf)b?{AxFghlwu)YxhxEJiZS)NI7FL&!Il2W z_|u~DS1!2t%?WR4WaN05$M-KE7P>R_b}bE5?Q~_J7SKG$*`2s}@rt`P6VF%tDnv(# zFb5Oy28(nbPf?AV@MPu!z;Cr6lx{K#EY5&jGQ`6&(#r#JWGyDOXM1CKL7XH!)0WSWHc&>o0D5 zS0bJEzjr@awn>pb_vpmH0}$;w3^y;zi#CF!#oTN1wYo5-P zBKPi8elw+db`nlW#MhUR`Gybz1|~kx)*uH6Wzad z+4w^?sTHI3FOWV(vrBcNKzGJ*RG`C3rwb)b3H zG2>8)%R{9^uPtgBJe49tAcmer5+`{{ckMtKLJJ}L`+>$>9w!FziW(a1tEOp!jk`8- ziUe|c5+g``wWAGqkR+FCJMleG!nIX)1Exf!WgJwMv=+^n(5_Xq)Sv@`bj(;%W)Gzc z@2ZB@YYM(l#Z<}C#p@me^!LN74(|KfT%uUcU|}+(B_v$!tp1Ij*ivQ!BtjAZ7^_ZW zOr<@(=633BJO%nWl+>z3PW^{!OSd>f(E@ozDI;uR>SxQS=K;IGAvIp9NAeyXR&TQA zszK87!&H|)M~H~41*VL%r0>+ZHg4H8u5s|WOK6Tf0x0}ee<|?ixzaq?qNg0;gBD_S zA(=kCH%5uabf_=}GKd!2$Hm|v=pM*BBGu$WN8UeUKFk(Gu)XRKFBbyA5bdb9su7m6 z&HoE9K+nHtmRW0-n>^F2HS2=1!7d-&=XPeK!D&joa2^FQ1^fOmsnrrI8pg#BK6(W`PW8j-?^%>Y%1# zJ?EQ-4xVGt)JO^*IJ8ZpC%76145J*l%rM_c)PW==CPc^UnFSlp1Zig~W&`_FpnF1Xi-ZmVYk(M)eBG z?*xE7f!3hW&5p7p?Q*68}WEeih55*V?c8|1V$59nxh+M6$Er*@mi zJXApP#GbfKPF`P$tQWePqVvkuTI#?in8t{3n!IC%v?}j4r2w!9kASC#R=ij+*9OHG z#-mmxq*0CxB=RJDD0w~`DJD0d)6Y1526{m8RLF~s$q&f?Eg3~%@3_}Mp{;>m*~d5x zoZNOGoqVK!^*FDEN9}TgK*FJ@=_DSdb4rO|99j7}i zg2nv#36Zvh+*I&0=IS9z8w?l?ItCn>+5A{|YTrTa@BDjBwGKeFmbB{yd@O+>t25QCl;N0D7+GD{+rcr@YAL>3O#8Ao8#IgKqSs++?_8G5&SD8{oeu=_d^ zPQH8nD;}21YI&})RXV>w;%I=wYD<|FyXHY^?LKFo-x=#7y?7wKIv3- z^qm1Qe@X)2nhgT%=@9hxADhYWm^{Tc@-FZ!qeoY1fk_A4>jqT()5WL8QpDkH*#t3V z^q6CIQ=9(-bT*R}(w0_YQ)=so&l84Kl+Z5n_IM4D?fNXDU3A8N-eIYMzQd4^ov#`b z=OMNrM+ovoct55A6Xn^vCn>bwjWsr@k4zjGJVJ*ReuHoK9v2Q2k`mb`A}H-Rl?HqUD-6VE}d{ zKiY)If#boCCP?xG(~-F)BEZ^#M6w8VRAdwTF}}APoU|_`X>tS2)FX#}h+&5MjMjD_ zNb#H_>vxTmnK@S6zz3gUX{Kpb!u(?ki2ZQLB(z3*C~FZY%k+?>R6`9}a17CzKq3IY z6og`t1{o-1@G2?dYR}K$O(bYXbAjQ}KI5~Pqd(1cX102Xv!a@YQ0^N~#8EJ8PR60Z&V|tu8sG~O zUg01sgSE;DQ>mer!Ua2@c@G^BO&6vD@JGmi z&U46(LZ0n^Cm*K{l&cM()za{B2i_ zza!H;u&@;2AN1^9oaU4d1gFo9wWGCeFu5eYJeffpbny^_WC#XJ0Az(?c(*5u!ww*2 z>4*TRoV`h4lCeIr_;@H>rQhFv7}IeGP#9+H$ufm90V#rx)8afQ7Sk}Jj=ZAuQdNny zrWg}qxG6*Hz%)puO@?vnTI;SMggHx7pQ*lXs2EJt0_EYo7q10Uj)2(Y7Mn$zM0 z2;K!2GTt_#I{tVG*R7UlY{@JXLCXhHjyR5jquHnq%~}aRseT#fK(n8n7gEsrC|t9Y zeQwgw{od@g)ecMG4f=c`u!$W98mz;RR17*_1`sMe6pt1vuof<`Rq6V{GN8pd>>HUc#MOtPD5%F% zRl!K!W7Fk2A||J}`DHS*>7KUI?Vov+c2P`yJ4_5MQ4$6eKwPqOdmn zV5adY8IlxSSb6$&EFypH8%8qJNf`X8ODmSwVUgNf07D@1u`==`G1{lR)nCn*?Uaze z8ERJpU?O{DDgeEP3u+nP(dnk&8#Nh(@(X06EOCgvgMvge;pb%p$82x+-$;n}lc5hp zpG$z+hc#3mp?-|6fOKsTDN`FHP^?NB*PUqO*%1{BycWECs%9*x09AB^as8SPBrK=W2-Zg zeLhUvw{SegHUv^P*pRj|RI9YJEHbq?Ik3&E3*mcMp;4|kJ_Bkh?XXo*kz9jEw%|O> zAdP*cBGgJ0uz2SQmQ0E}jenNSVxtW1dv@lN9q4kNGh`W~&}NT9s@F#3veFQcWS1y` zA_lDmAZ+3-4aow?Kq??1S3;p;E5vHNBm@9?+>D8%mIOHPL?$WL5dLlAqP=Q83Q;yu zS{b-J7yI6|9OiA4X@erlLErB|?E4i*3?#}l>`N$&p8gV=Pvqr?ED=fjrWz>1E z6FUJJmx8-a{V8)|W_~tK!M1E{FWA%5M5f8uw@Dd8EY07aYO(d)}rCQOWY65heABPXqQErYW-2fDnrkO ztE2rPTq!g!0x0Atth5e&kuT<(yv#_BF(!)`^SNmJ#{k`<*_prG*ZZNUVx-d-uMkDp zqEKQI!9SFjt0+Qtg)D(CiD&TKLOfrp4g}VXzzU~20OcdVBM3yKcE_5dW@g&?l+>7{ zIv^^qF0z7I(G0j-EA8yVXg&h}`xcAvUJz~!1AmeAS2x5(3a!zyC&<5RnWQK-hqOd_ zc&(bTi8g`G!B9S3vE>@j!HHKS)Cp5?@`OBIP{t;Eh`m;7d7&DDdR06-zI@Q&Zv-Q6 z{oV+P!PH+yFCt{2@6g%lc(b9)+5om{bif=Jxh)rOjZS!2`BEG>Gcw_ZNM5K%vaD(tF!1aj%Rtq_uY^j?pqW2L}L|!!!mNkhB4gzT$Kjv@yA= zJwzG=JTL{22aiBJS5s73{;d*vfJdsGM)K*(8akWp3Y}5?>v&b&zt{&0_g|ruU3^hPfd@fw*3_UfnMaL&{H+@!#6amQ70ET-< zu|Ypz1`Fs?6q8c@vmF*bieE)i2%3jEB6eIxnYLdXs1Ypzl<5;IWn&Y#J>jBb*0aw# zs58CR#-X+&j1K(EE-YHLf{8VZe`mqWH?1F!a9p_HrTLM<2Dz}*rq39~1`Q$QRL-C%0vP5VD zRJBqG!^prX8%vOQ8Rl>)Y*PKEMEU0X1_6a1L<0{AEQ-YAIDy89oQcuUb}=VR@rBu8 zxS^a4jNSU>db0Cx46A4zlb0|pv~5w4(c?Y5GGSaDXCX!{au9dzE*%e(k-{o;TUrAT z?EJxOx1|o@G_ipNNf%>syK^T4yFdxqVnuN^N4mazcURzTMGoA%!Qlgre8$qF+&32E zmkbg_VtL~+4@!v(%fsYHoQpl|MfFJc(u-m!lnD4mQvMeM{-EE5VUY#LUo|A1)_fqy z4e46XLQ%odYP%q#{E9P%MIfveEH?7bM{63%dxtUDP6Pti6c6&Ic?%n#Vdik-WhiVY zI1v_rMF!~t6aU1NDHo8)**-``MT3o*Cj=*f;-8UE;caqdzezL2pO{6hFHn3kOji;( z4EIkc;b@F){zhYjuyu&-O=+d7{`fV5Vs^gS}r zSlnz8Ufy^}Z1`vtnigWm!4?Xime#mJM~<5aKp>h-1zL~HA9X?et-KMkR!ZBBSEup} z<0}P0xUD5UK^yKajIh)6%pnU3$6^cnUjs^(WJkRmGGqQn|94Rz9JC3vPHbpaH}2+m z;UNGc>@|wGTc zn*CC)q?r!38f)2vsgP0}p({#+tte3(dAODUxSkY_Xp6WM(ycQlk>? zi90?Q2y`8f__Bj69I2m_C6sx+$`Ci73zahi4QQ#f7PvCCC--9`@nmIR8rm3^al&0+?ciPZVSfYtY_kBWwX) zp6!T*Elqhf2}~d$8UgO(P0b9H5-m$5i?4DAMEqWaKU51A8=pheK>-U2!brk25D-jZ zlt!DGCN4@pZHe4wRFY$vCjp@%m`2U*lR~5YgMq$kDT+Gx%+D)Pl*Kww`z8%2&`4$& z;gM`8E+{mJ79N7i?emDeL75VTddW}~l79wxVj=@)O1g*oiONH*B7l$$y;QYF{U(f> zbN(Gh22oA$&m}bHx+8Rjz-V4F>1U-sch#wX4$9!Kzf5y?qR6C`%nZ>}i}kNDb=8MW z&@a*la2TgL*_*dnu}`!`tjs3A4frq7=1b0>#>CJTQ;TuLj;|$=Zs#f^#Eso-jzS$n z_#5!N4U<;jYQLfw*}|AGJSzorKs?F-nS@Mo2Cgtjfd;|)WyyXl#t9AVro(Ji)cy#C zI*Tm3cyJh71DShm3fl-!FhCYgK3#Ij0GMny<3MrthIShbB%$A#=jA#HrY>sg)ScIG z>%2(!sh#7(gR&Kv>OZ1q8Sy~2k{-pOw?&-2w*&!cc>&HmLJI@LA&hvKQ3rw;t$`5v zDM*QOIQTChL~kTeu@e*oe=}fE4M$fJA?WR$j+b2PnAyXL(~Vfi`fRoplMeQJ8|Z48UpB~H_8y!d!9pe^6HHD1aUz1_pVYE?jJ+3wcV#7-iw5}o<8 z&AS4Hqy}IF1q{@n(RIvtR6r~&ga8N*@PIlq++i^l|0TDP=;Hq{UyzJ1OVA?6n0 z4QlwkniuXNq0ABZ=3(Ppe^{zWhR61~>Ga27j`Gh254B8-5?STtj!x0X&@q<+fDe)I zaFC3whx5$L`U8{1!ImV2V7Ukv0HLU&fWmrCtO=I2{4MEXZUW% z>9&DLp7LW-HLm7|q{-=nhk~AF6Uzu9Nc$}fQ7bZ)bmUmWU$Hcst&8(uYZeln08gBQ zNRYG0F+E}(L%f@lr$~e7laWe?ngZ6Ds&l|Oe4)ol>_v$V8oJi=6}sJ`EHD946S7pG zs{9ZZr*dt~6UahCj`Op3_JBwW-Q3Bx z|2mRHEuG2CBLVydoBRbJs&_OEv%Wc{5qVaKF18Lc)8n72VHMq4pd}P_Ao+qtQk-mH7em4XOK1+uveEcxLlJ9YyE+iI{!6(Zpc#W~ z%a(LBj{H92-)(`>k@G)^M(jDoLS`@#rbmtnbE)AMo)UTE9rs6T`Fo>R8Tt4bvx`{1(3U}|7q1)xk?AJ;`EsNSj zoot2O!X5_KVP^7>_5!!0H|+N7rH!CY!%5`+ELrOV^?*o~@zJcQuwG06Z&tI-HhTsc z{HWxvNl%VcCoL?if#}y70(3J$`vO8uHU5v75-j7>4w`m>&<7C{nO$X@v(ftV+O*RF)vL#5k^C_^Q%7jjvhR_`)>;Vm+FN|}p z)gymTb9zD5+%icdKC_YHs{l#h9$}Xif)Na9*4p^K@+qRX%9X%h#k+0}fpO6S!m_)2 zx#?$Kec=qO+g5YPdDNb+U4OQ6C0grZf2?JpM}Vk?5ugl9v4p9TqU(R zwehj_SZigl-5|e(BU4I7ot2wHR*M82NJvq#Hemw_Xa!TNSl3#@p-SQx!!Bh?;U2=7 z@7dSC57Ir9kjC3}RhAS{@d#5;1lAS-%N7?X#!ObJ0Q*{#tTKA}X@K(n=oZ40Z8w8j z-H`WFqR5_0%?P&?uV7fD7Ec!bHO2o|x_Vq&66q%du~yNeGg0!a>Cm6Um`808R+Vy0 zFcc69fue?5SA_LF0IxD)W+9-i;G^-Xx(;_@LU#@?kqaCzaFYoyp+cfr&4F^A(ku%? z6b?(lBjCjpw!f^kq;XMRRB{s&WiuQZ@C8d=aq;rB*j0$LOJL}5oV3T`iqZx-PFA*P zxGk`xy)Z(el4?S)0Ki~l*Ubb&k>#cW)6$Ia&5IF?khaEE(;Y?*!LU^}UtLKUw4t{* zc+q~-)bHIzLx@az>jYuL!j~kJaFKFvUR#Ptw#H8#MwEttL32Z4mJ-=K$}Y6L{*L7k zErl;};dP94!}>%8k|o{K%71cf!xyuL{1}bwW}&^qar3-BZKY%;;+f`ci;jQ$4CR^l z)Ya4}O@PFoWsHJW0C{#(t!RP_t`>p?-61{8QJO*~IGFe&CZ%I2zxRnz7+UWuaody- ze6`-on7{<}gW(jCawHQDlYK0-p<`#B58DL+Yl5)ZFcFHK=g5%Ihx58Q$b(o&9%6mCUc^N6v-aAsc ze7TH23DIau58oINcMYJz$zY9a#lDJxq(}hYYA@{%ZE*XTH3u+jmi# z*(?MSVWH2l(OGhB7(Znaj)rjuOi=dh)PIZ^c9TOu0Qv^LFaWl;!T@^PSg={7;ipP- zuK66IeGU`|=NLR{fJD)xb|)=a$8Q!APZ)r&Pl{eK&4c3FoiAJ}IC^goa(@a&XJ$y* zBU3yIMiVK^+^WzU*d{~CS!Q>^d|;i%U>&AFX#fjR(mdSox5_4DWD2m!X!?IkdWbo5U6=| zVPgD^i0w!^S(2L$NHLC>Y%%^q&e@Fk)Muh17!6Urj6@{4C=bT4U_BON11L58s4?PX zF>gdjJ+lvaLS<2FIbxZE+8HVvQCQu*xjBXz&tUJk*c!DIxB28dyFa)SVJTL3D*E5qWqDE7Z`i`Zd*P#PzBqVkyZ z5q%lpV%R|9YCX->J21*3l(8x(<>|n|+n(5AL8=bd1Ry}5wzdQOPW?S;wSfddz=AO+ z!7U^Bjn3$aR_-W+pLpTYsJ*&TzW2{|A>&*in$F9@WI@OArgp_)KHSg33^s( z5~`f2W7b3(+uN`9F+<@5e(Z;3i8qzYNWT|_tjG`ta71e>%F+7AVNV<6Y1}AA&v=Qvs%_gNXx=;*d6MyF0m?T?Un#o31OYwfPZID zZzNh_l4ob41SEtA6oCx7@U6ZIRZ^n0mlJ+8srg`Hxk>aaN5?3Sa|R2;Fj)4moM}UZ zEINtcya{S%&jwoJHO-jj#smn)wjD|WBYNOQlC58nohb2jW;kgbrh(W-)7%G?UyuRK zq#$@)8N|iVL4v!PW4=H@SyOn2@C5{mEGbK_y07%OMkOEMw_}S1z9K~+0eY|#i8L&r z`O$RIAgy_)#!?I{oEbyMwk#>y%Ly`D_c7-lEIxv6s@cGjum~#fakjfVOI#U6$FnS# z9LblHni{IC@p|&viO{*&-8yhv3?c^*I5y;d!(m?ftBs~fM6gn*^zmpW!m?BIcZ98y zTqmBGxINDRj1|tUYb{rhbEx^-$3jOeD1p&73z1b@8nXhKR@@6Nk?lHQ;uBp!ZM%lR zX)|>lLL}?SKA$WH=y@juIcC&!NIHkhOSXnQF*6fAANb7#OM0K-N#muPPZKP~#BHNVp!*5$Nou5LQxB$Zth)w9_gP8MVrYqkOc0 zkHJ$*X%k9xA2m3onQgoigKInz1YaP>Q0Z%VmU+=VfXd_X^0KA0ut4QcWJ^5hJ`6ua zuCpX!n_L+Hpv)nsrl<;kD+}s7la&>tnX#9|>Eg-?JD66St-s=I(J>+j%4L(%SpzF; zS>fk{L`;%*6VFrQ3Ob9LtAU*f7iP)Dxg*8$LpW0nngO&4DGN6Ga zz4D*cG5Y9&*aaW$)`_wl00W@7hzU=vjJ^jKrN|OdB_=|R$)IErcOzU3PXGzP91Hvi z1Hl^^bMsoP8b8*4*}h*`t?5K5o9(L2m_g(;hR6-;>4-nw1Y$essv5)r@mv=#!+mVN zy369O0e5E`5Do^y)Vq4weGDxy==KBE3$&*InScmzgD^d?bg~3>CN7J|hGT#TVq6_H>LXckc$bjRTuVCLUusB6cyzAmf)Ai!_ z#NL7-QejN*Es8S0`o8uSvn&U&yki0>-hGK8%rLOTKyd0wIP}F1=VeljySB4p zAC4tj&8X^{G3FU9TSGOf;e}0Tv1%pb3~bca5GaMH!j^hyKwv2Kkoa#D z;0KmE9^Cr~I>STVp^-DAxC0TX-;T}}5|Tj*&`S6NN=L#tauE?ESk}Y5B?#=6kBD_1 z?hI+lp^#}^Q@oV0SQ}71VqQ0ZWKiZx2cPjU$b?FL&64ep_D%dLZb(=#sQzpHc3_4q zOhFO*A~K*YaSpn7Q^k2$pduQ{R0s?AbcoR~WCYX27hsSq3kKuCmN9KIkwi;E^UrCo z6naP;$%&f&33H(+k6xX;W_o;%+j1sjpg`HqnUg@1&UA@RUDky%TBv-aSXR#SThC9Z zqE0FlL_fE&{ra&uWBs~jX6h&ozJOS-)u3kQ#;1c@bDs8CKdCQ!N)GOMNgPylAM5tB^Tg+x(7axuJy z94GC-zN&g^t1IzBVrkMB9GRjbPOmR0msE+i@AmGVDVox*h+UJysK8Q6=M6dl39=$S zs98&3*h(IP@Y3j|uAJ-d52&RW5E-^N#YWVn{i{27&cWY1_5isF1~i1p&!Ps62gUYd zyxX*Z73$wL|Fz8)_&gFPC#22_m*i9$rLK1YI6@mD*C{G-FlpZYw;i0twe}~AGSfQw z!C0U7L)gp|46XKQ2ep-=RAnwz&dX%Kk=HGRLSn&OW)TMJsy_rj{=1K*&{WXgo*Gc2 zn_nd;t5X*425l}ot30tixWqiA1b!O>c$yy8v)-dFG&L_|65kx4v;YrKVbDI5MHG^R z3el>MOrP7Pj_VrxAhHnyw9!6MCYp9Y1WKWQNh1Zq!Na3sjangyjt@GKro}*W!(I9< zGoj<@=PAKtkg`gB0Ul92Sa+2KJcXg)VL`sCP+QUac}1(GXjdOh0|Rh6EcQPvaEBBi z96an|jEZcYCz24@lz{N2E9Mw#5P;LjI&F=`q~&C7<<)zftjMP@-ieh?ELQcxyhY}# znQ;OSr;t7=q*m{7x~Y88brlsasSa|N%ZuqZnvZIfWvI|-gru{fY0`zn1&Uy9_%Flv zaahF3-!VeC_alhq|Hd7K$NqU#`$(ja5uK6goYrYc9T*cpY^LA_d#(g-s}_hO33!{W zu<;{BC^|VSP^6c|Mx%YvyHsRkzATp8cR(dvA_PUU;>Z~!pgDpzIf!)KvnNFQg2ht9 zM5x*Ffz4G3I?7qoSRr`TivVfRJHd zoJFkEZXfR_Xa$IP;eqzNtvG}ta$SJG&5q4E9gjFE`b*4zE`c%F9HiNZg=JB9(&1{0 zWyr5e$4?g5fi3p+E_BhcYfTh#xGL@-T5T6GH2&F@G&x9)s}12;tzbIaBnvJ$ICaP& ze^nu_1xDfs08>W02FLy635_!IVp;=mhx=QG(k_I zyz44f$^wBYtxB;?Q+L5tvdZh$lFC%@zB?seOIsPAd)7I%!%cw$0D5N!$csEp_%82T z7%1q7K9@w$*S3fTfD8*O_c9H!4uLR$?~8yH_N?EHi{OZ9Y6u7tNkB8xFye@Hy(f;E zy1z0c!an5ClOL9O*+xdH(g?FVCq4%2v4P>XWh({1DkWn~aTXvyP$$oZ`H1u^3@5_j z^`+Zb)|k^Jk!jyz6cunPNEhJ+e^=0dy~U?z$w;8q^|o69JE4ZgJ?kzX4v3@%!{UG6 zu8jx)Li+`<$4Jr70=lW!pVL;v42Vv@+hYx8p4PZTGK!^yK|7RV37)0~2@DJZdm(_Y zWJlV3VBKqk^aw#!Y6ZVl`Rw8zfFUKIMW*0MAmsXzCsH;$_L7IkIfemz5C8}r{r$5D zd{=>IW55BM`8323BGh@z_Wg;tF$51pm=?>I1e?->(hQ|5Q~@HSp6wiM@!z_77*y4n>&`>+j z06xsW@8mRfTozfzz zZ2VlioyxFOLUDBtNoW9stu=ZI4!wsq5=5lHqz<%jQa%WSQ`Dh2B7$2V*<%y{Bqxpr zSK58v zG`SZEQ=|FhA?yJWAsF#gP|xxo3%&nV;a#u9ktlmGOm__!Pz{@VFc|zlsp0ySPu9M? zeaA(C1_wjnsTOhtF-JbpXI+W;8kXGymUz#ppCbUharZ^hLiJ|XU6AwdX=E@`DCkYi z3=}IaC6LkaY~Mqf;N}WLQnyNY<~v!EXk*v|JTf7ph3gU?8Z$A`?Ib|sGDwT&^;jYf z@DX@RLt?)HeKs6-^j?MdWop25`Z*SF_ySTGf+sOT6k#+1Cdoz0C2SltLr1lF;7$^= z?_{OrkFfcWGFgmd(*g@hxl6Gk{Q-XpIj0_6N=__4;69cAsXC+(FRCEY!m+F99IQ-h z1HkwQFlgL2WujwMNFk-Q3r2G;=5^fQHnrRd1G`-$qwpTjGsy}kBbxZ1Dr*#^Ql3RQ ztw$2#r?j~|sOZDDgb;a??gQuu9g9|#=*5hMt?@;l<|9ZCj1 zEcQqS#+J4WAnm_GsU-apwifKKT0X_oO;%S{=_oixDKMnfR#Oy=sa^o1lAjj6pe#zD z(w>71(70IF1Ps95E?yfF;RSSxE~(cug}_ChZD73;>RsK;YhLDP99uish%65nL|wUk z?wifwh;p@{U>OP2NYG0V_h`krC&UzFK53YewW4tCLz~K}yAe7vj9t&o30)KecRGszp2)O(re$IL+ zTFc*{gB=R3l0c!5`xArP0!JG*7)Xp)xg(CFiId6ztZ9+lf*m;#X?Sd+9!5^XepPlm z*BBRwM;+;Lnu&1cW$STl2=-bVP+bvO?VH`;75SKt@9gK zP=cW+lc`mCkoPcV_vszRmD@ex;T!wypI}$sw zSGkxS?#QQ--pnkXWY5NRFV5JZXxqG^`-*(f^#8A^j*cg=Q%EwvQ`n(iguOCU;vEN- zU@zIu0Stu`e?$pkytDqWx9in z*8g$Cq2g$-73Ta+OPoY!HRt5%7`zn?w&ua|(q`eHe*@sk&k`J?f3S72vLk}OA5cI5 zg*}x#yD71X0Gc@0j*;{@`>Ay{JS;HKi`ejso$^(&<{_@iN#8Q2QNO{J1{d~yo_1Pt>@V3Of?LefzId^#%f zyI?dh=n-Xd$mZBb8^9jWI4Ic0Yprv6TnmL0!a^CP#1Dv;TJIV0?1yu8+3rAtP#o?tr>?)Kz|DPY8472R0<|)qKOh0N-uY? zS&<-XyFRE!FFIs42kXNOVLG+K5iKBhV;cT%dqH%71kDgp)& zsgH%$$>utLqrN0_%%VK`;T9?hB)#ddsz`*2dmc9sm|w;-jCV@k;dgQ5m`sG9am$^N zZD7LSP||v>+9wG9AU6Z}%(dV<5jE4cLHkZ%)wx3X&AUmByS}`;)eFW@-42@?xiAs$ zUD#%yNQ&~RHEfPg1B)$?mBQw74TAIh`(0_S0jCS01)VNl+_IwgHLH@%qQh~!1 z0m1J#M%#181prie;{Iw`tcURn`FnB)u=|+MfosUgz+FYVBR`nS(3$e`9#cn0$fCW-{J- zKV70+l`gtvv@?pyCR?*Lt6sBYMFG-59y7P=SB=e znfRUiJj{hf^3dX+Nh}7xaD@Sn6Ca&T(u;o*fYu$urJ>lL!}}XwE0sQaf0?B>Lyt2} zVy#S4W}<1IVC(V+brX(#pBBmxQVOkZ=N~UORTS^?L5OVy4q>5yH34u8o5L4QqBNrX z!^UL!N5JFLNH!*Ei|~J=ECL)M_I!Sm2%9@WW|fvo&?u1v;jBW>IiM{R?6#etr_OVI zIQU&g6E1zW?kwuekEum?T%FjO7V1Q*h_LxLugHDNzqf$Q$Ae5xLa)JzWGHe{CZCQR zy1M;5&tk?0$|yGqfA>VKQl`K!O_QSX`$k4-0vCsQb9_!QwD9RjUu6!ie^~`!zxDX+ zf`K`#*U1MwJ(tgaiC~Ts6ug;b&hl+0412lNDn~fqdp!GdQ=2xB48v0l#V=e z-Zzy}H!z6qYkF0QIkQl*QW0Hwl;>%)y%oUdn#@N04uw9;0I2{h>Kksto%Gz=xnhgB z(YeZSjkYBO3BdYSv<0h};;DWjja)bq&Nr`_1N|zs3hw- zBNC#^WvvX>*R>2&{Jngq>f=lOCRO2GkFp!K7B#3-DVb;Dqk;iwzE<{dn~!|EcjC445>}()P{b< zz^8$<1M&7iz-aM5WDn6INCyA~X0J`n1P*oSK4CzvaFP42tD@&CoV$h|wupoLVU1mn zM$rgRiW7j@v+q{ib}?Hy6%sR)N!DCD2d>M=Vw8qZwpj7u_l8XhK(`7YN%?hUOcx5z3~@%eZ%$4vBxE_@q%u#}-1&pb$uV$*w=4)7;V|ZE5$An? z{9I;)2{=%L3P7i6YKN9$XLEdik#MMHU1S`PDU>vzxV1ANl`#~+Z7z948>~;zO@QH~ zQz`Ok=3%}-%mDYofnd6^5xE}vgClw1%oVuSe(y4S6ro{UJSJtz&cq9*;l328SEN0J ziREB3u>~nC3&n$^XmHnHao*#Xk3C>C6drl7{t7X8TVMt$0>gh7W2y;UfzHci5^E{A zAjoDwhU<$3Nf$+sDx)#@<{^$4RrO=IWjOsz6tKiD`|7ptclbNuMTurBxGQk;8EI=7 zP{QGVgCKjDSi>VyS%65N60zB!ZF-~Khd}XW<;qT)1{FR!9p&*4P%4py_sRs4A)>S^ zE@m-VKUc z!OHht{0<^eb_VU1#JXr9c77(D7hEdo+{6e*O$7S@*M{{GUMNIvWD$AqQ z&=#rOB=m@f09RTZ$vHXq+2f3{Tg&lO6GQca64!0=Aw5UE$l1pJSEU4%g$TpG9kKHIqV!5 zgeI`@2h{R>Z3Njj-G~4Lv*!?(VmAOFbH2j73`2+{U>f<1lxjT|;a-gfDPi=*#Pf9ldF&jevss!IsT^wf9EB1|385PE*HNG`qdf@G z1_m(bjwjzQW&azHfE|co3j-|^%=7{`4EHyFl}=C>HYA&4^3g?+i*I=b%s}}^8mB;l zh_!__{Zdy3=!|9@UW4(FrDYKrMZC?tZl~{q+CodO8-*y(hRh4hOK$GguBQ!f+tM?Z z`M3v{_ok4+;-Zr=Dzi1bPOQ39yGDpO^@@jVf$N6EX1)nkqCTNH#!vSt^@eyqAre-M z#C&S)u>XXeEKi}tDL~`T#6OgH#$g>>YhBZsNLr<9Zb0yh+-2C&Ar_5e3SJ_h#+$_= zmV4BVq4~PWPuncYsg;H|!n}|+cpyoIM774v zO^--5^f&-+{-;gsBT{H`)h7P&H7s@2!yT4Rk%lk|bb(1`V2F2t#L9DrR)aF&m)D{6 z*h~Y;W8X>Q8#;~v^rqD_q#p-Jx8Jb1!bs+VfewgnX`Rp0clH>+LJJEFLX&Z(9s?%% zQRO$<@Xc-+H6Ui1JKUym+-IFW&|OG!B#+gRl#z+)cx(k3OdM@aCyS$}OF$98TO?6_ z#;Mk^JQGrumPEUJ6Voflg1Q%H&UF7YFA3A78q?qTf2xXD*gn#OI_j0tEiU?!{O$}O zWj`g-VXyO9eZ8}k^C`V$c2(JQ={2~wt0nNC44eFvtO}(PCTm!q6}7$mWRE} zw!{JyaK*sQQc$>zr+Mk(A*dC%a}1f|g@+12-H$_gG3_80Sk-6uWY=;5|z`tFl0=f;#mvlGQ?zli^lD$F? z4C6mPY;}ZO!ghjx((8e3Wq!ob4Yvh2R}FF`%K4=VT-FoBtPwG{hl2|uJp#RTG!5kW z+dn9haS~>!qX0{xE@(jLur?H9`H5?dL0zIZT95I@J1-Z}>(q$Z-$R zgTrU<6Z)YW0)Efkr~;NL?7bK7rD#f~3iaa2oGV2|W;?|ByTi?Q;H6Cd((zGs?*{Q$ zqusfyzr098LnDxsBq(-oE~!X4oI|J+S_lteX$SyxV)05`L(MJShk!f)Sei_c$fz4y z{0hOQ7YeMa{Jn~oa2_EA+plYBfq@8;)`abAB-7HW7eP?IAoLL(fuVIJCMeTG?!4r$ zget<&RS@b5FuU`@EB3j}r(n-kLq%22p>bUgVaz?qKk9fOVu{EP-u}7yzJftMZiGg= zPDo7C9UVkE+XcDe_-clr*6u6RVmP3E0t<~wRJf#q-DHzwFhIG)Wx8ni@k30GP*DM|iyK_C#|&%$4$fe|X^3MP=RDL7}@U9SPeHP^N^^sb+1 zp9V2PcFt(@!BR_4!3Eksgk+W$yxv`LRVFeUHfV$v|Gz$m8G+0Y;KMtL7$C8sD&6A^ z8tt3^oyl$j9a`u{^a%e3wlpLpx}o~xJo6k3IAsLJ;0rFHy+=p7$G=cTy<>2ZLJ%Vw zh&s^MSO%6!AovQlBxTyI1!)bagEXAh#COP3Ga5GgI0E|EQKd9qYk8pG@EJMB5F#Ii z(?Zz7?-n5H1*R4AMOltZkSDu<`T+(YBfTzV(scN>_RL@AQ2z|k%$yh<9O^O%+V8H$p^x5B!&fqwM6W5HnQtZ%KgZtYJ;%-J0K`*@RNKb6 za)5XeBeyWXQX7bMpeB$(j!NVcJUvC$v^lklNjy;sn*rn15LkysA=j$g(w$pEBSLVkBB%Y88T_Bl_`FrHJ77>&`7rX90BsbvmY4IU3Ik@&d# z%V0^5Ss$(ec@&20WsU~UsdY+9r8`n&L4}b7D_!|ZNIF?#uzG?vZ&9QH2taFUa;U!) zpOopLPK<+Q2gz_+$(3+r(Is<7@|e>CBxI;{!w8eo0cxTh{@wKG1UN$!2ns5)0UiL` zS^ZJ)5peyp?GBBBF*FkE7F|35xS~-n6BFO}dnnw4UWgx2sQ|l$#kyW0O)N#s;Uh*| zBq}TXPIUZqvNQ-;&gm}{CS;h{G9Rz~#K^@VmI~y?PW@S+Bsvi^Q1QsarV|4NkOenG z+EwQX+zdIWNy2FjLjxNE0_x~>##mpRZP38KfcC8+Dk+IlBLT!>3HlPDT^PRuv#vR5 z;W~d@MG}Ja(g*~_Y`}dqie{ADK#J>}C)kdxy%WoW_3lEWpJ9`UK1P&|j*Pj2GCp zWO8?>j97(h8LiI1Fdak=rg+nF*6O7Q*-Lrtn}jy=mm??!+jXvgS}lbgqg!qHo(L5q zGnw$|r3yz`YrF|Ad6pj8!nvd{nc@)iIy2xJ3fg)d z;X;~y_gH9gr0i!OO-bO5xJUadI~D@^(*)GM85dI6=x`j^3T)idi0ST+0ZHy8e!Uew zAAn&6zXu95(GS12jO_}Eh>tLc_}5U3-GD4k6Y``J#UQCk{HX;)60)9Z53kunrzrXk z#FWflWssd;p@KC%(t9ig7xte~4F-jBIEQ>Q%xYxLyW(aav*v!r)YQuY6DY8U#_N@j z!q^OtWE{nwF}tm>Bko_+iRyxQ#u>ftBx#bmPU@1G*XHG4((<1qwqs3)v|2=Z93W^B>lK@N%1DWH4 zh-s>K6QbdX`{5=`X|U0dH8iO2L!8lTwZ5@G8LRCq07R^VY0X_96LH$gDf*#fC7 z*>*NZ#d$6hNI@Vnr~2GoDt(H}Td9 z#W+(W!}0*A3t{vR__%C4|h><<(a9k0mV89;2~y0GLbaWqfqb&Wdz+2 z3KG|Q9N3(hLI)18PI36QP$0m+oB}7zoK=gipwZ35Mh;wUPl5W9?igb(VyT3ff#^g0x^$1zxXFf!HQkK zS{puhkV&Ig{Nc*%cR(7`rnp9-8`s!kd}3fgASbXLHq zzATe?n}agP1VU6Md0b$;cBXcE9cL zVR4aVL`QsTXbZup5SGk+Wr>#~gv45ic1M~gy+@flV56X0T5vuO>3d#i*x44r;fBGWnXCgZ3w))l+TvRFz}E-@;kRK zoigNz#0I2Hp_bTx1F_l5jZz64O~lS1P(WMWYSqKy^>86z9$jj&NP;0v^krWlV2lDa zP)$LNhM)yw-Z@FZ&jhPn_K}kk7NtaQTMLI*fkKFk*aH0la&yH3TI*q9T~3T_;;Z1Y z+t*=2kKrg5fZVHPu=(nkezaBSUU)z>3|Fc`_?=El@VefO=oo!#-O*%@N=lG=0J@+x zqR5msA@8Z}2t#rRsTFu+X>W@II`HJr3KsRvHSa8Cte4vW%zrVOWb$(gIya=L&F$o8 zC!W)pomoa``&sOPNNy)jWAuZ?Rn%oh!j=Lkb>4hg*+KkM6IiJPh%is>)uF2#S2@}I zC)f9Fwm<%b41e=g!jkwC>*Hj*LPdKyL|oQ*K~DOA6erODf?pG%!i`9Ev{G_4KG-z55hx3fZ+5}ux zFll&T+^*}r;D#@5E_TJGY{}FywEI5_<gk-VGiT)19+e5*NrCbeBIB}VH$^_t0a~>~ zjTLN?6QB}6UB2u@JG%2%H!9(dsA_mf^+gn0)Jdgh;*=@P?aGNXsLTneKH&8AIwx8} zPiEIK;(Xd9%UyTw%bNqwQp9dR@lAY=E=_w>b_JZYYy?BicG)gTXLb^MH(wyr(xVwiY5GrR^@E#4%k`@6b9;KCHZZ z%L?u_GUh+{HCeE#LOvoSNMb+~aAnpUfvf!mZfG}eWeau!ARQ1TjWEb8dkAp39Vj~U zv@iG5SJew&N^U1T(A+vFra=^5vu2PrEM!F6TUH}CoL6JJZcM2#mC?`?XOy`@g)wL5 zKteUGP|MIw*v4}(AQ()W033j#<$fR)qHJ+JC5vlZwg>X zD_$6PGfZir)_HHmiaBCg4}{=Z6jOaWzLqhEi4eguCgSCnrqG0wgwkGg8&Y13uzZDN z#*>x?-GL|;`zd%;0YvDoArwX`WKaa#Rx8dVrbIP~RV6UPt-Cnt>|lp53j8Tr@fshj z@l7;VkOrIjJ`Gw^xsa&sS_)x;0c)Qi5k%+ds3yD$Bf#3c>MM?6fiA+19}qV*hiFgG zt0D4Fz=E)~Kg6+=(-{WUX(TkALind7oaCB#Yea=&TcAKDj@j5}@WE42@&fFrUg&=Y zymO9hZh!_3`Jm&_bFz{+Ym%+~jJE}KoP&fWh9{OYUVA&h0L%n|X^!?3kRZeNcv|ZN z?lr6BvY@e{w^7Zst)uFD>Kop?J#{8%t0xUE8)5DgL{V`|a-epGv(n-Pq*F|(>>0NK z>f%sQQiXmM7F7W&B(Rd8P8lYmaS23{uO+NYkda|K6kBPt}dP~TV`5-bc z2sk3(hh$&~q!HdAbcAFdkXRhNJgjhlc~JNf)FY_IE*O|*V9OD?15Jj2400KoH0WjV zp9Z28gk1q~1j!ICB)~&(kO2Y$H3-uWTpXk`NMvC7Ln4MJ40Ippe!-$cfQ2v#LKDm= z&`_YDK@);zg4PDO3WOC1Ens|rssL&N><9P?;5C3LK(zsD0=@?T2pj$Xj{m!S>;D7& z|L{IieNpqEupdodiF~W@|1tRQ@muAWsJ?#vX!z*%yTG4P{5E=f;iJZ7(0Ajn@T#4z4zC7QD2%3Ff)Ocg-i0?QXz&0ASR~&F~(D z4+FO)zwl+Ru{)gF&e(R9ye*gahqMOOdS_{`p&TZbN3} zO4>MqZ5rdExMe&rj;N5jxiq|QdR&K4@n$r5YVhF7^ggha6Y%&gcSaJzeSVDx4g+gLDYO6l@O(c_MRFWi2fFL0*d2lr) z8n#&-XQxbsNQp1-1>ZE|25lV(ItxN336wT|AOUA~<$G#-Lm;EUflWQ2PaKt!V0)2@ zjJ^F|+4&{1156y1XVhq>2He_=DqEeIy1hpzgCD+R&0^9)0J$9*>C2In3%|&ElmRjaUw6#F0}I9dQeSkV z^RzLX`Af@FJ2@Woj(}VlLHkjbhA`x+CcA>^#@fP__w;dyboTg56DwFGCb^;j5X8cR zLI{`Gb#h_5wKMp3fnJO4ppzx@>y2a(Io#{*0K_;QW;p`_@ys!fAt{OENE;VuFUsbC z40h0pe4(G)dKLkoLJvYaa^3p$CM(sf4-6kw&$s8>k>#d3MdQwty-GY+EW*B82yv!H z8Fn=-o&)#nl90Ts0VOSU&X&>=kMHhvbI0fY{(po}wG&vZJ1Jm_MJ znZg=Dkqpd@MdosKGVTZb?tb%;6?47t(q~qaF@Efi<-zN6t1FL;l|p`+*eXW$PP8xU zwWe{O_Xtuc+^SR3q|qm4G$l~R@qD`i7bMI(4}Xz8p=K+^y_=BS%Lg9Q6@x9R42G{_ z3ujo$F#cfmIf!D-V!92kt)M)q0D%-tAve2&X~N~C(5xJOS!o9sX5A#7=E-d828}6u zEb|K&T5zgCoJb4p$9EH%f$C+G{LUH~tv){r`^C=p-iX<)ZyiuM4Ejlj;Qv_AJ(c<1^(u_O? z!9h&{iHbJXecG1W(?@=BXRrQfFq_r>Ns)O5dSc{+eKeE=LOWeoQOS>{1I3Ae^qV~& zMVyz(&kg>Lss1J>_F3JQ!_(JMF8oZMFC>f!8((o%fP?>WM~N{K#TOxx2Vhi)P6SnG z)VYfB8mattOu)u&z%DmUTfB(}1hry-W*%Yg>w+FF)KGK#rMv?{gx4!L8ZvRY&?8aA z;?n6XbgqHq_MOB=vo=uJ@dBJizk1;t-NhFZbHOU^dIl=QTGU~9L~Nxz!`v4c?YE}^ z4+HBd(|2gGF>P2X@V2WdAP`hl5OzNW-tpn--;vOvJ>heyF11A#Oo;gW?0Uow;-T@b z87P-Fkc% z~9spB&5E0V2-wEC_4B>(&?nod9X8@&nMmf`& zo$*$@gQu^K+>qXKi|&%C5CBQn7X`%)XlLO0#_N}~Ut#AR2aZTmd*lP))3~cX>ZY-5 z)zaJ>3=Mgmg{PR(r*IL{;-cKyzQcsI%^R(R*z=GO28L`>2+IhR4ekE+4 zM+Gjxzqe4kWU~R-5>VMZT-3ZM(po&(PI(v(&1dv(86XaN;BvHm}^fU38+P=hf%-Z4PrXG}u{ z^{g=)0^+lVS>{0*NjXNV8&_q+Y)FC5rw3J)qxWAWsHWI1Q7czoL5fLjuNaLok>pJ0 zQivnSZfgD;R3V$T#E<_`Og=^fL87?6@mL~$cPHC8+zk`RkkHzqC2ee!6OOT25}?Au z8lo5|NxX-eBv?+_Jl(h9D~;e6g@3JwzU4b}rUS0FtbaUHZZ$m{NtvL!ESZJHISL z#$q3276qW>>e0K9BC6Lm!PDcC*mJ>96;}jV-`)zxB`?jOs*Xw=t0)s{mG?QRw~8qt zfu=rKWTTDPq=!y;1b*tE3H@nBXu_aSH~}ouMp}xlRsiQy|?8 z+=eFuOFpAznJa$ z9HP}Oq&hZZjUr$CB~(eAM!iJ*;=b?Yrx6h>^|H)MP==A9VPv1#j0hS{CaVQ1a0U*_ zOPt|Q3|tBH4>cTq2$K@~xI!3~L_nbiL8%UpJy?`vZOB>f8|q^o(U}ch?lcb}gFn9* z1|~O!l8`0`5O(Y2Oh~*GnI51ZmY26LDazLJ5qc&Ez{Mb8VGH2izKeuw*Z=?k00000 E0QL`y%>V!Z literal 0 HcmV?d00001 diff --git a/themes/landscape/source/css/fonts/fontawesome-webfont.svg b/themes/landscape/source/css/fonts/fontawesome-webfont.svg new file mode 100644 index 000000000..45fdf3383 --- /dev/null +++ b/themes/landscape/source/css/fonts/fontawesome-webfont.svg @@ -0,0 +1,414 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/themes/landscape/source/css/fonts/fontawesome-webfont.ttf b/themes/landscape/source/css/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e89738de5eaf8fca33a2f2cdc5cb4929caa62b71 GIT binary patch literal 80652 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 qx{Kk=rVu5YQ9XR<GPS>b$X_& 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 z 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
    V$fDV|Iw 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�j?iv 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ⅇ? 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
    UhB;TYKNUX2 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 literal 0 HcmV?d00001 diff --git a/themes/landscape/source/css/style.styl b/themes/landscape/source/css/style.styl new file mode 100644 index 000000000..c51f8e40e --- /dev/null +++ b/themes/landscape/source/css/style.styl @@ -0,0 +1,89 @@ +@import "nib" +@import "_variables" +@import "_util/mixin" +@import "_util/grid" + +global-reset() + +input, button + margin: 0 + padding: 0 + &::-moz-focus-inner + border: 0 + padding: 0 + +@font-face + font-family: FontAwesome + font-style: normal + font-weight: normal + src: url(font-icon-path + ".eot?v=#" + font-icon-version) + src: url(font-icon-path + ".eot?#iefix&v=#" + font-icon-version) format("embedded-opentype"), + url(font-icon-path + ".woff?v=#" + font-icon-version) format("woff"), + url(font-icon-path + ".ttf?v=#" + font-icon-version) format("truetype"), + url(font-icon-path + ".svg#fontawesomeregular?v=#" + font-icon-version) format("svg") + +html, body, #container + height: 100% + +body + background: color-background + font: font-size font-sans + -webkit-text-size-adjust: 100% + +.outer + clearfix() + max-width: (column-width + gutter-width) * columns + gutter-width + margin: 0 auto + padding: 0 gutter-width + +.inner + column(columns) + +.left, .alignleft + float: left + +.right, .alignright + float: right + +.clear + clear: both + +#container + position: relative + +.mobile-nav-on + overflow: hidden + +#wrap + height: 100% + width: 100% + position: absolute + top: 0 + left: 0 + transition: 0.2s ease-out + z-index: 1 + background: color-background + .mobile-nav-on & + left: mobile-nav-width + +if sidebar and sidebar isnt bottom + #main + @media mq-normal + column(main-column) + +if sidebar is left + @media mq-normal + #main + float: right + +@import "_extend" +@import "_partial/header" +@import "_partial/article" +@import "_partial/comment" +@import "_partial/archive" +@import "_partial/footer" +@import "_partial/highlight" +@import "_partial/mobile" + +if sidebar + @import "_partial/sidebar" \ No newline at end of file diff --git a/themes/landscape/source/fancybox/blank.gif b/themes/landscape/source/fancybox/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..35d42e808f0a8017b8d52a06be2f8fec0b466a66 GIT binary patch literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE7Dgb&paUX6G7L;iE{qJ;0LZEa`2YX_ literal 0 HcmV?d00001 diff --git a/themes/landscape/source/fancybox/fancybox_loading.gif b/themes/landscape/source/fancybox/fancybox_loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..a03a40c097ee728709f65d4ea7397903a389d484 GIT binary patch literal 6567 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 literal 0 HcmV?d00001 diff --git a/themes/landscape/source/fancybox/fancybox_loading@2x.gif b/themes/landscape/source/fancybox/fancybox_loading@2x.gif new file mode 100644 index 0000000000000000000000000000000000000000..9205aeb09fffa6b571b4c6beee30b18400829c03 GIT binary patch literal 13984 zcmdtpX;f2(+Ar{(ot=4L0|COk2@%3*z%UvmBmq&;1`CRoVn8Z`pb=0JsqPHSQ$#>O zlpu(Ls8JA6P{W{NYc1kXYOM{3ii(OuTWdX>n;y^c^`4${?|t8U*In!0e1XN{3&Z}c z|NnWOELa%o9}vd{xWEAbfIvv4P>F@&!Tv!ui=7ak(7eBSVtj&O!iZcJ$@AuAre}7Z z=&Y=+yfJd)^~={(GPR_rBz#f$m9MV2ySk^Qq_(%U+gRDetcu|W@^i9tde8K}d;4zc z*;M_$`a5^;KzK-%rxJ&X2QLn?o!AL$6PjC^Cmu{N%o&l(BYD2O%*~mdU7huH^*3(a zc>T+3DxF$VRuaB6{L0lU?w;r>m0w%gd*#Kgw%=ks&6=k%WIeK+$C_{YoPuau=B zk)Mi!B_ZCPTr9@$b%);|5($_Gxc~7zfBcvLenz)X7Uph+@%iqcoEz9Md`R*#z-GR2 zt8dXVpW?ZVIZ+-Gx=Ycb(>>SzCy`;_Wwyar_cK7Wh&O zrlIseae92AkZ50;y?W<7KWti>V~)@`f6qLxhBEd3d4LHAEHdDkiYOs-Y)E{V> zW6~D2Vh>eoeqwMQvwM#Fl3qfgiFP)WjF1Bwg^0QQ6y5A-#_f4rQ>{ZN!bL)0FKcTj zmtREz>uarK!Iv6s=Pl9&3g{3SgfGt;U2si=UkR|9DQrcaG60u7isr@<0SI=eK&Fo^ zD5be?9#mQCKQjUyhnGl(MIkd-Q|7a?DLlO$K=fO7R5j{NxbUU>FJ2r>(*il^6xhiY z>VYN#BOC1&Nbi>(V6PW1W^Qu2@}*POh)!lqE&*prUJD90A6Ur~1Cn9C3_=KY-6?@2 z+kBkHC|pv+ec`({{OnGtI;_W%MbkT22*IID5#$9S zXvQ)C7@*nAY@T$WGDj4Gs1X2WF#xqhL=24KkO8B4T{q2%dO;l3^!ANQqQmk-HIRco zYYlba_0G!GuXnx?`&;QJn|JA-4k2QTD;$VyMqM~oZ3Y1Sv_
    bMxRL(pijsY@019xTxeF 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 literal 0 HcmV?d00001 diff --git a/themes/landscape/source/fancybox/fancybox_overlay.png b/themes/landscape/source/fancybox/fancybox_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..a4391396a9d6b6d7ff3b781f16904732fea40bdd GIT binary patch literal 1003 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 S1P^~LSQ@H2DwWEJcmD(3qHSjY literal 0 HcmV?d00001 diff --git a/themes/landscape/source/fancybox/helpers/fancybox_buttons.png b/themes/landscape/source/fancybox/helpers/fancybox_buttons.png new file mode 100644 index 0000000000000000000000000000000000000000..07872072704114b91681e2e6f9697ce1521b64d2 GIT binary patch literal 1080 zcmeAS@N?(olHy`uVBq!ia0vp^Q6S903?%u>HW~n_y#YQUu0R?WSg~RSP%1Go5lD7* zbwQLpe*757ICA6&kW5WYZD?o!GK`Ilf#ib+545$lfs7|lo|Kf7golSGBqXd|yY}6? zcgK$(2by;H@Zldne!PGGe#3?hK*r6RH}~(~f9%+?@87@w1cMhZUi|v?>-O#24<9~! z_3G8{-@iY6_yAP-?b|mX`_G?0|Ns97D*W>0%coDDfKr0iiH$(}%u0g%f*BZ@S=qVy z1VzPVE?Tl=<;G1rjvPIE`Ra{3j~;*c^fm05 z&}0S%rZ1i@jv*CsZ>PnU&vFoGYh)GcNLbUk(XcbqE{E69EG*srz@Pu~uR3~FiyV{r zKBIe^jd`)*o5yoLKHYF_zn{1F51Du38}jGBJ=VP0ecMa>bF+9K`W*ijXIeka_uU8A z*POd= z37@}bnmsYU%ylPY9@}5u*!t|)yNM@Xh;kTr{CTM%UpgJrq;^z1sCv#Ff{JcXH0QycQ=j-SpqK)3sqC&x%d{>uv#p4L4W% zmLHbjTwSCP^ID(pX0NGG_)`a^m0!6nD|Dt#Dvad0vf#zR8xqRnG{y^pfbH6Kc3;s;HW4p`heoW(jKH<7AtsEly z$M&AE{dQl2(Z%x9#dt|gSIbWy<4Xjtobc#5EmRoE7k>Wa#EFw7ELWat{GexP^oT7` zWJjo_z_Z6E{wwPO!J9zw9U;?iErx;1Arv+D^&N20C4AEY>{Ek`B=i66zn9m4$^{AUqIL)kd`}_|Y zirXZ4+!kL{DD1t`cieXN&YnLTl;^yVdNTEd730M4<~70>Dwl5dOP&;N_1dH)?&X@x qGoDO6XT>`g#8(4K<@tG^_7CJ-u|B8Hp&OWk7(8A5T-G@yGywqna}dM; literal 0 HcmV?d00001 diff --git a/themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.css b/themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.css new file mode 100644 index 000000000..a26273af2 --- /dev/null +++ b/themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.css @@ -0,0 +1,97 @@ +#fancybox-buttons { + position: fixed; + left: 0; + width: 100%; + z-index: 8050; +} + +#fancybox-buttons.top { + top: 10px; +} + +#fancybox-buttons.bottom { + bottom: 10px; +} + +#fancybox-buttons ul { + display: block; + width: 166px; + height: 30px; + margin: 0 auto; + padding: 0; + list-style: none; + border: 1px solid #111; + border-radius: 3px; + -webkit-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); + -moz-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); + box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); + background: rgb(50,50,50); + background: -moz-linear-gradient(top, rgb(68,68,68) 0%, rgb(52,52,52) 50%, rgb(41,41,41) 50%, rgb(51,51,51) 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(68,68,68)), color-stop(50%,rgb(52,52,52)), color-stop(50%,rgb(41,41,41)), color-stop(100%,rgb(51,51,51))); + background: -webkit-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); + background: -o-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); + background: -ms-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); + background: linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#444444', endColorstr='#222222',GradientType=0 ); +} + +#fancybox-buttons ul li { + float: left; + margin: 0; + padding: 0; +} + +#fancybox-buttons a { + display: block; + width: 30px; + height: 30px; + text-indent: -9999px; + background-color: transparent; + background-image: url('fancybox_buttons.png'); + background-repeat: no-repeat; + outline: none; + opacity: 0.8; +} + +#fancybox-buttons a:hover { + opacity: 1; +} + +#fancybox-buttons a.btnPrev { + background-position: 5px 0; +} + +#fancybox-buttons a.btnNext { + background-position: -33px 0; + border-right: 1px solid #3e3e3e; +} + +#fancybox-buttons a.btnPlay { + background-position: 0 -30px; +} + +#fancybox-buttons a.btnPlayOn { + background-position: -30px -30px; +} + +#fancybox-buttons a.btnToggle { + background-position: 3px -60px; + border-left: 1px solid #111; + border-right: 1px solid #3e3e3e; + width: 35px +} + +#fancybox-buttons a.btnToggleOn { + background-position: -27px -60px; +} + +#fancybox-buttons a.btnClose { + border-left: 1px solid #111; + width: 35px; + background-position: -56px 0px; +} + +#fancybox-buttons a.btnDisabled { + opacity : 0.4; + cursor: default; +} \ No newline at end of file diff --git a/themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.js b/themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.js new file mode 100644 index 000000000..352bb5f0d --- /dev/null +++ b/themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.js @@ -0,0 +1,122 @@ + /*! + * Buttons helper for fancyBox + * version: 1.0.5 (Mon, 15 Oct 2012) + * @requires fancyBox v2.0 or later + * + * Usage: + * $(".fancybox").fancybox({ + * helpers : { + * buttons: { + * position : 'top' + * } + * } + * }); + * + */ +;(function ($) { + //Shortcut for fancyBox object + var F = $.fancybox; + + //Add helper object + F.helpers.buttons = { + defaults : { + skipSingle : false, // disables if gallery contains single image + position : 'top', // 'top' or 'bottom' + tpl : '

    ' + }, + + list : null, + buttons: null, + + beforeLoad: function (opts, obj) { + //Remove self if gallery do not have at least two items + + if (opts.skipSingle && obj.group.length < 2) { + obj.helpers.buttons = false; + obj.closeBtn = true; + + return; + } + + //Increase top margin to give space for buttons + obj.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30; + }, + + onPlayStart: function () { + if (this.buttons) { + this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn'); + } + }, + + onPlayEnd: function () { + if (this.buttons) { + this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn'); + } + }, + + afterShow: function (opts, obj) { + var buttons = this.buttons; + + if (!buttons) { + this.list = $(opts.tpl).addClass(opts.position).appendTo('body'); + + buttons = { + prev : this.list.find('.btnPrev').click( F.prev ), + next : this.list.find('.btnNext').click( F.next ), + play : this.list.find('.btnPlay').click( F.play ), + toggle : this.list.find('.btnToggle').click( F.toggle ), + close : this.list.find('.btnClose').click( F.close ) + } + } + + //Prev + if (obj.index > 0 || obj.loop) { + buttons.prev.removeClass('btnDisabled'); + } else { + buttons.prev.addClass('btnDisabled'); + } + + //Next / Play + if (obj.loop || obj.index < obj.group.length - 1) { + buttons.next.removeClass('btnDisabled'); + buttons.play.removeClass('btnDisabled'); + + } else { + buttons.next.addClass('btnDisabled'); + buttons.play.addClass('btnDisabled'); + } + + this.buttons = buttons; + + this.onUpdate(opts, obj); + }, + + onUpdate: function (opts, obj) { + var toggle; + + if (!this.buttons) { + return; + } + + toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn'); + + //Size toggle button + if (obj.canShrink) { + toggle.addClass('btnToggleOn'); + + } else if (!obj.canExpand) { + toggle.addClass('btnDisabled'); + } + }, + + beforeClose: function () { + if (this.list) { + this.list.remove(); + } + + this.list = null; + this.buttons = null; + } + }; + +}(jQuery)); diff --git a/themes/landscape/source/fancybox/helpers/jquery.fancybox-media.js b/themes/landscape/source/fancybox/helpers/jquery.fancybox-media.js new file mode 100644 index 000000000..62737a517 --- /dev/null +++ b/themes/landscape/source/fancybox/helpers/jquery.fancybox-media.js @@ -0,0 +1,199 @@ +/*! + * Media helper for fancyBox + * version: 1.0.6 (Fri, 14 Jun 2013) + * @requires fancyBox v2.0 or later + * + * Usage: + * $(".fancybox").fancybox({ + * helpers : { + * media: true + * } + * }); + * + * Set custom URL parameters: + * $(".fancybox").fancybox({ + * helpers : { + * media: { + * youtube : { + * params : { + * autoplay : 0 + * } + * } + * } + * } + * }); + * + * Or: + * $(".fancybox").fancybox({, + * helpers : { + * media: true + * }, + * youtube : { + * autoplay: 0 + * } + * }); + * + * Supports: + * + * Youtube + * http://www.youtube.com/watch?v=opj24KnzrWo + * http://www.youtube.com/embed/opj24KnzrWo + * http://youtu.be/opj24KnzrWo + * http://www.youtube-nocookie.com/embed/opj24KnzrWo + * Vimeo + * http://vimeo.com/40648169 + * http://vimeo.com/channels/staffpicks/38843628 + * http://vimeo.com/groups/surrealism/videos/36516384 + * http://player.vimeo.com/video/45074303 + * Metacafe + * http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/ + * http://www.metacafe.com/watch/7635964/ + * Dailymotion + * http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people + * Twitvid + * http://twitvid.com/QY7MD + * Twitpic + * http://twitpic.com/7p93st + * Instagram + * http://instagr.am/p/IejkuUGxQn/ + * http://instagram.com/p/IejkuUGxQn/ + * Google maps + * http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17 + * http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16 + * http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56 + */ +;(function ($) { + "use strict"; + + //Shortcut for fancyBox object + var F = $.fancybox, + format = function( url, rez, params ) { + params = params || ''; + + if ( $.type( params ) === "object" ) { + params = $.param(params, true); + } + + $.each(rez, function(key, value) { + url = url.replace( '$' + key, value || '' ); + }); + + if (params.length) { + url += ( url.indexOf('?') > 0 ? '&' : '?' ) + params; + } + + return url; + }; + + //Add helper object + F.helpers.media = { + defaults : { + youtube : { + matcher : /(youtube\.com|youtu\.be|youtube-nocookie\.com)\/(watch\?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*)).*/i, + params : { + autoplay : 1, + autohide : 1, + fs : 1, + rel : 0, + hd : 1, + wmode : 'opaque', + enablejsapi : 1 + }, + type : 'iframe', + url : '//www.youtube.com/embed/$3' + }, + vimeo : { + matcher : /(?:vimeo(?:pro)?.com)\/(?:[^\d]+)?(\d+)(?:.*)/, + params : { + autoplay : 1, + hd : 1, + show_title : 1, + show_byline : 1, + show_portrait : 0, + fullscreen : 1 + }, + type : 'iframe', + url : '//player.vimeo.com/video/$1' + }, + metacafe : { + matcher : /metacafe.com\/(?:watch|fplayer)\/([\w\-]{1,10})/, + params : { + autoPlay : 'yes' + }, + type : 'swf', + url : function( rez, params, obj ) { + obj.swf.flashVars = 'playerVars=' + $.param( params, true ); + + return '//www.metacafe.com/fplayer/' + rez[1] + '/.swf'; + } + }, + dailymotion : { + matcher : /dailymotion.com\/video\/(.*)\/?(.*)/, + params : { + additionalInfos : 0, + autoStart : 1 + }, + type : 'swf', + url : '//www.dailymotion.com/swf/video/$1' + }, + twitvid : { + matcher : /twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i, + params : { + autoplay : 0 + }, + type : 'iframe', + url : '//www.twitvid.com/embed.php?guid=$1' + }, + twitpic : { + matcher : /twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i, + type : 'image', + url : '//twitpic.com/show/full/$1/' + }, + instagram : { + matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i, + type : 'image', + url : '//$1/p/$2/media/?size=l' + }, + google_maps : { + matcher : /maps\.google\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|maps\?)(.*)/i, + type : 'iframe', + url : function( rez ) { + return '//maps.google.' + rez[1] + '/' + rez[3] + '' + rez[4] + '&output=' + (rez[4].indexOf('layer=c') > 0 ? 'svembed' : 'embed'); + } + } + }, + + beforeLoad : function(opts, obj) { + var url = obj.href || '', + type = false, + what, + item, + rez, + params; + + for (what in opts) { + if (opts.hasOwnProperty(what)) { + item = opts[ what ]; + rez = url.match( item.matcher ); + + if (rez) { + type = item.type; + params = $.extend(true, {}, item.params, obj[ what ] || ($.isPlainObject(opts[ what ]) ? opts[ what ].params : null)); + + url = $.type( item.url ) === "function" ? item.url.call( this, rez, params, obj ) : format( item.url, rez, params ); + + break; + } + } + } + + if (type) { + obj.href = url; + obj.type = type; + + obj.autoHeight = false; + } + } + }; + +}(jQuery)); \ No newline at end of file diff --git a/themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.css b/themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.css new file mode 100644 index 000000000..63d294368 --- /dev/null +++ b/themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.css @@ -0,0 +1,55 @@ +#fancybox-thumbs { + position: fixed; + left: 0; + width: 100%; + overflow: hidden; + z-index: 8050; +} + +#fancybox-thumbs.bottom { + bottom: 2px; +} + +#fancybox-thumbs.top { + top: 2px; +} + +#fancybox-thumbs ul { + position: relative; + list-style: none; + margin: 0; + padding: 0; +} + +#fancybox-thumbs ul li { + float: left; + padding: 1px; + opacity: 0.5; +} + +#fancybox-thumbs ul li.active { + opacity: 0.75; + padding: 0; + border: 1px solid #fff; +} + +#fancybox-thumbs ul li:hover { + opacity: 1; +} + +#fancybox-thumbs ul li a { + display: block; + position: relative; + overflow: hidden; + border: 1px solid #222; + background: #111; + outline: none; +} + +#fancybox-thumbs ul li img { + display: block; + position: relative; + border: 0; + padding: 0; + max-width: none; +} \ No newline at end of file diff --git a/themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.js b/themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.js new file mode 100644 index 000000000..58c971943 --- /dev/null +++ b/themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.js @@ -0,0 +1,165 @@ + /*! + * Thumbnail helper for fancyBox + * version: 1.0.7 (Mon, 01 Oct 2012) + * @requires fancyBox v2.0 or later + * + * Usage: + * $(".fancybox").fancybox({ + * helpers : { + * thumbs: { + * width : 50, + * height : 50 + * } + * } + * }); + * + */ +;(function ($) { + //Shortcut for fancyBox object + var F = $.fancybox; + + //Add helper object + F.helpers.thumbs = { + defaults : { + width : 50, // thumbnail width + height : 50, // thumbnail height + position : 'bottom', // 'top' or 'bottom' + source : function ( item ) { // function to obtain the URL of the thumbnail image + var href; + + if (item.element) { + href = $(item.element).find('img').attr('src'); + } + + if (!href && item.type === 'image' && item.href) { + href = item.href; + } + + return href; + } + }, + + wrap : null, + list : null, + width : 0, + + init: function (opts, obj) { + var that = this, + list, + thumbWidth = opts.width, + thumbHeight = opts.height, + thumbSource = opts.source; + + //Build list structure + list = ''; + + for (var n = 0; n < obj.group.length; n++) { + list += '
  • '; + } + + this.wrap = $('
    ').addClass(opts.position).appendTo('body'); + this.list = $('
      ' + list + '
    ').appendTo(this.wrap); + + //Load each thumbnail + $.each(obj.group, function (i) { + var el = obj.group[ i ], + href = thumbSource( el ); + + if (!href) { + return; + } + + $("").load(function () { + var width = this.width, + height = this.height, + widthRatio, heightRatio, parent; + + if (!that.list || !width || !height) { + return; + } + + //Calculate thumbnail width/height and center it + widthRatio = width / thumbWidth; + heightRatio = height / thumbHeight; + + parent = that.list.children().eq(i).find('a'); + + if (widthRatio >= 1 && heightRatio >= 1) { + if (widthRatio > heightRatio) { + width = Math.floor(width / heightRatio); + height = thumbHeight; + + } else { + width = thumbWidth; + height = Math.floor(height / widthRatio); + } + } + + $(this).css({ + width : width, + height : height, + top : Math.floor(thumbHeight / 2 - height / 2), + left : Math.floor(thumbWidth / 2 - width / 2) + }); + + parent.width(thumbWidth).height(thumbHeight); + + $(this).hide().appendTo(parent).fadeIn(300); + + }) + .attr('src', href) + .attr('title', el.title); + }); + + //Set initial width + this.width = this.list.children().eq(0).outerWidth(true); + + this.list.width(this.width * (obj.group.length + 1)).css('left', Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5))); + }, + + beforeLoad: function (opts, obj) { + //Remove self if gallery do not have at least two items + if (obj.group.length < 2) { + obj.helpers.thumbs = false; + + return; + } + + //Increase bottom margin to give space for thumbs + obj.margin[ opts.position === 'top' ? 0 : 2 ] += ((opts.height) + 15); + }, + + afterShow: function (opts, obj) { + //Check if exists and create or update list + if (this.list) { + this.onUpdate(opts, obj); + + } else { + this.init(opts, obj); + } + + //Set active element + this.list.children().removeClass('active').eq(obj.index).addClass('active'); + }, + + //Center list + onUpdate: function (opts, obj) { + if (this.list) { + this.list.stop(true).animate({ + 'left': Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5)) + }, 150); + } + }, + + beforeClose: function () { + if (this.wrap) { + this.wrap.remove(); + } + + this.wrap = null; + this.list = null; + this.width = 0; + } + } + +}(jQuery)); \ No newline at end of file diff --git a/themes/landscape/source/fancybox/jquery.fancybox.css b/themes/landscape/source/fancybox/jquery.fancybox.css new file mode 100644 index 000000000..c75d05135 --- /dev/null +++ b/themes/landscape/source/fancybox/jquery.fancybox.css @@ -0,0 +1,273 @@ +/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */ +.fancybox-wrap, +.fancybox-skin, +.fancybox-outer, +.fancybox-inner, +.fancybox-image, +.fancybox-wrap iframe, +.fancybox-wrap object, +.fancybox-nav, +.fancybox-nav span, +.fancybox-tmp +{ + padding: 0; + margin: 0; + border: 0; + outline: none; + vertical-align: top; +} + +.fancybox-wrap { + position: absolute; + top: 0; + left: 0; + z-index: 8020; +} + +.fancybox-skin { + position: relative; + background: #f9f9f9; + color: #444; + text-shadow: none; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.fancybox-opened { + z-index: 8030; +} + +.fancybox-opened .fancybox-skin { + -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); + box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); +} + +.fancybox-outer, .fancybox-inner { + position: relative; +} + +.fancybox-inner { + overflow: hidden; +} + +.fancybox-type-iframe .fancybox-inner { + -webkit-overflow-scrolling: touch; +} + +.fancybox-error { + color: #444; + font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; + margin: 0; + padding: 15px; + white-space: nowrap; +} + +.fancybox-image, .fancybox-iframe { + display: block; + width: 100%; + height: 100%; +} + +.fancybox-image { + max-width: 100%; + max-height: 100%; +} + +#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { + background-image: url(fancybox_sprite.png); +} + +#fancybox-loading { + position: fixed; + top: 50%; + left: 50%; + margin-top: -22px; + margin-left: -22px; + background-position: 0 -108px; + opacity: 0.8; + cursor: pointer; + z-index: 8060; +} + +#fancybox-loading div { + width: 44px; + height: 44px; + background: url(fancybox_loading.gif) center center no-repeat; +} + +.fancybox-close { + position: absolute; + top: -18px; + right: -18px; + width: 36px; + height: 36px; + cursor: pointer; + z-index: 8040; +} + +.fancybox-nav { + position: absolute; + top: 0; + width: 40%; + height: 100%; + cursor: pointer; + text-decoration: none; + background: transparent url(blank.gif); /* helps IE */ + -webkit-tap-highlight-color: rgba(0,0,0,0); + z-index: 8040; +} + +.fancybox-prev { + left: 0; +} + +.fancybox-next { + right: 0; +} + +.fancybox-nav span { + position: absolute; + top: 50%; + width: 36px; + height: 34px; + margin-top: -18px; + cursor: pointer; + z-index: 8040; + visibility: hidden; +} + +.fancybox-prev span { + left: 10px; + background-position: 0 -36px; +} + +.fancybox-next span { + right: 10px; + background-position: 0 -72px; +} + +.fancybox-nav:hover span { + visibility: visible; +} + +.fancybox-tmp { + position: absolute; + top: -99999px; + left: -99999px; + max-width: 99999px; + max-height: 99999px; + overflow: visible !important; +} + +/* Overlay helper */ + +.fancybox-lock { + overflow: visible !important; + width: auto; +} + +.fancybox-lock body { + overflow: hidden !important; +} + +.fancybox-lock-test { + overflow-y: hidden !important; +} + +.fancybox-overlay { + position: absolute; + top: 0; + left: 0; + overflow: hidden; + display: none; + z-index: 8010; + background: url(fancybox_overlay.png); +} + +.fancybox-overlay-fixed { + position: fixed; + bottom: 0; + right: 0; +} + +.fancybox-lock .fancybox-overlay { + overflow: auto; + overflow-y: scroll; +} + +/* Title helper */ + +.fancybox-title { + visibility: hidden; + font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; + position: relative; + text-shadow: none; + z-index: 8050; +} + +.fancybox-opened .fancybox-title { + visibility: visible; +} + +.fancybox-title-float-wrap { + position: absolute; + bottom: 0; + right: 50%; + margin-bottom: -35px; + z-index: 8050; + text-align: center; +} + +.fancybox-title-float-wrap .child { + display: inline-block; + margin-right: -100%; + padding: 2px 20px; + background: transparent; /* Fallback for web browsers that doesn't support RGBa */ + background: rgba(0, 0, 0, 0.8); + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; + text-shadow: 0 1px 2px #222; + color: #FFF; + font-weight: bold; + line-height: 24px; + white-space: nowrap; +} + +.fancybox-title-outside-wrap { + position: relative; + margin-top: 10px; + color: #fff; +} + +.fancybox-title-inside-wrap { + padding-top: 10px; +} + +.fancybox-title-over-wrap { + position: absolute; + bottom: 0; + left: 0; + color: #fff; + padding: 10px; + background: #000; + background: rgba(0, 0, 0, .8); +} + +/*Retina graphics!*/ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (min--moz-device-pixel-ratio: 1.5), + only screen and (min-device-pixel-ratio: 1.5){ + + #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { + background-image: url(fancybox_sprite@2x.png); + background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/ + } + + #fancybox-loading div { + background-image: url(fancybox_loading@2x.gif); + background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/ + } +} \ No newline at end of file diff --git a/themes/landscape/source/fancybox/jquery.fancybox.js b/themes/landscape/source/fancybox/jquery.fancybox.js new file mode 100644 index 000000000..7a0f8acb0 --- /dev/null +++ b/themes/landscape/source/fancybox/jquery.fancybox.js @@ -0,0 +1,2017 @@ +/*! + * fancyBox - jQuery Plugin + * version: 2.1.5 (Fri, 14 Jun 2013) + * requires jQuery v1.6 or later + * + * Examples at http://fancyapps.com/fancybox/ + * License: www.fancyapps.com/fancybox/#license + * + * Copyright 2012 Janis Skarnelis - janis@fancyapps.com + * + */ + +;(function (window, document, $, undefined) { + "use strict"; + + var H = $("html"), + W = $(window), + D = $(document), + F = $.fancybox = function () { + F.open.apply( this, arguments ); + }, + IE = navigator.userAgent.match(/msie/i), + didUpdate = null, + isTouch = document.createTouch !== undefined, + + isQuery = function(obj) { + return obj && obj.hasOwnProperty && obj instanceof $; + }, + isString = function(str) { + return str && $.type(str) === "string"; + }, + isPercentage = function(str) { + return isString(str) && str.indexOf('%') > 0; + }, + isScrollable = function(el) { + return (el && !(el.style.overflow && el.style.overflow === 'hidden') && ((el.clientWidth && el.scrollWidth > el.clientWidth) || (el.clientHeight && el.scrollHeight > el.clientHeight))); + }, + getScalar = function(orig, dim) { + var value = parseInt(orig, 10) || 0; + + if (dim && isPercentage(orig)) { + value = F.getViewport()[ dim ] / 100 * value; + } + + return Math.ceil(value); + }, + getValue = function(value, dim) { + return getScalar(value, dim) + 'px'; + }; + + $.extend(F, { + // The current version of fancyBox + version: '2.1.5', + + defaults: { + padding : 15, + margin : 20, + + width : 800, + height : 600, + minWidth : 100, + minHeight : 100, + maxWidth : 9999, + maxHeight : 9999, + pixelRatio: 1, // Set to 2 for retina display support + + autoSize : true, + autoHeight : false, + autoWidth : false, + + autoResize : true, + autoCenter : !isTouch, + fitToView : true, + aspectRatio : false, + topRatio : 0.5, + leftRatio : 0.5, + + scrolling : 'auto', // 'auto', 'yes' or 'no' + wrapCSS : '', + + arrows : true, + closeBtn : true, + closeClick : false, + nextClick : false, + mouseWheel : true, + autoPlay : false, + playSpeed : 3000, + preload : 3, + modal : false, + loop : true, + + ajax : { + dataType : 'html', + headers : { 'X-fancyBox': true } + }, + iframe : { + scrolling : 'auto', + preload : true + }, + swf : { + wmode: 'transparent', + allowfullscreen : 'true', + allowscriptaccess : 'always' + }, + + keys : { + next : { + 13 : 'left', // enter + 34 : 'up', // page down + 39 : 'left', // right arrow + 40 : 'up' // down arrow + }, + prev : { + 8 : 'right', // backspace + 33 : 'down', // page up + 37 : 'right', // left arrow + 38 : 'down' // up arrow + }, + close : [27], // escape key + play : [32], // space - start/stop slideshow + toggle : [70] // letter "f" - toggle fullscreen + }, + + direction : { + next : 'left', + prev : 'right' + }, + + scrollOutside : true, + + // Override some properties + index : 0, + type : null, + href : null, + content : null, + title : null, + + // HTML templates + tpl: { + wrap : '
    ', + image : '', + iframe : '', + error : '

    The requested content cannot be loaded.
    Please try again later.

    ', + closeBtn : '', + next : '', + prev : '' + }, + + // Properties for each animation type + // Opening fancyBox + openEffect : 'fade', // 'elastic', 'fade' or 'none' + openSpeed : 250, + openEasing : 'swing', + openOpacity : true, + openMethod : 'zoomIn', + + // Closing fancyBox + closeEffect : 'fade', // 'elastic', 'fade' or 'none' + closeSpeed : 250, + closeEasing : 'swing', + closeOpacity : true, + closeMethod : 'zoomOut', + + // Changing next gallery item + nextEffect : 'elastic', // 'elastic', 'fade' or 'none' + nextSpeed : 250, + nextEasing : 'swing', + nextMethod : 'changeIn', + + // Changing previous gallery item + prevEffect : 'elastic', // 'elastic', 'fade' or 'none' + prevSpeed : 250, + prevEasing : 'swing', + prevMethod : 'changeOut', + + // Enable default helpers + helpers : { + overlay : true, + title : true + }, + + // Callbacks + onCancel : $.noop, // If canceling + beforeLoad : $.noop, // Before loading + afterLoad : $.noop, // After loading + beforeShow : $.noop, // Before changing in current item + afterShow : $.noop, // After opening + beforeChange : $.noop, // Before changing gallery item + beforeClose : $.noop, // Before closing + afterClose : $.noop // After closing + }, + + //Current state + group : {}, // Selected group + opts : {}, // Group options + previous : null, // Previous element + coming : null, // Element being loaded + current : null, // Currently loaded element + isActive : false, // Is activated + isOpen : false, // Is currently open + isOpened : false, // Have been fully opened at least once + + wrap : null, + skin : null, + outer : null, + inner : null, + + player : { + timer : null, + isActive : false + }, + + // Loaders + ajaxLoad : null, + imgPreload : null, + + // Some collections + transitions : {}, + helpers : {}, + + /* + * Static methods + */ + + open: function (group, opts) { + if (!group) { + return; + } + + if (!$.isPlainObject(opts)) { + opts = {}; + } + + // Close if already active + if (false === F.close(true)) { + return; + } + + // Normalize group + if (!$.isArray(group)) { + group = isQuery(group) ? $(group).get() : [group]; + } + + // Recheck if the type of each element is `object` and set content type (image, ajax, etc) + $.each(group, function(i, element) { + var obj = {}, + href, + title, + content, + type, + rez, + hrefParts, + selector; + + if ($.type(element) === "object") { + // Check if is DOM element + if (element.nodeType) { + element = $(element); + } + + if (isQuery(element)) { + obj = { + href : element.data('fancybox-href') || element.attr('href'), + title : $('
    ').text( element.data('fancybox-title') || element.attr('title') ).html(), + isDom : true, + element : element + }; + + if ($.metadata) { + $.extend(true, obj, element.metadata()); + } + + } else { + obj = element; + } + } + + href = opts.href || obj.href || (isString(element) ? element : null); + title = opts.title !== undefined ? opts.title : obj.title || ''; + + content = opts.content || obj.content; + type = content ? 'html' : (opts.type || obj.type); + + if (!type && obj.isDom) { + type = element.data('fancybox-type'); + + if (!type) { + rez = element.prop('class').match(/fancybox\.(\w+)/); + type = rez ? rez[1] : null; + } + } + + if (isString(href)) { + // Try to guess the content type + if (!type) { + if (F.isImage(href)) { + type = 'image'; + + } else if (F.isSWF(href)) { + type = 'swf'; + + } else if (href.charAt(0) === '#') { + type = 'inline'; + + } else if (isString(element)) { + type = 'html'; + content = element; + } + } + + // Split url into two pieces with source url and content selector, e.g, + // "/mypage.html #my_id" will load "/mypage.html" and display element having id "my_id" + if (type === 'ajax') { + hrefParts = href.split(/\s+/, 2); + href = hrefParts.shift(); + selector = hrefParts.shift(); + } + } + + if (!content) { + if (type === 'inline') { + if (href) { + content = $( isString(href) ? href.replace(/.*(?=#[^\s]+$)/, '') : href ); //strip for ie7 + + } else if (obj.isDom) { + content = element; + } + + } else if (type === 'html') { + content = href; + + } else if (!type && !href && obj.isDom) { + type = 'inline'; + content = element; + } + } + + $.extend(obj, { + href : href, + type : type, + content : content, + title : title, + selector : selector + }); + + group[ i ] = obj; + }); + + // Extend the defaults + F.opts = $.extend(true, {}, F.defaults, opts); + + // All options are merged recursive except keys + if (opts.keys !== undefined) { + F.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false; + } + + F.group = group; + + return F._start(F.opts.index); + }, + + // Cancel image loading or abort ajax request + cancel: function () { + var coming = F.coming; + + if (coming && false === F.trigger('onCancel')) { + return; + } + + F.hideLoading(); + + if (!coming) { + return; + } + + if (F.ajaxLoad) { + F.ajaxLoad.abort(); + } + + F.ajaxLoad = null; + + if (F.imgPreload) { + F.imgPreload.onload = F.imgPreload.onerror = null; + } + + if (coming.wrap) { + coming.wrap.stop(true, true).trigger('onReset').remove(); + } + + F.coming = null; + + // If the first item has been canceled, then clear everything + if (!F.current) { + F._afterZoomOut( coming ); + } + }, + + // Start closing animation if is open; remove immediately if opening/closing + close: function (event) { + F.cancel(); + + if (false === F.trigger('beforeClose')) { + return; + } + + F.unbindEvents(); + + if (!F.isActive) { + return; + } + + if (!F.isOpen || event === true) { + $('.fancybox-wrap').stop(true).trigger('onReset').remove(); + + F._afterZoomOut(); + + } else { + F.isOpen = F.isOpened = false; + F.isClosing = true; + + $('.fancybox-item, .fancybox-nav').remove(); + + F.wrap.stop(true, true).removeClass('fancybox-opened'); + + F.transitions[ F.current.closeMethod ](); + } + }, + + // Manage slideshow: + // $.fancybox.play(); - toggle slideshow + // $.fancybox.play( true ); - start + // $.fancybox.play( false ); - stop + play: function ( action ) { + var clear = function () { + clearTimeout(F.player.timer); + }, + set = function () { + clear(); + + if (F.current && F.player.isActive) { + F.player.timer = setTimeout(F.next, F.current.playSpeed); + } + }, + stop = function () { + clear(); + + D.unbind('.player'); + + F.player.isActive = false; + + F.trigger('onPlayEnd'); + }, + start = function () { + if (F.current && (F.current.loop || F.current.index < F.group.length - 1)) { + F.player.isActive = true; + + D.bind({ + 'onCancel.player beforeClose.player' : stop, + 'onUpdate.player' : set, + 'beforeLoad.player' : clear + }); + + set(); + + F.trigger('onPlayStart'); + } + }; + + if (action === true || (!F.player.isActive && action !== false)) { + start(); + } else { + stop(); + } + }, + + // Navigate to next gallery item + next: function ( direction ) { + var current = F.current; + + if (current) { + if (!isString(direction)) { + direction = current.direction.next; + } + + F.jumpto(current.index + 1, direction, 'next'); + } + }, + + // Navigate to previous gallery item + prev: function ( direction ) { + var current = F.current; + + if (current) { + if (!isString(direction)) { + direction = current.direction.prev; + } + + F.jumpto(current.index - 1, direction, 'prev'); + } + }, + + // Navigate to gallery item by index + jumpto: function ( index, direction, router ) { + var current = F.current; + + if (!current) { + return; + } + + index = getScalar(index); + + F.direction = direction || current.direction[ (index >= current.index ? 'next' : 'prev') ]; + F.router = router || 'jumpto'; + + if (current.loop) { + if (index < 0) { + index = current.group.length + (index % current.group.length); + } + + index = index % current.group.length; + } + + if (current.group[ index ] !== undefined) { + F.cancel(); + + F._start(index); + } + }, + + // Center inside viewport and toggle position type to fixed or absolute if needed + reposition: function (e, onlyAbsolute) { + var current = F.current, + wrap = current ? current.wrap : null, + pos; + + if (wrap) { + pos = F._getPosition(onlyAbsolute); + + if (e && e.type === 'scroll') { + delete pos.position; + + wrap.stop(true, true).animate(pos, 200); + + } else { + wrap.css(pos); + + current.pos = $.extend({}, current.dim, pos); + } + } + }, + + update: function (e) { + var type = (e && e.originalEvent && e.originalEvent.type), + anyway = !type || type === 'orientationchange'; + + if (anyway) { + clearTimeout(didUpdate); + + didUpdate = null; + } + + if (!F.isOpen || didUpdate) { + return; + } + + didUpdate = setTimeout(function() { + var current = F.current; + + if (!current || F.isClosing) { + return; + } + + F.wrap.removeClass('fancybox-tmp'); + + if (anyway || type === 'load' || (type === 'resize' && current.autoResize)) { + F._setDimension(); + } + + if (!(type === 'scroll' && current.canShrink)) { + F.reposition(e); + } + + F.trigger('onUpdate'); + + didUpdate = null; + + }, (anyway && !isTouch ? 0 : 300)); + }, + + // Shrink content to fit inside viewport or restore if resized + toggle: function ( action ) { + if (F.isOpen) { + F.current.fitToView = $.type(action) === "boolean" ? action : !F.current.fitToView; + + // Help browser to restore document dimensions + if (isTouch) { + F.wrap.removeAttr('style').addClass('fancybox-tmp'); + + F.trigger('onUpdate'); + } + + F.update(); + } + }, + + hideLoading: function () { + D.unbind('.loading'); + + $('#fancybox-loading').remove(); + }, + + showLoading: function () { + var el, viewport; + + F.hideLoading(); + + el = $('
    ').click(F.cancel).appendTo('body'); + + // If user will press the escape-button, the request will be canceled + D.bind('keydown.loading', function(e) { + if ((e.which || e.keyCode) === 27) { + e.preventDefault(); + + F.cancel(); + } + }); + + if (!F.defaults.fixed) { + viewport = F.getViewport(); + + el.css({ + position : 'absolute', + top : (viewport.h * 0.5) + viewport.y, + left : (viewport.w * 0.5) + viewport.x + }); + } + + F.trigger('onLoading'); + }, + + getViewport: function () { + var locked = (F.current && F.current.locked) || false, + rez = { + x: W.scrollLeft(), + y: W.scrollTop() + }; + + if (locked && locked.length) { + rez.w = locked[0].clientWidth; + rez.h = locked[0].clientHeight; + + } else { + // See http://bugs.jquery.com/ticket/6724 + rez.w = isTouch && window.innerWidth ? window.innerWidth : W.width(); + rez.h = isTouch && window.innerHeight ? window.innerHeight : W.height(); + } + + return rez; + }, + + // Unbind the keyboard / clicking actions + unbindEvents: function () { + if (F.wrap && isQuery(F.wrap)) { + F.wrap.unbind('.fb'); + } + + D.unbind('.fb'); + W.unbind('.fb'); + }, + + bindEvents: function () { + var current = F.current, + keys; + + if (!current) { + return; + } + + // Changing document height on iOS devices triggers a 'resize' event, + // that can change document height... repeating infinitely + W.bind('orientationchange.fb' + (isTouch ? '' : ' resize.fb') + (current.autoCenter && !current.locked ? ' scroll.fb' : ''), F.update); + + keys = current.keys; + + if (keys) { + D.bind('keydown.fb', function (e) { + var code = e.which || e.keyCode, + target = e.target || e.srcElement; + + // Skip esc key if loading, because showLoading will cancel preloading + if (code === 27 && F.coming) { + return false; + } + + // Ignore key combinations and key events within form elements + if (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && !(target && (target.type || $(target).is('[contenteditable]')))) { + $.each(keys, function(i, val) { + if (current.group.length > 1 && val[ code ] !== undefined) { + F[ i ]( val[ code ] ); + + e.preventDefault(); + return false; + } + + if ($.inArray(code, val) > -1) { + F[ i ] (); + + e.preventDefault(); + return false; + } + }); + } + }); + } + + if ($.fn.mousewheel && current.mouseWheel) { + F.wrap.bind('mousewheel.fb', function (e, delta, deltaX, deltaY) { + var target = e.target || null, + parent = $(target), + canScroll = false; + + while (parent.length) { + if (canScroll || parent.is('.fancybox-skin') || parent.is('.fancybox-wrap')) { + break; + } + + canScroll = isScrollable( parent[0] ); + parent = $(parent).parent(); + } + + if (delta !== 0 && !canScroll) { + if (F.group.length > 1 && !current.canShrink) { + if (deltaY > 0 || deltaX > 0) { + F.prev( deltaY > 0 ? 'down' : 'left' ); + + } else if (deltaY < 0 || deltaX < 0) { + F.next( deltaY < 0 ? 'up' : 'right' ); + } + + e.preventDefault(); + } + } + }); + } + }, + + trigger: function (event, o) { + var ret, obj = o || F.coming || F.current; + + if (obj) { + if ($.isFunction( obj[event] )) { + ret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1)); + } + + if (ret === false) { + return false; + } + + if (obj.helpers) { + $.each(obj.helpers, function (helper, opts) { + if (opts && F.helpers[helper] && $.isFunction(F.helpers[helper][event])) { + F.helpers[helper][event]($.extend(true, {}, F.helpers[helper].defaults, opts), obj); + } + }); + } + } + + D.trigger(event); + }, + + isImage: function (str) { + return isString(str) && str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i); + }, + + isSWF: function (str) { + return isString(str) && str.match(/\.(swf)((\?|#).*)?$/i); + }, + + _start: function (index) { + var coming = {}, + obj, + href, + type, + margin, + padding; + + index = getScalar( index ); + obj = F.group[ index ] || null; + + if (!obj) { + return false; + } + + coming = $.extend(true, {}, F.opts, obj); + + // Convert margin and padding properties to array - top, right, bottom, left + margin = coming.margin; + padding = coming.padding; + + if ($.type(margin) === 'number') { + coming.margin = [margin, margin, margin, margin]; + } + + if ($.type(padding) === 'number') { + coming.padding = [padding, padding, padding, padding]; + } + + // 'modal' propery is just a shortcut + if (coming.modal) { + $.extend(true, coming, { + closeBtn : false, + closeClick : false, + nextClick : false, + arrows : false, + mouseWheel : false, + keys : null, + helpers: { + overlay : { + closeClick : false + } + } + }); + } + + // 'autoSize' property is a shortcut, too + if (coming.autoSize) { + coming.autoWidth = coming.autoHeight = true; + } + + if (coming.width === 'auto') { + coming.autoWidth = true; + } + + if (coming.height === 'auto') { + coming.autoHeight = true; + } + + /* + * Add reference to the group, so it`s possible to access from callbacks, example: + * afterLoad : function() { + * this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : ''); + * } + */ + + coming.group = F.group; + coming.index = index; + + // Give a chance for callback or helpers to update coming item (type, title, etc) + F.coming = coming; + + if (false === F.trigger('beforeLoad')) { + F.coming = null; + + return; + } + + type = coming.type; + href = coming.href; + + if (!type) { + F.coming = null; + + //If we can not determine content type then drop silently or display next/prev item if looping through gallery + if (F.current && F.router && F.router !== 'jumpto') { + F.current.index = index; + + return F[ F.router ]( F.direction ); + } + + return false; + } + + F.isActive = true; + + if (type === 'image' || type === 'swf') { + coming.autoHeight = coming.autoWidth = false; + coming.scrolling = 'visible'; + } + + if (type === 'image') { + coming.aspectRatio = true; + } + + if (type === 'iframe' && isTouch) { + coming.scrolling = 'scroll'; + } + + // Build the neccessary markup + coming.wrap = $(coming.tpl.wrap).addClass('fancybox-' + (isTouch ? 'mobile' : 'desktop') + ' fancybox-type-' + type + ' fancybox-tmp ' + coming.wrapCSS).appendTo( coming.parent || 'body' ); + + $.extend(coming, { + skin : $('.fancybox-skin', coming.wrap), + outer : $('.fancybox-outer', coming.wrap), + inner : $('.fancybox-inner', coming.wrap) + }); + + $.each(["Top", "Right", "Bottom", "Left"], function(i, v) { + coming.skin.css('padding' + v, getValue(coming.padding[ i ])); + }); + + F.trigger('onReady'); + + // Check before try to load; 'inline' and 'html' types need content, others - href + if (type === 'inline' || type === 'html') { + if (!coming.content || !coming.content.length) { + return F._error( 'content' ); + } + + } else if (!href) { + return F._error( 'href' ); + } + + if (type === 'image') { + F._loadImage(); + + } else if (type === 'ajax') { + F._loadAjax(); + + } else if (type === 'iframe') { + F._loadIframe(); + + } else { + F._afterLoad(); + } + }, + + _error: function ( type ) { + $.extend(F.coming, { + type : 'html', + autoWidth : true, + autoHeight : true, + minWidth : 0, + minHeight : 0, + scrolling : 'no', + hasError : type, + content : F.coming.tpl.error + }); + + F._afterLoad(); + }, + + _loadImage: function () { + // Reset preload image so it is later possible to check "complete" property + var img = F.imgPreload = new Image(); + + img.onload = function () { + this.onload = this.onerror = null; + + F.coming.width = this.width / F.opts.pixelRatio; + F.coming.height = this.height / F.opts.pixelRatio; + + F._afterLoad(); + }; + + img.onerror = function () { + this.onload = this.onerror = null; + + F._error( 'image' ); + }; + + img.src = F.coming.href; + + if (img.complete !== true) { + F.showLoading(); + } + }, + + _loadAjax: function () { + var coming = F.coming; + + F.showLoading(); + + F.ajaxLoad = $.ajax($.extend({}, coming.ajax, { + url: coming.href, + error: function (jqXHR, textStatus) { + if (F.coming && textStatus !== 'abort') { + F._error( 'ajax', jqXHR ); + + } else { + F.hideLoading(); + } + }, + success: function (data, textStatus) { + if (textStatus === 'success') { + coming.content = data; + + F._afterLoad(); + } + } + })); + }, + + _loadIframe: function() { + var coming = F.coming, + iframe = $(coming.tpl.iframe.replace(/\{rnd\}/g, new Date().getTime())) + .attr('scrolling', isTouch ? 'auto' : coming.iframe.scrolling) + .attr('src', coming.href); + + // This helps IE + $(coming.wrap).bind('onReset', function () { + try { + $(this).find('iframe').hide().attr('src', '//about:blank').end().empty(); + } catch (e) {} + }); + + if (coming.iframe.preload) { + F.showLoading(); + + iframe.one('load', function() { + $(this).data('ready', 1); + + // iOS will lose scrolling if we resize + if (!isTouch) { + $(this).bind('load.fb', F.update); + } + + // Without this trick: + // - iframe won't scroll on iOS devices + // - IE7 sometimes displays empty iframe + $(this).parents('.fancybox-wrap').width('100%').removeClass('fancybox-tmp').show(); + + F._afterLoad(); + }); + } + + coming.content = iframe.appendTo( coming.inner ); + + if (!coming.iframe.preload) { + F._afterLoad(); + } + }, + + _preloadImages: function() { + var group = F.group, + current = F.current, + len = group.length, + cnt = current.preload ? Math.min(current.preload, len - 1) : 0, + item, + i; + + for (i = 1; i <= cnt; i += 1) { + item = group[ (current.index + i ) % len ]; + + if (item.type === 'image' && item.href) { + new Image().src = item.href; + } + } + }, + + _afterLoad: function () { + var coming = F.coming, + previous = F.current, + placeholder = 'fancybox-placeholder', + current, + content, + type, + scrolling, + href, + embed; + + F.hideLoading(); + + if (!coming || F.isActive === false) { + return; + } + + if (false === F.trigger('afterLoad', coming, previous)) { + coming.wrap.stop(true).trigger('onReset').remove(); + + F.coming = null; + + return; + } + + if (previous) { + F.trigger('beforeChange', previous); + + previous.wrap.stop(true).removeClass('fancybox-opened') + .find('.fancybox-item, .fancybox-nav') + .remove(); + } + + F.unbindEvents(); + + current = coming; + content = coming.content; + type = coming.type; + scrolling = coming.scrolling; + + $.extend(F, { + wrap : current.wrap, + skin : current.skin, + outer : current.outer, + inner : current.inner, + current : current, + previous : previous + }); + + href = current.href; + + switch (type) { + case 'inline': + case 'ajax': + case 'html': + if (current.selector) { + content = $('
    ').html(content).find(current.selector); + + } else if (isQuery(content)) { + if (!content.data(placeholder)) { + content.data(placeholder, $('
    ').insertAfter( content ).hide() ); + } + + content = content.show().detach(); + + current.wrap.bind('onReset', function () { + if ($(this).find(content).length) { + content.hide().replaceAll( content.data(placeholder) ).data(placeholder, false); + } + }); + } + break; + + case 'image': + content = current.tpl.image.replace(/\{href\}/g, href); + break; + + case 'swf': + content = ''; + embed = ''; + + $.each(current.swf, function(name, val) { + content += ''; + embed += ' ' + name + '="' + val + '"'; + }); + + content += ''; + break; + } + + if (!(isQuery(content) && content.parent().is(current.inner))) { + current.inner.append( content ); + } + + // Give a chance for helpers or callbacks to update elements + F.trigger('beforeShow'); + + // Set scrolling before calculating dimensions + current.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling)); + + // Set initial dimensions and start position + F._setDimension(); + + F.reposition(); + + F.isOpen = false; + F.coming = null; + + F.bindEvents(); + + if (!F.isOpened) { + $('.fancybox-wrap').not( current.wrap ).stop(true).trigger('onReset').remove(); + + } else if (previous.prevMethod) { + F.transitions[ previous.prevMethod ](); + } + + F.transitions[ F.isOpened ? current.nextMethod : current.openMethod ](); + + F._preloadImages(); + }, + + _setDimension: function () { + var viewport = F.getViewport(), + steps = 0, + canShrink = false, + canExpand = false, + wrap = F.wrap, + skin = F.skin, + inner = F.inner, + current = F.current, + width = current.width, + height = current.height, + minWidth = current.minWidth, + minHeight = current.minHeight, + maxWidth = current.maxWidth, + maxHeight = current.maxHeight, + scrolling = current.scrolling, + scrollOut = current.scrollOutside ? current.scrollbarWidth : 0, + margin = current.margin, + wMargin = getScalar(margin[1] + margin[3]), + hMargin = getScalar(margin[0] + margin[2]), + wPadding, + hPadding, + wSpace, + hSpace, + origWidth, + origHeight, + origMaxWidth, + origMaxHeight, + ratio, + width_, + height_, + maxWidth_, + maxHeight_, + iframe, + body; + + // Reset dimensions so we could re-check actual size + wrap.add(skin).add(inner).width('auto').height('auto').removeClass('fancybox-tmp'); + + wPadding = getScalar(skin.outerWidth(true) - skin.width()); + hPadding = getScalar(skin.outerHeight(true) - skin.height()); + + // Any space between content and viewport (margin, padding, border, title) + wSpace = wMargin + wPadding; + hSpace = hMargin + hPadding; + + origWidth = isPercentage(width) ? (viewport.w - wSpace) * getScalar(width) / 100 : width; + origHeight = isPercentage(height) ? (viewport.h - hSpace) * getScalar(height) / 100 : height; + + if (current.type === 'iframe') { + iframe = current.content; + + if (current.autoHeight && iframe.data('ready') === 1) { + try { + if (iframe[0].contentWindow.document.location) { + inner.width( origWidth ).height(9999); + + body = iframe.contents().find('body'); + + if (scrollOut) { + body.css('overflow-x', 'hidden'); + } + + origHeight = body.outerHeight(true); + } + + } catch (e) {} + } + + } else if (current.autoWidth || current.autoHeight) { + inner.addClass( 'fancybox-tmp' ); + + // Set width or height in case we need to calculate only one dimension + if (!current.autoWidth) { + inner.width( origWidth ); + } + + if (!current.autoHeight) { + inner.height( origHeight ); + } + + if (current.autoWidth) { + origWidth = inner.width(); + } + + if (current.autoHeight) { + origHeight = inner.height(); + } + + inner.removeClass( 'fancybox-tmp' ); + } + + width = getScalar( origWidth ); + height = getScalar( origHeight ); + + ratio = origWidth / origHeight; + + // Calculations for the content + minWidth = getScalar(isPercentage(minWidth) ? getScalar(minWidth, 'w') - wSpace : minWidth); + maxWidth = getScalar(isPercentage(maxWidth) ? getScalar(maxWidth, 'w') - wSpace : maxWidth); + + minHeight = getScalar(isPercentage(minHeight) ? getScalar(minHeight, 'h') - hSpace : minHeight); + maxHeight = getScalar(isPercentage(maxHeight) ? getScalar(maxHeight, 'h') - hSpace : maxHeight); + + // These will be used to determine if wrap can fit in the viewport + origMaxWidth = maxWidth; + origMaxHeight = maxHeight; + + if (current.fitToView) { + maxWidth = Math.min(viewport.w - wSpace, maxWidth); + maxHeight = Math.min(viewport.h - hSpace, maxHeight); + } + + maxWidth_ = viewport.w - wMargin; + maxHeight_ = viewport.h - hMargin; + + if (current.aspectRatio) { + if (width > maxWidth) { + width = maxWidth; + height = getScalar(width / ratio); + } + + if (height > maxHeight) { + height = maxHeight; + width = getScalar(height * ratio); + } + + if (width < minWidth) { + width = minWidth; + height = getScalar(width / ratio); + } + + if (height < minHeight) { + height = minHeight; + width = getScalar(height * ratio); + } + + } else { + width = Math.max(minWidth, Math.min(width, maxWidth)); + + if (current.autoHeight && current.type !== 'iframe') { + inner.width( width ); + + height = inner.height(); + } + + height = Math.max(minHeight, Math.min(height, maxHeight)); + } + + // Try to fit inside viewport (including the title) + if (current.fitToView) { + inner.width( width ).height( height ); + + wrap.width( width + wPadding ); + + // Real wrap dimensions + width_ = wrap.width(); + height_ = wrap.height(); + + if (current.aspectRatio) { + while ((width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight) { + if (steps++ > 19) { + break; + } + + height = Math.max(minHeight, Math.min(maxHeight, height - 10)); + width = getScalar(height * ratio); + + if (width < minWidth) { + width = minWidth; + height = getScalar(width / ratio); + } + + if (width > maxWidth) { + width = maxWidth; + height = getScalar(width / ratio); + } + + inner.width( width ).height( height ); + + wrap.width( width + wPadding ); + + width_ = wrap.width(); + height_ = wrap.height(); + } + + } else { + width = Math.max(minWidth, Math.min(width, width - (width_ - maxWidth_))); + height = Math.max(minHeight, Math.min(height, height - (height_ - maxHeight_))); + } + } + + if (scrollOut && scrolling === 'auto' && height < origHeight && (width + wPadding + scrollOut) < maxWidth_) { + width += scrollOut; + } + + inner.width( width ).height( height ); + + wrap.width( width + wPadding ); + + width_ = wrap.width(); + height_ = wrap.height(); + + canShrink = (width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight; + canExpand = current.aspectRatio ? (width < origMaxWidth && height < origMaxHeight && width < origWidth && height < origHeight) : ((width < origMaxWidth || height < origMaxHeight) && (width < origWidth || height < origHeight)); + + $.extend(current, { + dim : { + width : getValue( width_ ), + height : getValue( height_ ) + }, + origWidth : origWidth, + origHeight : origHeight, + canShrink : canShrink, + canExpand : canExpand, + wPadding : wPadding, + hPadding : hPadding, + wrapSpace : height_ - skin.outerHeight(true), + skinSpace : skin.height() - height + }); + + if (!iframe && current.autoHeight && height > minHeight && height < maxHeight && !canExpand) { + inner.height('auto'); + } + }, + + _getPosition: function (onlyAbsolute) { + var current = F.current, + viewport = F.getViewport(), + margin = current.margin, + width = F.wrap.width() + margin[1] + margin[3], + height = F.wrap.height() + margin[0] + margin[2], + rez = { + position: 'absolute', + top : margin[0], + left : margin[3] + }; + + if (current.autoCenter && current.fixed && !onlyAbsolute && height <= viewport.h && width <= viewport.w) { + rez.position = 'fixed'; + + } else if (!current.locked) { + rez.top += viewport.y; + rez.left += viewport.x; + } + + rez.top = getValue(Math.max(rez.top, rez.top + ((viewport.h - height) * current.topRatio))); + rez.left = getValue(Math.max(rez.left, rez.left + ((viewport.w - width) * current.leftRatio))); + + return rez; + }, + + _afterZoomIn: function () { + var current = F.current; + + if (!current) { + return; + } + + F.isOpen = F.isOpened = true; + + F.wrap.css('overflow', 'visible').addClass('fancybox-opened').hide().show(0); + + F.update(); + + // Assign a click event + if ( current.closeClick || (current.nextClick && F.group.length > 1) ) { + F.inner.css('cursor', 'pointer').bind('click.fb', function(e) { + if (!$(e.target).is('a') && !$(e.target).parent().is('a')) { + e.preventDefault(); + + F[ current.closeClick ? 'close' : 'next' ](); + } + }); + } + + // Create a close button + if (current.closeBtn) { + $(current.tpl.closeBtn).appendTo(F.skin).bind('click.fb', function(e) { + e.preventDefault(); + + F.close(); + }); + } + + // Create navigation arrows + if (current.arrows && F.group.length > 1) { + if (current.loop || current.index > 0) { + $(current.tpl.prev).appendTo(F.outer).bind('click.fb', F.prev); + } + + if (current.loop || current.index < F.group.length - 1) { + $(current.tpl.next).appendTo(F.outer).bind('click.fb', F.next); + } + } + + F.trigger('afterShow'); + + // Stop the slideshow if this is the last item + if (!current.loop && current.index === current.group.length - 1) { + + F.play( false ); + + } else if (F.opts.autoPlay && !F.player.isActive) { + F.opts.autoPlay = false; + + F.play(true); + } + }, + + _afterZoomOut: function ( obj ) { + obj = obj || F.current; + + $('.fancybox-wrap').trigger('onReset').remove(); + + $.extend(F, { + group : {}, + opts : {}, + router : false, + current : null, + isActive : false, + isOpened : false, + isOpen : false, + isClosing : false, + wrap : null, + skin : null, + outer : null, + inner : null + }); + + F.trigger('afterClose', obj); + } + }); + + /* + * Default transitions + */ + + F.transitions = { + getOrigPosition: function () { + var current = F.current, + element = current.element, + orig = current.orig, + pos = {}, + width = 50, + height = 50, + hPadding = current.hPadding, + wPadding = current.wPadding, + viewport = F.getViewport(); + + if (!orig && current.isDom && element.is(':visible')) { + orig = element.find('img:first'); + + if (!orig.length) { + orig = element; + } + } + + if (isQuery(orig)) { + pos = orig.offset(); + + if (orig.is('img')) { + width = orig.outerWidth(); + height = orig.outerHeight(); + } + + } else { + pos.top = viewport.y + (viewport.h - height) * current.topRatio; + pos.left = viewport.x + (viewport.w - width) * current.leftRatio; + } + + if (F.wrap.css('position') === 'fixed' || current.locked) { + pos.top -= viewport.y; + pos.left -= viewport.x; + } + + pos = { + top : getValue(pos.top - hPadding * current.topRatio), + left : getValue(pos.left - wPadding * current.leftRatio), + width : getValue(width + wPadding), + height : getValue(height + hPadding) + }; + + return pos; + }, + + step: function (now, fx) { + var ratio, + padding, + value, + prop = fx.prop, + current = F.current, + wrapSpace = current.wrapSpace, + skinSpace = current.skinSpace; + + if (prop === 'width' || prop === 'height') { + ratio = fx.end === fx.start ? 1 : (now - fx.start) / (fx.end - fx.start); + + if (F.isClosing) { + ratio = 1 - ratio; + } + + padding = prop === 'width' ? current.wPadding : current.hPadding; + value = now - padding; + + F.skin[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) ) ); + F.inner[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) - (skinSpace * ratio) ) ); + } + }, + + zoomIn: function () { + var current = F.current, + startPos = current.pos, + effect = current.openEffect, + elastic = effect === 'elastic', + endPos = $.extend({opacity : 1}, startPos); + + // Remove "position" property that breaks older IE + delete endPos.position; + + if (elastic) { + startPos = this.getOrigPosition(); + + if (current.openOpacity) { + startPos.opacity = 0.1; + } + + } else if (effect === 'fade') { + startPos.opacity = 0.1; + } + + F.wrap.css(startPos).animate(endPos, { + duration : effect === 'none' ? 0 : current.openSpeed, + easing : current.openEasing, + step : elastic ? this.step : null, + complete : F._afterZoomIn + }); + }, + + zoomOut: function () { + var current = F.current, + effect = current.closeEffect, + elastic = effect === 'elastic', + endPos = {opacity : 0.1}; + + if (elastic) { + endPos = this.getOrigPosition(); + + if (current.closeOpacity) { + endPos.opacity = 0.1; + } + } + + F.wrap.animate(endPos, { + duration : effect === 'none' ? 0 : current.closeSpeed, + easing : current.closeEasing, + step : elastic ? this.step : null, + complete : F._afterZoomOut + }); + }, + + changeIn: function () { + var current = F.current, + effect = current.nextEffect, + startPos = current.pos, + endPos = { opacity : 1 }, + direction = F.direction, + distance = 200, + field; + + startPos.opacity = 0.1; + + if (effect === 'elastic') { + field = direction === 'down' || direction === 'up' ? 'top' : 'left'; + + if (direction === 'down' || direction === 'right') { + startPos[ field ] = getValue(getScalar(startPos[ field ]) - distance); + endPos[ field ] = '+=' + distance + 'px'; + + } else { + startPos[ field ] = getValue(getScalar(startPos[ field ]) + distance); + endPos[ field ] = '-=' + distance + 'px'; + } + } + + // Workaround for http://bugs.jquery.com/ticket/12273 + if (effect === 'none') { + F._afterZoomIn(); + + } else { + F.wrap.css(startPos).animate(endPos, { + duration : current.nextSpeed, + easing : current.nextEasing, + complete : F._afterZoomIn + }); + } + }, + + changeOut: function () { + var previous = F.previous, + effect = previous.prevEffect, + endPos = { opacity : 0.1 }, + direction = F.direction, + distance = 200; + + if (effect === 'elastic') { + endPos[ direction === 'down' || direction === 'up' ? 'top' : 'left' ] = ( direction === 'up' || direction === 'left' ? '-' : '+' ) + '=' + distance + 'px'; + } + + previous.wrap.animate(endPos, { + duration : effect === 'none' ? 0 : previous.prevSpeed, + easing : previous.prevEasing, + complete : function () { + $(this).trigger('onReset').remove(); + } + }); + } + }; + + /* + * Overlay helper + */ + + F.helpers.overlay = { + defaults : { + closeClick : true, // if true, fancyBox will be closed when user clicks on the overlay + speedOut : 200, // duration of fadeOut animation + showEarly : true, // indicates if should be opened immediately or wait until the content is ready + css : {}, // custom CSS properties + locked : !isTouch, // if true, the content will be locked into overlay + fixed : true // if false, the overlay CSS position property will not be set to "fixed" + }, + + overlay : null, // current handle + fixed : false, // indicates if the overlay has position "fixed" + el : $('html'), // element that contains "the lock" + + // Public methods + create : function(opts) { + var parent; + + opts = $.extend({}, this.defaults, opts); + + if (this.overlay) { + this.close(); + } + + parent = F.coming ? F.coming.parent : opts.parent; + + this.overlay = $('
    ').appendTo( parent && parent.lenth ? parent : 'body' ); + this.fixed = false; + + if (opts.fixed && F.defaults.fixed) { + this.overlay.addClass('fancybox-overlay-fixed'); + + this.fixed = true; + } + }, + + open : function(opts) { + var that = this; + + opts = $.extend({}, this.defaults, opts); + + if (this.overlay) { + this.overlay.unbind('.overlay').width('auto').height('auto'); + + } else { + this.create(opts); + } + + if (!this.fixed) { + W.bind('resize.overlay', $.proxy( this.update, this) ); + + this.update(); + } + + if (opts.closeClick) { + this.overlay.bind('click.overlay', function(e) { + if ($(e.target).hasClass('fancybox-overlay')) { + if (F.isActive) { + F.close(); + } else { + that.close(); + } + + return false; + } + }); + } + + this.overlay.css( opts.css ).show(); + }, + + close : function() { + W.unbind('resize.overlay'); + + if (this.el.hasClass('fancybox-lock')) { + $('.fancybox-margin').removeClass('fancybox-margin'); + + this.el.removeClass('fancybox-lock'); + + W.scrollTop( this.scrollV ).scrollLeft( this.scrollH ); + } + + $('.fancybox-overlay').remove().hide(); + + $.extend(this, { + overlay : null, + fixed : false + }); + }, + + // Private, callbacks + + update : function () { + var width = '100%', offsetWidth; + + // Reset width/height so it will not mess + this.overlay.width(width).height('100%'); + + // jQuery does not return reliable result for IE + if (IE) { + offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth); + + if (D.width() > offsetWidth) { + width = D.width(); + } + + } else if (D.width() > W.width()) { + width = D.width(); + } + + this.overlay.width(width).height(D.height()); + }, + + // This is where we can manipulate DOM, because later it would cause iframes to reload + onReady : function (opts, obj) { + var overlay = this.overlay; + + $('.fancybox-overlay').stop(true, true); + + if (!overlay) { + this.create(opts); + } + + if (opts.locked && this.fixed && obj.fixed) { + obj.locked = this.overlay.append( obj.wrap ); + obj.fixed = false; + } + + if (opts.showEarly === true) { + this.beforeShow.apply(this, arguments); + } + }, + + beforeShow : function(opts, obj) { + if (obj.locked && !this.el.hasClass('fancybox-lock')) { + if (this.fixPosition !== false) { + $('*').filter(function(){ + return ($(this).css('position') === 'fixed' && !$(this).hasClass("fancybox-overlay") && !$(this).hasClass("fancybox-wrap") ); + }).addClass('fancybox-margin'); + } + + this.el.addClass('fancybox-margin'); + + this.scrollV = W.scrollTop(); + this.scrollH = W.scrollLeft(); + + this.el.addClass('fancybox-lock'); + + W.scrollTop( this.scrollV ).scrollLeft( this.scrollH ); + } + + this.open(opts); + }, + + onUpdate : function() { + if (!this.fixed) { + this.update(); + } + }, + + afterClose: function (opts) { + // Remove overlay if exists and fancyBox is not opening + // (e.g., it is not being open using afterClose callback) + if (this.overlay && !F.coming) { + this.overlay.fadeOut(opts.speedOut, $.proxy( this.close, this )); + } + } + }; + + /* + * Title helper + */ + + F.helpers.title = { + defaults : { + type : 'float', // 'float', 'inside', 'outside' or 'over', + position : 'bottom' // 'top' or 'bottom' + }, + + beforeShow: function (opts) { + var current = F.current, + text = current.title, + type = opts.type, + title, + target; + + if ($.isFunction(text)) { + text = text.call(current.element, current); + } + + if (!isString(text) || $.trim(text) === '') { + return; + } + + title = $('
    ' + text + '
    '); + + switch (type) { + case 'inside': + target = F.skin; + break; + + case 'outside': + target = F.wrap; + break; + + case 'over': + target = F.inner; + break; + + default: // 'float' + target = F.skin; + + title.appendTo('body'); + + if (IE) { + title.width( title.width() ); + } + + title.wrapInner(''); + + //Increase bottom margin so this title will also fit into viewport + F.current.margin[2] += Math.abs( getScalar(title.css('margin-bottom')) ); + break; + } + + title[ (opts.position === 'top' ? 'prependTo' : 'appendTo') ](target); + } + }; + + // jQuery plugin initialization + $.fn.fancybox = function (options) { + var index, + that = $(this), + selector = this.selector || '', + run = function(e) { + var what = $(this).blur(), idx = index, relType, relVal; + + if (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && !what.is('.fancybox-wrap')) { + relType = options.groupAttr || 'data-fancybox-group'; + relVal = what.attr(relType); + + if (!relVal) { + relType = 'rel'; + relVal = what.get(0)[ relType ]; + } + + if (relVal && relVal !== '' && relVal !== 'nofollow') { + what = selector.length ? $(selector) : that; + what = what.filter('[' + relType + '="' + relVal + '"]'); + idx = what.index(this); + } + + options.index = idx; + + // Stop an event from bubbling if everything is fine + if (F.open(what, options) !== false) { + e.preventDefault(); + } + } + }; + + options = options || {}; + index = options.index || 0; + + if (!selector || options.live === false) { + that.unbind('click.fb-start').bind('click.fb-start', run); + + } else { + D.undelegate(selector, 'click.fb-start').delegate(selector + ":not('.fancybox-item, .fancybox-nav')", 'click.fb-start', run); + } + + this.filter('[data-fancybox-start=1]').trigger('click'); + + return this; + }; + + // Tests that need a body at doc ready + D.ready(function() { + var w1, w2; + + if ( $.scrollbarWidth === undefined ) { + // http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth + $.scrollbarWidth = function() { + var parent = $('
    ').appendTo('body'), + child = parent.children(), + width = child.innerWidth() - child.height( 99 ).innerWidth(); + + parent.remove(); + + return width; + }; + } + + if ( $.support.fixedPosition === undefined ) { + $.support.fixedPosition = (function() { + var elem = $('
    ').appendTo('body'), + fixed = ( elem[0].offsetTop === 20 || elem[0].offsetTop === 15 ); + + elem.remove(); + + return fixed; + }()); + } + + $.extend(F.defaults, { + scrollbarWidth : $.scrollbarWidth(), + fixed : $.support.fixedPosition, + parent : $('body') + }); + + //Get real width of page scroll-bar + w1 = $(window).width(); + + H.addClass('fancybox-lock-test'); + + w2 = $(window).width(); + + H.removeClass('fancybox-lock-test'); + + $("").appendTo("head"); + }); + +}(window, document, jQuery)); \ No newline at end of file diff --git a/themes/landscape/source/fancybox/jquery.fancybox.pack.js b/themes/landscape/source/fancybox/jquery.fancybox.pack.js new file mode 100644 index 000000000..2db128084 --- /dev/null +++ b/themes/landscape/source/fancybox/jquery.fancybox.pack.js @@ -0,0 +1,46 @@ +/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */ +(function(s,H,f,w){var K=f("html"),q=f(s),p=f(H),b=f.fancybox=function(){b.open.apply(this,arguments)},J=navigator.userAgent.match(/msie/i),C=null,t=H.createTouch!==w,u=function(a){return a&&a.hasOwnProperty&&a instanceof f},r=function(a){return a&&"string"===f.type(a)},F=function(a){return r(a)&&0
    ',image:'',iframe:'",error:'

    The requested content cannot be loaded.
    Please try again later.

    ',closeBtn:'',next:'',prev:''},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0, +openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1, +isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=u(a)?f(a).get():[a]),f.each(a,function(e,c){var l={},g,h,k,n,m;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),u(c)?(l={href:c.data("fancybox-href")||c.attr("href"),title:f("
    ").text(c.data("fancybox-title")||c.attr("title")).html(),isDom:!0,element:c}, +f.metadata&&f.extend(!0,l,c.metadata())):l=c);g=d.href||l.href||(r(c)?c:null);h=d.title!==w?d.title:l.title||"";n=(k=d.content||l.content)?"html":d.type||l.type;!n&&l.isDom&&(n=c.data("fancybox-type"),n||(n=(n=c.prop("class").match(/fancybox\.(\w+)/))?n[1]:null));r(g)&&(n||(b.isImage(g)?n="image":b.isSWF(g)?n="swf":"#"===g.charAt(0)?n="inline":r(c)&&(n="html",k=c)),"ajax"===n&&(m=g.split(/\s+/,2),g=m.shift(),m=m.shift()));k||("inline"===n?g?k=f(r(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):l.isDom&&(k=c): +"html"===n?k=g:n||g||!l.isDom||(n="inline",k=c));f.extend(l,{href:g,type:n,content:k,title:h,selector:m});a[e]=l}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==w&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1===b.trigger("onCancel")||(b.hideLoading(),a&&(b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(), +b.coming=null,b.current||b._afterZoomOut(a)))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(b.isOpen&&!0!==a?(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]()):(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&& +(b.player.timer=setTimeout(b.next,b.current.playSpeed))},c=function(){d();p.unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};!0===a||!b.player.isActive&&!1!==a?b.current&&(b.current.loop||b.current.index=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==w&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,l;c&&(l=b._getPosition(d),a&&"scroll"===a.type?(delete l.position,c.stop(!0,!0).animate(l,200)):(c.css(l),e.pos=f.extend({},e.dim,l)))}, +update:function(a){var d=a&&a.originalEvent&&a.originalEvent.type,e=!d||"orientationchange"===d;e&&(clearTimeout(C),C=null);b.isOpen&&!C&&(C=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),C=null)},e&&!t?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,t&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"), +b.trigger("onUpdate")),b.update())},hideLoading:function(){p.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('
    ').click(b.cancel).appendTo("body");p.bind("keydown.loading",function(a){27===(a.which||a.keyCode)&&(a.preventDefault(),b.cancel())});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}));b.trigger("onLoading")},getViewport:function(){var a=b.current&& +b.current.locked||!1,d={x:q.scrollLeft(),y:q.scrollTop()};a&&a.length?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=t&&s.innerWidth?s.innerWidth:q.width(),d.h=t&&s.innerHeight?s.innerHeight:q.height());return d},unbindEvents:function(){b.wrap&&u(b.wrap)&&b.wrap.unbind(".fb");p.unbind(".fb");q.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(q.bind("orientationchange.fb"+(t?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&p.bind("keydown.fb",function(e){var c= +e.which||e.keyCode,l=e.target||e.srcElement;if(27===c&&b.coming)return!1;e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||l&&(l.type||f(l).is("[contenteditable]"))||f.each(d,function(d,l){if(1h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();0!==c&&!k&&1g||0>l)&&b.next(0>g?"up":"right"),d.preventDefault())}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,e){if(e&& +b.helpers[d]&&f.isFunction(b.helpers[d][a]))b.helpers[d][a](f.extend(!0,{},b.helpers[d].defaults,e),c)})}p.trigger(a)},isImage:function(a){return r(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(a){return r(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=m(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&&(d.padding=[c,c, +c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=!0;if("image"=== +c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=!0);"iframe"===c&&t&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(t?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,x(d.padding[a]))});b.trigger("onReady"); +if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width= +this.width/b.opts.pixelRatio;b.coming.height=this.height/b.opts.pixelRatio;b._afterLoad()};a.onerror=function(){this.onload=this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming, +d=f(a.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",t?"auto":a.iframe.scrolling).attr("src",a.href);f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);t||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload|| +b._afterLoad()},_preloadImages:function(){var a=b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,l,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove()); +b.unbindEvents();e=a.content;c=a.type;l=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("
    ").html(e).find(a.selector):u(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('
    ').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder", +!1)}));break;case "image":e=a.tpl.image.replace(/\{href\}/g,g);break;case "swf":e='',h="",f.each(a.swf,function(a,b){e+='';h+=" "+a+'="'+b+'"'}),e+='"}u(e)&&e.parent().is(a.inner)||a.inner.append(e);b.trigger("beforeShow"); +a.inner.css("overflow","yes"===l?"scroll":"no"===l?"hidden":l);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(!b.isOpened)f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();else if(d.prevMethod)b.transitions[d.prevMethod]();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,l=b.skin,g=b.inner,h=b.current,c=h.width,k=h.height,n=h.minWidth,v=h.minHeight,p=h.maxWidth, +q=h.maxHeight,t=h.scrolling,r=h.scrollOutside?h.scrollbarWidth:0,y=h.margin,z=m(y[1]+y[3]),s=m(y[0]+y[2]),w,A,u,D,B,G,C,E,I;e.add(l).add(g).width("auto").height("auto").removeClass("fancybox-tmp");y=m(l.outerWidth(!0)-l.width());w=m(l.outerHeight(!0)-l.height());A=z+y;u=s+w;D=F(c)?(a.w-A)*m(c)/100:c;B=F(k)?(a.h-u)*m(k)/100:k;if("iframe"===h.type){if(I=h.content,h.autoHeight&&1===I.data("ready"))try{I[0].contentWindow.document.location&&(g.width(D).height(9999),G=I.contents().find("body"),r&&G.css("overflow-x", +"hidden"),B=G.outerHeight(!0))}catch(H){}}else if(h.autoWidth||h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(D),h.autoHeight||g.height(B),h.autoWidth&&(D=g.width()),h.autoHeight&&(B=g.height()),g.removeClass("fancybox-tmp");c=m(D);k=m(B);E=D/B;n=m(F(n)?m(n,"w")-A:n);p=m(F(p)?m(p,"w")-A:p);v=m(F(v)?m(v,"h")-u:v);q=m(F(q)?m(q,"h")-u:q);G=p;C=q;h.fitToView&&(p=Math.min(a.w-A,p),q=Math.min(a.h-u,q));A=a.w-z;s=a.h-s;h.aspectRatio?(c>p&&(c=p,k=m(c/E)),k>q&&(k=q,c=m(k*E)),cA||z>s)&&c>n&&k>v&&!(19p&&(c=p,k=m(c/E)),g.width(c).height(k),e.width(c+y),a=e.width(),z=e.height();else c=Math.max(n,Math.min(c,c-(a-A))),k=Math.max(v,Math.min(k,k-(z-s)));r&&"auto"===t&&kA||z>s)&&c>n&&k>v;c=h.aspectRatio?cv&&k
    ').appendTo(d&&d.lenth?d:"body");this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(q.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay", +function(a){if(f(a.target).hasClass("fancybox-overlay"))return b.isActive?b.close():d.close(),!1});this.overlay.css(a.css).show()},close:function(){q.unbind("resize.overlay");this.el.hasClass("fancybox-lock")&&(f(".fancybox-margin").removeClass("fancybox-margin"),this.el.removeClass("fancybox-lock"),q.scrollTop(this.scrollV).scrollLeft(this.scrollH));f(".fancybox-overlay").remove().hide();f.extend(this,{overlay:null,fixed:!1})},update:function(){var a="100%",b;this.overlay.width(a).height("100%"); +J?(b=Math.max(H.documentElement.offsetWidth,H.body.offsetWidth),p.width()>b&&(a=p.width())):p.width()>q.width()&&(a=p.width());this.overlay.width(a).height(p.height())},onReady:function(a,b){var e=this.overlay;f(".fancybox-overlay").stop(!0,!0);e||this.create(a);a.locked&&this.fixed&&b.fixed&&(b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){b.locked&&!this.el.hasClass("fancybox-lock")&&(!1!==this.fixPosition&&f("*").filter(function(){return"fixed"=== +f(this).css("position")&&!f(this).hasClass("fancybox-overlay")&&!f(this).hasClass("fancybox-wrap")}).addClass("fancybox-margin"),this.el.addClass("fancybox-margin"),this.scrollV=q.scrollTop(),this.scrollH=q.scrollLeft(),this.el.addClass("fancybox-lock"),q.scrollTop(this.scrollV).scrollLeft(this.scrollH));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.coming&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float", +position:"bottom"},beforeShow:function(a){var d=b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(r(e)&&""!==f.trim(e)){d=f('
    '+e+"
    ");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),J&&d.width(d.width()),d.wrapInner(''),b.current.margin[2]+=Math.abs(m(d.css("margin-bottom")))}d["top"===a.position?"prependTo": +"appendTo"](c)}}};f.fn.fancybox=function(a){var d,e=f(this),c=this.selector||"",l=function(g){var h=f(this).blur(),k=d,l,m;g.ctrlKey||g.altKey||g.shiftKey||g.metaKey||h.is(".fancybox-wrap")||(l=a.groupAttr||"data-fancybox-group",m=h.attr(l),m||(l="rel",m=h.get(0)[l]),m&&""!==m&&"nofollow"!==m&&(h=c.length?f(c):e,h=h.filter("["+l+'="'+m+'"]'),k=h.index(this)),a.index=k,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;c&&!1!==a.live?p.undelegate(c,"click.fb-start").delegate(c+":not('.fancybox-item, .fancybox-nav')", +"click.fb-start",l):e.unbind("click.fb-start").bind("click.fb-start",l);this.filter("[data-fancybox-start=1]").trigger("click");return this};p.ready(function(){var a,d;f.scrollbarWidth===w&&(f.scrollbarWidth=function(){var a=f('
    ').appendTo("body"),b=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});f.support.fixedPosition===w&&(f.support.fixedPosition=function(){var a=f('
    ').appendTo("body"), +b=20===a[0].offsetTop||15===a[0].offsetTop;a.remove();return b}());f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")});a=f(s).width();K.addClass("fancybox-lock-test");d=f(s).width();K.removeClass("fancybox-lock-test");f("").appendTo("head")})})(window,document,jQuery); \ No newline at end of file diff --git a/themes/landscape/source/js/script.js b/themes/landscape/source/js/script.js new file mode 100644 index 000000000..1e5876745 --- /dev/null +++ b/themes/landscape/source/js/script.js @@ -0,0 +1,137 @@ +(function($){ + // Search + var $searchWrap = $('#search-form-wrap'), + isSearchAnim = false, + searchAnimDuration = 200; + + var startSearchAnim = function(){ + isSearchAnim = true; + }; + + var stopSearchAnim = function(callback){ + setTimeout(function(){ + isSearchAnim = false; + callback && callback(); + }, searchAnimDuration); + }; + + $('#nav-search-btn').on('click', function(){ + if (isSearchAnim) return; + + startSearchAnim(); + $searchWrap.addClass('on'); + stopSearchAnim(function(){ + $('.search-form-input').focus(); + }); + }); + + $('.search-form-input').on('blur', function(){ + startSearchAnim(); + $searchWrap.removeClass('on'); + stopSearchAnim(); + }); + + // Share + $('body').on('click', function(){ + $('.article-share-box.on').removeClass('on'); + }).on('click', '.article-share-link', function(e){ + e.stopPropagation(); + + var $this = $(this), + url = $this.attr('data-url'), + encodedUrl = encodeURIComponent(url), + id = 'article-share-box-' + $this.attr('data-id'), + offset = $this.offset(); + + if ($('#' + id).length){ + var box = $('#' + id); + + if (box.hasClass('on')){ + box.removeClass('on'); + return; + } + } else { + var html = [ + '
    ', + '', + '
    ', + '', + '', + '', + '', + '
    ', + '
    ' + ].join(''); + + var box = $(html); + + $('body').append(box); + } + + $('.article-share-box.on').hide(); + + box.css({ + top: offset.top + 25, + left: offset.left + }).addClass('on'); + }).on('click', '.article-share-box', function(e){ + e.stopPropagation(); + }).on('click', '.article-share-box-input', function(){ + $(this).select(); + }).on('click', '.article-share-box-link', function(e){ + e.preventDefault(); + e.stopPropagation(); + + window.open(this.href, 'article-share-box-window-' + Date.now(), 'width=500,height=450'); + }); + + // Caption + $('.article-entry').each(function(i){ + $(this).find('img').each(function(){ + if ($(this).parent().hasClass('fancybox')) return; + + var alt = this.alt; + + if (alt) $(this).after('' + alt + ''); + + $(this).wrap(''); + }); + + $(this).find('.fancybox').each(function(){ + $(this).attr('rel', 'article' + i); + }); + }); + + if ($.fancybox){ + $('.fancybox').fancybox(); + } + + // Mobile nav + var $container = $('#container'), + isMobileNavAnim = false, + mobileNavAnimDuration = 200; + + var startMobileNavAnim = function(){ + isMobileNavAnim = true; + }; + + var stopMobileNavAnim = function(){ + setTimeout(function(){ + isMobileNavAnim = false; + }, mobileNavAnimDuration); + } + + $('#main-nav-toggle').on('click', function(){ + if (isMobileNavAnim) return; + + startMobileNavAnim(); + $container.toggleClass('mobile-nav-on'); + stopMobileNavAnim(); + }); + + $('#wrap').on('click', function(){ + if (isMobileNavAnim || !$container.hasClass('mobile-nav-on')) return; + + $container.removeClass('mobile-nav-on'); + }); +})(jQuery); \ No newline at end of file From b10e371b701939926d20d36c5848ce77a9a1c7d2 Mon Sep 17 00:00:00 2001 From: Jerry xu Date: Thu, 3 May 2018 17:42:36 +0800 Subject: [PATCH 003/163] change themes next --- .travis.yml | 30 + README.md | 5 +- _config.yml | 32 +- package-lock.json | 14128 ++++-------------------------- package.json | 9 +- source/README.md | 2 + source/_posts/gitignore.md | 44 + source/_posts/gitlab1.md | 142 + source/_posts/hello-world.md | 38 - source/_posts/hexo-blog.md | 135 + source/_posts/hexo-iterative.md | 95 + source/_posts/rap1.md | 76 + source/_posts/rap2.md | 208 + source/_posts/realm.md | 193 + source/categories/index.md | 5 + source/tags/index.md | 5 + themes/next | 1 + 17 files changed, 2784 insertions(+), 12364 deletions(-) create mode 100644 .travis.yml create mode 100644 source/_posts/gitignore.md create mode 100644 source/_posts/gitlab1.md delete mode 100644 source/_posts/hello-world.md create mode 100644 source/_posts/hexo-blog.md create mode 100644 source/_posts/hexo-iterative.md create mode 100644 source/_posts/rap1.md create mode 100644 source/_posts/rap2.md create mode 100644 source/_posts/realm.md create mode 100644 source/categories/index.md create mode 100644 source/tags/index.md create mode 160000 themes/next diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..74b71d1d3 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,30 @@ +language: node_js # 设置语言 +node_js: stable # 设置相应的版本 +cache: + directories: + - node_modules # 据说可以减少travis构建时间 +before_install: + - npm install -g hexo + - npm install -g hexo-cli +install: + - npm install # 安装hexo及插件 +before_script: + - npm install -g mocha + - git clone --branch master https://github.com/BladeCode/BladeCode.github.io.git public +script: + - hexo cl # 清除 + - hexo g # 生成 +after_script: + - cd ./public + - git init + - git config user.name "BladeCode" # 修改成自己的github用户名 + - git config user.email "Jerry.x@outlook.com" # 修改成自己的GitHub邮箱 + - git add . + - git commit -m "update by Travis-CI" + - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master # GH_token就是在travis中设置的token +branches: + only: + - dev # 只监测这个分支,一有动静就开始构建 +env: + global: + - GH_REF: github.com/BladeCode/BladeCode.github.io.git \ No newline at end of file diff --git a/README.md b/README.md index ba5fb8d0b..f18eccf83 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,10 @@ BladeCode +![BladeCode](https://travis-ci.org/BladeCode/BladeCode.github.io.svg?branch=dev) + ### Thanks 1. [Node](https://nodejs.org) 2. [Hexo](https://hexo.io) -3. [Next](https://github.com/theme-next/hexo-theme-next) \ No newline at end of file +3. [Next](https://github.com/theme-next/hexo-theme-next) +4. [Cloudflare](https://www.cloudflare.com) \ No newline at end of file diff --git a/_config.yml b/_config.yml index 613ccdd47..6690d9c26 100644 --- a/_config.yml +++ b/_config.yml @@ -8,7 +8,7 @@ subtitle: Life's a struggle! description: keywords: author: Jerry xu -language: +language: zh-CN timezone: # URL @@ -72,12 +72,38 @@ pagination_dir: page # Extensions ## Plugins: https://hexo.io/plugins/ + +# RSS订阅支持 +plugin: +- hexo-generator-feed +# Feed Atom +feed: + type: atom + path: atom.xml + limit: 20 + ## Themes: https://hexo.io/themes/ -theme: landscape +theme: next # Deployment ## Docs: https://hexo.io/docs/deployment.html deploy: + # - type: leancloud_counter_security_sync type: git repo: https://github.com/BladeCode/BladeCode.github.io.git - branch: master + branch: master + +leancloud_counter_security: + enable: true + app_id: fAWWlD5N0zGklmW8OBweP1kl-gzGzoHsz + app_key: 7Jd3g9Ux1jhtWour5UFUPQuV + username: incoder # Will be asked while deploying if is left blank + password: coder@root,. # Recommmended to be left blank. Will be asked while deploying if is left blank + +# hexo-symbols-count-time +symbols_count_time: + symbols: true + time: true + total_symbols: true + total_time: true + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ee1159f45..09f36dace 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,244 +47,11 @@ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, - "ansi-bgblack": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz", - "integrity": "sha1-poulAHiHcBtqr74/oNrf36juPKI=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-bgblue": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgblue/-/ansi-bgblue-0.1.1.tgz", - "integrity": "sha1-Z73ATtybm1J4lp2hlt6j11yMNhM=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-bgcyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgcyan/-/ansi-bgcyan-0.1.1.tgz", - "integrity": "sha1-WEiUJWAL3p9VBwaN2Wnr/bUP52g=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-bggreen": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bggreen/-/ansi-bggreen-0.1.1.tgz", - "integrity": "sha1-TjGRJIUplD9DIelr8THRwTgWr0k=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-bgmagenta": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgmagenta/-/ansi-bgmagenta-0.1.1.tgz", - "integrity": "sha1-myhDLAduqpmUGGcqPvvhk5HCx6E=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-bgred": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgred/-/ansi-bgred-0.1.1.tgz", - "integrity": "sha1-p2+Sg4OCukMpCmwXeEJPmE1vEEE=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-bgwhite": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgwhite/-/ansi-bgwhite-0.1.1.tgz", - "integrity": "sha1-ZQRlE3elim7OzQMxmU5IAljhG6g=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-bgyellow": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgyellow/-/ansi-bgyellow-0.1.1.tgz", - "integrity": "sha1-w/4usIzUdmSAKeaHTRWgs49h1E8=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-black": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-black/-/ansi-black-0.1.1.tgz", - "integrity": "sha1-9hheiJNgslRaHsUMC/Bj/EMDJFM=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-blue": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-blue/-/ansi-blue-0.1.1.tgz", - "integrity": "sha1-FbgEmQ6S/JyoxUds6PaZd3wh7b8=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-bold": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bold/-/ansi-bold-0.1.1.tgz", - "integrity": "sha1-PmOVCvWswq4uZw5vZ96xFdGl9QU=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-colors": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-0.2.0.tgz", - "integrity": "sha1-csMd4qDZoszQysMMyYI+6y9kNLU=", - "requires": { - "ansi-bgblack": "0.1.1", - "ansi-bgblue": "0.1.1", - "ansi-bgcyan": "0.1.1", - "ansi-bggreen": "0.1.1", - "ansi-bgmagenta": "0.1.1", - "ansi-bgred": "0.1.1", - "ansi-bgwhite": "0.1.1", - "ansi-bgyellow": "0.1.1", - "ansi-black": "0.1.1", - "ansi-blue": "0.1.1", - "ansi-bold": "0.1.1", - "ansi-cyan": "0.1.1", - "ansi-dim": "0.1.1", - "ansi-gray": "0.1.1", - "ansi-green": "0.1.1", - "ansi-grey": "0.1.1", - "ansi-hidden": "0.1.1", - "ansi-inverse": "0.1.1", - "ansi-italic": "0.1.1", - "ansi-magenta": "0.1.1", - "ansi-red": "0.1.1", - "ansi-reset": "0.1.1", - "ansi-strikethrough": "0.1.1", - "ansi-underline": "0.1.1", - "ansi-white": "0.1.1", - "ansi-yellow": "0.1.1", - "lazy-cache": "2.0.2" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "ansi-cyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-dim": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-dim/-/ansi-dim-0.1.1.tgz", - "integrity": "sha1-QN5MYDqoCG2Oeoa4/5mNXDbu/Ww=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" - }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-green": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", - "integrity": "sha1-il2al55FjVfEDjNYCzc5C44Q0Pc=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-grey": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-grey/-/ansi-grey-0.1.1.tgz", - "integrity": "sha1-WdmLasK6GfilF5jphT+6eDOaM8E=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-hidden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-hidden/-/ansi-hidden-0.1.1.tgz", - "integrity": "sha1-7WpMSY0rt8uyidvyqNHcyFZ/rg8=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-inverse": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-inverse/-/ansi-inverse-0.1.1.tgz", - "integrity": "sha1-tq9Fgm/oJr+1KKbHmIV5Q1XM0mk=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-italic": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-italic/-/ansi-italic-0.1.1.tgz", - "integrity": "sha1-EEdDRj9iXBQqA2c5z4XtpoiYbyM=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-magenta": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-magenta/-/ansi-magenta-0.1.1.tgz", - "integrity": "sha1-BjtboW+z8j4c/aKwfAqJ3hHkMK4=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, - "ansi-reset": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-reset/-/ansi-reset-0.1.1.tgz", - "integrity": "sha1-5+cSksPH3c1NYu9KbHwFmAkRw7c=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-strikethrough": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-strikethrough/-/ansi-strikethrough-0.1.1.tgz", - "integrity": "sha1-2Eh3FAss/wfRyT685pkE9oiF5Wg=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -293,35 +60,6 @@ "color-convert": "1.9.1" } }, - "ansi-underline": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-underline/-/ansi-underline-0.1.1.tgz", - "integrity": "sha1-38kg9Ml7WXfqFi34/7mIMIqqcaQ=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-white": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-white/-/ansi-white-0.1.1.tgz", - "integrity": "sha1-nHe3wZPF7pkuYBHTbsTJIbRXiUQ=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" - }, - "ansi-yellow": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-yellow/-/ansi-yellow-0.1.1.tgz", - "integrity": "sha1-y5NW8vRscy8OMZnmEClVp32oPB0=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, "anymatch": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", @@ -357,355 +95,52 @@ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, - "arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", - "requires": { - "make-iterator": "1.0.1" - } - }, - "arr-pluck": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/arr-pluck/-/arr-pluck-0.1.0.tgz", - "integrity": "sha1-+K1tcI+HkAiB4jr9gw1SKQp2Z3U=", - "requires": { - "arr-map": "2.0.2" - } - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-sort": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-0.1.4.tgz", - "integrity": "sha512-BNcM+RXxndPxiZ2rd76k6nyQLRZr2/B/sdi8pQ+Joafr5AH279L40dfokSUTp8O+AaqYjXWhblBWa2st2nc4fQ==", - "requires": { - "default-compare": "1.0.0", - "get-value": "2.0.6", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" }, - "arrayify-compact": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/arrayify-compact/-/arrayify-compact-0.2.0.tgz", - "integrity": "sha1-RZFw4VXKErtRRISDnJ1xUHyA7E0=", - "requires": { - "arr-flatten": "1.1.0" - } - }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, - "assemble-core": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/assemble-core/-/assemble-core-0.25.0.tgz", - "integrity": "sha1-ZZF7/K+c1rFNm5HQMaDdmar0OWQ=", - "requires": { - "assemble-fs": "0.6.0", - "assemble-render-file": "0.7.2", - "assemble-streams": "0.6.0", - "base-task": "0.6.2", - "define-property": "0.2.5", - "lazy-cache": "2.0.2", - "templates": "0.24.3" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "assemble-fs": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/assemble-fs/-/assemble-fs-0.6.0.tgz", - "integrity": "sha1-uky+t0tdG97m1SipZa07fZbe8Og=", - "requires": { - "assemble-handle": "0.1.4", - "extend-shallow": "2.0.1", - "is-valid-app": "0.2.1", - "lazy-cache": "2.0.2", - "stream-combiner": "0.2.2", - "through2": "2.0.3", - "vinyl-fs": "2.4.4" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "assemble-handle": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/assemble-handle/-/assemble-handle-0.1.4.tgz", - "integrity": "sha1-6De1uyPnXJsFJX2AfhYvaSzOIW4=", - "requires": { - "through2": "2.0.3" - } - }, - "assemble-loader": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/assemble-loader/-/assemble-loader-0.6.1.tgz", - "integrity": "sha1-0GmqZBhOFzKEP+HsGAghI1dpVdg=", - "requires": { - "extend-shallow": "2.0.1", - "file-contents": "0.2.4", - "fs-exists-sync": "0.1.0", - "has-glob": "0.1.1", - "is-registered": "0.1.5", - "is-valid-glob": "0.3.0", - "is-valid-instance": "0.1.0", - "isobject": "2.1.0", - "lazy-cache": "2.0.2", - "load-templates": "0.11.4" - }, - "dependencies": { - "is-valid-instance": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", - "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", - "requires": { - "isobject": "2.1.0", - "pascalcase": "0.1.1" - } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "assemble-render-file": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/assemble-render-file/-/assemble-render-file-0.7.2.tgz", - "integrity": "sha1-g6qV9e131ctK6oq8dPIkoVRVccY=", - "requires": { - "debug": "2.6.9", - "is-valid-app": "0.1.2", - "lazy-cache": "2.0.2", - "mixin-deep": "1.3.1", - "through2": "2.0.3" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "is-valid-app": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.1.2.tgz", - "integrity": "sha1-L2fLs7r2TWWccNBD/JETm1qLlZA=", - "requires": { - "debug": "2.6.9", - "is-registered": "0.1.5", - "is-valid-instance": "0.1.0", - "lazy-cache": "2.0.2" - } - }, - "is-valid-instance": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", - "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", - "requires": { - "isobject": "2.1.0", - "pascalcase": "0.1.1" - } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "assemble-streams": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/assemble-streams/-/assemble-streams-0.6.0.tgz", - "integrity": "sha1-kOkhaoNpltJoNwvtrHG7MdjJq18=", - "requires": { - "assemble-handle": "0.1.4", - "is-registered": "0.1.5", - "is-valid-instance": "0.1.0", - "lazy-cache": "2.0.2", - "match-file": "0.2.2", - "src-stream": "0.1.1", - "through2": "2.0.3" - }, - "dependencies": { - "is-valid-instance": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", - "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", - "requires": { - "isobject": "2.1.0", - "pascalcase": "0.1.1" - } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "assign-deep": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/assign-deep/-/assign-deep-0.4.7.tgz", - "integrity": "sha512-tYlXoIH6RM2rclkx9uLXDKPKrDGsnxoWHE2J5+9tq2StAXeAAo8hLPZtOqwt22p8r6H5hnMgd8Oz8qPJl3W31g==", + "ascli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", + "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", "requires": { - "assign-symbols": "0.1.1", - "is-primitive": "2.0.0", - "kind-of": "5.1.0" - }, - "dependencies": { - "assign-symbols": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-0.1.1.tgz", - "integrity": "sha1-ywJZRO9OyKNpPwhunhEsdOOg/tk=" - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } + "colour": "0.7.1", + "optjs": "3.2.2" } }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, "async": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" }, - "async-array-reduce": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/async-array-reduce/-/async-array-reduce-0.2.1.tgz", - "integrity": "sha1-yL4BCitc0A3qlsgRFgNGk9/dgtE=" - }, - "async-done": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.2.4.tgz", - "integrity": "sha512-mxc+yISkb0vjsuvG3dJCIZXzRWjKndQ9Zo9zNDJ1K2wh9eP0E0oGmOWm+4cFOvW4dA0tGFImTW5tQJHCtn1kIQ==", - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0", - "process-nextick-args": "1.0.7", - "stream-exhaust": "1.0.2" - }, - "dependencies": { - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - } - } - }, "async-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" }, - "async-each-series": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz", - "integrity": "sha1-9C/YFV048hpbjqB8KOBj7RcAsTg=" + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" }, - "async-helpers": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/async-helpers/-/async-helpers-0.3.17.tgz", - "integrity": "sha512-LfgCyvmK6ZiC7pyqOgli2zfkWL4HYbEb+HXvGgdmqVBgsOOtQz5rSF8Ii/H/1cNNtrfj1KsdZE/lUMeIY3Qcwg==", - "requires": { - "co": "4.6.0", - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "async-settle": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-0.2.1.tgz", - "integrity": "sha1-dnRi1XOACNx16sQkYiNSjyE3E5Y=", + "axios": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", "requires": { - "async-done": "0.4.0" - }, - "dependencies": { - "async-done": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-0.4.0.tgz", - "integrity": "sha1-q4BT9fYikPi/xY83zZtzBwszB7k=", - "requires": { - "end-of-stream": "0.1.5", - "next-tick": "0.2.2", - "once": "1.4.0", - "stream-exhaust": "1.0.2" - } - }, - "end-of-stream": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", - "requires": { - "once": "1.3.3" - }, - "dependencies": { - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "requires": { - "wrappy": "1.0.2" - } - } - } - } + "follow-redirects": "1.4.1", + "is-buffer": "1.1.6" } }, "babel-code-frame": { @@ -827,145 +262,241 @@ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, - "bach": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-0.5.0.tgz", - "integrity": "sha1-P/pqN0F3PrwNJL5f2kvF6FtbHaE=", - "requires": { - "async-done": "1.2.4", - "async-settle": "0.2.1", - "lodash.filter": "4.6.0", - "lodash.flatten": "4.4.0", - "lodash.foreach": "4.5.0", - "lodash.initial": "4.1.1", - "lodash.last": "3.0.0", - "lodash.map": "4.6.0", - "now-and-later": "0.0.6" - } - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" + }, + "basic-auth": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", + "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" + "safe-buffer": "5.1.1" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" } } }, - "base-argv": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/base-argv/-/base-argv-0.4.5.tgz", - "integrity": "sha1-BalXHNwnaUDeGW/8h07uuJnLED0=", + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "arr-diff": "2.0.0", - "arr-union": "3.1.0", - "debug": "2.6.9", - "define-property": "0.2.5", - "expand-args": "0.4.3", - "extend-shallow": "2.0.1", + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "browser-fingerprint": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/browser-fingerprint/-/browser-fingerprint-0.0.1.tgz", + "integrity": "sha1-jfPNyiW/fVs1QtYVRdcwBT/OYEo=" + }, + "bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", + "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", + "requires": { + "long": "3.2.0" + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "0.1.4", "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + }, + "cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash.assignin": "4.2.0", + "lodash.bind": "4.2.1", + "lodash.defaults": "4.2.0", + "lodash.filter": "4.6.0", + "lodash.flatten": "4.4.0", + "lodash.foreach": "4.5.0", + "lodash.map": "4.6.0", + "lodash.merge": "4.6.1", + "lodash.pick": "4.4.0", + "lodash.reduce": "4.6.0", + "lodash.reject": "4.6.0", + "lodash.some": "4.6.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.2.2", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ms": "2.0.0" + "ansi-regex": "2.1.1" } } } }, - "base-cli": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/base-cli/-/base-cli-0.5.0.tgz", - "integrity": "sha1-U+Zdjg9bKKoRBo/sjdTpXXLvPOg=", - "requires": { - "base-argv": "0.4.5", - "base-config": "0.5.2" - } - }, - "base-cli-process": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/base-cli-process/-/base-cli-process-0.1.19.tgz", - "integrity": "sha1-Mg08gVTfcQltSBgY52/m1+R5NjY=", - "requires": { - "arr-union": "3.1.0", - "arrayify-compact": "0.2.0", - "base-cli": "0.5.0", - "base-cli-schema": "0.1.19", - "base-config-process": "0.1.9", - "base-cwd": "0.3.4", - "base-option": "0.8.4", - "base-pkg": "0.2.5", + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "colour": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", + "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "command-exists": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.6.tgz", + "integrity": "sha512-Qst/zUUNmS/z3WziPxyqjrcz09pm+2Knbs5mAZL4VAE0sSrNY1/w8+/YxeHcoBTsO6iojA6BW7eFf27Eg2MRuw==" + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "compressible": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", + "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", + "requires": { + "mime-db": "1.33.0" + } + }, + "compression": { + "version": "1.7.2", + "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", + "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", + "requires": { + "accepts": "1.3.5", + "bytes": "3.0.0", + "compressible": "2.0.13", "debug": "2.6.9", - "export-files": "2.1.1", - "fs-exists-sync": "0.1.0", - "is-valid-app": "0.2.1", - "kind-of": "3.2.2", - "lazy-cache": "2.0.2", - "log-utils": "0.2.1", - "merge-deep": "3.0.1", - "mixin-deep": "1.3.1", - "object.pick": "1.3.0", - "pad-right": "0.2.2", - "union-value": "1.0.0" + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" }, "dependencies": { "debug": { @@ -976,38 +507,27 @@ "ms": "2.0.0" } }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" } } }, - "base-cli-schema": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/base-cli-schema/-/base-cli-schema-0.1.19.tgz", - "integrity": "sha1-gfQYL0zwu4NnHxF2PknLBbkugkE=", + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.2.1", "debug": "2.6.9", - "define-property": "0.2.5", - "export-files": "2.1.1", - "extend-shallow": "2.0.1", - "falsey": "0.3.2", - "fs-exists-sync": "0.1.0", - "has-glob": "0.1.1", - "has-value": "0.3.1", - "kind-of": "3.2.2", - "lazy-cache": "2.0.2", - "map-schema": "0.2.4", - "merge-deep": "3.0.1", - "mixin-deep": "1.3.1", - "resolve": "1.7.1", - "tableize-object": "0.1.0" + "finalhandler": "1.1.0", + "parseurl": "1.3.2", + "utils-merge": "1.0.1" }, "dependencies": { "debug": { @@ -1017,63 +537,248 @@ "requires": { "ms": "2.0.0" } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } } } }, - "base-compose": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/base-compose/-/base-compose-0.2.1.tgz", - "integrity": "sha1-reSal/WiRIvVa8s0C090aMb74tc=", + "cookiejar": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", + "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=" + }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "requires": { + "lru-cache": "4.1.2", + "which": "1.3.0" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=" + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" + }, + "cuid": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/cuid/-/cuid-1.3.8.tgz", + "integrity": "sha1-S4deCWm612T37AcGz0T1+wgx9rc=", + "requires": { + "browser-fingerprint": "0.0.1", + "core-js": "1.2.7", + "node-fingerprint": "0.0.2" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "requires": { - "copy-task": "0.1.0", - "lazy-cache": "2.0.2", - "mixin-deep": "1.3.1" + "domelementtype": "1.1.3", + "entities": "1.1.1" }, "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" } } }, - "base-config": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/base-config/-/base-config-0.5.2.tgz", - "integrity": "sha1-q2A8AdExWL4uYux3/7Ix4o9Ijh8=", + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + }, + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "2.5.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.9.tgz", + "integrity": "sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + }, + "es6-promise": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.3.tgz", + "integrity": "sha512-vLf5iali3jKqlJoo6SryDwe3nxCmiueNjbjLWDIpNbAcKnQXAsAdZk+pM17nSYp3AQMbTmAQVCQSeDLfA87SNA==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=" + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "2.2.3" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "requires": { + "is-number": "2.1.0", "isobject": "2.1.0", - "lazy-cache": "1.0.4", - "map-config": "0.5.0", - "resolve-dir": "0.1.1" + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" } }, - "base-config-process": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/base-config-process/-/base-config-process-0.1.9.tgz", - "integrity": "sha1-imOmGYnuY1UMyM/cP2wCdf2gtG4=", + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", "requires": { - "base-config": "0.5.2", - "base-config-schema": "0.1.24", - "base-cwd": "0.3.4", - "base-option": "0.8.4", "debug": "2.6.9", - "export-files": "2.1.1", - "is-valid-app": "0.2.1", - "lazy-cache": "2.0.2", - "micromatch": "2.3.11", - "mixin-deep": "1.3.1" + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" }, "dependencies": { "debug": { @@ -1083,1281 +788,895 @@ "requires": { "ms": "2.0.0" } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } } } }, - "base-config-schema": { - "version": "0.1.24", - "resolved": "https://registry.npmjs.org/base-config-schema/-/base-config-schema-0.1.24.tgz", - "integrity": "sha1-T74UvsVtwa7ef+3QaSjpGfhyH6k=", + "follow-redirects": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", + "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "base-pkg": "0.2.5", - "camel-case": "3.0.0", - "debug": "2.6.9", - "define-property": "1.0.0", - "export-files": "2.1.1", - "extend-shallow": "2.0.1", - "has-glob": "1.0.0", - "has-value": "0.3.1", - "inflection": "1.12.0", - "kind-of": "3.2.2", - "lazy-cache": "2.0.2", - "load-templates": "1.0.2", - "map-schema": "0.2.4", - "matched": "0.4.4", - "mixin-deep": "1.3.1", - "resolve": "1.7.1" - }, - "dependencies": { - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=" - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "1.0.2" - } - }, - "file-contents": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/file-contents/-/file-contents-1.0.1.tgz", - "integrity": "sha1-ryW7/T00RjhPrYBmSdiAi8/uHsg=", - "requires": { - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "is-buffer": "1.1.6", - "kind-of": "3.2.2", - "lazy-cache": "2.0.2", - "strip-bom-buffer": "0.1.1", - "strip-bom-string": "0.1.2", - "through2": "2.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "3.2.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "3.2.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - } - } + "debug": "3.1.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "1.0.2" + } + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "formidable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.2.tgz", + "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==", + "optional": true, + "requires": { + "nan": "2.10.0", + "node-pre-gyp": "0.9.1" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } + "ansi-regex": { + "version": "2.1.1", + "bundled": true }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - } + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true }, - "has-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz", - "integrity": "sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc=", + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, "requires": { - "is-glob": "3.1.0" + "delegates": "1.0.0", + "readable-stream": "2.3.6" } }, - "is-accessor-descriptor": { + "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } + "bundled": true }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "brace-expansion": { + "version": "1.1.11", + "bundled": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } + "balanced-match": "1.0.0", + "concat-map": "0.0.1" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } + "chownr": { + "version": "1.0.1", + "bundled": true, + "optional": true }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "code-point-at": { + "version": "1.1.0", + "bundled": true }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "2.1.1" - } + "concat-map": { + "version": "0.0.1", + "bundled": true }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } + "console-control-strings": { + "version": "1.1.0", + "bundled": true }, - "load-templates": { + "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/load-templates/-/load-templates-1.0.2.tgz", - "integrity": "sha1-CfOOlcjvS/t4W9f8qOv9MrIwvIc=", - "requires": { - "extend-shallow": "2.0.1", - "file-contents": "1.0.1", - "glob-parent": "3.1.0", - "is-glob": "3.1.0", - "kind-of": "3.2.2", - "lazy-cache": "2.0.2", - "matched": "0.4.4", - "vinyl": "2.1.0" - } + "bundled": true, + "optional": true }, - "matched": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/matched/-/matched-0.4.4.tgz", - "integrity": "sha1-Vte36xgDPwz5vFLrIJD6x9weifo=", + "debug": { + "version": "2.6.9", + "bundled": true, + "optional": true, "requires": { - "arr-union": "3.1.0", - "async-array-reduce": "0.2.1", - "extend-shallow": "2.0.1", - "fs-exists-sync": "0.1.0", - "glob": "7.1.2", - "has-glob": "0.1.1", - "is-valid-glob": "0.3.0", - "lazy-cache": "2.0.2", - "resolve-dir": "0.1.1" - }, - "dependencies": { - "has-glob": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-0.1.1.tgz", - "integrity": "sha1-omHEwqbGZ+DHe3AKfyl8Oe86pYk=", - "requires": { - "is-glob": "2.0.1" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "1.0.0" - } - } + "ms": "2.0.0" } }, - "replace-ext": { + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "optional": true + }, + "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + "bundled": true, + "optional": true }, - "vinyl": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", - "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", - "requires": { - "clone": "2.1.1", - "clone-buffer": "1.0.0", - "clone-stats": "1.0.0", - "cloneable-readable": "1.1.2", - "remove-trailing-separator": "1.1.0", - "replace-ext": "1.0.0" - } - } - } - }, - "base-cwd": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/base-cwd/-/base-cwd-0.3.4.tgz", - "integrity": "sha1-TQCrY1CgRuGtSrnCMm2heUs+TwE=", - "requires": { - "empty-dir": "0.2.1", - "find-pkg": "0.1.2", - "is-valid-app": "0.2.1" - } - }, - "base-data": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/base-data/-/base-data-0.6.2.tgz", - "integrity": "sha512-wH2ViG6CUO2AaeHSEt6fJTyQAk5gl0oY456DoSC5h8mnHrWUbvdctMCuF53CXgBmi0oalZQppKNH0iamG5+uqw==", - "requires": { - "arr-flatten": "1.1.0", - "cache-base": "1.0.1", - "extend-shallow": "2.0.1", - "get-value": "2.0.6", - "has-glob": "1.0.0", - "has-value": "1.0.0", - "is-registered": "0.1.5", - "is-valid-app": "0.3.0", - "kind-of": "5.1.0", - "lazy-cache": "2.0.2", - "merge-value": "1.0.0", - "mixin-deep": "1.3.1", - "read-file": "0.2.0", - "resolve-glob": "1.0.0", - "set-value": "2.0.0", - "union-value": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, "requires": { - "ms": "2.0.0" + "minipass": "2.2.4" } }, - "has-glob": { + "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz", - "integrity": "sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc=", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, "requires": { - "is-glob": "3.1.0" + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" } }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "glob": { + "version": "7.1.2", + "bundled": true, + "optional": true, "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "optional": true, "requires": { - "is-extglob": "2.1.1" + "safer-buffer": "2.1.2" } }, - "is-valid-app": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.3.0.tgz", - "integrity": "sha1-eBBrdR88oyOF+0VJK/KUF7WZPIA=", + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, "requires": { - "debug": "2.6.9", - "is-registered": "0.1.5", - "is-valid-instance": "0.3.0", - "lazy-cache": "2.0.2" + "minimatch": "3.0.4" } }, - "is-valid-instance": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.3.0.tgz", - "integrity": "sha1-9KxzAjxNTYubw7PsPmZjBRbijp4=", + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, "requires": { - "isobject": "3.0.1", - "pascalcase": "0.1.1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "inherits": { + "version": "2.0.3", + "bundled": true }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, "requires": { - "set-getter": "0.1.0" + "number-is-nan": "1.0.1" } }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" - } - } - } - }, - "base-engines": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/base-engines/-/base-engines-0.2.1.tgz", - "integrity": "sha1-aXgAyoq4iKM3iXONv6zLgYoqWns=", - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "engine-cache": "0.19.4", - "is-valid-app": "0.1.2", - "lazy-cache": "2.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" + "brace-expansion": "1.1.11" } }, - "is-valid-app": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.1.2.tgz", - "integrity": "sha1-L2fLs7r2TWWccNBD/JETm1qLlZA=", - "requires": { - "debug": "2.6.9", - "is-registered": "0.1.5", - "is-valid-instance": "0.1.0", - "lazy-cache": "2.0.2" - } + "minimist": { + "version": "0.0.8", + "bundled": true }, - "is-valid-instance": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", - "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", + "minipass": { + "version": "2.2.4", + "bundled": true, "requires": { - "isobject": "2.1.0", - "pascalcase": "0.1.1" + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "base-env": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/base-env/-/base-env-0.3.0.tgz", - "integrity": "sha1-a6t5ZzKTMm34X6YfVRaG9MLx9HI=", - "requires": { - "base-namespace": "0.2.0", - "contains-path": "0.1.0", - "debug": "2.6.9", - "extend-shallow": "2.0.1", - "fs-exists-sync": "0.1.0", - "global-modules": "0.2.3", - "is-absolute": "0.2.6", - "is-valid-app": "0.1.2", - "is-valid-instance": "0.1.0", - "kind-of": "3.2.2", - "lazy-cache": "2.0.2", - "os-homedir": "1.0.2", - "resolve-file": "github:jonschlinkert/resolve-file#261082c95a5f407c43d82797c13bae3527462842" - }, - "dependencies": { - "cwd": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", - "integrity": "sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc=", + "minizlib": { + "version": "1.1.0", + "bundled": true, + "optional": true, "requires": { - "find-pkg": "0.1.2", - "fs-exists-sync": "0.1.0" + "minipass": "2.2.4" } }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "mkdirp": { + "version": "0.5.1", + "bundled": true, "requires": { - "ms": "2.0.0" + "minimist": "0.0.8" } }, - "expand-tilde": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", - "requires": { - "os-homedir": "1.0.2" - } + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true }, - "is-valid-app": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.1.2.tgz", - "integrity": "sha1-L2fLs7r2TWWccNBD/JETm1qLlZA=", + "needle": { + "version": "2.2.0", + "bundled": true, + "optional": true, "requires": { "debug": "2.6.9", - "is-registered": "0.1.5", - "is-valid-instance": "0.1.0", - "lazy-cache": "2.0.2" + "iconv-lite": "0.4.21", + "sax": "1.2.4" } }, - "is-valid-instance": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", - "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", + "node-pre-gyp": { + "version": "0.9.1", + "bundled": true, + "optional": true, "requires": { - "isobject": "2.1.0", - "pascalcase": "0.1.1" + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.0", + "nopt": "4.0.1", + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.6", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" } }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, "requires": { - "set-getter": "0.1.0" + "abbrev": "1.1.1", + "osenv": "0.1.5" } }, - "resolve-file": { - "version": "github:jonschlinkert/resolve-file#261082c95a5f407c43d82797c13bae3527462842", - "requires": { - "cwd": "0.10.0", - "expand-tilde": "1.2.2", - "extend-shallow": "2.0.1", - "fs-exists-sync": "0.1.0", - "global-modules": "0.2.3", - "lazy-cache": "2.0.2", - "os-homedir": "1.0.2", - "resolve": "1.7.1" - } - } - } - }, - "base-generators": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/base-generators/-/base-generators-0.4.6.tgz", - "integrity": "sha1-4amTYh5bRCr44MgRMVoyb5h8nqY=", - "requires": { - "async-each-series": "1.1.0", - "base-compose": "0.2.1", - "base-cwd": "0.3.4", - "base-data": "0.6.2", - "base-env": "0.3.0", - "base-option": "0.8.4", - "base-pkg": "0.2.5", - "base-plugins": "0.4.13", - "base-task": "0.6.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "global-modules": "0.2.3", - "is-valid-app": "0.2.1", - "is-valid-instance": "0.2.0", - "kind-of": "3.2.2", - "lazy-cache": "2.0.2", - "mixin-deep": "1.3.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "optional": true }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "base-helpers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/base-helpers/-/base-helpers-0.1.1.tgz", - "integrity": "sha1-2k4eKy+ACOzc6T8R79223gYzP7M=", - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "is-valid-app": "0.1.2", - "lazy-cache": "2.0.2", - "load-helpers": "0.2.11" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "optional": true, "requires": { - "ms": "2.0.0" + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" } }, - "is-valid-app": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.1.2.tgz", - "integrity": "sha1-L2fLs7r2TWWccNBD/JETm1qLlZA=", + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, "requires": { - "debug": "2.6.9", - "is-registered": "0.1.5", - "is-valid-instance": "0.1.0", - "lazy-cache": "2.0.2" + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, - "is-valid-instance": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", - "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", - "requires": { - "isobject": "2.1.0", - "pascalcase": "0.1.1" - } + "number-is-nan": { + "version": "1.0.1", + "bundled": true }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "base-namespace": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/base-namespace/-/base-namespace-0.2.0.tgz", - "integrity": "sha1-RLLLumZ1Y8xE5trrTv5AO7CrPaA=", - "requires": { - "is-valid-app": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true }, - "is-valid-app": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.1.2.tgz", - "integrity": "sha1-L2fLs7r2TWWccNBD/JETm1qLlZA=", + "once": { + "version": "1.4.0", + "bundled": true, "requires": { - "debug": "2.6.9", - "is-registered": "0.1.5", - "is-valid-instance": "0.1.0", - "lazy-cache": "2.0.2" + "wrappy": "1.0.2" } }, - "is-valid-instance": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", - "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", - "requires": { - "isobject": "2.1.0", - "pascalcase": "0.1.1" - } + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "base-option": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/base-option/-/base-option-0.8.4.tgz", - "integrity": "sha1-EUF/qSRPInpNU3tNKRcjRieH1cc=", - "requires": { - "define-property": "0.2.5", - "get-value": "2.0.6", - "is-valid-app": "0.2.1", - "isobject": "2.1.0", - "lazy-cache": "2.0.2", - "mixin-deep": "1.3.1", - "option-cache": "3.5.0", - "set-value": "0.3.3" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "base-pkg": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/base-pkg/-/base-pkg-0.2.5.tgz", - "integrity": "sha512-/POxajlgBhVsknwLXnqnbp//bAMh7SkDgHF+z/uoYnFqk46e05c3MxSEmn5vFCB8g4rHHKxAPLKrU/4Yb3vUdA==", - "requires": { - "cache-base": "1.0.1", - "debug": "2.6.9", - "define-property": "1.0.0", - "expand-pkg": "0.1.8", - "extend-shallow": "2.0.1", - "is-valid-app": "0.3.0", - "log-utils": "0.2.1", - "pkg-store": "0.2.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true }, - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, "requires": { - "is-descriptor": "1.0.2" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "6.0.2" - } + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "6.0.2" - } + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "rc": { + "version": "1.2.6", + "bundled": true, + "optional": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } } }, - "is-valid-app": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.3.0.tgz", - "integrity": "sha1-eBBrdR88oyOF+0VJK/KUF7WZPIA=", + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, "requires": { - "debug": "2.6.9", - "is-registered": "0.1.5", - "is-valid-instance": "0.3.0", - "lazy-cache": "2.0.2" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, - "is-valid-instance": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.3.0.tgz", - "integrity": "sha1-9KxzAjxNTYubw7PsPmZjBRbijp4=", + "rimraf": { + "version": "2.6.2", + "bundled": true, + "optional": true, "requires": { - "isobject": "3.0.1", - "pascalcase": "0.1.1" + "glob": "7.1.2" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "safe-buffer": { + "version": "5.1.1", + "bundled": true }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "base-plugins": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/base-plugins/-/base-plugins-0.4.13.tgz", - "integrity": "sha1-kd8XjcN/hoQt6ihteeSPuGtarD0=", - "requires": { - "define-property": "0.2.5", - "is-registered": "0.1.5", - "isobject": "2.1.0" - } - }, - "base-questions": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/base-questions/-/base-questions-0.7.4.tgz", - "integrity": "sha1-9k+EgmHtbIKPSYPXgS9A0wN4IUY=", - "requires": { - "base-store": "0.4.4", - "clone-deep": "0.2.4", - "debug": "2.6.9", - "define-property": "0.2.5", - "is-valid-app": "0.2.1", - "isobject": "2.1.0", - "lazy-cache": "2.0.2", - "mixin-deep": "1.3.1", - "question-store": "0.11.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "base-routes": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/base-routes/-/base-routes-0.2.2.tgz", - "integrity": "sha1-CmFNFy1JBF2Mk4dxP4YN88QFNB4=", - "requires": { - "debug": "2.6.9", - "en-route": "0.7.5", - "is-valid-app": "0.2.1", - "lazy-cache": "2.0.2", - "template-error": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "base-runtimes": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/base-runtimes/-/base-runtimes-0.2.0.tgz", - "integrity": "sha1-GI4+ZoJMyxWYsyh7TqW5NaG4UEU=", - "requires": { - "extend-shallow": "2.0.1", - "is-valid-app": "0.2.1", - "lazy-cache": "2.0.2", - "log-utils": "0.1.5", - "micromatch": "2.3.11", - "time-diff": "0.3.1" - }, - "dependencies": { - "ansi-colors": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-0.1.0.tgz", - "integrity": "sha1-M0rDbNPq1wjeXGnhmpjRhkImtD8=", - "requires": { - "ansi-bgblack": "0.1.1", - "ansi-bgblue": "0.1.1", - "ansi-bgcyan": "0.1.1", - "ansi-bggreen": "0.1.1", - "ansi-bgmagenta": "0.1.1", - "ansi-bgred": "0.1.1", - "ansi-bgwhite": "0.1.1", - "ansi-bgyellow": "0.1.1", - "ansi-black": "0.1.1", - "ansi-blue": "0.1.1", - "ansi-bold": "0.1.1", - "ansi-cyan": "0.1.1", - "ansi-dim": "0.1.1", - "ansi-gray": "0.1.1", - "ansi-green": "0.1.1", - "ansi-grey": "0.1.1", - "ansi-hidden": "0.1.1", - "ansi-inverse": "0.1.1", - "ansi-italic": "0.1.1", - "ansi-magenta": "0.1.1", - "ansi-red": "0.1.1", - "ansi-reset": "0.1.1", - "ansi-strikethrough": "0.1.1", - "ansi-underline": "0.1.1", - "ansi-white": "0.1.1", - "ansi-yellow": "0.1.1", - "lazy-cache": "0.2.7" - }, - "dependencies": { - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" - } - } + "semver": { + "version": "5.5.0", + "bundled": true, + "optional": true }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true }, - "log-utils": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/log-utils/-/log-utils-0.1.5.tgz", - "integrity": "sha1-3g84+Vf0zW69Xctoddijua4HT3c=", - "requires": { - "ansi-colors": "0.1.0", - "error-symbol": "0.1.0", - "info-symbol": "0.1.0", - "log-ok": "0.1.1", - "success-symbol": "0.1.0", - "time-stamp": "1.1.0", - "warning-symbol": "0.1.0" - } - } - } - }, - "base-store": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/base-store/-/base-store-0.4.4.tgz", - "integrity": "sha1-JY32uKYu4G/xUADJSdD9fCi68mY=", - "requires": { - "data-store": "0.16.1", - "debug": "2.6.9", - "extend-shallow": "2.0.1", - "is-registered": "0.1.5", - "is-valid-instance": "0.1.0", - "lazy-cache": "2.0.2", - "project-name": "0.2.6" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true }, - "is-valid-instance": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", - "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", + "string-width": { + "version": "1.0.2", + "bundled": true, "requires": { - "isobject": "2.1.0", - "pascalcase": "0.1.1" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "base-task": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/base-task/-/base-task-0.6.2.tgz", - "integrity": "sha1-Rn1guuBzezuJab/1f6RElJiZgcA=", - "requires": { - "composer": "0.13.0", - "is-valid-app": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, "requires": { - "ms": "2.0.0" + "safe-buffer": "5.1.1" } }, - "is-valid-app": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.1.2.tgz", - "integrity": "sha1-L2fLs7r2TWWccNBD/JETm1qLlZA=", + "strip-ansi": { + "version": "3.0.1", + "bundled": true, "requires": { - "debug": "2.6.9", - "is-registered": "0.1.5", - "is-valid-instance": "0.1.0", - "lazy-cache": "2.0.2" + "ansi-regex": "2.1.1" } }, - "is-valid-instance": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.1.0.tgz", - "integrity": "sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M=", + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "optional": true, "requires": { - "isobject": "2.1.0", - "pascalcase": "0.1.1" + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, "requires": { - "set-getter": "0.1.0" + "string-width": "1.0.2" } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true } } }, - "basic-auth": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", - "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", + "gitment": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/gitment/-/gitment-0.0.3.tgz", + "integrity": "sha1-28y610gLE0W2VpE71w7/eSp7OLg=", "requires": { - "safe-buffer": "5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" - } + "mobx": "3.6.2" } }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "optional": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" + "glob-parent": "2.0.0", + "is-glob": "2.0.1" } }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "is-glob": "2.0.1" } }, - "browser-fingerprint": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/browser-fingerprint/-/browser-fingerprint-0.0.1.tgz", - "integrity": "sha1-jfPNyiW/fVs1QtYVRdcwBT/OYEo=" + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" }, - "bytes": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "hexo": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/hexo/-/hexo-3.7.1.tgz", + "integrity": "sha512-+RRN4C8oWYzEnW0NtqNrIfIITRTvXpMoE6OrK5aK4nrO+4lzp0JfZkoxnsINVXUPmzHRimLWUzO95x9lt33jEg==", "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" - }, - "dependencies": { - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "abbrev": "1.1.1", + "archy": "1.0.0", + "bluebird": "3.5.1", + "chalk": "2.4.1", + "cheerio": "0.22.0", + "hexo-cli": "1.1.0", + "hexo-front-matter": "0.2.3", + "hexo-fs": "0.2.3", + "hexo-i18n": "0.2.1", + "hexo-log": "0.2.0", + "hexo-util": "0.6.3", + "js-yaml": "3.11.0", + "lodash": "4.17.10", + "minimatch": "3.0.4", + "moment": "2.22.1", + "moment-timezone": "0.5.16", + "nunjucks": "3.1.2", + "pretty-hrtime": "1.0.3", + "resolve": "1.7.1", + "strip-ansi": "4.0.0", + "strip-indent": "2.0.0", + "swig-extras": "0.0.1", + "swig-templates": "2.0.2", + "text-table": "0.2.0", + "tildify": "1.2.0", + "titlecase": "1.1.2", + "warehouse": "2.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "hexo-cli": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-1.1.0.tgz", + "integrity": "sha512-IWQPppwgmj1iBUcP5mpcMg3Tre6a8Qlr8ejXw6naZiJNSepSgh4mS3KiNPKDa2qQIgPDqJYJzNVFLw+RLA9CkA==", + "requires": { + "abbrev": "1.1.1", + "bluebird": "3.5.1", + "chalk": "1.1.3", + "command-exists": "1.2.6", + "hexo-fs": "0.2.3", + "hexo-log": "0.2.0", + "hexo-util": "0.6.3", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "resolve": "1.7.1", + "tildify": "1.2.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "hexo-bunyan": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-bunyan/-/hexo-bunyan-1.0.0.tgz", + "integrity": "sha512-RymT8Ck+K77mLt9BEYNb4uyfC7RIQnU5N3laXowMrS28jj2h89VHJCOnhV00mmta4fHRqNa07kP1Hrn17nvMkQ==", + "requires": { + "moment": "2.22.1", + "mv": "2.1.1", + "safe-json-stringify": "1.1.0" + } + }, + "hexo-deployer-git": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-0.3.1.tgz", + "integrity": "sha512-JSwSmTSknGpaiooGXwmP7sAhoSNW3c+xmBiCc5yyrvRSfQ3zIYWjmcqNXSj8m2DmheqQNgt5D4M7quYjw+L6tA==", + "requires": { + "babel-eslint": "7.2.3", + "bluebird": "3.5.1", + "chalk": "1.1.3", + "hexo-fs": "0.2.3", + "hexo-util": "0.6.3", + "moment": "2.22.1", + "swig": "1.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, - "isobject": { + "source-map": { + "version": "0.1.34", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=", + "requires": { + "amdefine": "1.0.1" + } + }, + "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } }, - "set-value": { + "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "swig": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/swig/-/swig-1.4.2.tgz", + "integrity": "sha1-QIXKBFM2kQS11IPihBs5t64aq6U=", + "requires": { + "optimist": "0.6.1", + "uglify-js": "2.4.24" + } + }, + "uglify-js": { + "version": "2.4.24", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=", + "requires": { + "async": "0.2.10", + "source-map": "0.1.34", + "uglify-to-browserify": "1.0.2", + "yargs": "3.5.4" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, + "yargs": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=", "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" + "camelcase": "1.2.1", + "decamelize": "1.2.0", + "window-size": "0.1.0", + "wordwrap": "0.0.2" } } } }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "hexo-front-matter": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-0.2.3.tgz", + "integrity": "sha1-x8qO9CDqNr2F6ECKLoyb9J76YF4=", "requires": { - "no-case": "2.3.2", - "upper-case": "1.1.3" + "js-yaml": "3.11.0" } }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + "hexo-fs": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-0.2.3.tgz", + "integrity": "sha512-rLB1rMVUW3csAljvJgHfyjemL0BrmcUZfBf9hJe6S0pA53igFa3ON0PFwomvoLs1Wdmjs9Awnw9Tru4PjWFSlQ==", + "requires": { + "bluebird": "3.5.1", + "chokidar": "1.7.0", + "escape-string-regexp": "1.0.5", + "graceful-fs": "4.1.11" + } }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "hexo-generator-archive": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/hexo-generator-archive/-/hexo-generator-archive-0.1.5.tgz", + "integrity": "sha512-jPbMtibqkJnAX3hCwhYhK3r6cqy9OKQsVEScjk7LDok+iPmFmkKCNdU/OccxGe1CWAZpT+ta4+LknwNeHG2G4w==", "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "hexo-pagination": "0.0.2", + "object-assign": "2.1.1" + }, + "dependencies": { + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + } } }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "hexo-generator-category": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/hexo-generator-category/-/hexo-generator-category-0.1.3.tgz", + "integrity": "sha1-uealhiUwqDvdfaTIGcG58+TMtLI=", "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "hexo-pagination": "0.0.2", + "object-assign": "2.1.1" + }, + "dependencies": { + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + } } }, - "cheerio": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", - "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "hexo-generator-feed": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/hexo-generator-feed/-/hexo-generator-feed-1.2.2.tgz", + "integrity": "sha512-4jcvVhFgpEFRJ7A+KhBSfWoQaewRBjcVWEO4OmBgnvaZOm6XwK+b5ZXx/8BpujCLHbjXWzglXhiT7qFFS/nvzw==", "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.0", - "entities": "1.1.1", - "htmlparser2": "3.9.2", - "lodash.assignin": "4.2.0", - "lodash.bind": "4.2.1", - "lodash.defaults": "4.2.0", - "lodash.filter": "4.6.0", - "lodash.flatten": "4.4.0", - "lodash.foreach": "4.5.0", - "lodash.map": "4.6.0", - "lodash.merge": "4.6.1", - "lodash.pick": "4.4.0", - "lodash.reduce": "4.6.0", - "lodash.reject": "4.6.0", - "lodash.some": "4.6.0" + "nunjucks": "3.1.2", + "object-assign": "4.1.1" } }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "hexo-generator-index": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/hexo-generator-index/-/hexo-generator-index-0.2.1.tgz", + "integrity": "sha1-kEIin8rHmq9wBXXaGTMr8/fuXF0=", "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.2.2", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "hexo-pagination": "0.0.2", + "object-assign": "4.1.1" } }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "hexo-generator-tag": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/hexo-generator-tag/-/hexo-generator-tag-0.2.0.tgz", + "integrity": "sha1-xXFYRrtB5X2cIMHWbX2yGhq/emI=", "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "hexo-pagination": "0.0.2", + "object-assign": "4.1.1" } }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "hexo-i18n": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-0.2.1.tgz", + "integrity": "sha1-hPFBQyvwnYtVjth4xygWS20c1t4=", "requires": { - "restore-cursor": "1.0.1" + "sprintf-js": "1.0.3" } }, - "cli-width": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-1.1.1.tgz", - "integrity": "sha1-pNKT72frt7iNSk1CwMzwDE0eNm0=" + "hexo-leancloud-counter-security": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/hexo-leancloud-counter-security/-/hexo-leancloud-counter-security-1.3.2.tgz", + "integrity": "sha512-vWxepM1Hz+W/ommkVicaFx7ATUuTWvhVq6A/iyMfmSr05uchKZguPLolv4oLD03BUpY/RU8ZLjeOwrGANLAiYA==", + "requires": { + "leancloud-storage": "3.6.8", + "readline-sync": "1.4.9" + } }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "hexo-log": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-0.2.0.tgz", + "integrity": "sha512-fzoc+GQexxPPILTjoOQILnA3ZG2MFgqMBVel4xvJ11pXptw9+f97ynTgDAExXafyp9Nz2ChXRuqlCYgPtZSlxQ==", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "chalk": "1.1.3", + "hexo-bunyan": "1.0.0" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -2365,9075 +1684,684 @@ "requires": { "ansi-regex": "2.1.1" } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" - }, - "clone-deep": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", - "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", + "hexo-pagination": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/hexo-pagination/-/hexo-pagination-0.0.2.tgz", + "integrity": "sha1-jPRwx9sN5bGKOSanbesZQBXffys=", "requires": { - "for-own": "0.1.5", - "is-plain-object": "2.0.4", - "kind-of": "3.2.2", - "lazy-cache": "1.0.4", - "shallow-clone": "0.1.2" + "utils-merge": "1.0.1" } }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" - }, - "cloneable-readable": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", - "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "hexo-renderer-ejs": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/hexo-renderer-ejs/-/hexo-renderer-ejs-0.3.1.tgz", + "integrity": "sha512-XN8pYJU+Wr3dT8ipqEPRlOBySJpd1C5NUBBzgZpVSVBC/6L36O0YZI/Qd5NxQqwfGfSuKQ8N5iMyjmRXSR1MdA==", "requires": { - "inherits": "2.0.3", - "process-nextick-args": "2.0.0", - "readable-stream": "2.3.6" + "ejs": "2.5.9", + "object-assign": "4.1.1" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "hexo-renderer-marked": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/hexo-renderer-marked/-/hexo-renderer-marked-0.3.2.tgz", + "integrity": "sha512-joSLeHB0YRkuViIPQlRz4A+zfJKPNHT+rABFgPHiT1zL9eeTUPxoLL4h7kcgOwRLAontVScaxP2Sie15mNitFg==", "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "hexo-util": "0.6.3", + "marked": "0.3.19", + "object-assign": "4.1.1", + "strip-indent": "2.0.0" } }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "hexo-renderer-stylus": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/hexo-renderer-stylus/-/hexo-renderer-stylus-0.3.3.tgz", + "integrity": "sha1-xU6ifh/Y48ipp6hM+6itNUEiyn8=", "requires": { - "color-name": "1.1.3" + "nib": "1.1.2", + "stylus": "0.54.5" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "command-exists": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.6.tgz", - "integrity": "sha512-Qst/zUUNmS/z3WziPxyqjrcz09pm+2Knbs5mAZL4VAE0sSrNY1/w8+/YxeHcoBTsO6iojA6BW7eFf27Eg2MRuw==" - }, - "common-config": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/common-config/-/common-config-0.1.0.tgz", - "integrity": "sha1-0fGnQa+gy/al7wl1K9/C5nfYtO8=", - "requires": { - "composer": "0.13.0", - "data-store": "0.16.1", - "get-value": "2.0.6", - "lazy-cache": "2.0.2", - "log-utils": "0.2.1", - "object.pick": "1.3.0", - "omit-empty": "0.4.1", - "question-cache": "0.4.0", - "set-value": "0.3.3", - "strip-color": "0.1.0", - "tableize-object": "0.1.0", - "text-table": "0.2.0", - "yargs-parser": "2.4.1" + "hexo-server": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/hexo-server/-/hexo-server-0.2.2.tgz", + "integrity": "sha512-/KkOYMIGylNoMtnlgas84Kw18A60WU3BVfo8ZnTHy8omCsAz2Z+aK6ddR4PpSmTdLeKDsiZj4ZSg86ZQ+FZzrA==", + "requires": { + "bluebird": "3.5.1", + "chalk": "1.1.3", + "compression": "1.7.2", + "connect": "3.6.6", + "mime": "1.6.0", + "morgan": "1.9.0", + "object-assign": "4.1.1", + "opn": "4.0.2", + "serve-static": "1.13.2" }, "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ms": "2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "set-getter": "0.1.0" + "ansi-regex": "2.1.1" } }, - "question-cache": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/question-cache/-/question-cache-0.4.0.tgz", - "integrity": "sha1-4rmTf8X7fcYPu58QXx+iVLM96n0=", - "requires": { - "arr-flatten": "1.1.0", - "arr-union": "3.1.0", - "async": "1.5.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "get-value": "2.0.6", - "has-value": "0.3.1", - "inquirer2": "0.1.1", - "is-answer": "0.1.1", - "isobject": "2.1.0", - "lazy-cache": "1.0.4", - "mixin-deep": "1.3.1", - "omit-empty": "0.3.6", - "option-cache": "3.5.0", - "os-homedir": "1.0.2", - "project-name": "0.2.6", - "set-value": "0.3.3", - "to-choices": "0.2.0", - "use": "1.1.2" - }, - "dependencies": { - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - }, - "omit-empty": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/omit-empty/-/omit-empty-0.3.6.tgz", - "integrity": "sha1-bThAXyqmHJEetQT+aIBcVm2FwxY=", - "requires": { - "has-values": "0.1.4", - "is-date-object": "1.0.1", - "isobject": "2.1.0", - "reduce-object": "0.1.3" - } - } - } + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "hexo-symbols-count-time": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/hexo-symbols-count-time/-/hexo-symbols-count-time-0.4.2.tgz", + "integrity": "sha1-kbyvaVfhtPfHQVVMKweuXS+o8/s=" }, - "composer": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/composer/-/composer-0.13.0.tgz", - "integrity": "sha1-HbyxXxmpBt7uSanD0TfmVLvG0OI=", + "hexo-util": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-0.6.3.tgz", + "integrity": "sha512-zPxaqCWZz3/25SAB4FlrRtWktJ+Pr+vBiv/nyHpXKgXPt1m70liViKlRwWLqDmRjJ72x6/k4qCEeXHajvcGHUw==", "requires": { - "array-unique": "0.2.1", - "bach": "0.5.0", - "co": "4.6.0", - "component-emitter": "1.2.1", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "is-generator": "1.0.3", - "is-glob": "2.0.1", - "isobject": "2.1.0", - "lazy-cache": "2.0.2", - "micromatch": "2.3.11", - "nanoseconds": "0.1.0" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } + "bluebird": "3.5.1", + "camel-case": "3.0.0", + "cross-spawn": "4.0.2", + "highlight.js": "9.12.0", + "html-entities": "1.2.1", + "striptags": "2.2.1" } }, - "compressible": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", - "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", - "requires": { - "mime-db": "1.33.0" - } + "highlight.js": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", + "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=" }, - "compression": { - "version": "1.7.2", - "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", - "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", "requires": { - "accepts": "1.3.5", - "bytes": "3.0.0", - "compressible": "2.0.13", - "debug": "2.6.9", - "on-headers": "1.0.1", - "safe-buffer": "5.1.1", - "vary": "1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" - } + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6" } }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "1.3.2", - "utils-merge": "1.0.1" + "depd": "1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": "1.5.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" } } }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "1.3.1" + } }, - "copy-task": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/copy-task/-/copy-task-0.1.0.tgz", - "integrity": "sha1-TDT+muVPKq9gntMvhbj3l6H0arY=" + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "1.11.0" + } }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, - "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "requires": { - "lru-cache": "4.1.2", - "which": "1.3.0" + "is-primitive": "2.0.0" } }, - "css-parse": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", - "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=" + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", - "domutils": "1.5.1", - "nth-check": "1.0.1" + "number-is-nan": "1.0.1" } }, - "css-what": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", - "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" - }, - "cuid": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/cuid/-/cuid-1.3.8.tgz", - "integrity": "sha1-S4deCWm612T37AcGz0T1+wgx9rc=", + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "browser-fingerprint": "0.0.1", - "core-js": "1.2.7", - "node-fingerprint": "0.0.2" + "is-extglob": "1.0.0" } }, - "cwd": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.9.1.tgz", - "integrity": "sha1-QeEKfhq4M9xZwuyoOBTH3ne1pP0=", + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "requires": { - "find-pkg": "0.1.2" + "kind-of": "3.2.2" } }, - "data-store": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/data-store/-/data-store-0.16.1.tgz", - "integrity": "sha1-5pwDpcrBXR/zPwJUyWeDZT5ogwQ=", + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "cache-base": "0.8.5", - "clone-deep": "0.2.4", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "graceful-fs": "4.1.11", - "has-own-deep": "0.1.4", - "lazy-cache": "2.0.2", - "mkdirp": "0.5.1", - "project-name": "0.2.6", - "resolve-dir": "0.1.1", - "rimraf": "2.6.2", - "union-value": "0.2.4" + "isobject": "3.0.1" }, "dependencies": { - "cache-base": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-0.8.5.tgz", - "integrity": "sha1-YM6zUEAh7O7HAR/TOEt/TpVym/o=", - "requires": { - "collection-visit": "0.2.3", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "0.3.1", - "isobject": "3.0.1", - "lazy-cache": "2.0.2", - "set-value": "0.4.3", - "to-object-path": "0.3.0", - "union-value": "0.2.4", - "unset-value": "0.1.2" - } - }, - "collection-visit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-0.2.3.tgz", - "integrity": "sha1-L2JIPK7MlfCDuaRUo+6eYTmteVc=", - "requires": { - "lazy-cache": "2.0.2", - "map-visit": "0.1.5", - "object-visit": "0.3.4" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - }, - "map-visit": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-0.1.5.tgz", - "integrity": "sha1-2+Q5J85VJbgN/BVzpE1oxR8mgWs=", - "requires": { - "lazy-cache": "2.0.2", - "object-visit": "0.3.4" - } - }, - "object-visit": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-0.3.4.tgz", - "integrity": "sha1-rhXPhvCy/dVRdxY2RIRSxUw9qCk=", - "requires": { - "isobject": "2.1.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "requires": { - "glob": "7.1.2" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" - } - }, - "union-value": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz", - "integrity": "sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA=", - "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" - } - }, - "unset-value": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-0.1.2.tgz", - "integrity": "sha1-UGgQuGfyfCpabpsEgzYx9t5Y0xA=", - "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" - } } } }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" }, - "deep-bind": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/deep-bind/-/deep-bind-0.3.0.tgz", - "integrity": "sha1-lcMd2Eoc0bOBEZosQu25DbSFvDM=", - "requires": { - "mixin-deep": "1.3.1" - } - }, - "default-compare": { + "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "requires": { - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } + "isarray": "1.0.0" } }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "javascript-state-machine": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/javascript-state-machine/-/javascript-state-machine-2.4.0.tgz", + "integrity": "sha1-2L4x7DjySsGhgy8LZy/DzV95yW4=" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "requires": { - "is-descriptor": "0.1.6" + "argparse": "1.0.10", + "esprima": "4.0.0" } }, - "delimiter-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/delimiter-regex/-/delimiter-regex-2.0.0.tgz", - "integrity": "sha1-DQ9vYdmRVZH9Qwh6jpWF0+IRWnU=", + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "extend-shallow": "1.1.4", - "isobject": "2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", - "requires": { - "kind-of": "1.1.0" - } - }, - "kind-of": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=" - } + "is-buffer": "1.1.6" } }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { + "lazy-cache": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" + "invert-kv": "1.0.0" + } + }, + "leancloud-realtime": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/leancloud-realtime/-/leancloud-realtime-4.0.0-beta.5.tgz", + "integrity": "sha512-SMfxjexc7d36AChg//XRS+uVdY9C/Id3NaXW8yQSdlQGLR07EwiDvD8Vns/aER4Kvsx8kWYtQ0tOmo3LZkOhDA==", + "requires": { + "axios": "0.18.0", + "babel-runtime": "6.26.0", + "base64-arraybuffer": "0.1.5", + "debug": "3.1.0", + "eventemitter3": "3.1.0", + "javascript-state-machine": "2.4.0", + "lodash": "4.17.10", + "protobufjs": "5.0.2", + "uuid": "3.2.1", + "ws": "4.1.0" }, "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" } } }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + "leancloud-realtime-plugin-live-query": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/leancloud-realtime-plugin-live-query/-/leancloud-realtime-plugin-live-query-1.1.1.tgz", + "integrity": "sha512-XT3IiZ6He1U8AcAuwfVS8iFLRmlzqkJVNcG6bG+8BnbJ1FKe0HxG9poW/WwVxTe9Tlnhbsd9MeFzm/dkMBhfMw==" }, - "domhandler": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", - "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "leancloud-storage": { + "version": "3.6.8", + "resolved": "https://registry.npmjs.org/leancloud-storage/-/leancloud-storage-3.6.8.tgz", + "integrity": "sha512-Wp7GoqhSyaWFqHa0UzLn0YekYz/HGEFJJq2f1Sgv6EPCh9EsD6IXkpvdqEr7cgdZM11831ZCU+6nAamx5m/LEg==", "requires": { - "domelementtype": "1.3.0" + "debug": "3.1.0", + "es6-promise": "4.2.3", + "eventemitter3": "2.0.3", + "leancloud-realtime": "4.0.0-beta.5", + "leancloud-realtime-plugin-live-query": "1.1.1", + "localstorage-memory": "1.0.2", + "md5": "2.2.1", + "superagent": "3.8.2", + "underscore": "1.9.0" } }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" - } + "localstorage-memory": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/localstorage-memory/-/localstorage-memory-1.0.2.tgz", + "integrity": "sha1-zUqPIQ5V3VGckp9LTMgoKbWPmlE=" }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" + }, + "lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" + }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" + }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" + }, + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" }, - "duplexify": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", - "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" + "js-tokens": "3.0.2" } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "ejs": { - "version": "2.5.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.9.tgz", - "integrity": "sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ==" + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" }, - "empty-dir": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/empty-dir/-/empty-dir-0.2.1.tgz", - "integrity": "sha1-gJ7kih60rRy1EMJXLWb9DthNAas=", + "lru-cache": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "requires": { - "fs-exists-sync": "0.1.0" + "pseudomap": "1.0.2", + "yallist": "2.1.2" } }, - "en-route": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/en-route/-/en-route-0.7.5.tgz", - "integrity": "sha1-6CMOc4NsXpXGdX4EQtPBExJL3Zg=", + "markdown": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", + "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=", "requires": { - "arr-flatten": "1.1.0", - "debug": "2.6.9", - "extend-shallow": "2.0.1", - "kind-of": "3.2.2", - "lazy-cache": "1.0.4", - "path-to-regexp": "1.7.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } + "nopt": "2.1.2" } }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "marked": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", + "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==" }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", "requires": { - "once": "1.4.0" + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "1.1.6" } }, - "engine": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/engine/-/engine-0.1.12.tgz", - "integrity": "sha1-+H6MkLuAzT9YWXrFaVk+5G2idC0=", + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "requires": { - "assign-deep": "0.4.7", - "collection-visit": "0.2.3", - "get-value": "1.3.1", - "kind-of": "2.0.1", - "lazy-cache": "0.2.7", + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", "object.omit": "2.0.1", - "set-value": "0.2.0" - }, - "dependencies": { - "collection-visit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-0.2.3.tgz", - "integrity": "sha1-L2JIPK7MlfCDuaRUo+6eYTmteVc=", - "requires": { - "lazy-cache": "2.0.2", - "map-visit": "0.1.5", - "object-visit": "0.3.4" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "get-value": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-1.3.1.tgz", - "integrity": "sha1-isfvTyA4I5KyZGVI+bmtLcbIlkI=", - "requires": { - "arr-flatten": "1.1.0", - "is-extendable": "0.1.1", - "lazy-cache": "0.2.7", - "noncharacters": "1.1.0" - } - }, - "kind-of": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", - "requires": { - "is-buffer": "1.1.6" - } - }, - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" - }, - "map-visit": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-0.1.5.tgz", - "integrity": "sha1-2+Q5J85VJbgN/BVzpE1oxR8mgWs=", - "requires": { - "lazy-cache": "2.0.2", - "object-visit": "0.3.4" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "object-visit": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-0.3.4.tgz", - "integrity": "sha1-rhXPhvCy/dVRdxY2RIRSxUw9qCk=", - "requires": { - "isobject": "2.1.0" - } - }, - "set-value": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.2.0.tgz", - "integrity": "sha1-c7CmglwVjGoWqCu9yVd1vyqCX6s=", - "requires": { - "isobject": "1.0.2", - "noncharacters": "1.1.0" - }, - "dependencies": { - "isobject": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz", - "integrity": "sha1-8Pm4zpLdVA+gdAiC44NaLgIux4o=" - } - } - } - } - }, - "engine-base": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/engine-base/-/engine-base-0.1.3.tgz", - "integrity": "sha1-1ZycxS591t0rSa579ftEmU9wFqU=", - "requires": { - "component-emitter": "1.2.1", - "delimiter-regex": "2.0.0", - "engine": "0.1.12", - "engine-utils": "0.1.1", - "lazy-cache": "2.0.2", - "mixin-deep": "1.3.1", - "object.omit": "2.0.1", - "object.pick": "1.3.0" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "engine-cache": { - "version": "0.19.4", - "resolved": "https://registry.npmjs.org/engine-cache/-/engine-cache-0.19.4.tgz", - "integrity": "sha1-giSWb732pl54Dsed+HtrLLgjlbI=", - "requires": { - "async-helpers": "0.3.17", - "extend-shallow": "2.0.1", - "helper-cache": "0.7.2", - "isobject": "3.0.1", - "lazy-cache": "2.0.2", - "mixin-deep": "1.3.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "engine-utils": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/engine-utils/-/engine-utils-0.1.1.tgz", - "integrity": "sha1-rd9HCN2FoFoyF6l3l+q4oBPE+A4=" - }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" - }, - "error-symbol": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/error-symbol/-/error-symbol-0.1.0.tgz", - "integrity": "sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y=" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" - }, - "expand-args": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/expand-args/-/expand-args-0.4.3.tgz", - "integrity": "sha1-OoZiJBxYF1fIzTf7d2d6xgL/nZg=", - "requires": { - "expand-object": "0.4.2", - "kind-of": "3.2.2", - "lazy-cache": "2.0.2", - "minimist": "1.2.0", - "mixin-deep": "1.3.1", - "omit-empty": "0.4.1", - "set-value": "0.3.3" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-object": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/expand-object/-/expand-object-0.4.2.tgz", - "integrity": "sha1-t/J+9pwv3MYrD5OQwMtHvAa7Buo=", - "requires": { - "get-stdin": "5.0.1", - "is-number": "2.1.0", - "minimist": "1.2.0", - "set-value": "0.3.3" - } - }, - "expand-pkg": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/expand-pkg/-/expand-pkg-0.1.8.tgz", - "integrity": "sha1-JhIwIzQMvABiBsujm4Kh0XbD9oc=", - "requires": { - "component-emitter": "1.2.1", - "debug": "2.6.9", - "export-files": "2.1.1", - "get-value": "2.0.6", - "kind-of": "3.2.2", - "lazy-cache": "2.0.2", - "load-pkg": "3.0.1", - "mixin-deep": "1.3.1", - "normalize-pkg": "0.3.20", - "omit-empty": "0.4.1", - "parse-author": "1.0.0", - "parse-git-config": "1.1.1", - "repo-utils": "0.3.7" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "requires": { - "fill-range": "2.2.3" - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "requires": { - "homedir-polyfill": "1.0.1" - } - }, - "export-files": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/export-files/-/export-files-2.1.1.tgz", - "integrity": "sha1-u/ZFdAU6CeTrmOX0NQHVcrLDzn8=", - "requires": { - "lazy-cache": "1.0.4" + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" } }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "0.1.1" - } + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "is-extglob": "1.0.0" + "mime-db": "1.33.0" } }, - "falsey": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/falsey/-/falsey-0.3.2.tgz", - "integrity": "sha512-lxEuefF5MBIVDmE6XeqCdM4BWk1+vYmGZtkbKZ/VFcg6uBBw6fXNEbWmxCjDdQlFc9hy450nkiWwM3VAW6G1qg==", + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } + "brace-expansion": "1.1.11" } }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, - "file-contents": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/file-contents/-/file-contents-0.2.4.tgz", - "integrity": "sha1-BQb3uO/2KvpFrkXaTfnp1H30U8s=", + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { - "extend-shallow": "2.0.1", - "file-stat": "0.1.3", - "graceful-fs": "4.1.11", - "is-buffer": "1.1.6", - "is-utf8": "0.2.1", - "lazy-cache": "0.2.7", - "through2": "2.0.3" + "minimist": "0.0.8" }, "dependencies": { - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } }, - "file-is-binary": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-is-binary/-/file-is-binary-1.0.0.tgz", - "integrity": "sha1-XkGAbRvK5FjI/sMv484SLbu8Q1Y=", - "requires": { - "is-binary-buffer": "1.0.0", - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } + "mobx": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-3.6.2.tgz", + "integrity": "sha512-Dq3boJFLpZEvuh5a/MbHLUIyN9XobKWIb0dBfkNOJffNkE3vtuY0C9kSDVpfH8BB0BPkVw8g22qCv7d05LEhKg==" }, - "file-name": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/file-name/-/file-name-0.1.0.tgz", - "integrity": "sha1-ErEi8SD5w028F2wauBpUis7W3vc=" + "moment": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", + "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==" }, - "file-stat": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/file-stat/-/file-stat-0.1.3.tgz", - "integrity": "sha1-0PGWHX0QcykoEgpuaVVHHCpbVBE=", + "moment-timezone": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.16.tgz", + "integrity": "sha512-4d1l92plNNqnMkqI/7boWNVXJvwGL2WyByl1Hxp3h/ao3HZiAqaoQY+6KBkYdiN5QtNDpndq+58ozl8W4GVoNw==", "requires": { - "graceful-fs": "4.1.11", - "lazy-cache": "0.2.7", - "through2": "2.0.3" - }, - "dependencies": { - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" - } + "moment": "2.22.1" } }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "morgan": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", + "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "find-file-up": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz", - "integrity": "sha1-z2gJG8+fMApA2kEbN9pczlovvqA=", - "requires": { - "fs-exists-sync": "0.1.0", - "resolve-dir": "0.1.1" - } - }, - "find-pkg": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz", - "integrity": "sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc=", - "requires": { - "find-file-up": "0.1.3" - } - }, - "first-chunk-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", - "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "requires": { - "for-in": "1.0.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "fs-exists-sync": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.2.tgz", - "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==", - "optional": true, - "requires": { - "nan": "2.10.0", - "node-pre-gyp": "0.9.1" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "optional": true, - "requires": { - "minipass": "2.2.4" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "optional": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "optional": true, - "requires": { - "safer-buffer": "2.1.2" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "minimatch": "3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "optional": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1", - "yallist": "3.0.2" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "optional": true, - "requires": { - "minipass": "2.2.4" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "2.6.9", - "iconv-lite": "0.4.21", - "sax": "1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.9.1", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "1.0.3", - "mkdirp": "0.5.1", - "needle": "2.2.0", - "nopt": "4.0.1", - "npm-packlist": "1.1.10", - "npmlog": "4.1.2", - "rc": "1.2.6", - "rimraf": "2.6.2", - "semver": "5.5.0", - "tar": "4.4.1" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "optional": true, - "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.6", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "optional": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "optional": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "optional": true, - "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.4", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.1", - "yallist": "3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true - } - } - }, - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=" - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "get-view": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/get-view/-/get-view-0.1.3.tgz", - "integrity": "sha1-NmCsBYuhPfl0nKvKpry5bUGqDqA=", - "requires": { - "isobject": "3.0.1", - "match-file": "0.2.2" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "git-config-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/git-config-path/-/git-config-path-1.0.1.tgz", - "integrity": "sha1-bTP37WPbDQ4RgTFQO6s6ykfVRmQ=", - "requires": { - "extend-shallow": "2.0.1", - "fs-exists-sync": "0.1.0", - "homedir-polyfill": "1.0.1" - } - }, - "git-repo-name": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/git-repo-name/-/git-repo-name-0.6.0.tgz", - "integrity": "sha1-rwmIRlaqU37GJccIcAgXXNYSKP8=", - "requires": { - "cwd": "0.9.1", - "file-name": "0.1.0", - "lazy-cache": "1.0.4", - "remote-origin-url": "0.5.3" - } - }, - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "optional": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "requires": { - "is-glob": "2.0.1" - } - }, - "glob-stream": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", - "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", - "requires": { - "extend": "3.0.1", - "glob": "5.0.15", - "glob-parent": "3.1.0", - "micromatch": "2.3.11", - "ordered-read-streams": "0.3.0", - "through2": "0.6.5", - "to-absolute-glob": "0.1.1", - "unique-stream": "2.2.1" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "2.1.1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" - } - } - } - }, - "global-modules": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", - "requires": { - "global-prefix": "0.1.5", - "is-windows": "0.2.0" - }, - "dependencies": { - "global-prefix": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", - "requires": { - "homedir-polyfill": "1.0.1", - "ini": "1.3.5", - "is-windows": "0.2.0", - "which": "1.3.0" - } - }, - "is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=" - } - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "requires": { - "expand-tilde": "2.0.2", - "homedir-polyfill": "1.0.1", - "ini": "1.3.5", - "is-windows": "1.0.2", - "which": "1.3.0" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "gray-matter": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-3.1.1.tgz", - "integrity": "sha512-nZ1qjLmayEv0/wt3sHig7I0s3/sJO0dkAaKYQ5YAOApUtYEOonXSFdWvL1khvnZMTvov4UufkqlFsilPnejEXA==", - "requires": { - "extend-shallow": "2.0.1", - "js-yaml": "3.11.0", - "kind-of": "5.1.0", - "strip-bom-string": "1.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - }, - "strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" - } - } - }, - "group-array": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/group-array/-/group-array-0.3.3.tgz", - "integrity": "sha1-u9nS9xjfS+M/D7kEMqrxtDYOSY8=", - "requires": { - "arr-flatten": "1.1.0", - "for-own": "0.1.5", - "get-value": "2.0.6", - "kind-of": "3.2.2", - "split-string": "1.0.1", - "union-value": "0.2.4" - }, - "dependencies": { - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" - } - }, - "split-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-1.0.1.tgz", - "integrity": "sha1-vLqz9BUqzuOg1qskecDSh5w9s84=", - "requires": { - "extend-shallow": "2.0.1" - } - }, - "union-value": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz", - "integrity": "sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA=", - "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" - } - } - } - }, - "gulp-choose-files": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/gulp-choose-files/-/gulp-choose-files-0.1.3.tgz", - "integrity": "sha1-hrFfBjAHOrZz1XJb7sY+qhSFUPk=", - "requires": { - "extend-shallow": "2.0.1", - "question-cache": "0.5.1", - "through2": "2.0.3" - } - }, - "gulp-sourcemaps": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", - "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", - "requires": { - "convert-source-map": "1.5.1", - "graceful-fs": "4.1.11", - "strip-bom": "2.0.0", - "through2": "2.0.3", - "vinyl": "1.2.0" - } - }, - "handy": { - "version": "0.0.13", - "resolved": "https://registry.npmjs.org/handy/-/handy-0.0.13.tgz", - "integrity": "sha1-gls40+0ozJ+rsGlXWItKiUM8hGc=" - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-glob": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-0.1.1.tgz", - "integrity": "sha1-omHEwqbGZ+DHe3AKfyl8Oe86pYk=", - "requires": { - "is-glob": "2.0.1" - } - }, - "has-own-deep": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-own-deep/-/has-own-deep-0.1.4.tgz", - "integrity": "sha1-kesM2ieAgxWPgEKigxZDTpr+eHY=" - }, - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" - }, - "dependencies": { - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - } - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "helper-cache": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/helper-cache/-/helper-cache-0.7.2.tgz", - "integrity": "sha1-AkVixLS4sqsqtTHQC+FuxJZRi5A=", - "requires": { - "extend-shallow": "2.0.1", - "lazy-cache": "0.2.7", - "lodash.bind": "3.1.0" - }, - "dependencies": { - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" - }, - "lodash.bind": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-3.1.0.tgz", - "integrity": "sha1-+V9IY419i7tYVPkIJmUnmZ+/pLs=", - "requires": { - "lodash._createwrapper": "3.2.0", - "lodash._replaceholders": "3.0.0", - "lodash.restparam": "3.6.1" - } - } - } - }, - "hexo": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/hexo/-/hexo-3.7.1.tgz", - "integrity": "sha512-+RRN4C8oWYzEnW0NtqNrIfIITRTvXpMoE6OrK5aK4nrO+4lzp0JfZkoxnsINVXUPmzHRimLWUzO95x9lt33jEg==", - "requires": { - "abbrev": "1.1.1", - "archy": "1.0.0", - "bluebird": "3.5.1", - "chalk": "2.4.1", - "cheerio": "0.22.0", - "hexo-cli": "1.1.0", - "hexo-front-matter": "0.2.3", - "hexo-fs": "0.2.3", - "hexo-i18n": "0.2.1", - "hexo-log": "0.2.0", - "hexo-util": "0.6.3", - "js-yaml": "3.11.0", - "lodash": "4.17.10", - "minimatch": "3.0.4", - "moment": "2.22.1", - "moment-timezone": "0.5.16", - "nunjucks": "3.1.2", - "pretty-hrtime": "1.0.3", - "resolve": "1.7.1", - "strip-ansi": "4.0.0", - "strip-indent": "2.0.0", - "swig-extras": "0.0.1", - "swig-templates": "2.0.2", - "text-table": "0.2.0", - "tildify": "1.2.0", - "titlecase": "1.1.2", - "warehouse": "2.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "hexo-cli": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-1.1.0.tgz", - "integrity": "sha512-IWQPppwgmj1iBUcP5mpcMg3Tre6a8Qlr8ejXw6naZiJNSepSgh4mS3KiNPKDa2qQIgPDqJYJzNVFLw+RLA9CkA==", - "requires": { - "abbrev": "1.1.1", - "bluebird": "3.5.1", - "chalk": "1.1.3", - "command-exists": "1.2.6", - "hexo-fs": "0.2.3", - "hexo-log": "0.2.0", - "hexo-util": "0.6.3", - "minimist": "1.2.0", - "object-assign": "4.1.1", - "resolve": "1.7.1", - "tildify": "1.2.0" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - } - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "hexo-bunyan": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexo-bunyan/-/hexo-bunyan-1.0.0.tgz", - "integrity": "sha512-RymT8Ck+K77mLt9BEYNb4uyfC7RIQnU5N3laXowMrS28jj2h89VHJCOnhV00mmta4fHRqNa07kP1Hrn17nvMkQ==", - "requires": { - "moment": "2.22.1", - "mv": "2.1.1", - "safe-json-stringify": "1.1.0" - } - }, - "hexo-deployer-git": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-0.3.1.tgz", - "integrity": "sha512-JSwSmTSknGpaiooGXwmP7sAhoSNW3c+xmBiCc5yyrvRSfQ3zIYWjmcqNXSj8m2DmheqQNgt5D4M7quYjw+L6tA==", - "requires": { - "babel-eslint": "7.2.3", - "bluebird": "3.5.1", - "chalk": "1.1.3", - "hexo-fs": "0.2.3", - "hexo-util": "0.6.3", - "moment": "2.22.1", - "swig": "1.4.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "source-map": { - "version": "0.1.34", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=", - "requires": { - "amdefine": "1.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "swig": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/swig/-/swig-1.4.2.tgz", - "integrity": "sha1-QIXKBFM2kQS11IPihBs5t64aq6U=", - "requires": { - "optimist": "0.6.1", - "uglify-js": "2.4.24" - } - }, - "uglify-js": { - "version": "2.4.24", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=", - "requires": { - "async": "0.2.10", - "source-map": "0.1.34", - "uglify-to-browserify": "1.0.2", - "yargs": "3.5.4" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" - }, - "yargs": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=", - "requires": { - "camelcase": "1.2.1", - "decamelize": "1.2.0", - "window-size": "0.1.0", - "wordwrap": "0.0.2" - } - } - } - }, - "hexo-front-matter": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-0.2.3.tgz", - "integrity": "sha1-x8qO9CDqNr2F6ECKLoyb9J76YF4=", - "requires": { - "js-yaml": "3.11.0" - } - }, - "hexo-fs": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-0.2.3.tgz", - "integrity": "sha512-rLB1rMVUW3csAljvJgHfyjemL0BrmcUZfBf9hJe6S0pA53igFa3ON0PFwomvoLs1Wdmjs9Awnw9Tru4PjWFSlQ==", - "requires": { - "bluebird": "3.5.1", - "chokidar": "1.7.0", - "escape-string-regexp": "1.0.5", - "graceful-fs": "4.1.11" - } - }, - "hexo-generator-archive": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/hexo-generator-archive/-/hexo-generator-archive-0.1.5.tgz", - "integrity": "sha512-jPbMtibqkJnAX3hCwhYhK3r6cqy9OKQsVEScjk7LDok+iPmFmkKCNdU/OccxGe1CWAZpT+ta4+LknwNeHG2G4w==", - "requires": { - "hexo-pagination": "0.0.2", - "object-assign": "2.1.1" - }, - "dependencies": { - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" - } - } - }, - "hexo-generator-category": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/hexo-generator-category/-/hexo-generator-category-0.1.3.tgz", - "integrity": "sha1-uealhiUwqDvdfaTIGcG58+TMtLI=", - "requires": { - "hexo-pagination": "0.0.2", - "object-assign": "2.1.1" - }, - "dependencies": { - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" - } - } - }, - "hexo-generator-index": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/hexo-generator-index/-/hexo-generator-index-0.2.1.tgz", - "integrity": "sha1-kEIin8rHmq9wBXXaGTMr8/fuXF0=", - "requires": { - "hexo-pagination": "0.0.2", - "object-assign": "4.1.1" - } - }, - "hexo-generator-tag": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/hexo-generator-tag/-/hexo-generator-tag-0.2.0.tgz", - "integrity": "sha1-xXFYRrtB5X2cIMHWbX2yGhq/emI=", - "requires": { - "hexo-pagination": "0.0.2", - "object-assign": "4.1.1" - } - }, - "hexo-i18n": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-0.2.1.tgz", - "integrity": "sha1-hPFBQyvwnYtVjth4xygWS20c1t4=", - "requires": { - "sprintf-js": "1.0.3" - } - }, - "hexo-log": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-0.2.0.tgz", - "integrity": "sha512-fzoc+GQexxPPILTjoOQILnA3ZG2MFgqMBVel4xvJ11pXptw9+f97ynTgDAExXafyp9Nz2ChXRuqlCYgPtZSlxQ==", - "requires": { - "chalk": "1.1.3", - "hexo-bunyan": "1.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "hexo-pagination": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/hexo-pagination/-/hexo-pagination-0.0.2.tgz", - "integrity": "sha1-jPRwx9sN5bGKOSanbesZQBXffys=", - "requires": { - "utils-merge": "1.0.1" - } - }, - "hexo-renderer-ejs": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/hexo-renderer-ejs/-/hexo-renderer-ejs-0.3.1.tgz", - "integrity": "sha512-XN8pYJU+Wr3dT8ipqEPRlOBySJpd1C5NUBBzgZpVSVBC/6L36O0YZI/Qd5NxQqwfGfSuKQ8N5iMyjmRXSR1MdA==", - "requires": { - "ejs": "2.5.9", - "object-assign": "4.1.1" - } - }, - "hexo-renderer-marked": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/hexo-renderer-marked/-/hexo-renderer-marked-0.3.2.tgz", - "integrity": "sha512-joSLeHB0YRkuViIPQlRz4A+zfJKPNHT+rABFgPHiT1zL9eeTUPxoLL4h7kcgOwRLAontVScaxP2Sie15mNitFg==", - "requires": { - "hexo-util": "0.6.3", - "marked": "0.3.19", - "object-assign": "4.1.1", - "strip-indent": "2.0.0" - } - }, - "hexo-renderer-stylus": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/hexo-renderer-stylus/-/hexo-renderer-stylus-0.3.3.tgz", - "integrity": "sha1-xU6ifh/Y48ipp6hM+6itNUEiyn8=", - "requires": { - "nib": "1.1.2", - "stylus": "0.54.5" - } - }, - "hexo-server": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/hexo-server/-/hexo-server-0.2.2.tgz", - "integrity": "sha512-/KkOYMIGylNoMtnlgas84Kw18A60WU3BVfo8ZnTHy8omCsAz2Z+aK6ddR4PpSmTdLeKDsiZj4ZSg86ZQ+FZzrA==", - "requires": { - "bluebird": "3.5.1", - "chalk": "1.1.3", - "compression": "1.7.2", - "connect": "3.6.6", - "mime": "1.6.0", - "morgan": "1.9.0", - "object-assign": "4.1.1", - "opn": "4.0.2", - "serve-static": "1.13.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "hexo-util": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-0.6.3.tgz", - "integrity": "sha512-zPxaqCWZz3/25SAB4FlrRtWktJ+Pr+vBiv/nyHpXKgXPt1m70liViKlRwWLqDmRjJ72x6/k4qCEeXHajvcGHUw==", - "requires": { - "bluebird": "3.5.1", - "camel-case": "3.0.0", - "cross-spawn": "4.0.2", - "highlight.js": "9.12.0", - "html-entities": "1.2.1", - "striptags": "2.2.1" - } - }, - "highlight.js": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", - "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=" - }, - "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", - "requires": { - "parse-passwd": "1.0.0" - } - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" - }, - "htmlparser": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/htmlparser/-/htmlparser-1.7.7.tgz", - "integrity": "sha1-GeezmX/2+6yZrlp9J2ZInv5+LQ4=" - }, - "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.1", - "domutils": "1.5.1", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": "1.5.0" - }, - "dependencies": { - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - } - } - }, - "inflection": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", - "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "info-symbol": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/info-symbol/-/info-symbol-0.1.0.tgz", - "integrity": "sha1-J4QdcoZ920JCzWEtecEGM4gcang=" - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "inquirer2": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inquirer2/-/inquirer2-0.1.1.tgz", - "integrity": "sha1-vFQkqBQ1fEHmXi6Vf+U2ruqb8fY=", - "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "arr-flatten": "1.1.0", - "arr-pluck": "0.1.0", - "array-unique": "0.2.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "1.1.1", - "extend-shallow": "2.0.1", - "figures": "1.7.0", - "is-number": "2.1.0", - "is-plain-object": "2.0.4", - "lazy-cache": "1.0.4", - "lodash.where": "3.1.0", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "4.0.8", - "strip-color": "0.1.0", - "through2": "2.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "1.3.1" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "is-absolute": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", - "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", - "requires": { - "is-relative": "0.2.1", - "is-windows": "0.2.0" - }, - "dependencies": { - "is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=" - } - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "3.2.2" - } - }, - "is-answer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-answer/-/is-answer-0.1.1.tgz", - "integrity": "sha1-zBwvGG+FzyZQIgveNZ2GIYfUnLY=", - "requires": { - "has-values": "0.1.4", - "is-primitive": "2.0.0", - "omit-empty": "0.4.1" - }, - "dependencies": { - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - } - } - }, - "is-arguments": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.2.tgz", - "integrity": "sha1-B+MK15UxhEF5tkLS2DmUNRgshyc=" - }, - "is-binary-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-binary-buffer/-/is-binary-buffer-1.0.0.tgz", - "integrity": "sha1-vGAxKQtly/eZudlQK1D9U3VSQAc=", - "requires": { - "is-buffer": "1.1.6" - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "1.11.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "3.2.2" - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-generator": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-generator/-/is-generator-1.0.3.tgz", - "integrity": "sha1-wUwhBX7TbjKNuANHlmxpP4hjifM=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "requires": { - "kind-of": "3.2.2" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" - }, - "is-registered": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/is-registered/-/is-registered-0.1.5.tgz", - "integrity": "sha1-HTRpd0GdZl4qxshAE1NWheb3b38=", - "requires": { - "define-property": "0.2.5", - "isobject": "2.1.0" - } - }, - "is-relative": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", - "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", - "requires": { - "is-unc-path": "0.1.2" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-unc-path": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", - "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", - "requires": { - "unc-path-regex": "0.1.2" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "is-valid-app": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-valid-app/-/is-valid-app-0.2.1.tgz", - "integrity": "sha1-Zc8ZW71xvXdssWGZHGhCSNZd/4k=", - "requires": { - "debug": "2.6.9", - "is-registered": "0.1.5", - "is-valid-instance": "0.2.0", - "lazy-cache": "2.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "is-valid-glob": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", - "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=" - }, - "is-valid-instance": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-valid-instance/-/is-valid-instance-0.2.0.tgz", - "integrity": "sha1-4an/EQa4y64AB+pqIPidVGoqWg8=", - "requires": { - "isobject": "2.1.0", - "pascalcase": "0.1.1" - } - }, - "is-whitespace": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", - "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=" - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", - "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" - } - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "requires": { - "jsonify": "0.0.0" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - }, - "layouts": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/layouts/-/layouts-0.11.0.tgz", - "integrity": "sha1-xiDos8uI/IxJLbRTin3VQKTffyI=", - "requires": { - "delimiter-regex": "1.3.1", - "falsey": "0.3.2", - "get-view": "0.1.3", - "lazy-cache": "1.0.4" - }, - "dependencies": { - "delimiter-regex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/delimiter-regex/-/delimiter-regex-1.3.1.tgz", - "integrity": "sha1-Y4XK4UAE28DBzY3//+uGPVGZnv8=", - "requires": { - "extend-shallow": "1.1.4" - } - }, - "extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", - "requires": { - "kind-of": "1.1.0" - } - }, - "kind-of": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=" - } - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "requires": { - "readable-stream": "2.3.6" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "1.0.0" - } - }, - "load-helpers": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/load-helpers/-/load-helpers-0.2.11.tgz", - "integrity": "sha1-9L2LIYQ1wFLl4536dxMinVcepCM=", - "requires": { - "extend-shallow": "2.0.1", - "is-valid-glob": "0.3.0", - "lazy-cache": "2.0.2", - "matched": "0.4.4", - "resolve-dir": "0.1.1" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - }, - "matched": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/matched/-/matched-0.4.4.tgz", - "integrity": "sha1-Vte36xgDPwz5vFLrIJD6x9weifo=", - "requires": { - "arr-union": "3.1.0", - "async-array-reduce": "0.2.1", - "extend-shallow": "2.0.1", - "fs-exists-sync": "0.1.0", - "glob": "7.1.2", - "has-glob": "0.1.1", - "is-valid-glob": "0.3.0", - "lazy-cache": "2.0.2", - "resolve-dir": "0.1.1" - } - } - } - }, - "load-pkg": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/load-pkg/-/load-pkg-3.0.1.tgz", - "integrity": "sha1-kjCzfsBOVpADBgvFiVHj7VCNWU8=", - "requires": { - "find-pkg": "0.1.2" - } - }, - "load-templates": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/load-templates/-/load-templates-0.11.4.tgz", - "integrity": "sha1-zyk977a1hg/1uMRJ2qHAx7tyjek=", - "requires": { - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "glob-parent": "2.0.0", - "has-glob": "0.1.1", - "is-valid-glob": "0.3.0", - "lazy-cache": "2.0.2", - "matched": "0.4.4", - "to-file": "0.2.0" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - }, - "matched": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/matched/-/matched-0.4.4.tgz", - "integrity": "sha1-Vte36xgDPwz5vFLrIJD6x9weifo=", - "requires": { - "arr-union": "3.1.0", - "async-array-reduce": "0.2.1", - "extend-shallow": "2.0.1", - "fs-exists-sync": "0.1.0", - "glob": "7.1.2", - "has-glob": "0.1.1", - "is-valid-glob": "0.3.0", - "lazy-cache": "2.0.2", - "resolve-dir": "0.1.1" - } - } - } - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" - }, - "lodash._arrayfilter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._arrayfilter/-/lodash._arrayfilter-3.0.0.tgz", - "integrity": "sha1-LevhHuxp5dzG9LhhNxKKSPFSQjc=" - }, - "lodash._basecallback": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/lodash._basecallback/-/lodash._basecallback-3.3.1.tgz", - "integrity": "sha1-t7K7Q9whYEJKIczybFfkQ3cqjic=", - "requires": { - "lodash._baseisequal": "3.0.7", - "lodash._bindcallback": "3.0.1", - "lodash.isarray": "3.0.4", - "lodash.pairs": "3.0.1" - } - }, - "lodash._baseeach": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash._baseeach/-/lodash._baseeach-3.0.4.tgz", - "integrity": "sha1-z4cGVyyhROjZ11InyZDamC+TKvM=", - "requires": { - "lodash.keys": "3.1.2" - } - }, - "lodash._basefilter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basefilter/-/lodash._basefilter-3.0.0.tgz", - "integrity": "sha1-S3ZAPfDihtA9Xg9yle00QeEB0SE=", - "requires": { - "lodash._baseeach": "3.0.4" - } - }, - "lodash._baseisequal": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz", - "integrity": "sha1-2AJfdjOdKTQnZ9zIh85cuVpbUfE=", - "requires": { - "lodash.isarray": "3.0.4", - "lodash.istypedarray": "3.0.6", - "lodash.keys": "3.1.2" - } - }, - "lodash._baseismatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lodash._baseismatch/-/lodash._baseismatch-3.1.3.tgz", - "integrity": "sha1-Byj8SO+hFpnT1fLXMEnyqxPED9U=", - "requires": { - "lodash._baseisequal": "3.0.7" - } - }, - "lodash._basematches": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._basematches/-/lodash._basematches-3.2.0.tgz", - "integrity": "sha1-9H4D8H7CB4SrCWjQy2y1l+IQEVg=", - "requires": { - "lodash._baseismatch": "3.1.3", - "lodash.pairs": "3.0.1" - } - }, - "lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" - }, - "lodash._createwrapper": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._createwrapper/-/lodash._createwrapper-3.2.0.tgz", - "integrity": "sha1-30U+ZkFjIXuJWkVAZa8cR6DqPE0=", - "requires": { - "lodash._root": "3.0.1" - } - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" - }, - "lodash._replaceholders": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._replaceholders/-/lodash._replaceholders-3.0.0.tgz", - "integrity": "sha1-iru3EmxDH37XRPe6rznwi8m9nVg=" - }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=" - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" - }, - "lodash.assignin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" - }, - "lodash.bind": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", - "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" - }, - "lodash.filter": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", - "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" - }, - "lodash.foreach": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", - "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" - }, - "lodash.initial": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.initial/-/lodash.initial-4.1.1.tgz", - "integrity": "sha1-5T9kiRJl3cQE6YbSwo93vtlDWRo=" - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" - }, - "lodash.istypedarray": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz", - "integrity": "sha1-yaR3SYYHUB2OhJTSg7h8OSgc72I=" - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" - } - }, - "lodash.last": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash.last/-/lodash.last-3.0.0.tgz", - "integrity": "sha1-JC9mMRLdTG5jcoxgo8kJ0b2tvUw=" - }, - "lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" - }, - "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" - }, - "lodash.pairs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash.pairs/-/lodash.pairs-3.0.1.tgz", - "integrity": "sha1-u+CNV4bu6qCaFckevw3LfSvjJqk=", - "requires": { - "lodash.keys": "3.1.2" - } - }, - "lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" - }, - "lodash.reduce": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", - "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" - }, - "lodash.reject": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", - "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" - }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" - }, - "lodash.some": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", - "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" - }, - "lodash.where": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.where/-/lodash.where-3.1.0.tgz", - "integrity": "sha1-LnhLnJM2jV11qu4zLOF2Ai8rlVM=", - "requires": { - "lodash._arrayfilter": "3.0.0", - "lodash._basecallback": "3.3.1", - "lodash._basefilter": "3.0.0", - "lodash._basematches": "3.2.0", - "lodash.isarray": "3.0.4" - } - }, - "log-ok": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/log-ok/-/log-ok-0.1.1.tgz", - "integrity": "sha1-vqPdNqzQuKckDXhza1uXxlREozQ=", - "requires": { - "ansi-green": "0.1.1", - "success-symbol": "0.1.0" - } - }, - "log-utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/log-utils/-/log-utils-0.2.1.tgz", - "integrity": "sha1-pMIXoN2aUFFdm5ICBgkas9TgMc8=", - "requires": { - "ansi-colors": "0.2.0", - "error-symbol": "0.1.0", - "info-symbol": "0.1.0", - "log-ok": "0.1.1", - "success-symbol": "0.1.0", - "time-stamp": "1.1.0", - "warning-symbol": "0.1.0" - } - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "requires": { - "js-tokens": "3.0.2" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" - }, - "lru-cache": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "map-config": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/map-config/-/map-config-0.5.0.tgz", - "integrity": "sha1-FwJgfiZ696NwyKnQxiumUk/rb+U=", - "requires": { - "array-unique": "0.2.1", - "async": "1.5.2" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - } - } - }, - "map-schema": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/map-schema/-/map-schema-0.2.4.tgz", - "integrity": "sha1-wZVRg0/DwHoEWXt6WvtEpHWvlbQ=", - "requires": { - "arr-union": "3.1.0", - "collection-visit": "0.2.3", - "component-emitter": "1.2.1", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "get-value": "2.0.6", - "is-primitive": "2.0.0", - "kind-of": "3.2.2", - "lazy-cache": "2.0.2", - "log-utils": "0.2.1", - "longest": "1.0.1", - "mixin-deep": "1.3.1", - "object.omit": "2.0.1", - "object.pick": "1.3.0", - "omit-empty": "0.4.1", - "pad-right": "0.2.2", - "set-value": "0.4.3", - "sort-object-arrays": "0.1.1", - "union-value": "0.2.4" - }, - "dependencies": { - "collection-visit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-0.2.3.tgz", - "integrity": "sha1-L2JIPK7MlfCDuaRUo+6eYTmteVc=", - "requires": { - "lazy-cache": "2.0.2", - "map-visit": "0.1.5", - "object-visit": "0.3.4" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - }, - "map-visit": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-0.1.5.tgz", - "integrity": "sha1-2+Q5J85VJbgN/BVzpE1oxR8mgWs=", - "requires": { - "lazy-cache": "2.0.2", - "object-visit": "0.3.4" - } - }, - "object-visit": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-0.3.4.tgz", - "integrity": "sha1-rhXPhvCy/dVRdxY2RIRSxUw9qCk=", - "requires": { - "isobject": "2.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" - } - }, - "union-value": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz", - "integrity": "sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA=", - "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" - } - } - } - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "1.0.1" - } - }, - "markdown": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", - "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=", - "requires": { - "nopt": "2.1.2" - } - }, - "marked": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", - "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==" - }, - "match-file": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/match-file/-/match-file-0.2.2.tgz", - "integrity": "sha1-Jua88bOQpmH2Em+visUB4z7M+uk=", - "requires": { - "is-glob": "3.1.0", - "isobject": "3.0.1", - "micromatch": "2.3.11" - }, - "dependencies": { - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "2.1.1" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "matched": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/matched/-/matched-1.0.2.tgz", - "integrity": "sha512-7ivM1jFZVTOOS77QsR+TtYHH0ecdLclMkqbf5qiJdX2RorqfhsL65QHySPZgDE0ZjHoh+mQUNHTanNXIlzXd0Q==", - "requires": { - "arr-union": "3.1.0", - "async-array-reduce": "0.2.1", - "glob": "7.1.2", - "has-glob": "1.0.0", - "is-valid-glob": "1.0.0", - "resolve-dir": "1.0.1" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "requires": { - "global-prefix": "1.0.2", - "is-windows": "1.0.2", - "resolve-dir": "1.0.1" - } - }, - "has-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz", - "integrity": "sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc=", - "requires": { - "is-glob": "3.1.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "2.1.1" - } - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "requires": { - "expand-tilde": "2.0.2", - "global-modules": "1.0.0" - } - } - } - }, - "merge-deep": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.1.tgz", - "integrity": "sha512-N+5I5QfuiwzJOUecCejlshp8RrBPJAHUXL6pWeXjF7u0fOpKFUAD1YRJ0dEJEzQcuOes4rHQTvGm0B8cgvA1OA==", - "requires": { - "arr-union": "3.1.0", - "clone-deep": "0.2.4", - "kind-of": "3.2.2", - "lazy-cache": "1.0.4" - } - }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "requires": { - "readable-stream": "2.3.6" - } - }, - "merge-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/merge-value/-/merge-value-1.0.0.tgz", - "integrity": "sha512-fJMmvat4NeKz63Uv9iHWcPDjCWcCkoiRoajRTEO8hlhUC6rwaHg0QCF9hBOTjZmm4JuglPckPSTtcuJL5kp0TQ==", - "requires": { - "get-value": "2.0.6", - "is-extendable": "1.0.1", - "mixin-deep": "1.3.1", - "set-value": "2.0.0" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "2.0.4" - } - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" - }, - "dependencies": { - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - } - } - } - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" - }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "requires": { - "mime-db": "1.33.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "1.1.11" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, - "mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "requires": { - "for-in": "0.1.8", - "is-extendable": "0.1.1" - }, - "dependencies": { - "for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } - } - }, - "moment": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", - "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==" - }, - "moment-timezone": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.16.tgz", - "integrity": "sha512-4d1l92plNNqnMkqI/7boWNVXJvwGL2WyByl1Hxp3h/ao3HZiAqaoQY+6KBkYdiN5QtNDpndq+58ozl8W4GVoNw==", - "requires": { - "moment": "2.22.1" - } - }, - "morgan": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", - "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", - "requires": { - "basic-auth": "2.0.0", - "debug": "2.6.9", - "depd": "1.1.2", - "on-finished": "2.3.0", - "on-headers": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=" - }, - "mv": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "ncp": "2.0.0", - "rimraf": "2.4.5" - } - }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", - "optional": true - }, - "nanoseconds": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/nanoseconds/-/nanoseconds-0.1.0.tgz", - "integrity": "sha1-aew5/NAOd6s6ct4KQzQoJM15Izo=" - }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", - "optional": true - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" - }, - "next-tick": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz", - "integrity": "sha1-ddpKkn7liH45BliABltzNkE7MQ0=" - }, - "nib": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", - "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", - "requires": { - "stylus": "0.54.5" - } - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "requires": { - "lower-case": "1.1.4" - } - }, - "node-fingerprint": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/node-fingerprint/-/node-fingerprint-0.0.2.tgz", - "integrity": "sha1-Mcur63GmeufdWn3AQuUcPHWGhQE=" - }, - "noncharacters": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/noncharacters/-/noncharacters-1.1.0.tgz", - "integrity": "sha1-rzPfMP1Q7TxTzSAiWPJa2pC1QNI=" - }, - "nopt": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", - "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", - "requires": { - "abbrev": "1.1.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, - "normalize-pkg": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/normalize-pkg/-/normalize-pkg-0.3.20.tgz", - "integrity": "sha1-Luc3FJUXhQ2c7/WmI0r174nFFag=", - "requires": { - "arr-union": "3.1.0", - "array-unique": "0.3.2", - "component-emitter": "1.2.1", - "export-files": "2.1.1", - "extend-shallow": "2.0.1", - "fs-exists-sync": "0.1.0", - "get-value": "2.0.6", - "kind-of": "3.2.2", - "lazy-cache": "2.0.2", - "map-schema": "0.2.4", - "minimist": "1.2.0", - "mixin-deep": "1.3.1", - "omit-empty": "0.4.1", - "parse-git-config": "1.1.1", - "repo-utils": "0.3.7", - "semver": "5.5.0", - "stringify-author": "0.1.3", - "write-json": "0.2.2" - }, - "dependencies": { - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "now-and-later": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-0.0.6.tgz", - "integrity": "sha1-GKFNw/xJXcBs++Ao8AvhbdrE+uo=", - "requires": { - "once": "1.4.0" - } - }, - "npm": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-6.0.0.tgz", - "integrity": "sha512-EtM7gNAgMdQeUh8SW2bsaogywVS37lPhf2GYAf2vxR1pktxxT02CW8BHrx59MSbG3ZrRBbcOhpe03gts+eAbdA==", - "requires": { - "JSONStream": "1.3.2", - "abbrev": "1.1.1", - "ansi-regex": "3.0.0", - "ansicolors": "0.3.2", - "ansistyles": "0.1.3", - "aproba": "1.2.0", - "archy": "1.0.0", - "bin-links": "1.1.2", - "bluebird": "3.5.1", - "byte-size": "4.0.2", - "cacache": "11.0.1", - "call-limit": "1.1.0", - "chownr": "1.0.1", - "cli-columns": "3.1.2", - "cli-table2": "0.2.0", - "cmd-shim": "2.0.2", - "columnify": "1.5.4", - "config-chain": "1.1.11", - "debuglog": "1.0.1", - "detect-indent": "5.0.0", - "detect-newline": "2.1.0", - "dezalgo": "1.0.3", - "editor": "1.0.0", - "figgy-pudding": "3.1.0", - "find-npm-prefix": "1.0.2", - "fs-vacuum": "1.2.10", - "fs-write-stream-atomic": "1.0.10", - "gentle-fs": "2.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "has-unicode": "2.0.1", - "hosted-git-info": "2.6.0", - "iferr": "1.0.0", - "imurmurhash": "0.1.4", - "inflight": "1.0.6", - "inherits": "2.0.3", - "ini": "1.3.5", - "init-package-json": "1.10.3", - "is-cidr": "2.0.5", - "json-parse-better-errors": "1.0.2", - "lazy-property": "1.0.0", - "libcipm": "1.6.2", - "libnpmhook": "4.0.1", - "libnpx": "10.2.0", - "lockfile": "1.0.3", - "lodash._baseindexof": "3.1.0", - "lodash._baseuniq": "4.6.0", - "lodash._bindcallback": "3.0.1", - "lodash._cacheindexof": "3.0.2", - "lodash._createcache": "3.1.2", - "lodash._getnative": "3.9.1", - "lodash.clonedeep": "4.5.0", - "lodash.restparam": "3.6.1", - "lodash.union": "4.6.0", - "lodash.uniq": "4.5.0", - "lodash.without": "4.4.0", - "lru-cache": "4.1.2", - "meant": "1.0.1", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "node-gyp": "3.6.2", - "nopt": "4.0.1", - "normalize-package-data": "2.4.0", - "npm-audit-report": "1.0.5", - "npm-cache-filename": "1.0.2", - "npm-install-checks": "3.0.0", - "npm-lifecycle": "2.0.1", - "npm-package-arg": "6.1.0", - "npm-packlist": "1.1.10", - "npm-pick-manifest": "2.1.0", - "npm-profile": "3.0.1", - "npm-registry-client": "8.5.1", - "npm-registry-fetch": "1.1.0", - "npm-user-validate": "1.0.0", - "npmlog": "4.1.2", - "once": "1.4.0", - "opener": "1.4.3", - "osenv": "0.1.5", - "pacote": "8.1.0", - "path-is-inside": "1.0.2", - "promise-inflight": "1.0.1", - "qrcode-terminal": "0.12.0", - "query-string": "6.0.0", - "qw": "1.0.1", - "read": "1.0.7", - "read-cmd-shim": "1.0.1", - "read-installed": "4.0.3", - "read-package-json": "2.0.13", - "read-package-tree": "5.2.1", - "readable-stream": "2.3.6", - "readdir-scoped-modules": "1.0.2", - "request": "2.85.0", - "retry": "0.12.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.1", - "semver": "5.5.0", - "sha": "2.0.1", - "slide": "1.1.6", - "sorted-object": "2.0.1", - "sorted-union-stream": "2.1.3", - "ssri": "6.0.0", - "strip-ansi": "4.0.0", - "tar": "4.4.1", - "text-table": "0.2.0", - "tiny-relative-date": "1.3.0", - "uid-number": "0.0.6", - "umask": "1.1.0", - "unique-filename": "1.1.0", - "unpipe": "1.0.0", - "update-notifier": "2.4.0", - "uuid": "3.2.1", - "validate-npm-package-license": "3.0.3", - "validate-npm-package-name": "3.0.0", - "which": "1.3.0", - "worker-farm": "1.6.0", - "wrappy": "1.0.2", - "write-file-atomic": "2.3.0" - }, - "dependencies": { - "JSONStream": { - "version": "1.3.2", - "bundled": true, - "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" - }, - "dependencies": { - "jsonparse": { - "version": "1.3.1", - "bundled": true - }, - "through": { - "version": "2.3.8", - "bundled": true - } - } - }, - "abbrev": { - "version": "1.1.1", - "bundled": true - }, - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "ansicolors": { - "version": "0.3.2", - "bundled": true - }, - "ansistyles": { - "version": "0.1.3", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true - }, - "archy": { - "version": "1.0.0", - "bundled": true - }, - "bin-links": { - "version": "1.1.2", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "cmd-shim": "2.0.2", - "gentle-fs": "2.0.1", - "graceful-fs": "4.1.11", - "write-file-atomic": "2.3.0" - } - }, - "bluebird": { - "version": "3.5.1", - "bundled": true - }, - "byte-size": { - "version": "4.0.2", - "bundled": true - }, - "cacache": { - "version": "11.0.1", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "figgy-pudding": "3.1.0", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.2", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "6.0.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" - }, - "dependencies": { - "y18n": { - "version": "4.0.0", - "bundled": true - } - } - }, - "call-limit": { - "version": "1.1.0", - "bundled": true - }, - "chownr": { - "version": "1.0.1", - "bundled": true - }, - "cli-columns": { - "version": "3.1.2", - "bundled": true, - "requires": { - "string-width": "2.1.1", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "cli-table2": { - "version": "0.2.0", - "bundled": true, - "requires": { - "colors": "1.1.2", - "lodash": "3.10.1", - "string-width": "1.0.2" - }, - "dependencies": { - "colors": { - "version": "1.1.2", - "bundled": true, - "optional": true - }, - "lodash": { - "version": "3.10.1", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.1", - "bundled": true - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - } - } - } - } - }, - "cmd-shim": { - "version": "2.0.2", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1" - } - }, - "columnify": { - "version": "1.5.4", - "bundled": true, - "requires": { - "strip-ansi": "3.0.1", - "wcwidth": "1.0.1" - }, - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - }, - "wcwidth": { - "version": "1.0.1", - "bundled": true, - "requires": { - "defaults": "1.0.3" - }, - "dependencies": { - "defaults": { - "version": "1.0.3", - "bundled": true, - "requires": { - "clone": "1.0.2" - }, - "dependencies": { - "clone": { - "version": "1.0.2", - "bundled": true - } - } - } - } - } - } - }, - "config-chain": { - "version": "1.1.11", - "bundled": true, - "requires": { - "ini": "1.3.5", - "proto-list": "1.2.4" - }, - "dependencies": { - "proto-list": { - "version": "1.2.4", - "bundled": true - } - } - }, - "debuglog": { - "version": "1.0.1", - "bundled": true - }, - "detect-indent": { - "version": "5.0.0", - "bundled": true - }, - "detect-newline": { - "version": "2.1.0", - "bundled": true - }, - "dezalgo": { - "version": "1.0.3", - "bundled": true, - "requires": { - "asap": "2.0.5", - "wrappy": "1.0.2" - }, - "dependencies": { - "asap": { - "version": "2.0.5", - "bundled": true - } - } - }, - "editor": { - "version": "1.0.0", - "bundled": true - }, - "figgy-pudding": { - "version": "3.1.0", - "bundled": true - }, - "find-npm-prefix": { - "version": "1.0.2", - "bundled": true - }, - "fs-vacuum": { - "version": "1.2.10", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "path-is-inside": "1.0.2", - "rimraf": "2.6.2" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "imurmurhash": "0.1.4", - "readable-stream": "2.3.6" - }, - "dependencies": { - "iferr": { - "version": "0.1.5", - "bundled": true - } - } - }, - "gentle-fs": { - "version": "2.0.1", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "fs-vacuum": "1.2.10", - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "path-is-inside": "1.0.2", - "read-cmd-shim": "1.0.1", - "slide": "1.1.6" - }, - "dependencies": { - "iferr": { - "version": "0.1.5", - "bundled": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - }, - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.8" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.8", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - } - } - } - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - } - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true - }, - "hosted-git-info": { - "version": "2.6.0", - "bundled": true - }, - "iferr": { - "version": "1.0.0", - "bundled": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "init-package-json": { - "version": "1.10.3", - "bundled": true, - "requires": { - "glob": "7.1.2", - "npm-package-arg": "6.1.0", - "promzard": "0.3.0", - "read": "1.0.7", - "read-package-json": "2.0.13", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3", - "validate-npm-package-name": "3.0.0" - }, - "dependencies": { - "promzard": { - "version": "0.3.0", - "bundled": true, - "requires": { - "read": "1.0.7" - } - } - } - }, - "is-cidr": { - "version": "2.0.5", - "bundled": true, - "requires": { - "cidr-regex": "2.0.8" - }, - "dependencies": { - "cidr-regex": { - "version": "2.0.8", - "bundled": true, - "requires": { - "ip-regex": "2.1.0" - }, - "dependencies": { - "ip-regex": { - "version": "2.1.0", - "bundled": true - } - } - } - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "bundled": true - }, - "lazy-property": { - "version": "1.0.0", - "bundled": true - }, - "libcipm": { - "version": "1.6.2", - "bundled": true, - "requires": { - "bin-links": "1.1.2", - "bluebird": "3.5.1", - "find-npm-prefix": "1.0.2", - "graceful-fs": "4.1.11", - "lock-verify": "2.0.1", - "npm-lifecycle": "2.0.1", - "npm-logical-tree": "1.2.1", - "npm-package-arg": "6.1.0", - "pacote": "7.6.1", - "protoduck": "5.0.0", - "read-package-json": "2.0.13", - "rimraf": "2.6.2", - "worker-farm": "1.6.0" - }, - "dependencies": { - "lock-verify": { - "version": "2.0.1", - "bundled": true, - "requires": { - "npm-package-arg": "5.1.2", - "semver": "5.5.0" - }, - "dependencies": { - "npm-package-arg": { - "version": "5.1.2", - "bundled": true, - "requires": { - "hosted-git-info": "2.6.0", - "osenv": "0.1.5", - "semver": "5.5.0", - "validate-npm-package-name": "3.0.0" - } - } - } - }, - "npm-logical-tree": { - "version": "1.2.1", - "bundled": true - }, - "pacote": { - "version": "7.6.1", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "cacache": "10.0.4", - "get-stream": "3.0.0", - "glob": "7.1.2", - "lru-cache": "4.1.2", - "make-fetch-happen": "2.6.0", - "minimatch": "3.0.4", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "normalize-package-data": "2.4.0", - "npm-package-arg": "6.1.0", - "npm-packlist": "1.1.10", - "npm-pick-manifest": "2.1.0", - "osenv": "0.1.5", - "promise-inflight": "1.0.1", - "promise-retry": "1.1.1", - "protoduck": "5.0.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.1", - "semver": "5.5.0", - "ssri": "5.3.0", - "tar": "4.4.1", - "unique-filename": "1.1.0", - "which": "1.3.0" - }, - "dependencies": { - "cacache": { - "version": "10.0.4", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.2", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" - }, - "dependencies": { - "mississippi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.2", - "bundled": true, - "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "buffer-from": { - "version": "1.0.0", - "bundled": true - }, - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.4", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.3", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "y18n": { - "version": "4.0.0", - "bundled": true - } - } - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "make-fetch-happen": { - "version": "2.6.0", - "bundled": true, - "requires": { - "agentkeepalive": "3.4.1", - "cacache": "10.0.4", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.2", - "mississippi": "1.3.1", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "3.0.1", - "ssri": "5.3.0" - }, - "dependencies": { - "agentkeepalive": { - "version": "3.4.1", - "bundled": true, - "requires": { - "humanize-ms": "1.2.1" - }, - "dependencies": { - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "requires": { - "ms": "2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-proxy-agent": { - "version": "2.1.0", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "https-proxy-agent": { - "version": "2.2.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "mississippi": { - "version": "1.3.1", - "bundled": true, - "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "1.0.3", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.2", - "bundled": true, - "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "buffer-from": { - "version": "1.0.0", - "bundled": true - }, - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.4", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.3", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "1.0.3", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - } - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "node-fetch-npm": { - "version": "2.0.2", - "bundled": true, - "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.2", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "encoding": { - "version": "0.1.12", - "bundled": true, - "requires": { - "iconv-lite": "0.4.21" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "requires": { - "safer-buffer": "2.1.2" - }, - "dependencies": { - "safer-buffer": { - "version": "2.1.2", - "bundled": true - } - } - } - } - } - } - }, - "socks-proxy-agent": { - "version": "3.0.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "socks": "1.1.10" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "socks": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ip": "1.1.5", - "smart-buffer": "1.1.15" - }, - "dependencies": { - "ip": { - "version": "1.1.5", - "bundled": true - }, - "smart-buffer": { - "version": "1.1.15", - "bundled": true - } - } - } - } - } - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - } - } - } - } - }, - "promise-retry": { - "version": "1.1.1", - "bundled": true, - "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" - }, - "dependencies": { - "err-code": { - "version": "1.1.2", - "bundled": true - }, - "retry": { - "version": "0.10.1", - "bundled": true - } - } - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1" - } - } - } - }, - "protoduck": { - "version": "5.0.0", - "bundled": true, - "requires": { - "genfun": "4.0.1" - }, - "dependencies": { - "genfun": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "libnpmhook": { - "version": "4.0.1", - "bundled": true, - "requires": { - "figgy-pudding": "3.1.0", - "npm-registry-fetch": "3.1.1" - }, - "dependencies": { - "npm-registry-fetch": { - "version": "3.1.1", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "figgy-pudding": "3.1.0", - "lru-cache": "4.1.2", - "make-fetch-happen": "4.0.1", - "npm-package-arg": "6.1.0" - }, - "dependencies": { - "make-fetch-happen": { - "version": "4.0.1", - "bundled": true, - "requires": { - "agentkeepalive": "3.4.1", - "cacache": "11.0.1", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.2", - "mississippi": "3.0.0", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "4.0.0", - "ssri": "6.0.0" - }, - "dependencies": { - "agentkeepalive": { - "version": "3.4.1", - "bundled": true, - "requires": { - "humanize-ms": "1.2.1" - }, - "dependencies": { - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "requires": { - "ms": "2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-proxy-agent": { - "version": "2.1.0", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "https-proxy-agent": { - "version": "2.2.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "node-fetch-npm": { - "version": "2.0.2", - "bundled": true, - "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.2", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "encoding": { - "version": "0.1.12", - "bundled": true, - "requires": { - "iconv-lite": "0.4.21" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "requires": { - "safer-buffer": "2.1.2" - }, - "dependencies": { - "safer-buffer": { - "version": "2.1.2", - "bundled": true - } - } - } - } - } - } - }, - "promise-retry": { - "version": "1.1.1", - "bundled": true, - "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" - }, - "dependencies": { - "err-code": { - "version": "1.1.2", - "bundled": true - }, - "retry": { - "version": "0.10.1", - "bundled": true - } - } - }, - "socks-proxy-agent": { - "version": "4.0.0", - "bundled": true, - "requires": { - "agent-base": "4.1.2", - "socks": "2.1.6" - }, - "dependencies": { - "agent-base": { - "version": "4.1.2", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "socks": { - "version": "2.1.6", - "bundled": true, - "requires": { - "ip": "1.1.5", - "smart-buffer": "4.0.1" - }, - "dependencies": { - "ip": { - "version": "1.1.5", - "bundled": true - }, - "smart-buffer": { - "version": "4.0.1", - "bundled": true - } - } - } - } - } - } - } - } - } - } - }, - "libnpx": { - "version": "10.2.0", - "bundled": true, - "requires": { - "dotenv": "5.0.1", - "npm-package-arg": "6.1.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.1", - "update-notifier": "2.4.0", - "which": "1.3.0", - "y18n": "4.0.0", - "yargs": "11.0.0" - }, - "dependencies": { - "dotenv": { - "version": "5.0.1", - "bundled": true - }, - "y18n": { - "version": "4.0.0", - "bundled": true - }, - "yargs": { - "version": "11.0.0", - "bundled": true, - "requires": { - "cliui": "4.0.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" - }, - "dependencies": { - "cliui": { - "version": "4.0.0", - "bundled": true, - "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.1", - "bundled": true - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - } - } - } - } - }, - "decamelize": { - "version": "1.2.0", - "bundled": true - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "2.0.0" - }, - "dependencies": { - "locate-path": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - }, - "dependencies": { - "p-locate": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-limit": "1.2.0" - }, - "dependencies": { - "p-limit": { - "version": "1.2.0", - "bundled": true, - "requires": { - "p-try": "1.0.0" - }, - "dependencies": { - "p-try": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "path-exists": { - "version": "3.0.0", - "bundled": true - } - } - } - } - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - }, - "dependencies": { - "execa": { - "version": "0.7.0", - "bundled": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" - }, - "dependencies": { - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "1.0.0" - }, - "dependencies": { - "shebang-regex": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "2.0.1" - }, - "dependencies": { - "path-key": { - "version": "2.0.1", - "bundled": true - } - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - } - } - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "requires": { - "invert-kv": "1.0.0" - }, - "dependencies": { - "invert-kv": { - "version": "1.0.0", - "bundled": true - } - } - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "requires": { - "mimic-fn": "1.2.0" - }, - "dependencies": { - "mimic-fn": { - "version": "1.2.0", - "bundled": true - } - } - } - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - } - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true - }, - "y18n": { - "version": "3.2.1", - "bundled": true - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "requires": { - "camelcase": "4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - } - } - } - } - } - } - }, - "lockfile": { - "version": "1.0.3", - "bundled": true - }, - "lodash._baseindexof": { - "version": "3.1.0", - "bundled": true - }, - "lodash._baseuniq": { - "version": "4.6.0", - "bundled": true, - "requires": { - "lodash._createset": "4.0.3", - "lodash._root": "3.0.1" - }, - "dependencies": { - "lodash._createset": { - "version": "4.0.3", - "bundled": true - }, - "lodash._root": { - "version": "3.0.1", - "bundled": true - } - } - }, - "lodash._bindcallback": { - "version": "3.0.1", - "bundled": true - }, - "lodash._cacheindexof": { - "version": "3.0.2", - "bundled": true - }, - "lodash._createcache": { - "version": "3.1.2", - "bundled": true, - "requires": { - "lodash._getnative": "3.9.1" - } - }, - "lodash._getnative": { - "version": "3.9.1", - "bundled": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "bundled": true - }, - "lodash.restparam": { - "version": "3.6.1", - "bundled": true - }, - "lodash.union": { - "version": "4.6.0", - "bundled": true - }, - "lodash.uniq": { - "version": "4.5.0", - "bundled": true - }, - "lodash.without": { - "version": "4.4.0", - "bundled": true - }, - "lru-cache": { - "version": "4.1.2", - "bundled": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - }, - "dependencies": { - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true - } - } - }, - "meant": { - "version": "1.0.1", - "bundled": true - }, - "mississippi": { - "version": "3.0.0", - "bundled": true, - "requires": { - "concat-stream": "1.6.1", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.2", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "3.0.0", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.1", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.4", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.2", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "3.0.0", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - } - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true - } - } - }, - "move-concurrently": { - "version": "1.0.1", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "copy-concurrently": "1.0.5", - "fs-write-stream-atomic": "1.0.10", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" - }, - "dependencies": { - "copy-concurrently": { - "version": "1.0.5", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "fs-write-stream-atomic": "1.0.10", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" - }, - "dependencies": { - "iferr": { - "version": "0.1.5", - "bundled": true - } - } - }, - "run-queue": { - "version": "1.0.3", - "bundled": true, - "requires": { - "aproba": "1.2.0" - } - } - } - }, - "node-gyp": { - "version": "3.6.2", - "bundled": true, - "requires": { - "fstream": "1.0.11", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "npmlog": "4.1.2", - "osenv": "0.1.5", - "request": "2.85.0", - "rimraf": "2.6.2", - "semver": "5.3.0", - "tar": "2.2.1", - "which": "1.3.0" - }, - "dependencies": { - "fstream": { - "version": "1.0.11", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - } - } - } - } - }, - "nopt": { - "version": "3.0.6", - "bundled": true, - "requires": { - "abbrev": "1.1.1" - } - }, - "semver": { - "version": "5.3.0", - "bundled": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - }, - "dependencies": { - "block-stream": { - "version": "0.0.9", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - } - } - } - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" - }, - "dependencies": { - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "1.1.1" - }, - "dependencies": { - "builtin-modules": { - "version": "1.1.1", - "bundled": true - } - } - } - } - }, - "npm-audit-report": { - "version": "1.0.5", - "bundled": true, - "requires": { - "ansicolors": "0.3.2", - "ansistyles": "0.1.3", - "cli-table2": "0.2.0" - } - }, - "npm-cache-filename": { - "version": "1.0.2", - "bundled": true - }, - "npm-install-checks": { - "version": "3.0.0", - "bundled": true, - "requires": { - "semver": "5.5.0" - } - }, - "npm-lifecycle": { - "version": "2.0.1", - "bundled": true, - "requires": { - "byline": "5.0.0", - "graceful-fs": "4.1.11", - "node-gyp": "3.6.2", - "resolve-from": "4.0.0", - "slide": "1.1.6", - "uid-number": "0.0.6", - "umask": "1.1.0", - "which": "1.3.0" - }, - "dependencies": { - "byline": { - "version": "5.0.0", - "bundled": true - }, - "resolve-from": { - "version": "4.0.0", - "bundled": true - } - } - }, - "npm-package-arg": { - "version": "6.1.0", - "bundled": true, - "requires": { - "hosted-git-info": "2.6.0", - "osenv": "0.1.5", - "semver": "5.5.0", - "validate-npm-package-name": "3.0.0" - } - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" - }, - "dependencies": { - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "requires": { - "minimatch": "3.0.4" - }, - "dependencies": { - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.8" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.8", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - } - } - } - } - } - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true - } - } - }, - "npm-pick-manifest": { - "version": "2.1.0", - "bundled": true, - "requires": { - "npm-package-arg": "6.1.0", - "semver": "5.5.0" - } - }, - "npm-profile": { - "version": "3.0.1", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "make-fetch-happen": "2.6.0" - }, - "dependencies": { - "make-fetch-happen": { - "version": "2.6.0", - "bundled": true, - "requires": { - "agentkeepalive": "3.3.0", - "cacache": "10.0.4", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.0.0", - "https-proxy-agent": "2.1.1", - "lru-cache": "4.1.2", - "mississippi": "1.3.1", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "3.0.1", - "ssri": "5.3.0" - }, - "dependencies": { - "agentkeepalive": { - "version": "3.3.0", - "bundled": true, - "requires": { - "humanize-ms": "1.2.1" - }, - "dependencies": { - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "requires": { - "ms": "2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "cacache": { - "version": "10.0.4", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.2", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" - }, - "dependencies": { - "mississippi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.2", - "bundled": true, - "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "buffer-from": { - "version": "1.0.0", - "bundled": true - }, - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.4", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.3", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "y18n": { - "version": "4.0.0", - "bundled": true - } - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-proxy-agent": { - "version": "2.0.0", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "2.6.9" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "https-proxy-agent": { - "version": "2.1.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "mississippi": { - "version": "1.3.1", - "bundled": true, - "requires": { - "concat-stream": "1.6.0", - "duplexify": "3.5.3", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.2", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "1.0.3", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.3", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.2", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "1.0.3", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.3", - "inherits": "2.0.3", - "pump": "2.0.1" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - } - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "node-fetch-npm": { - "version": "2.0.2", - "bundled": true, - "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.1", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "encoding": { - "version": "0.1.12", - "bundled": true, - "requires": { - "iconv-lite": "0.4.19" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.19", - "bundled": true - } - } - }, - "json-parse-better-errors": { - "version": "1.0.1", - "bundled": true - } - } - }, - "promise-retry": { - "version": "1.1.1", - "bundled": true, - "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" - }, - "dependencies": { - "err-code": { - "version": "1.1.2", - "bundled": true - }, - "retry": { - "version": "0.10.1", - "bundled": true - } - } - }, - "socks-proxy-agent": { - "version": "3.0.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "socks": "1.1.10" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "socks": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ip": "1.1.5", - "smart-buffer": "1.1.15" - }, - "dependencies": { - "ip": { - "version": "1.1.5", - "bundled": true - }, - "smart-buffer": { - "version": "1.1.15", - "bundled": true - } - } - } - } - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1" - } - } - } - } - } - }, - "npm-registry-client": { - "version": "8.5.1", - "bundled": true, - "requires": { - "concat-stream": "1.6.1", - "graceful-fs": "4.1.11", - "normalize-package-data": "2.4.0", - "npm-package-arg": "6.1.0", - "npmlog": "4.1.2", - "once": "1.4.0", - "request": "2.85.0", - "retry": "0.10.1", - "safe-buffer": "5.1.1", - "semver": "5.5.0", - "slide": "1.1.6", - "ssri": "5.3.0" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.1", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "retry": { - "version": "0.10.1", - "bundled": true - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1" - } - } - } - }, - "npm-registry-fetch": { - "version": "1.1.0", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "figgy-pudding": "2.0.1", - "lru-cache": "4.1.2", - "make-fetch-happen": "3.0.0", - "npm-package-arg": "6.1.0", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "figgy-pudding": { - "version": "2.0.1", - "bundled": true - }, - "make-fetch-happen": { - "version": "3.0.0", - "bundled": true, - "requires": { - "agentkeepalive": "3.4.1", - "cacache": "10.0.4", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.2", - "mississippi": "3.0.0", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "3.0.1", - "ssri": "5.3.0" - }, - "dependencies": { - "agentkeepalive": { - "version": "3.4.1", - "bundled": true, - "requires": { - "humanize-ms": "1.2.1" - }, - "dependencies": { - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "requires": { - "ms": "2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "cacache": { - "version": "10.0.4", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.2", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" - }, - "dependencies": { - "mississippi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.2", - "bundled": true, - "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "buffer-from": { - "version": "1.0.0", - "bundled": true - }, - "typedarray": { - "version": "0.0.6", - "bundled": true - } - } - }, - "duplexify": { - "version": "3.5.4", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "1.4.0" - } - }, - "flush-write-stream": { - "version": "1.0.3", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.6" - }, - "dependencies": { - "cyclist": { - "version": "0.2.2", - "bundled": true - } - } - }, - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "y18n": { - "version": "4.0.0", - "bundled": true - } - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-proxy-agent": { - "version": "2.1.0", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "https-proxy-agent": { - "version": "2.2.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "node-fetch-npm": { - "version": "2.0.2", - "bundled": true, - "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.2", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "encoding": { - "version": "0.1.12", - "bundled": true, - "requires": { - "iconv-lite": "0.4.21" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "requires": { - "safer-buffer": "2.1.2" - }, - "dependencies": { - "safer-buffer": { - "version": "2.1.2", - "bundled": true - } - } - } - } - } - } - }, - "promise-retry": { - "version": "1.1.1", - "bundled": true, - "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" - }, - "dependencies": { - "err-code": { - "version": "1.1.2", - "bundled": true - }, - "retry": { - "version": "0.10.1", - "bundled": true - } - } - }, - "socks-proxy-agent": { - "version": "3.0.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "socks": "1.1.10" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "socks": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ip": "1.1.5", - "smart-buffer": "1.1.15" - }, - "dependencies": { - "ip": { - "version": "1.1.5", - "bundled": true - }, - "smart-buffer": { - "version": "1.1.15", - "bundled": true - } - } - } - } - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1" - } - } - } - } - } - }, - "npm-user-validate": { - "version": "1.0.0", - "bundled": true - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - }, - "dependencies": { - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" - }, - "dependencies": { - "delegates": { - "version": "1.0.0", - "bundled": true - } - } - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.1", - "bundled": true - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "requires": { - "string-width": "1.0.2" - } - } - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - } - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "opener": { - "version": "1.4.3", - "bundled": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - }, - "dependencies": { - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - } - } - }, - "pacote": { - "version": "8.1.0", - "bundled": true, - "requires": { - "bluebird": "3.5.1", - "cacache": "11.0.1", - "get-stream": "3.0.0", - "glob": "7.1.2", - "lru-cache": "4.1.2", - "make-fetch-happen": "4.0.1", - "minimatch": "3.0.4", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "normalize-package-data": "2.4.0", - "npm-package-arg": "6.1.0", - "npm-packlist": "1.1.10", - "npm-pick-manifest": "2.1.0", - "osenv": "0.1.5", - "promise-inflight": "1.0.1", - "promise-retry": "1.1.1", - "protoduck": "5.0.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.1", - "semver": "5.5.0", - "ssri": "6.0.0", - "tar": "4.4.1", - "unique-filename": "1.1.0", - "which": "1.3.0" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "make-fetch-happen": { - "version": "4.0.1", - "bundled": true, - "requires": { - "agentkeepalive": "3.4.1", - "cacache": "11.0.1", - "http-cache-semantics": "3.8.1", - "http-proxy-agent": "2.1.0", - "https-proxy-agent": "2.2.1", - "lru-cache": "4.1.2", - "mississippi": "3.0.0", - "node-fetch-npm": "2.0.2", - "promise-retry": "1.1.1", - "socks-proxy-agent": "4.0.1", - "ssri": "6.0.0" - }, - "dependencies": { - "agentkeepalive": { - "version": "3.4.1", - "bundled": true, - "requires": { - "humanize-ms": "1.2.1" - }, - "dependencies": { - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "requires": { - "ms": "2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "bundled": true - } - } - } - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-proxy-agent": { - "version": "2.1.0", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "https-proxy-agent": { - "version": "2.2.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "debug": "3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - } - } - }, - "node-fetch-npm": { - "version": "2.0.2", - "bundled": true, - "requires": { - "encoding": "0.1.12", - "json-parse-better-errors": "1.0.2", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "encoding": { - "version": "0.1.12", - "bundled": true, - "requires": { - "iconv-lite": "0.4.21" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "requires": { - "safer-buffer": "2.1.2" - }, - "dependencies": { - "safer-buffer": { - "version": "2.1.2", - "bundled": true - } - } - } - } - } - } - }, - "socks-proxy-agent": { - "version": "4.0.1", - "bundled": true, - "requires": { - "agent-base": "4.2.0", - "socks": "2.2.0" - }, - "dependencies": { - "agent-base": { - "version": "4.2.0", - "bundled": true, - "requires": { - "es6-promisify": "5.0.0" - }, - "dependencies": { - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "4.2.4" - }, - "dependencies": { - "es6-promise": { - "version": "4.2.4", - "bundled": true - } - } - } - } - }, - "socks": { - "version": "2.2.0", - "bundled": true, - "requires": { - "ip": "1.1.5", - "smart-buffer": "4.0.1" - }, - "dependencies": { - "ip": { - "version": "1.1.5", - "bundled": true - }, - "smart-buffer": { - "version": "4.0.1", - "bundled": true - } - } - } - } - } - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - } - } - } - } - }, - "promise-retry": { - "version": "1.1.1", - "bundled": true, - "requires": { - "err-code": "1.1.2", - "retry": "0.10.1" - }, - "dependencies": { - "err-code": { - "version": "1.1.2", - "bundled": true - }, - "retry": { - "version": "0.10.1", - "bundled": true - } - } - }, - "protoduck": { - "version": "5.0.0", - "bundled": true, - "requires": { - "genfun": "4.0.1" - }, - "dependencies": { - "genfun": { - "version": "4.0.1", - "bundled": true - } - } - } - } - }, - "path-is-inside": { - "version": "1.0.2", - "bundled": true - }, - "promise-inflight": { - "version": "1.0.1", - "bundled": true - }, - "qrcode-terminal": { - "version": "0.12.0", - "bundled": true - }, - "query-string": { - "version": "6.0.0", - "bundled": true, - "requires": { - "decode-uri-component": "0.2.0", - "strict-uri-encode": "2.0.0" - }, - "dependencies": { - "decode-uri-component": { - "version": "0.2.0", - "bundled": true - }, - "strict-uri-encode": { - "version": "2.0.0", - "bundled": true - } - } - }, - "qw": { - "version": "1.0.1", - "bundled": true - }, - "read": { - "version": "1.0.7", - "bundled": true, - "requires": { - "mute-stream": "0.0.7" - }, - "dependencies": { - "mute-stream": { - "version": "0.0.7", - "bundled": true - } - } - }, - "read-cmd-shim": { - "version": "1.0.1", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "read-installed": { - "version": "4.0.3", - "bundled": true, - "requires": { - "debuglog": "1.0.1", - "graceful-fs": "4.1.11", - "read-package-json": "2.0.13", - "readdir-scoped-modules": "1.0.2", - "semver": "5.5.0", - "slide": "1.1.6", - "util-extend": "1.0.3" - }, - "dependencies": { - "util-extend": { - "version": "1.0.3", - "bundled": true - } - } - }, - "read-package-json": { - "version": "2.0.13", - "bundled": true, - "requires": { - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "json-parse-better-errors": "1.0.1", - "normalize-package-data": "2.4.0", - "slash": "1.0.0" - }, - "dependencies": { - "json-parse-better-errors": { - "version": "1.0.1", - "bundled": true - }, - "slash": { - "version": "1.0.0", - "bundled": true - } - } - }, - "read-package-tree": { - "version": "5.2.1", - "bundled": true, - "requires": { - "debuglog": "1.0.1", - "dezalgo": "1.0.3", - "once": "1.4.0", - "read-package-json": "2.0.13", - "readdir-scoped-modules": "1.0.2" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - } - } - }, - "readdir-scoped-modules": { - "version": "1.0.2", - "bundled": true, - "requires": { - "debuglog": "1.0.1", - "dezalgo": "1.0.3", - "graceful-fs": "4.1.11", - "once": "1.4.0" - } - }, - "request": { - "version": "2.85.0", - "bundled": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - }, - "dependencies": { - "aws-sign2": { - "version": "0.7.0", - "bundled": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true - }, - "combined-stream": { - "version": "1.0.6", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - }, - "dependencies": { - "delayed-stream": { - "version": "1.0.0", - "bundled": true - } - } - }, - "extend": { - "version": "3.0.1", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true - }, - "form-data": { - "version": "2.3.2", - "bundled": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" - }, - "dependencies": { - "asynckit": { - "version": "0.4.0", - "bundled": true - } - } - }, - "har-validator": { - "version": "5.0.3", - "bundled": true, - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "bundled": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - }, - "dependencies": { - "co": { - "version": "4.6.0", - "bundled": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "bundled": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "bundled": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "bundled": true - } - } - }, - "har-schema": { - "version": "2.0.0", - "bundled": true - } - } - }, - "hawk": { - "version": "6.0.2", - "bundled": true, - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" - }, - "dependencies": { - "boom": { - "version": "4.3.1", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - }, - "cryptiles": { - "version": "3.1.2", - "bundled": true, - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "hoek": { - "version": "4.2.1", - "bundled": true - }, - "sntp": { - "version": "2.1.0", - "bundled": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "http-signature": { - "version": "1.2.0", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - }, - "jsprim": { - "version": "1.4.1", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - }, - "dependencies": { - "extsprintf": { - "version": "1.3.0", - "bundled": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true - }, - "verror": { - "version": "1.10.0", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "bundled": true - } - } - } - } - }, - "sshpk": { - "version": "1.14.1", - "bundled": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "asn1": { - "version": "0.2.3", - "bundled": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - } - } - } - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true - }, - "mime-types": { - "version": "2.1.18", - "bundled": true, - "requires": { - "mime-db": "1.33.0" - }, - "dependencies": { - "mime-db": { - "version": "1.33.0", - "bundled": true - } - } - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true - }, - "performance-now": { - "version": "2.1.0", - "bundled": true - }, - "qs": { - "version": "6.5.1", - "bundled": true - }, - "stringstream": { - "version": "0.0.5", - "bundled": true - }, - "tough-cookie": { - "version": "2.3.4", - "bundled": true, - "requires": { - "punycode": "1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "bundled": true - } - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1" - } - } - } - }, - "retry": { - "version": "0.12.0", - "bundled": true - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "sha": { - "version": "2.0.1", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "readable-stream": "2.3.6" - } - }, - "slide": { - "version": "1.1.6", - "bundled": true - }, - "sorted-object": { - "version": "2.0.1", - "bundled": true - }, - "sorted-union-stream": { - "version": "2.1.3", - "bundled": true, - "requires": { - "from2": "1.3.0", - "stream-iterate": "1.2.0" - }, - "dependencies": { - "from2": { - "version": "1.3.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "1.1.14" - }, - "dependencies": { - "readable-stream": { - "version": "1.1.14", - "bundled": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "isarray": { - "version": "0.0.1", - "bundled": true - }, - "string_decoder": { - "version": "0.10.31", - "bundled": true - } - } - } - } - }, - "stream-iterate": { - "version": "1.2.0", - "bundled": true, - "requires": { - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, - "dependencies": { - "stream-shift": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "ssri": { - "version": "6.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - } - } - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.4", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.1", - "yallist": "3.0.2" - }, - "dependencies": { - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "requires": { - "minipass": "2.2.4" - } - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1", - "yallist": "3.0.2" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "requires": { - "minipass": "2.2.4" - } - }, - "yallist": { - "version": "3.0.2", - "bundled": true - } - } - }, - "text-table": { - "version": "0.2.0", - "bundled": true - }, - "tiny-relative-date": { - "version": "1.3.0", - "bundled": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true - }, - "umask": { - "version": "1.1.0", - "bundled": true - }, - "unique-filename": { - "version": "1.1.0", - "bundled": true, - "requires": { - "unique-slug": "2.0.0" - }, - "dependencies": { - "unique-slug": { - "version": "2.0.0", - "bundled": true, - "requires": { - "imurmurhash": "0.1.4" - } - } - } - }, - "unpipe": { - "version": "1.0.0", - "bundled": true - }, - "update-notifier": { - "version": "2.4.0", - "bundled": true, - "requires": { - "boxen": "1.3.0", - "chalk": "2.3.2", - "configstore": "3.1.2", - "import-lazy": "2.1.0", - "is-ci": "1.1.0", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" - }, - "dependencies": { - "boxen": { - "version": "1.3.0", - "bundled": true, - "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.3.2", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.0" - }, - "dependencies": { - "ansi-align": { - "version": "2.0.0", - "bundled": true, - "requires": { - "string-width": "2.1.1" - } - }, - "camelcase": { - "version": "4.1.0", - "bundled": true - }, - "cli-boxes": { - "version": "1.0.0", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - } - } - }, - "term-size": { - "version": "1.2.0", - "bundled": true, - "requires": { - "execa": "0.7.0" - }, - "dependencies": { - "execa": { - "version": "0.7.0", - "bundled": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" - }, - "dependencies": { - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "1.0.0" - }, - "dependencies": { - "shebang-regex": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "2.0.1" - }, - "dependencies": { - "path-key": { - "version": "2.0.1", - "bundled": true - } - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "widest-line": { - "version": "2.0.0", - "bundled": true, - "requires": { - "string-width": "2.1.1" - } - } - } - }, - "chalk": { - "version": "2.3.2", - "bundled": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "requires": { - "color-convert": "1.9.1" - }, - "dependencies": { - "color-convert": { - "version": "1.9.1", - "bundled": true, - "requires": { - "color-name": "1.1.3" - }, - "dependencies": { - "color-name": { - "version": "1.1.3", - "bundled": true - } - } - } - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true - }, - "supports-color": { - "version": "5.3.0", - "bundled": true, - "requires": { - "has-flag": "3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "bundled": true - } - } - } - } - }, - "configstore": { - "version": "3.1.2", - "bundled": true, - "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.2.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", - "xdg-basedir": "3.0.0" - }, - "dependencies": { - "dot-prop": { - "version": "4.2.0", - "bundled": true, - "requires": { - "is-obj": "1.0.1" - }, - "dependencies": { - "is-obj": { - "version": "1.0.1", - "bundled": true - } - } - }, - "make-dir": { - "version": "1.2.0", - "bundled": true, - "requires": { - "pify": "3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "bundled": true - } - } - }, - "unique-string": { - "version": "1.0.0", - "bundled": true, - "requires": { - "crypto-random-string": "1.0.0" - }, - "dependencies": { - "crypto-random-string": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "import-lazy": { - "version": "2.1.0", - "bundled": true - }, - "is-ci": { - "version": "1.1.0", - "bundled": true, - "requires": { - "ci-info": "1.1.3" - }, - "dependencies": { - "ci-info": { - "version": "1.1.3", - "bundled": true - } - } - }, - "is-installed-globally": { - "version": "0.1.0", - "bundled": true, - "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" - }, - "dependencies": { - "global-dirs": { - "version": "0.1.1", - "bundled": true, - "requires": { - "ini": "1.3.5" - } - }, - "is-path-inside": { - "version": "1.0.1", - "bundled": true, - "requires": { - "path-is-inside": "1.0.2" - } - } - } - }, - "is-npm": { - "version": "1.0.0", - "bundled": true - }, - "latest-version": { - "version": "3.1.0", - "bundled": true, - "requires": { - "package-json": "4.0.1" - }, - "dependencies": { - "package-json": { - "version": "4.0.1", - "bundled": true, - "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0", - "semver": "5.5.0" - }, - "dependencies": { - "got": { - "version": "6.7.1", - "bundled": true, - "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" - }, - "dependencies": { - "create-error-class": { - "version": "3.0.2", - "bundled": true, - "requires": { - "capture-stack-trace": "1.0.0" - }, - "dependencies": { - "capture-stack-trace": { - "version": "1.0.0", - "bundled": true - } - } - }, - "duplexer3": { - "version": "0.1.4", - "bundled": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "is-redirect": { - "version": "1.0.0", - "bundled": true - }, - "is-retry-allowed": { - "version": "1.1.0", - "bundled": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "lowercase-keys": { - "version": "1.0.1", - "bundled": true - }, - "timed-out": { - "version": "4.0.1", - "bundled": true - }, - "unzip-response": { - "version": "2.0.1", - "bundled": true - }, - "url-parse-lax": { - "version": "1.0.0", - "bundled": true, - "requires": { - "prepend-http": "1.0.4" - }, - "dependencies": { - "prepend-http": { - "version": "1.0.4", - "bundled": true - } - } - } - } - }, - "registry-auth-token": { - "version": "3.3.2", - "bundled": true, - "requires": { - "rc": "1.2.6", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "rc": { - "version": "1.2.6", - "bundled": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "deep-extend": { - "version": "0.4.2", - "bundled": true - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - } - } - } - } - }, - "registry-url": { - "version": "3.1.0", - "bundled": true, - "requires": { - "rc": "1.2.6" - }, - "dependencies": { - "rc": { - "version": "1.2.6", - "bundled": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "deep-extend": { - "version": "0.4.2", - "bundled": true - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - } - } - } - } - } - } - } - } - }, - "semver-diff": { - "version": "2.1.0", - "bundled": true, - "requires": { - "semver": "5.5.0" - } - }, - "xdg-basedir": { - "version": "3.0.0", - "bundled": true - } - } - }, - "uuid": { - "version": "3.2.1", - "bundled": true - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" - }, - "dependencies": { - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" - }, - "dependencies": { - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true - } - } - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" - }, - "dependencies": { - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true - } - } - } - } - }, - "validate-npm-package-name": { - "version": "3.0.0", - "bundled": true, - "requires": { - "builtins": "1.0.3" - }, - "dependencies": { - "builtins": { - "version": "1.0.3", - "bundled": true - } - } - }, - "which": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isexe": "2.0.0" - }, - "dependencies": { - "isexe": { - "version": "2.0.0", - "bundled": true - } - } - }, - "worker-farm": { - "version": "1.6.0", - "bundled": true, - "requires": { - "errno": "0.1.7" - }, - "dependencies": { - "errno": { - "version": "0.1.7", - "bundled": true, - "requires": { - "prr": "1.0.1" - }, - "dependencies": { - "prr": { - "version": "1.0.1", - "bundled": true - } - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "write-file-atomic": { - "version": "2.3.0", - "bundled": true, + "basic-auth": "2.0.0", + "debug": "2.6.9", + "depd": "1.1.2", + "on-finished": "2.3.0", + "on-headers": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" - }, - "dependencies": { - "signal-exit": { - "version": "3.0.2", - "bundled": true - } + "ms": "2.0.0" } } } }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "ncp": "2.0.0", + "rimraf": "2.4.5" + } + }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "optional": true + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "optional": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "nib": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", + "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", + "requires": { + "stylus": "0.54.5" + } + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "1.1.4" + } + }, + "node-fingerprint": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/node-fingerprint/-/node-fingerprint-0.0.2.tgz", + "integrity": "sha1-Mcur63GmeufdWn3AQuUcPHWGhQE=" + }, + "nopt": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", + "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", + "requires": { + "abbrev": "1.1.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, "nth-check": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", @@ -11464,31 +2392,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" - } - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -11498,38 +2401,6 @@ "is-extendable": "0.1.1" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "omit-empty": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/omit-empty/-/omit-empty-0.4.1.tgz", - "integrity": "sha1-KUo3gvLLIMdJfEEitiN8ncwMY6s=", - "requires": { - "has-values": "0.1.4", - "kind-of": "3.2.2", - "reduce-object": "0.1.3" - }, - "dependencies": { - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - } - } - }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -11551,11 +2422,6 @@ "wrappy": "1.0.2" } }, - "onetime": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" - }, "opn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", @@ -11581,51 +2447,10 @@ } } }, - "option-cache": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/option-cache/-/option-cache-3.5.0.tgz", - "integrity": "sha1-y3ZRVboqhhwRCf8m4qIOqgZhKys=", - "requires": { - "arr-flatten": "1.1.0", - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "0.3.1", - "kind-of": "3.2.2", - "lazy-cache": "2.0.2", - "set-value": "0.4.3", - "to-object-path": "0.3.0" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" - } - } - } - }, - "ordered-read-streams": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", - "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", - "requires": { - "is-stream": "1.1.0", - "readable-stream": "2.3.6" - } + "optjs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", + "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" }, "os-homedir": { "version": "1.0.2", @@ -11640,40 +2465,6 @@ "lcid": "1.0.0" } }, - "pad-right": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", - "integrity": "sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q=", - "requires": { - "repeat-string": "1.6.1" - } - }, - "paginationator": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/paginationator/-/paginationator-0.1.4.tgz", - "integrity": "sha1-hHht04UKrh8Ru7kRsMHghRtTgQY=" - }, - "parse-author": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-1.0.0.tgz", - "integrity": "sha1-XsFZAGKXe9nLOWLpFzuHWGQ39d8=" - }, - "parse-git-config": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parse-git-config/-/parse-git-config-1.1.1.tgz", - "integrity": "sha1-06mYQxcTL1c5hxK7pDjhKVkN34w=", - "requires": { - "extend-shallow": "2.0.1", - "fs-exists-sync": "0.1.0", - "git-config-path": "1.0.1", - "ini": "1.3.5" - } - }, - "parse-github-url": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-0.3.2.tgz", - "integrity": "sha1-du8B6/4LHpwPSTZylSzGpM2csmA=" - }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -11685,225 +2476,32 @@ "is-glob": "2.0.1" } }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" - }, - "parser-front-matter": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/parser-front-matter/-/parser-front-matter-1.6.4.tgz", - "integrity": "sha512-eqtUnI5+COkf1CQOYo8FmykN5Zs+5Yr60f/7GcPgQDZEEjdE/VZ4WMaMo9g37foof8h64t/TH2Uvk2Sq0fDy/g==", - "requires": { - "extend-shallow": "2.0.1", - "file-is-binary": "1.0.0", - "gray-matter": "3.1.1", - "isobject": "3.0.1", - "lazy-cache": "2.0.2", - "mixin-deep": "1.3.1", - "trim-leading-lines": "0.1.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, "parseurl": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" - }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - } - } - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - }, - "pkg-store": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pkg-store/-/pkg-store-0.2.2.tgz", - "integrity": "sha1-sfXA+GIKWf1mWGrMXiVvTCw3oNg=", - "requires": { - "cache-base": "0.8.5", - "kind-of": "3.2.2", - "lazy-cache": "1.0.4", - "union-value": "0.2.4", - "write-json": "0.2.2" - }, - "dependencies": { - "cache-base": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-0.8.5.tgz", - "integrity": "sha1-YM6zUEAh7O7HAR/TOEt/TpVym/o=", - "requires": { - "collection-visit": "0.2.3", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "0.3.1", - "isobject": "3.0.1", - "lazy-cache": "2.0.2", - "set-value": "0.4.3", - "to-object-path": "0.3.0", - "union-value": "0.2.4", - "unset-value": "0.1.2" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "collection-visit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-0.2.3.tgz", - "integrity": "sha1-L2JIPK7MlfCDuaRUo+6eYTmteVc=", - "requires": { - "lazy-cache": "2.0.2", - "map-visit": "0.1.5", - "object-visit": "0.3.4" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "map-visit": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-0.1.5.tgz", - "integrity": "sha1-2+Q5J85VJbgN/BVzpE1oxR8mgWs=", - "requires": { - "lazy-cache": "2.0.2", - "object-visit": "0.3.4" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "object-visit": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-0.3.4.tgz", - "integrity": "sha1-rhXPhvCy/dVRdxY2RIRSxUw9qCk=", - "requires": { - "isobject": "2.1.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" - } - }, - "union-value": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz", - "integrity": "sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA=", - "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" - } - }, - "unset-value": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-0.1.2.tgz", - "integrity": "sha1-UGgQuGfyfCpabpsEgzYx9t5Y0xA=", - "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" - } - } + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" } }, "postinstall-build": { @@ -11921,127 +2519,46 @@ "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" }, - "pretty-time": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-0.2.0.tgz", - "integrity": "sha1-ejvexAScYgzXxCt/NCt01W5z104=", - "requires": { - "is-number": "2.1.0", - "nanoseconds": "0.1.0" - } - }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, - "project-name": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/project-name/-/project-name-0.2.6.tgz", - "integrity": "sha1-Pk94H+HulLB4apuuU1BjdsN5r2k=", - "requires": { - "find-pkg": "0.1.2", - "git-repo-name": "0.6.0", - "minimist": "1.2.0" - } - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "question-cache": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/question-cache/-/question-cache-0.5.1.tgz", - "integrity": "sha1-C8JzKRdTQXB99azTHvLd9nApFo0=", + "protobufjs": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.2.tgz", + "integrity": "sha1-WXSNfc8D0tsiwT2p/rAk4Wq4DJE=", "requires": { - "arr-flatten": "1.1.0", - "arr-union": "3.1.0", - "async-each-series": "1.1.0", - "debug": "2.6.9", - "define-property": "0.2.5", - "get-value": "2.0.6", - "has-value": "0.3.1", - "inquirer2": "0.1.1", - "is-answer": "0.1.1", - "isobject": "2.1.0", - "lazy-cache": "2.0.2", - "mixin-deep": "1.3.1", - "omit-empty": "0.4.1", - "option-cache": "3.5.0", - "os-homedir": "1.0.2", - "project-name": "0.2.6", - "set-value": "0.3.3", - "to-choices": "0.2.0", - "use": "2.0.2" + "ascli": "1.0.1", + "bytebuffer": "5.0.1", + "glob": "7.1.2", + "yargs": "3.32.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - }, - "use": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", - "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "define-property": "0.2.5", - "isobject": "3.0.1", - "lazy-cache": "2.0.2" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } } } }, - "question-store": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/question-store/-/question-store-0.11.1.tgz", - "integrity": "sha1-gf1NRF9NWtwqYiPCUj+nEj4E/X0=", - "requires": { - "common-config": "0.1.0", - "data-store": "0.16.1", - "debug": "2.6.9", - "is-answer": "0.1.1", - "lazy-cache": "2.0.2", - "project-name": "0.2.6", - "question-cache": "0.5.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" }, "randomatic": { "version": "1.1.7", @@ -12085,11 +2602,6 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" }, - "read-file": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/read-file/-/read-file-0.2.0.tgz", - "integrity": "sha1-cMa6+IQux9FUD5gf0Oau1Mgb1UU=" - }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -12115,23 +2627,10 @@ "set-immediate-shim": "1.0.1" } }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "mute-stream": "0.0.5" - } - }, - "reduce-object": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/reduce-object/-/reduce-object-0.1.3.tgz", - "integrity": "sha1-1UnUCmwpNvpOPpt4yonJMxRZQhg=", - "requires": { - "for-own": "0.1.5" - } + "readline-sync": { + "version": "1.4.9", + "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.9.tgz", + "integrity": "sha1-PtqOZfI80qF+YTAbHwADOWr17No=" }, "regenerator-runtime": { "version": "0.11.1", @@ -12146,22 +2645,6 @@ "is-equal-shallow": "0.1.3" } }, - "relative": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/relative/-/relative-3.0.2.tgz", - "integrity": "sha1-Dc2OxUpdNaPBXhBFA9ZTdbWlNn8=", - "requires": { - "isobject": "2.1.0" - } - }, - "remote-origin-url": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/remote-origin-url/-/remote-origin-url-0.5.3.tgz", - "integrity": "sha512-crQ7Xk1m/F2IiwBx5oTqk/c0hjoumrEz+a36+ZoVupskQRE/q7pAwHKsTNeiZ31sbSTELvVlVv4h1W0Xo5szKg==", - "requires": { - "parse-git-config": "1.1.1" - } - }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -12177,40 +2660,6 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" - }, - "repo-utils": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/repo-utils/-/repo-utils-0.3.7.tgz", - "integrity": "sha1-SrZq80DLEfp+XPgFgekr6Xwb964=", - "requires": { - "extend-shallow": "2.0.1", - "get-value": "2.0.6", - "git-config-path": "1.0.1", - "is-absolute": "0.2.6", - "kind-of": "3.2.2", - "lazy-cache": "2.0.2", - "mixin-deep": "1.3.1", - "omit-empty": "0.4.1", - "parse-author": "1.0.0", - "parse-git-config": "1.1.1", - "parse-github-url": "0.3.2", - "project-name": "0.2.6" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, "resolve": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", @@ -12219,139 +2668,6 @@ "path-parse": "1.0.5" } }, - "resolve-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", - "requires": { - "expand-tilde": "1.2.2", - "global-modules": "0.2.3" - }, - "dependencies": { - "expand-tilde": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", - "requires": { - "os-homedir": "1.0.2" - } - } - } - }, - "resolve-file": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/resolve-file/-/resolve-file-0.2.2.tgz", - "integrity": "sha1-FNvsWhnThPXW3GSin9ZigV0xdpY=", - "requires": { - "cwd": "0.10.0", - "expand-tilde": "2.0.2", - "extend-shallow": "2.0.1", - "fs-exists-sync": "0.1.0", - "global-modules": "0.2.3", - "homedir-polyfill": "1.0.1", - "lazy-cache": "2.0.2", - "resolve": "1.7.1" - }, - "dependencies": { - "cwd": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", - "integrity": "sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc=", - "requires": { - "find-pkg": "0.1.2", - "fs-exists-sync": "0.1.0" - } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "resolve-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-glob/-/resolve-glob-1.0.0.tgz", - "integrity": "sha512-wSW9pVGJRs89k0wEXhM7C6+va9998NsDhgc0Y+6Nv8hrHsu0hUS7Ug10J1EiVtU6N2tKlSNvx9wLihL8Ao22Lg==", - "requires": { - "extend-shallow": "2.0.1", - "is-valid-glob": "1.0.0", - "matched": "1.0.2", - "relative": "3.0.2", - "resolve-dir": "1.0.1" - }, - "dependencies": { - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "requires": { - "global-prefix": "1.0.2", - "is-windows": "1.0.2", - "resolve-dir": "1.0.1" - } - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "requires": { - "expand-tilde": "2.0.2", - "global-modules": "1.0.0" - } - } - } - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - }, - "rethrow": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/rethrow/-/rethrow-0.2.3.tgz", - "integrity": "sha1-xVKPGQ6J7HU1iJRSob5omWtfZhY=", - "requires": { - "ansi-bgred": "0.1.1", - "ansi-red": "0.1.1", - "ansi-yellow": "0.1.1", - "extend-shallow": "1.1.4", - "lazy-cache": "0.2.7", - "right-align": "0.1.3" - }, - "dependencies": { - "extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", - "requires": { - "kind-of": "1.1.0" - } - }, - "kind-of": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=" - }, - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" - } - } - }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -12369,19 +2685,6 @@ "glob": "6.0.4" } }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "requires": { - "once": "1.4.0" - } - }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -12398,11 +2701,6 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=" }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" - }, "send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", @@ -12454,205 +2752,30 @@ "send": "0.16.2" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-getter": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", - "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", - "requires": { - "to-object-path": "0.3.0" - } - }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" }, - "set-value": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.3.3.tgz", - "integrity": "sha1-uBIjaBY4oQiP2IpDW4qdMtro2bo=", - "requires": { - "extend-shallow": "2.0.1", - "isobject": "2.1.0", - "to-object-path": "0.2.0" - }, - "dependencies": { - "to-object-path": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.2.0.tgz", - "integrity": "sha1-FjThtSqIugDjlJYZ/ACB3Jo7B8o=", - "requires": { - "arr-flatten": "1.1.0", - "is-arguments": "1.0.2" - } - } - } - }, "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, - "shallow-clone": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", - "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", - "requires": { - "is-extendable": "0.1.1", - "kind-of": "2.0.1", - "lazy-cache": "0.2.7", - "mixin-object": "2.0.1" - }, - "dependencies": { - "kind-of": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", - "requires": { - "is-buffer": "1.1.6" - } - }, - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" - } - } - }, - "sort-object-arrays": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/sort-object-arrays/-/sort-object-arrays-0.1.1.tgz", - "integrity": "sha1-mfVc8gWkkd3h9S8Jajaiawm0gy8=", - "requires": { - "kind-of": "3.2.2" - } - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "src-stream": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/src-stream/-/src-stream-0.1.1.tgz", - "integrity": "sha1-2T9G0oGjcAKB7A8wszoDFDiUpoE=", - "requires": { - "duplexify": "3.5.4", - "merge-stream": "0.1.8", - "through2": "2.0.3" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "merge-stream": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-0.1.8.tgz", - "integrity": "sha1-SKB7O0oSHXSj7b/c20sIrb8CQLE=", - "requires": { - "through2": "0.6.5" - }, - "dependencies": { - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" - } - } - } - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" - } - }, "statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" - }, - "stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", - "requires": { - "duplexer": "0.1.1", - "through": "2.3.8" - } - }, - "stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" }, "string-width": { "version": "1.0.2", @@ -12682,11 +2805,6 @@ "safe-buffer": "5.1.2" } }, - "stringify-author": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/stringify-author/-/stringify-author-0.1.3.tgz", - "integrity": "sha1-1YHgLOC1XNo8lT5irdIR+uSw72Y=" - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -12702,42 +2820,6 @@ } } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "0.2.1" - } - }, - "strip-bom-buffer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-bom-buffer/-/strip-bom-buffer-0.1.1.tgz", - "integrity": "sha1-yj3cSRnBP5/d8wsd/xAKmDUki00=", - "requires": { - "is-buffer": "1.1.6", - "is-utf8": "0.2.1" - } - }, - "strip-bom-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", - "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", - "requires": { - "first-chunk-stream": "1.0.0", - "strip-bom": "2.0.0" - } - }, - "strip-bom-string": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-0.1.2.tgz", - "integrity": "sha1-nG5yCjE7qYNliVGEBcz7iKX0G5w=" - }, - "strip-color": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/strip-color/-/strip-color-0.1.0.tgz", - "integrity": "sha1-EG9l09PmotlAHKwOsM6LinArT3s=" - }, "strip-indent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", @@ -12784,10 +2866,22 @@ } } }, - "success-symbol": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz", - "integrity": "sha1-JAIuSG878c3KCUKDt2nEctO3KJc=" + "superagent": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", + "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", + "requires": { + "component-emitter": "1.2.1", + "cookiejar": "2.1.1", + "debug": "3.1.0", + "extend": "3.0.1", + "form-data": "2.3.2", + "formidable": "1.2.1", + "methods": "1.1.2", + "mime": "1.6.0", + "qs": "6.5.1", + "readable-stream": "2.3.6" + } }, "supports-color": { "version": "5.4.0", @@ -12814,98 +2908,6 @@ "uglify-js": "2.6.0" } }, - "tableize-object": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tableize-object/-/tableize-object-0.1.0.tgz", - "integrity": "sha1-fCngEzsn1ItWuedtOijSQd8bOiQ=", - "requires": { - "isobject": "2.1.0" - } - }, - "template-error": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/template-error/-/template-error-0.1.2.tgz", - "integrity": "sha1-GMn2ANkPLz37oIM+N/fLb0E1QtQ=", - "requires": { - "engine": "0.1.12", - "kind-of": "2.0.1", - "lazy-cache": "0.2.7", - "rethrow": "0.2.3" - }, - "dependencies": { - "kind-of": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", - "requires": { - "is-buffer": "1.1.6" - } - }, - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" - } - } - }, - "templates": { - "version": "0.24.3", - "resolved": "https://registry.npmjs.org/templates/-/templates-0.24.3.tgz", - "integrity": "sha1-i6uicOGlcnR022hXX4Ic4bT+TQU=", - "requires": { - "array-sort": "0.1.4", - "async-each": "1.0.1", - "base": "0.11.2", - "base-data": "0.6.2", - "base-engines": "0.2.1", - "base-helpers": "0.1.1", - "base-option": "0.8.4", - "base-plugins": "0.4.13", - "base-routes": "0.2.2", - "debug": "2.6.9", - "deep-bind": "0.3.0", - "define-property": "0.2.5", - "engine-base": "0.1.3", - "export-files": "2.1.1", - "extend-shallow": "2.0.1", - "falsey": "0.3.2", - "get-value": "2.0.6", - "get-view": "0.1.3", - "group-array": "0.3.3", - "has-glob": "0.1.1", - "has-value": "0.3.1", - "inflection": "1.12.0", - "is-valid-app": "0.2.1", - "layouts": "0.11.0", - "lazy-cache": "2.0.2", - "match-file": "0.2.2", - "mixin-deep": "1.3.1", - "paginationator": "0.1.4", - "pascalcase": "0.1.1", - "set-value": "0.3.3", - "template-error": "0.1.2", - "vinyl-item": "0.1.0", - "vinyl-view": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -12916,24 +2918,6 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - } - }, - "through2-filter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", - "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", - "requires": { - "through2": "2.0.3", - "xtend": "4.0.1" - } - }, "tildify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", @@ -12942,157 +2926,16 @@ "os-homedir": "1.0.2" } }, - "time-diff": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/time-diff/-/time-diff-0.3.1.tgz", - "integrity": "sha1-Jej7c07qnmy15LA5TwWBC5yHwtg=", - "requires": { - "extend-shallow": "2.0.1", - "is-number": "2.1.0", - "log-utils": "0.1.5", - "pretty-time": "0.2.0" - }, - "dependencies": { - "ansi-colors": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-0.1.0.tgz", - "integrity": "sha1-M0rDbNPq1wjeXGnhmpjRhkImtD8=", - "requires": { - "ansi-bgblack": "0.1.1", - "ansi-bgblue": "0.1.1", - "ansi-bgcyan": "0.1.1", - "ansi-bggreen": "0.1.1", - "ansi-bgmagenta": "0.1.1", - "ansi-bgred": "0.1.1", - "ansi-bgwhite": "0.1.1", - "ansi-bgyellow": "0.1.1", - "ansi-black": "0.1.1", - "ansi-blue": "0.1.1", - "ansi-bold": "0.1.1", - "ansi-cyan": "0.1.1", - "ansi-dim": "0.1.1", - "ansi-gray": "0.1.1", - "ansi-green": "0.1.1", - "ansi-grey": "0.1.1", - "ansi-hidden": "0.1.1", - "ansi-inverse": "0.1.1", - "ansi-italic": "0.1.1", - "ansi-magenta": "0.1.1", - "ansi-red": "0.1.1", - "ansi-reset": "0.1.1", - "ansi-strikethrough": "0.1.1", - "ansi-underline": "0.1.1", - "ansi-white": "0.1.1", - "ansi-yellow": "0.1.1", - "lazy-cache": "0.2.7" - } - }, - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" - }, - "log-utils": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/log-utils/-/log-utils-0.1.5.tgz", - "integrity": "sha1-3g84+Vf0zW69Xctoddijua4HT3c=", - "requires": { - "ansi-colors": "0.1.0", - "error-symbol": "0.1.0", - "info-symbol": "0.1.0", - "log-ok": "0.1.1", - "success-symbol": "0.1.0", - "time-stamp": "1.1.0", - "warning-symbol": "0.1.0" - } - } - } - }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" - }, "titlecase": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/titlecase/-/titlecase-1.1.2.tgz", "integrity": "sha1-eBE9EQgIa4MmMxoyR96o9aSeqFM=" }, - "to": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/to/-/to-0.2.9.tgz", - "integrity": "sha1-C6Wlb+U1ONuSBc621+0heq5GNcQ=", - "requires": { - "handy": "0.0.13", - "htmlparser": "1.7.7", - "js-yaml": "3.11.0", - "optimist": "0.6.1", - "underscore": "1.9.0" - } - }, - "to-absolute-glob": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", - "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", - "requires": { - "extend-shallow": "2.0.1" - } - }, - "to-choices": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/to-choices/-/to-choices-0.2.0.tgz", - "integrity": "sha1-IufnWgfWl9fkzsvVaxvwPBVlTXM=", - "requires": { - "ansi-gray": "0.1.1", - "mixin-deep": "1.3.1" - } - }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" }, - "to-file": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/to-file/-/to-file-0.2.0.tgz", - "integrity": "sha1-I2xsCIBl5XDe+9Fc9LTlZb5G6pM=", - "requires": { - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "file-contents": "0.2.4", - "glob-parent": "2.0.0", - "is-valid-glob": "0.3.0", - "isobject": "2.1.0", - "lazy-cache": "2.0.2", - "vinyl": "1.2.0" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "3.2.2" - } - }, - "trim-leading-lines": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/trim-leading-lines/-/trim-leading-lines-0.1.1.tgz", - "integrity": "sha1-DnysPoMELc+Vp07TaWbxd0TVwWk=", - "requires": { - "is-whitespace": "0.3.0" - } - }, "uglify-js": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.0.tgz", @@ -13147,130 +2990,21 @@ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" - }, "underscore": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.0.tgz", "integrity": "sha512-4IV1DSSxC1QK48j9ONFK1MoIAKKkbE8i7u55w2R6IqBqbT7A/iG7aZBCR2Bi8piF0Uz+i/MG1aeqLwl/5vqF+A==" }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" - }, - "dependencies": { - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" - } - } - } - }, - "unique-stream": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", - "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", - "requires": { - "json-stable-stringify": "1.0.1", - "through2-filter": "2.0.0" - } - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "update": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/update/-/update-0.7.4.tgz", - "integrity": "sha1-saCRwRo+KK4xui7vWLcRuCzpixQ=", - "requires": { - "arr-union": "3.1.0", - "assemble-core": "0.25.0", - "assemble-loader": "0.6.1", - "base-cli-process": "0.1.19", - "base-config-process": "0.1.9", - "base-generators": "0.4.6", - "base-questions": "0.7.4", - "base-runtimes": "0.2.0", - "base-store": "0.4.4", - "common-config": "0.1.0", - "data-store": "0.16.1", - "export-files": "2.1.1", - "extend-shallow": "2.0.1", - "find-pkg": "0.1.2", - "fs-exists-sync": "0.1.0", - "global-modules": "0.2.3", - "gulp-choose-files": "0.1.3", - "is-valid-app": "0.2.1", - "isobject": "2.1.0", - "lazy-cache": "2.0.2", - "log-utils": "0.2.1", - "parser-front-matter": "1.6.4", - "resolve-dir": "0.1.1", - "resolve-file": "0.2.2", - "set-blocking": "2.0.0", - "strip-color": "0.1.0", - "text-table": "0.2.0", - "through2": "2.0.3", - "yargs-parser": "2.4.1" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, "upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" }, - "use": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use/-/use-1.1.2.tgz", - "integrity": "sha1-bjgy/rholXNJSsanrLX++zd7LNE=", - "requires": { - "define-property": "0.2.5", - "isobject": "2.1.0" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -13281,225 +3015,16 @@ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, - "vali-date": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", - "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=" + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, - "vinyl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", - "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", - "requires": { - "clone": "1.0.4", - "clone-stats": "0.0.1", - "replace-ext": "0.0.1" - } - }, - "vinyl-fs": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", - "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", - "requires": { - "duplexify": "3.5.4", - "glob-stream": "5.3.5", - "graceful-fs": "4.1.11", - "gulp-sourcemaps": "1.6.0", - "is-valid-glob": "0.3.0", - "lazystream": "1.0.0", - "lodash.isequal": "4.5.0", - "merge-stream": "1.0.1", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "readable-stream": "2.3.6", - "strip-bom": "2.0.0", - "strip-bom-stream": "1.0.0", - "through2": "2.0.3", - "through2-filter": "2.0.0", - "vali-date": "1.0.0", - "vinyl": "1.2.0" - } - }, - "vinyl-item": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/vinyl-item/-/vinyl-item-0.1.0.tgz", - "integrity": "sha1-8ngTyBFC66ScpYSd5PQvb6Dl4Jg=", - "requires": { - "base": "0.8.1", - "base-option": "0.8.4", - "base-plugins": "0.4.13", - "clone": "1.0.4", - "clone-stats": "1.0.0", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "isobject": "2.1.0", - "lazy-cache": "2.0.2", - "vinyl": "1.2.0" - }, - "dependencies": { - "base": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/base/-/base-0.8.1.tgz", - "integrity": "sha1-aQC7MA8sdZbJnz2DurhyLYGLdI8=", - "requires": { - "arr-union": "3.1.0", - "cache-base": "0.8.5", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "debug": "2.6.9", - "define-property": "0.2.5", - "lazy-cache": "1.0.4", - "mixin-deep": "1.3.1" - }, - "dependencies": { - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - } - } - }, - "cache-base": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-0.8.5.tgz", - "integrity": "sha1-YM6zUEAh7O7HAR/TOEt/TpVym/o=", - "requires": { - "collection-visit": "0.2.3", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "0.3.1", - "isobject": "3.0.1", - "lazy-cache": "2.0.2", - "set-value": "0.4.3", - "to-object-path": "0.3.0", - "union-value": "0.2.4", - "unset-value": "0.1.2" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" - }, - "collection-visit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-0.2.3.tgz", - "integrity": "sha1-L2JIPK7MlfCDuaRUo+6eYTmteVc=", - "requires": { - "lazy-cache": "2.0.2", - "map-visit": "0.1.5", - "object-visit": "0.3.4" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - }, - "map-visit": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-0.1.5.tgz", - "integrity": "sha1-2+Q5J85VJbgN/BVzpE1oxR8mgWs=", - "requires": { - "lazy-cache": "2.0.2", - "object-visit": "0.3.4" - } - }, - "object-visit": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-0.3.4.tgz", - "integrity": "sha1-rhXPhvCy/dVRdxY2RIRSxUw9qCk=", - "requires": { - "isobject": "2.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" - } - }, - "union-value": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz", - "integrity": "sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA=", - "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" - } - }, - "unset-value": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-0.1.2.tgz", - "integrity": "sha1-UGgQuGfyfCpabpsEgzYx9t5Y0xA=", - "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - } - } - }, - "vinyl-view": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/vinyl-view/-/vinyl-view-0.1.2.tgz", - "integrity": "sha1-CaxtfIASEr8JJr2dQQb0XmxPyXc=", - "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "engine-base": "0.1.3", - "isobject": "2.1.0", - "lazy-cache": "2.0.2", - "mixin-deep": "1.3.1", - "vinyl-item": "0.1.0" - }, - "dependencies": { - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "requires": { - "set-getter": "0.1.0" - } - } - } - }, "warehouse": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/warehouse/-/warehouse-2.2.0.tgz", @@ -13513,11 +3038,6 @@ "lodash": "4.17.10" } }, - "warning-symbol": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/warning-symbol/-/warning-symbol-0.1.0.tgz", - "integrity": "sha1-uzHdEbeg+dZ6su2V9Fe2WCW7rSE=" - }, "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", @@ -13560,27 +3080,15 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "requires": { - "mkdirp": "0.5.1" - } - }, - "write-json": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/write-json/-/write-json-0.2.2.tgz", - "integrity": "sha1-+k4VKennY6T5LwfZhBMX49JI2vM=", + "ws": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", + "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", "requires": { - "write": "0.2.1" + "async-limiter": "1.0.0", + "safe-buffer": "5.1.2" } }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" - }, "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", @@ -13604,22 +3112,6 @@ "window-size": "0.1.4", "y18n": "3.2.1" } - }, - "yargs-parser": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", - "requires": { - "camelcase": "3.0.0", - "lodash.assign": "4.2.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" - } - } } } } diff --git a/package.json b/package.json index ff61df0a6..3e722bf14 100644 --- a/package.json +++ b/package.json @@ -6,18 +6,19 @@ "version": "3.7.1" }, "dependencies": { - "hexo": "^3.7.1", + "gitment": "0.0.3", + "hexo": "^3.2.0", "hexo-deployer-git": "^0.3.1", "hexo-generator-archive": "^0.1.4", "hexo-generator-category": "^0.1.3", + "hexo-generator-feed": "^1.2.2", "hexo-generator-index": "^0.2.0", "hexo-generator-tag": "^0.2.0", + "hexo-leancloud-counter-security": "^1.3.2", "hexo-renderer-ejs": "^0.3.0", "hexo-renderer-marked": "^0.3.0", "hexo-renderer-stylus": "^0.3.1", "hexo-server": "^0.2.0", - "npm": "^6.0.0", - "to": "^0.2.9", - "update": "^0.7.4" + "hexo-symbols-count-time": "^0.4.2" } } diff --git a/source/README.md b/source/README.md index ba5fb8d0b..24cd018c7 100644 --- a/source/README.md +++ b/source/README.md @@ -2,6 +2,8 @@ BladeCode +![BladeCode](https://travis-ci.org/BladeCode/BladeCode.github.io.svg?branch=dev) + ### Thanks 1. [Node](https://nodejs.org) 2. [Hexo](https://hexo.io) diff --git a/source/_posts/gitignore.md b/source/_posts/gitignore.md new file mode 100644 index 000000000..ebd190039 --- /dev/null +++ b/source/_posts/gitignore.md @@ -0,0 +1,44 @@ +--- +title: .gitignore 基础知识 +date: 2018-04-13 00:30:50 +categories: Git +tag: ignore +--- + +.gitignore顾名思义是Git中用来管理所需要忽略或者说不用纳入版本控制文件 + +## 基本配置语法 +1. “#“:表示注释 +2. “/“:表示目录 +3. “*“:表示通配符,用来通配多个字符 +4. “?“:表示通配单个字符 +5. “[]“:表示包含单个字符的匹配列表 +6. “!“:表示不忽略匹配到的文件或者目录 + +>注意:Git对.gitignore配置文件是从上往下进行规则匹配,这也意味如果:前(limit)>后(limit),则后面的规则不会被执行 + +## 全局与局部 +.gitignore分为: **全局** ignore,**局部** ignore + +### 全局ignore设置 +* 在用户账户文件夹(C:\Users\<'YourName'>)路径下新建一个命名为`.gitignore_global`的文件 +* 使用Git Bash(需要切换路径到C:\Users\<'YourName'>)或者Git CMD命令行工具输入: +``` bash +git config --global core.excludesfile ~/.gitignore_global +``` +* 此时全局ignore已经设置完成,你只需要修改`.gitignore_global`文件内需要忽略的文件类型就可以全局控制忽略不需要纳入版本控制的文件或文件夹 +* 不难发现,其实是往 `.gitconfig`中加入如下内容来指名Git忽略不纳入版本控制的文件,当然如果你不想用命令行完成全局设置,你也可以直接在`.gitconfig`文件中加入`[core] excludesfile= ~/.gitignore_global`内容即可 + +### 局部ignore设置 +* 只需要在Git控制版本控制项目的根目录中加入.gitignore文件,在.gitignore文件中写明忽略不纳入版本控制的文件即可 + +## 参考示例 + +>你可以查看参考[Github](https://github.com/github/gitignore)官方所写好的示例 + +## 插件.ignore +支持Android Studio,JetBrains系列 +安装方法 + +* `Settings` > `Plugs` > `Browse repositories` > `.ignore` > `Install plugin` +* 里面有已经写好的模板,只需适当修改 \ No newline at end of file diff --git a/source/_posts/gitlab1.md b/source/_posts/gitlab1.md new file mode 100644 index 000000000..f34de54a2 --- /dev/null +++ b/source/_posts/gitlab1.md @@ -0,0 +1,142 @@ +--- +title: Gitlab 应用搭建 +date: 2018-04-24 21:11:10 +categories: Git +tag: Gitlab +--- + +我司团队之前一直使用SVN来进行代码托管,主要问题 +1. 每次来个新人都需要找对应的[SVN](https://tortoisesvn.net/index.zh.html)管理员进行授权分配指定的仓库操作权限,有时候需要多个项目切换,还得再次提出进行仓库的指定 +2. SVN都是以中文命名,这其实没啥,但是在[eclipse](https://eclipse.org) 以及[IDEA](https://www.jetbrains.com/idea/?fromMenu) ,[Xcode](https://developer.apple.com/xcode)等开发工具,链接地址都会把中文字进行编码,造成路径非常的长,强迫症的我这怎么忍得了 +3. 产品相关的,设计相关的啥也都放在SVN里面,搞得SVN里面鱼龙混杂 + +因此在我提出及建议下,部门经理同意了对代码的管理进行隔离方便有效的对代码的授权监管,并同时制定代码的相关规范和服务的自动化部署等,提高团队的开发效率和代码质量。 + +本节主要介绍Gitlab的环境搭建和基础的功能配置 + +目的: +1. 搭建Gitlab服务 +2. 和公司AD域账号关联,用域账号直接登录Gitlab +3. 挂载Gitlab 仓库到 + +## Gitlab安装 + +### 环境 +* OS:CentOS 7 +* Gitlab:[Gitlab CE 10.6.4](https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.6.4-ce.0.el7.x86_64.rpm) + +>Gitlab 版本 +* Gitlab Community Edition (CE):社区版,免费,用户自行托管,通过社区提供技术支持 +* Gitlab Enterprise Edition (EE):企业版,付费,用户自行托管,提供附加的功能以及技术支持 +* Gitlab.com:免费的SaaS服务,可以创建共有以及私有的版本库,可以购买额外的技术支持 +* GitHost.io:由Gitlab提供的用户私有的独享服务 + +### Gitlab部署 +1. 系统防火墙中打开HTTP和SSH访问 +```bash +sudo yum install -y curl policycoreutils-python openssh-server +sudo systemctl enable sshd +sudo systemctl start sshd + +sudo firewall-cmd --permanent --add-service=http +sudo systemctl reload firewalld + +``` +2. 安装Postfix发送通知邮件。如果您想使用其他解决方案发送电子邮件,请跳过此步骤并在安装GitLab后配置外部SMTP服务器 +```bash +sudo yum install postfix +sudo systemctl enable postfix +sudo systemctl start postfix + +``` +3. 添加GitLab软件包存储库 +```bash +curl -LJO https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm +``` +4. 安装软件包 +```bash +rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm +``` + 完成安装如下日志显示: + + ``` + *. *. + *** *** + ***** ***** + .****** ******* + ******** ******** + ,,,,,,,,,***********,,,,,,,,, + ,,,,,,,,,,,*********,,,,,,,,,,, + .,,,,,,,,,,,*******,,,,,,,,,,,, + ,,,,,,,,,*****,,,,,,,,,. + ,,,,,,,****,,,,,, + .,,,***,,,, + ,*,. + + + + _______ __ __ __ + / ____(_) /_/ / ____ _/ /_ + / / __/ / __/ / / __ \`/ __ \ + / /_/ / / /_/ /___/ /_/ / /_/ / + \____/_/\__/_____/\__,_/_.___/ + + ``` +5. 编译配置文件 +```bash +cd /opt/gitlab/bin +./gitlab-ctr reconfigure +``` +6. 启动服务 +```bash +./gitlab-ctr start +``` + +>* 成功启动服务,默认路径访问:http://localhost:80 +* 默认安装位置 `/opt/gitlab/` +* 配置文件默认路径 `/etc/gitlab/gitlab.rb` +* 默认账号:root,密码:5iveL!fe + +## 常用配置项修改 +以下配置项的修改,完成后**均需要重新编译**文件(配置文件默认路径 `/etc/gitlab/gitlab.rb`),默认,**并重启Gitlab**服务 + +### 访问地址 +修改`external_url`为Gitlab对应机器IP所配置的域名 +![gitlab-url](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-gitlab-url.png) + +### LDAP启用 +修改`host`,`port`,`bind_dn`,`password`,`base`参数即可 +![gitlab-ladp](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-gitlab-ldap.png) + +各参数解释: +* `host` 和 `port` 是 LDAP 服务的主机地址及端口 +* `bind_d`n 和 `password` 是一个管理 LDAP 的 dn 及密码 +* `base` 表示 LDAP 将以该 dn 为 节点,向下查找用户 +* `user_filter` 表示以某种过滤条件筛选用户 +* `attributes` 表示 GitLab 中的字段与 LDAP 中哪些字段可以相互对应,比如可以用 LDAP 中的 uid 来作为 GitLab 用户名 + +编译重启后,查看登录是否已经显示LDAP登录入口 + +![gitlab-ldap-login](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-gitlab-ldap-login.png) + +为了安全我们需要关闭 GitLab 自己的注册功能,这样新用户只能通过 LDAP 认证的方式进行登陆。 + +![gitlab-sign-up](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-gitlab-sign-up.png) + +### 存储仓库修改 +默认仓库存储位置:`/var/opt/gitlab/git-data/repositories/` +![gitlab-dirs](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-gitlab-dirs.png) + +### Gitlab日志 +默认日志位置: `/var/log/gitlab` + +```bash +cd /opt/gitlab/bin +gitlab-ctl tail -f nginx/gitlab_access.log +``` +或者在Gitlab服务的系统设置中查看 +![gitlab-logs](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-gitlab-logs.png) + +## 附录 +* [官方安装教程](https://about.gitlab.com/installation/) +* [官方配置文件](https://docs.gitlab.com.cn/omnibus/settings/README.html) \ No newline at end of file diff --git a/source/_posts/hello-world.md b/source/_posts/hello-world.md deleted file mode 100644 index c090297cd..000000000 --- a/source/_posts/hello-world.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Hello World ---- -Welcome to [Hexo](https://hexo.io/)! This is your very first post. Check [documentation](https://hexo.io/docs/) for more info. If you get any problems when using Hexo, you can find the answer in [troubleshooting](https://hexo.io/docs/troubleshooting.html) or you can ask me on [GitHub](https://github.com/hexojs/hexo/issues). - -## Quick Start - -### Create a new post - -``` bash -$ hexo new "My New Post" -``` - -More info: [Writing](https://hexo.io/docs/writing.html) - -### Run server - -``` bash -$ hexo server -``` - -More info: [Server](https://hexo.io/docs/server.html) - -### Generate static files - -``` bash -$ hexo generate -``` - -More info: [Generating](https://hexo.io/docs/generating.html) - -### Deploy to remote sites - -``` bash -$ hexo deploy -``` - -More info: [Deployment](https://hexo.io/docs/deployment.html) diff --git a/source/_posts/hexo-blog.md b/source/_posts/hexo-blog.md new file mode 100644 index 000000000..d943ff854 --- /dev/null +++ b/source/_posts/hexo-blog.md @@ -0,0 +1,135 @@ +--- +title: Hexo Blog 搭建 +date: 2018-03-25 01:18:26 +categories: Hexo +tag: Build +--- + +之前一直纠结用[Jekyll](https://jekyllrb.com)还是[Hexo](https://hexo.io)来搭建[GitHub Page](https://pages.github.com)博客,原本一直想搭建一个[Material Design](https://material.io/guidelines/)主题风格,从[Hexo Themes](https://hexo.io/themes)中寻找到一款不错的主题,[indigo](https://github.com/yscoder/hexo-theme-indigo)是一款支持IE10+,评论,目录导航,分享等功能的轻量Blog主题。 + +简单的修改了该主题之后,本地预览都没有什么问题,但是部署到[Github]()上,样式什么的都无法加载,应该是我的操作姿势不对吧,调整了半天没有解决,烦躁中找到之前star的另一款很受欢迎的[Next](https://github.com/iissnan/hexo-theme-next)主题。 + +既然自己修改的无法正常部署预览,那就用别人写好的吧,刚好赶上[Next](https://github.com/theme-next/hexo-theme-next)新版本V6.0系列的推出,那就不废话,直接开干 + +## 材料准备 +* [Node LTS](https://nodejs.org/en/download) +* [Git](https://git-scm.com/downloads) +* [Hexo](https://hexo.io) +* [Next](https://github.com/theme-next/hexo-theme-next) + +## 安装 +`Node`,`Git`的安装过程略 + +### Hexo +1. Hexo 安装 +``` bash +$ npm install hexo-cli -g +``` +2. 初始化 +``` bash +$ hexo init +``` +3. 安装依赖包 +``` bash +$ cd +$ npm install +``` +4. 启动服务预览 +``` bash +$ hexo serve +``` + +### Next +1. 安装Next 主题 +``` bash +$ git clone https://github.com/theme-next/hexo-theme-next themes/next +``` + > 当前操作在 `blog`的根目录下执行 + +2. 修改Blog 配置 +`you blog name` 根目录 `_config.yml` + * theme: 由原来默认`landscape`更改位`next`(大约:76行) + * 其他配置项,根据自己的需求进行更改,我这里更改了`title`,`subtitle`,`author`,`language`,`url`配置,其中`language`如果没有修改,默认为英文语言,在V6.0系列由原来`zh-Hans`更新为`zh-CN` + * 添加部署到Github配置 +``` bash +deploy: + type: git + repo: https://github.com/BladeCode/BladeCode.github.io.git # 用户名仓库 + branch: master # 用户名仓库的分支应该指定master,master分支也可以不用写 +``` + +3. 修改Theme 配置 +路径:`you blog name`/Themes/next/_config.yml +这里不罗嗦了,其配置可参考[hexo-theme-next](https://github.com/iissnan/hexo-theme-next)项目`README`文件 + +### 部署 +上面已经配置好了部署的目标仓库,那么这里直接使用Hexo提供的部署命令即可 +``` bash +$ hexo d +``` +相关命令介绍等,请查看[官方文档说明](https://hexo.io/docs) + +部署完成后,可以直接访问 http://`you blog name`/github.io + +## 自定义域名 +虽然现在blog可以使用Githug提供的项目二级域名来访问,为了个性化以及方便等,配置自己的域名 +1. 登录域名所属的管理网站(这里以阿里云域名服务为例) + ![gitpages-domain-manger](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-domain-manger.png) +2. 添加解析 +``` bash +$ # 解析一 +记录类型:CNAME +主机记录:www +记录值:bladecode.github.io +解析路线:default + +$ # 解析二 +记录类型:A +主机记录:@ +记录值:192.30.252.153 +解析路线:default + +$ # 解析三 +记录类型:A +主机记录:@ +记录值:192.30.252.154 +解析路线:default +``` + > 192.30.252.153是GitHub的地址,你也可以ping你的 http://xxxx.github.io 的ip地址,填入进去 + +3. 修改Github上项目的domain设置 + ![gitpages-domain-custom](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-domain-custom.png) +4. 添加CNAME文件 +保存路径:`you blog name`/source +新增文件:CNAME 文件 (格式要求:`保存成所有文件而不是txt文件`) +CNAME 文件内容:`incoder.org` +> 如果带有www,那么以后访问的时候必须带有www完整的域名才可以访问,但如果不带有www,以后访问的时候带不带www都可以访问。所以建议,不要带有www + +## Https开启 +开启Https 需要借助[Cloudflare](https://www.cloudflare.com),关于Cloudflare的介绍等不在这里展开 +1. 注册账号 +2. Add website + ![site](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-add-site.png) +3. Querying your DNS + ![query](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-dns-query.png) +4. Select Plan + ![plan](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-select-plan.png) +5. 域名解析记录获取 + ![continue](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-continue.png) +6. DNS 对比,并修改[Cloudflare]()提供的DNS来解析 + ![change](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-change-dns.png) +7. 域名管理后台,修改DNS + ![dns](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-wanwang-dns.png) + > 阿里云服务相关域名DNS修改帮助[文档](https://help.aliyun.com/knowledge_detail/39844.html) +8. 成功激活 + ![active](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-active.png) +9. SSL证书申请提醒 + ![cer](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-ssl-cer.png) +10. 添加强制HTTPS规则 + ![rule](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-page-rule.png) +11. 规则制定 + ![deploy](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-deploy-https.png) + +好了剩下的就是等证书颁发,可能要等上一些时间,具体每个人不尽相同,这里就不多做解释了。 + +Let's all,本次的Hexo的相关初级教程就到这里 diff --git a/source/_posts/hexo-iterative.md b/source/_posts/hexo-iterative.md new file mode 100644 index 000000000..2de7ae586 --- /dev/null +++ b/source/_posts/hexo-iterative.md @@ -0,0 +1,95 @@ +--- +title: Hexo Blog 迭代 +date: 2018-05-02 18:18:18 +categories: Hexo +tag: Build +--- + +最初博客通过[Cloudflare](https://www.cloudflare.com)反向代理进行HTTPS解析,放完五一假期,Github官方开始支持[自定义域名的HTTPS解析](https://blog.github.com/2018-05-01-github-pages-custom-domains-https),在使用Cloudflare期间,经常性的521等问题烦恼,这次也可以名正言顺的弃用CloudFlare + +**本次迭代内容** +* 弃用Cloudflare +* 自动化部署 +* 常用设置 +* 常用插件安装 + +## 弃用Cloudflare +1. 关闭Cloudflare中设置Page Rules +2. 删除Cloudflare的DNS记录 +3. 还原域名配置中的DNS解析 +4. 添加Github提供的IP解析 + +[官方自定义域名设置](https://help.github.com/articles/setting-up-an-apex-domain/#configuring-an-alias-or-aname-record-with-your-dns-provider) + +## 自动化部署 +>[Github Pages](https://pages.github.com)是Github 提供一个渲染静态的Web页面服务 +* `{username}.github.io`仓库默认`master`分支 +* 其他项目仓库,默认`gh-pages`分支 +* [官方说明文档](https://help.github.com/articles/user-organization-and-project-pages) + +因此`{username}.github.io`仓库,dev分支用来存储网站的源码,`master`分支存放生成的静态文件,这样一个仓库就可以管理整个项目。每次`push`新的功能,然而每次都需要先`push`到`dev`分支,然后生成静态文件,再`push`到`master`分支,这种重复性的操作,实在太不优雅,所以采用[Travis CI](https://travis-ci.org)进行自动化部署 + +接着Github支持自定义域名开启HTTPS的好消息,Travis CI (https://travis-ci.com) 也支持开源项目啦 + +> Travis CI 区别 +* Travis-CI(https://travis-ci.org) :GitHub公开项目 +* Travis-CI(https://travis-ci.com) :~~私有付费项目~~,[2018.05.02也开始支持开源项目](https://blog.travis-ci.com/2018-05-02-open-source-projects-on-travis-ci-com-with-github-apps?utm_source=Broadcast&utm_campaign=2may_release) + +[GitHub Services are being deprecated](https://developer.github.com/changes/2018-04-25-github-services-deprecation),因此本节的自动化部署就开启Travis CI (https://travis-ci.com) 集成方案 + +### 准备 +1. 使用GitHub账号登录Travis-CI,并确认接受访问 +2. 同步了GitHub存储库,转到您的配置文件页面并启用您想要构建的存储库 +![enable](https://docs.travis-ci.com/images/enable.png) +3. 添加 `.travis.yml` 文件到构建部署项目的根目录下 + +### Hexo 自动部署 +部署流程 +![部署流程](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-travis-ci-branch-deploy.png) + +Hexo 部署脚本示例 +```bash +language: node_js # 设置语言 +node_js: stable # 设置相应的版本 +cache: + directories: + - node_modules +before_install: + - npm install -g hexo + - npm install -g hexo-cli +install: + - npm install # 安装hexo及插件 +before_script: + - npm install -g mocha + - git clone --branch master https://github.com/BladeCode/BladeCode.github.io.git public +script: + - hexo cl # 清除 + - hexo g # 生成 +after_script: + - cd ./public + - git init + - git config user.name "BladeCode" # 修改成自己的github用户名 + - git config user.email "Jerry.x@outlook.com" # 修改成自己的GitHub邮箱 + - git add . + - git commit -m "update by Travis-CI" # 更新日志 + - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master # GH_token就是在travis中设置的token +branches: + only: + - dev # 只监测dev分支,一有动静就开始构建 +env: + global: + - GH_REF: github.com/BladeCode/BladeCode.github.io.git +``` + +## 常用设置 +[NexT 配置使用手册](http://theme-next.iissnan.com) + +### NexT主题更新 + +[官方说明](https://github.com/theme-next/hexo-theme-next/blob/master/docs/zh-CN/DATA-FILES.md) + +## 常用插件安装 + +* 文章字符统计 [hexo-symbols-count-time](https://github.com/theme-next/hexo-symbols-count-time) +* 修复LeanCloud访客计数器中的严重安全漏洞 [hexo-leancloud-counter-security](https://github.com/theme-next/hexo-leancloud-counter-security) +* 图片灯箱 [theme-next-fancybox3](https://github.com/theme-next/theme-next-fancybox3) \ No newline at end of file diff --git a/source/_posts/rap1.md b/source/_posts/rap1.md new file mode 100644 index 000000000..3dc6b6475 --- /dev/null +++ b/source/_posts/rap1.md @@ -0,0 +1,76 @@ +--- +title: Api 文档管理系统 RAP1环境搭建 +date: 2018-03-27 10:19:25 +categories: Api +tag: RAP +--- + +前后端分离的路上,一款强大的API管理工具,可以降低沟通成本,大大提高开发效率,节省的时间,我们来做更有意义的事情。 + +API管理工具又很多,选择适合自身需求的就是最好 + +这里以[阿里妈妈](https://thx.github.io)出品的[RAP](https://thx.github.io/RAP)产品;目前RAP分为: ~~[RAP1](https://github.com/thx/RAP)~~,[RAP2](https://github.com/thx/rap2-delos) + +>虽然RAP1不再添加新功能,只做维护工作,介于RAP2目前还不是很成熟,本篇文章先讲RAP1的搭建过程(虽然官方[Wiki](https://github.com/thx/RAP/wiki)已经有很详细的部署教程,但在部署过程中还是遇到一些问题,因此就记录下来) + +如果你不需要搭建,可以直接访问RAP1提供的服务[http://rapapi.org](http://rapapi.org) + +## 项目构建 + +* 安装环境:Windows 10 x64 +* 准备工具:[Git](https://git-scm.com/downloads),[IDEA](https://www.jetbrains.com/idea/download),[JDK1.8+](https://www.java.com/zh_CN/download/manual.jsp),[Tomcat8*](https://tomcat.apache.org/download-80.cgi),[MySQL](https://www.mysql.com/cn/downloads),[Redis3+](https://redis.io/download) + +这里Git,IDEA,JDK1.8,Tomcat8*,MySQL不再赘述安装步骤以及环境配置 + +### 安装基本工具 +#### Redis +由于Redis 官方并未支持Windows系统,因此借助MicrosoftArchive团队所提供的[Windows Redis安装包](https://github.com/MicrosoftArchive/redis/releases),这里下载最新的`Redis-x64-3.2.100.msi` + +* 以管理员身份运行安装包`Redis-x64-3.2.100.msi` + 1. 添加环境变量 + ![env](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-redis-env-var.png) + 2. 默认`6379`端口 + ![port](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-redis-port.png) + 3. 检查Redis服务,是否已经启动 + ![serve](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-redis-serve.png) + + >其他默认即可,不要设置Memory Limit + +## 构建项目 +### 获取源代码 +```sh +git clone git@github.com:thx/RAP.git +git checkout release +``` + +>确保您正确的切换到release分支,否则会出现少包,因为master分支引用一些不对外公开的内部组件,不提供给外部用户使用 +### 导入到IDEA +IDEA==>Open==>RAP + +### 初始化数据库 +执行脚本文件:RAP\src\main\resources\database\\`initialize.sql` + +### 修改配置文件 +文件:RAP\src\main\resources\database\\`config.properties` +修改:数据库`用户名`及`密码` +![update](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap1-update-database-config.png) +## 启动项目 +1. Edit config +![config](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap1-tomcat-config.png) +2. Create Tomcat +![create](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap1-tomcat-create.png) +3. Deploy war +![deploy](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap1-tomcat-deploy.png) +4. Deploy success +![success](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap1-deploy-success.png) + +注意成功部署后,请`注册`新账号登录 + +至此,RAP1的本机部署已经完成。 + +## 其他 +* [RAP1学习中心](http://thx.github.io/RAP/study.html) + 部分同学无法查看视频,请异步至[issues](https://github.com/thx/RAP/issues/935) +* [RAP1 Wiki](https://github.com/thx/RAP/wiki)文档 +* [Mockjs](http://mockjs.com) +* [RAP2环境搭建教程](https://www.incoder.org/2018/03/27/rap2) \ No newline at end of file diff --git a/source/_posts/rap2.md b/source/_posts/rap2.md new file mode 100644 index 000000000..f371c87c6 --- /dev/null +++ b/source/_posts/rap2.md @@ -0,0 +1,208 @@ +--- +title: Api 文档管理系统 RAP2环境搭建 +date: 2018-03-27 10:20:10 +categories: Api +tag: RAP +--- + +RAP2是采用前后端分离的形式,因此搭建完整的RAP2需要**服务端:**[rap2-delos](https://github.com/thx/rap2-delos),**客户端:**[rap2-dolores](https://github.com/thx/rap2-dolores) 同时部署 + +部署RAP2需要亲具有Node+Linux+MySQL的运维知识,如果亲对此不是很了解,建议用[http://rap2.taobao.org](http://rap2.taobao.org) 线上版本就可以 + +由于**客户端:**[rap2-dolores](https://github.com/thx/rap2-dolores) 是建立在 **服务端:**[rap2-delos](https://github.com/thx/rap2-delos) 基础上,因此先搭建服务端应用 + +## 安装基本工具 +* [Git](https://git-scm.com/downloads) +* [Node 8.9.4+](https://nodejs.org/zh-cn/download) +* [MySQL 5.7+](https://www.mysql.com/cn/downloads) +* [VS Code](https://code.visualstudio.com/download)(非必需) + +以上基本工具请根据自身需要,下载对应系统安装包,请自行解决安装配置等问题,这里不做过多说明 + +## 服务端delos环境搭建 + +### 构建项目 + +#### 获取源代码 +``` sh +git clone https://github.com/thx/rap2-delos.git +``` + +#### 导入VS Code +这里的开发编辑工具推荐,当然你也可以用自己熟悉的开发工具 + +### 环境配置 + +#### 创建数据库 + +* Mac or Linux + ```sql + mysql -e 'CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci'; + ``` +* Windows 环境 + + 进入mysql命令后执行 + ```sql + CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci; + ``` +#### 配置文件 + +目录:rap2-delos/src/config +文件:`config.dev.ts`;其中dev,表示开发环境,其他同理 +修改:`config.dev.ts`文件中`db`对象中`username`,`password`参数与**本地**或者**开发环境**的数据库信息匹配 + +### 启动项目 + +#### 安装项目依赖包 + +项目根目录下执行 + +```sh +npm install +``` + +#### 安装TypeScript编译包 + +```sh +npm install typescript -g +``` + +> 如果下载缓慢,请使用[淘宝npm镜像](https://npm.taobao.org) + +#### 初始化数据库 + +项目根目录下执行(该过程比较慢,耐心等待初始化完成) + +```sh +npm run create-db +``` + +#### 编译启动项目 +执行mocha测试用例和js代码规范检查 +```sh +npm run check +``` + +* 开发模式 +启动开发模式的服务器 监视并在发生代码变更时自动重启(第一次运行比较慢,请耐心等待) + ```sh + npm run dev + ``` +* 生产模式 + 启动生产模式服务器 + ```sh + npm start + ``` + +看到浏览器中如下提示,表示**服务端delos**已经部署成功 +>RAP2后端服务已启动,请从前端服务(rap2-dolores)访问。 RAP2 back-end server is started, please visit via front-end service (rap2-dolores). + +或者在程序控制台出现如下Log,表示**服务端delos**已经部署成功 +![delos](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap2-delos-success.png) + +### 常见问题 + +#### 部署问题 +1. Windows下执行`npm run build`,提示`'rm' 不是内部或外部命令,也不是可运行的程序或批处理文件` + + 原因:`rm` 是Linux下命令, + 解决方法:Windows系统可使用 `git bash` 打开该项目,执行该命令 + +2. 执行`npm run create-db`命令,提示`Unable to connect to the database:{ SequelizeAccessDeniedError: Access denied for user 'root'@'localhost' (using password:NO)}` + + 原因:未修改`rap2-delos/src/config`目录下数据库配置文件,或者是与文件中的数据库信息与之连接的数据库信息不匹配 + 解决方法:修改`config.dev.ts`文件数据库配置信息 + >如果修改正确无误后,执行`npm run create-db`依旧出错,那么查看该项目中是否已经存在`dist`目录,如果有,请按照如上修改对应的数据库配置信息 +3. 执行`npm run dev`命令,提示`Error: listen EADDRINUSE :::8080` + 原因:8080端口被占用 + 解决方法:杀掉占用8080端口的应用 + +## 客户端dolores环境搭建 + +### 构建项目 +#### 获取源代码 +``` sh +git clone https://github.com/thx/rap2-dolores.git +``` + +### 环境配置 + +#### 配置文件 + +目录:rap2-dolores/src/config +文件:`config.dev.ts`;其中dev,表示开发环境,其他同理 +修改:`config.dev.ts`文件,`serve`地址是**服务端**[rap2-delos]()部署成功后的地址,默认:`'http://localhost:8080'` + +### 启动项目 + +#### 安装项目依赖包 + +项目根目录下执行 + +```sh +npm install +``` + +> 如果下载缓慢,请使用[淘宝npm镜像](https://npm.taobao.org) + +#### 编译启动项目 + +* 开发模式 +自动监视改变后重新编译 + ```sh + npm run dev + ``` + 备注:测试用例 + ```sh + npm run test + ``` +* 生产模式 +编译React生产包 + ```sh + npm run build + ``` + 用serve命令或nginx服务器路由到编译产出的build文件夹作为静态服务器即可 + ```sh + serve -s ./build -p 80 + ``` + +看到浏览器中出现登录页面,表示部署成功 +![dolores](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap2-dolores-success.png) + +### 常见问题 + +#### 部署问题 +1. 执行`npm run dev`,提示 + ```sh + return process.dlopen(module,path._makeLong(filename)) + ... + ...node_modules\node-sass\vendor\win32-x64-57\binding.node is not a valid Win32 application... + ``` + + 原因:项目依赖包`node-sass`没有安装完全 + 解决方法:`npm install node-sass` + +2. 项目运行起来,但一直停留在加载动画那里 + + 浏览器控制台输出: + `GET http://127.0.0.1:8080/account/info ==>> + Failed to load http://127.0.0.1:8080/account/info` + + 原因:未修改`rap2-delos/src/config`目录下服务端连接地址,或者修改结果与[rap2-dolores](https://github.com/thx/rap2-dolores)实际提供服务地址不匹配 + 解决方法:修改`config.dev.ts`文件serve配置信息 + >如果Windows系统修改正确无误后,依旧出错,那么查看hosts(路径:C:\Windows\System32\drivers\etc)中127.0.0.1的IP前是否有`#`,如果有请取消注释 + +## 其他 +### MySQL 运行问题 +* 错误一 +![mysql](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap2-mysql.png) +原因:MySQL 集成命令没有加入系统的环境变量 +解决方法:将安装的MySQL Service路径加入系统变量 +![path](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap2-mysql-path.png) +* 错误二 +![create](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap2-mysql-create.png) +原因:没有数据库链接权限 +解决方法:先登录用root数据库,密码具体看自己数据库当时设置的密码 + +### 如何获取更新 +目前请选择`master`分支源码,后续其他分支请看相应分支说明文档。在开发环境中git pull来获取最新的源码更新,每一期更新都会有对应的update.md请关注并按照上面的指示进行升级工作。 \ No newline at end of file diff --git a/source/_posts/realm.md b/source/_posts/realm.md new file mode 100644 index 000000000..909d7aecb --- /dev/null +++ b/source/_posts/realm.md @@ -0,0 +1,193 @@ +--- +title: Realm 数据库快速上手 +date: 2018-04-24 01:11:10 +categories: DataBase +tag: Realm +--- + +![realm-db](http://p5jcutnur.bkt.clouddn.com/gitpages-realm-mobile-db.png) +Android 供了多种选项来保存永久性应用数据。 +* [Shared preferences](https://developer.android.google.cn/guide/topics/data/data-storage.html?hl=zh-cn#pref) +* [Internal file storage](https://developer.android.google.cn/guide/topics/data/data-storage.html?hl=zh-cn#filesInternal) +* [External file storage](https://developer.android.google.cn/guide/topics/data/data-storage.html?hl=zh-cn#filesExternal) +* [Databases](https://developer.android.google.cn/guide/topics/data/data-storage.html?hl=zh-cn#db) +* [Network](https://developer.android.google.cn/guide/topics/data/data-storage.html?hl=zh-cn#netw) + +其中数据库存储是一种必备技能,而衍生的mobile db也是层出不穷,本节主要介绍全平台(除Android,iOS,macOS外还支持web,桌面应用)[Realm](https://realm.io)数据库在Android上的使用 + +## 快速上手 + +* [Android Studio 1.5.1+](https://developer.android.google.cn/studio/index.html?hl=zh-cn) +* JDK1.7+ +* Android API 9+ +* Realm 默认情况下使用内部存储(internal storage),一般来说,这个文件位于`/data/data//files/`,文件名:`default.realm` + +### 集成 + +* 在项目的 build.gradle 文件中添加如下 class path 依赖 +```groovy +buildscript { + repositories { + jcenter() + } + dependencies { + classpath "io.realm:realm-gradle-plugin:5.0.0" + } +} +``` +* 在 app 的 build.gradle 文件中应用 realm-android 插件 +```groovy +apply plugin: 'realm-android' +``` + +### 初始化 +* 默认初始化 +```java +public class MyApplication extends Application { + @Override + public void onCreate() { + super.onCreate(); + // 默认Realm的配置文件 + Realm.init(this); + } +} +``` +* 自定义初始化 +```java +public class MyApplication extends Application { + @Override + public void onCreate() { + super.onCreate(); + // 自定义配置Realm + initRealm(); + } + + private void initRealm() { + RealmConfiguration config = new RealmConfiguration.Builder() + .name("myrealm.realm") // 命名文件名:myrealm.realm + .inMemory() // 一个非持久化的、存在于内存中的 Realm 实例 + .encryptionKey(getKey()) // 数据库加密key + .schemaVersion(2) // 数据库结构版本号 + .modules(new MySchemaModule()) // 数据库结构对象 + .migration(new MyMigration()) // 数据库迁移 + .build(); + Realm.setDefaultConfiguration(config); + } +} +``` +> 1. Realm 实例是线程单例化的,也就是说多次在同一线程调用静态构建器会返回同一 Realm 实例 +2. 使用同样的名称同时创建“内存中的”Realm 和常规的(持久化)Realm 是不允许的 + +### 字段类型 +Realm 支持以下字段类型:`boolean`、`byte`、`short`、`int`、`long`、`float`、`double`、`String`、`Date`和`byte []`。整数类型 `short`、`int` 和 `long` 都被映射到 Realm 内的相同类型(实际上为 `long` )。 + +* @Required修饰类型和空值(null) + >Realm强制禁止空值(null)被存储 + 只有`Boolean`,`Byte`,`Short`,`Integer`,`Long`,`Float`,`Double`,`String`,`byte[]`,`Date`可被修饰 +* @Ignore标识一个字段不应该被保存到 Realm +* @Index为字段增加搜索索引 + > 仅支持索引的属性类型包括:`String`,`byte`,`short`,`int`,`long`,`boolean`和`Date` +* @PrimaryKey + > 必须为字符串(`String`)或整数(`short`,`int`,`long`)以及它们的包装类型(`Short`,`Int`,`Long`) + +### 声明Realm数据模型 + +#### RealmObject +可以把RealmObject 当作POJO使用 + +```java +public class User extends RealmObject { + +} +``` + +#### RealmModel +```java +@RealmClass +public class User implements RealmModel { + +} +``` + +### 关系 + +#### 多对一 +```java +public class Contact extends RealmObject { + private Email email; + // Other fields… +} + +public class Email extends RealmObject { + private String address; + private boolean active; + // ... setters and getters left out +} +``` + +#### 多对多 + +```java +public class Contact extends RealmObject { + public String name; + public RealmList emails; +} + +public class Email extends RealmObject { + public String address; + public boolean active; +} +``` + +### CRUD +* 所有的写操作(添加、修改和删除对象),必须包含在写入事务(transaction)中 +* 在提交期间,所有更改都将被写入磁盘,并且,只有当所有更改可以被持久化时,提交才会成功。通过取消一个写入事务,所有更改将被丢弃。 +* 益于 Realm 的 MVCC 架构,当正在进行一个写入事务时读取操作并不会被阻塞!这意味着,除非你需要从多个线程进行并发写入操作,否则,你可以尽量使用更大的写入事务来做更多的事情而不是使用多个更小的写入事务。 + +#### 增 +* +* 事务执行 +```java +Realm realm = Realm.getDefaultInstance(); +realm.executeTransaction(new Realm.Transaction() { + @Override + public void execute(Realm realm) { + User user = realm.createObject(User.class); + user.setName("John"); + user.setEmail("john@corporation.com"); + } +}); +``` +* 异步事务 +```java +Realm realm = Realm.getDefaultInstance(); +realm.executeTransactionAsync(new Realm.Transaction() { + @Override + public void execute(Realm bgRealm) { + User user = bgRealm.createObject(User.class); + user.setName("John"); + user.setEmail("john@corporation.com"); + } +}, new Realm.Transaction.OnSuccess() { + @Override + public void onSuccess() { + // Transaction was a success. + } +}, new Realm.Transaction.OnError() { + @Override + public void onError(Throwable error) { + // Transaction failed and was automatically canceled. + } +}); +``` + +>OnSuccess 和 OnError 并不是必须重载的,重载了的回调函数会在事务成功或者失败时在被调用发生的线程执行。 +#### 删 + +#### 改 + +#### 查 + +## Realm进阶 + +## Realm云 diff --git a/source/categories/index.md b/source/categories/index.md new file mode 100644 index 000000000..59c437dcc --- /dev/null +++ b/source/categories/index.md @@ -0,0 +1,5 @@ +--- +title: categories +type: categories +date: 2018-03-24 22:38:58 +--- diff --git a/source/tags/index.md b/source/tags/index.md new file mode 100644 index 000000000..65144235c --- /dev/null +++ b/source/tags/index.md @@ -0,0 +1,5 @@ +--- +title: tags +type: tags +date: 2018-03-24 22:36:28 +--- diff --git a/themes/next b/themes/next new file mode 160000 index 000000000..2dd686ad2 --- /dev/null +++ b/themes/next @@ -0,0 +1 @@ +Subproject commit 2dd686ad206c0d2bde1272e7695ddb4a9413e730 From 68afddfefaea93494df52d47f3b37d657b2d1d88 Mon Sep 17 00:00:00 2001 From: Jerry xu Date: Thu, 3 May 2018 17:51:40 +0800 Subject: [PATCH 004/163] delete landscape --- themes/landscape/.gitignore | 3 - themes/landscape/Gruntfile.js | 46 - themes/landscape/LICENSE | 7 - themes/landscape/README.md | 112 - themes/landscape/_config.yml | 37 - themes/landscape/languages/de.yml | 19 - themes/landscape/languages/default.yml | 19 - themes/landscape/languages/es.yml | 19 - themes/landscape/languages/fr.yml | 19 - themes/landscape/languages/ja.yml | 19 - themes/landscape/languages/ko.yml | 19 - themes/landscape/languages/nl.yml | 20 - themes/landscape/languages/no.yml | 19 - themes/landscape/languages/pt.yml | 19 - themes/landscape/languages/ru.yml | 19 - themes/landscape/languages/zh-CN.yml | 19 - themes/landscape/languages/zh-TW.yml | 19 - .../layout/_partial/after-footer.ejs | 25 - .../layout/_partial/archive-post.ejs | 8 - themes/landscape/layout/_partial/archive.ejs | 34 - themes/landscape/layout/_partial/article.ejs | 44 - themes/landscape/layout/_partial/footer.ejs | 11 - .../layout/_partial/gauges-analytics.ejs | 18 - .../layout/_partial/google-analytics.ejs | 14 - themes/landscape/layout/_partial/head.ejs | 36 - themes/landscape/layout/_partial/header.ejs | 32 - .../landscape/layout/_partial/mobile-nav.ejs | 5 - .../layout/_partial/post/category.ejs | 10 - .../landscape/layout/_partial/post/date.ejs | 3 - .../layout/_partial/post/gallery.ejs | 11 - themes/landscape/layout/_partial/post/nav.ejs | 22 - themes/landscape/layout/_partial/post/tag.ejs | 6 - .../landscape/layout/_partial/post/title.ejs | 15 - themes/landscape/layout/_partial/sidebar.ejs | 5 - themes/landscape/layout/_widget/archive.ejs | 8 - themes/landscape/layout/_widget/category.ejs | 8 - .../landscape/layout/_widget/recent_posts.ejs | 14 - themes/landscape/layout/_widget/tag.ejs | 8 - themes/landscape/layout/_widget/tagcloud.ejs | 8 - themes/landscape/layout/archive.ejs | 1 - themes/landscape/layout/category.ejs | 1 - themes/landscape/layout/index.ejs | 1 - themes/landscape/layout/layout.ejs | 18 - themes/landscape/layout/page.ejs | 1 - themes/landscape/layout/post.ejs | 1 - themes/landscape/layout/tag.ejs | 1 - themes/landscape/package.json | 12 - themes/landscape/scripts/fancybox.js | 24 - themes/landscape/source/css/_extend.styl | 63 - .../source/css/_partial/archive.styl | 80 - .../source/css/_partial/article.styl | 357 --- .../source/css/_partial/comment.styl | 9 - .../landscape/source/css/_partial/footer.styl | 14 - .../landscape/source/css/_partial/header.styl | 165 -- .../source/css/_partial/highlight.styl | 158 -- .../landscape/source/css/_partial/mobile.styl | 19 - .../source/css/_partial/sidebar-aside.styl | 27 - .../source/css/_partial/sidebar-bottom.styl | 27 - .../source/css/_partial/sidebar.styl | 35 - themes/landscape/source/css/_util/grid.styl | 38 - themes/landscape/source/css/_util/mixin.styl | 31 - themes/landscape/source/css/_variables.styl | 63 - .../source/css/fonts/FontAwesome.otf | Bin 62856 -> 0 bytes .../source/css/fonts/fontawesome-webfont.eot | Bin 38205 -> 0 bytes .../source/css/fonts/fontawesome-webfont.svg | 414 ---- .../source/css/fonts/fontawesome-webfont.ttf | Bin 80652 -> 0 bytes .../source/css/fonts/fontawesome-webfont.woff | Bin 44432 -> 0 bytes themes/landscape/source/css/images/banner.jpg | Bin 224710 -> 0 bytes themes/landscape/source/css/style.styl | 89 - themes/landscape/source/fancybox/blank.gif | Bin 43 -> 0 bytes .../source/fancybox/fancybox_loading.gif | Bin 6567 -> 0 bytes .../source/fancybox/fancybox_loading@2x.gif | Bin 13984 -> 0 bytes .../source/fancybox/fancybox_overlay.png | Bin 1003 -> 0 bytes .../source/fancybox/fancybox_sprite.png | Bin 1362 -> 0 bytes .../source/fancybox/fancybox_sprite@2x.png | Bin 6553 -> 0 bytes .../fancybox/helpers/fancybox_buttons.png | Bin 1080 -> 0 bytes .../helpers/jquery.fancybox-buttons.css | 97 - .../helpers/jquery.fancybox-buttons.js | 122 - .../fancybox/helpers/jquery.fancybox-media.js | 199 -- .../helpers/jquery.fancybox-thumbs.css | 55 - .../helpers/jquery.fancybox-thumbs.js | 165 -- .../source/fancybox/jquery.fancybox.css | 273 --- .../source/fancybox/jquery.fancybox.js | 2017 ----------------- .../source/fancybox/jquery.fancybox.pack.js | 46 - themes/landscape/source/js/script.js | 137 -- 85 files changed, 5539 deletions(-) delete mode 100644 themes/landscape/.gitignore delete mode 100644 themes/landscape/Gruntfile.js delete mode 100644 themes/landscape/LICENSE delete mode 100644 themes/landscape/README.md delete mode 100644 themes/landscape/_config.yml delete mode 100644 themes/landscape/languages/de.yml delete mode 100644 themes/landscape/languages/default.yml delete mode 100644 themes/landscape/languages/es.yml delete mode 100644 themes/landscape/languages/fr.yml delete mode 100644 themes/landscape/languages/ja.yml delete mode 100644 themes/landscape/languages/ko.yml delete mode 100644 themes/landscape/languages/nl.yml delete mode 100644 themes/landscape/languages/no.yml delete mode 100644 themes/landscape/languages/pt.yml delete mode 100644 themes/landscape/languages/ru.yml delete mode 100644 themes/landscape/languages/zh-CN.yml delete mode 100644 themes/landscape/languages/zh-TW.yml delete mode 100644 themes/landscape/layout/_partial/after-footer.ejs delete mode 100644 themes/landscape/layout/_partial/archive-post.ejs delete mode 100644 themes/landscape/layout/_partial/archive.ejs delete mode 100644 themes/landscape/layout/_partial/article.ejs delete mode 100644 themes/landscape/layout/_partial/footer.ejs delete mode 100644 themes/landscape/layout/_partial/gauges-analytics.ejs delete mode 100644 themes/landscape/layout/_partial/google-analytics.ejs delete mode 100644 themes/landscape/layout/_partial/head.ejs delete mode 100644 themes/landscape/layout/_partial/header.ejs delete mode 100644 themes/landscape/layout/_partial/mobile-nav.ejs delete mode 100644 themes/landscape/layout/_partial/post/category.ejs delete mode 100644 themes/landscape/layout/_partial/post/date.ejs delete mode 100644 themes/landscape/layout/_partial/post/gallery.ejs delete mode 100644 themes/landscape/layout/_partial/post/nav.ejs delete mode 100644 themes/landscape/layout/_partial/post/tag.ejs delete mode 100644 themes/landscape/layout/_partial/post/title.ejs delete mode 100644 themes/landscape/layout/_partial/sidebar.ejs delete mode 100644 themes/landscape/layout/_widget/archive.ejs delete mode 100644 themes/landscape/layout/_widget/category.ejs delete mode 100644 themes/landscape/layout/_widget/recent_posts.ejs delete mode 100644 themes/landscape/layout/_widget/tag.ejs delete mode 100644 themes/landscape/layout/_widget/tagcloud.ejs delete mode 100644 themes/landscape/layout/archive.ejs delete mode 100644 themes/landscape/layout/category.ejs delete mode 100644 themes/landscape/layout/index.ejs delete mode 100644 themes/landscape/layout/layout.ejs delete mode 100644 themes/landscape/layout/page.ejs delete mode 100644 themes/landscape/layout/post.ejs delete mode 100644 themes/landscape/layout/tag.ejs delete mode 100644 themes/landscape/package.json delete mode 100644 themes/landscape/scripts/fancybox.js delete mode 100644 themes/landscape/source/css/_extend.styl delete mode 100644 themes/landscape/source/css/_partial/archive.styl delete mode 100644 themes/landscape/source/css/_partial/article.styl delete mode 100644 themes/landscape/source/css/_partial/comment.styl delete mode 100644 themes/landscape/source/css/_partial/footer.styl delete mode 100644 themes/landscape/source/css/_partial/header.styl delete mode 100644 themes/landscape/source/css/_partial/highlight.styl delete mode 100644 themes/landscape/source/css/_partial/mobile.styl delete mode 100644 themes/landscape/source/css/_partial/sidebar-aside.styl delete mode 100644 themes/landscape/source/css/_partial/sidebar-bottom.styl delete mode 100644 themes/landscape/source/css/_partial/sidebar.styl delete mode 100644 themes/landscape/source/css/_util/grid.styl delete mode 100644 themes/landscape/source/css/_util/mixin.styl delete mode 100644 themes/landscape/source/css/_variables.styl delete mode 100644 themes/landscape/source/css/fonts/FontAwesome.otf delete mode 100644 themes/landscape/source/css/fonts/fontawesome-webfont.eot delete mode 100644 themes/landscape/source/css/fonts/fontawesome-webfont.svg delete mode 100644 themes/landscape/source/css/fonts/fontawesome-webfont.ttf delete mode 100644 themes/landscape/source/css/fonts/fontawesome-webfont.woff delete mode 100644 themes/landscape/source/css/images/banner.jpg delete mode 100644 themes/landscape/source/css/style.styl delete mode 100644 themes/landscape/source/fancybox/blank.gif delete mode 100644 themes/landscape/source/fancybox/fancybox_loading.gif delete mode 100644 themes/landscape/source/fancybox/fancybox_loading@2x.gif delete mode 100644 themes/landscape/source/fancybox/fancybox_overlay.png delete mode 100644 themes/landscape/source/fancybox/fancybox_sprite.png delete mode 100644 themes/landscape/source/fancybox/fancybox_sprite@2x.png delete mode 100644 themes/landscape/source/fancybox/helpers/fancybox_buttons.png delete mode 100644 themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.css delete mode 100644 themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.js delete mode 100644 themes/landscape/source/fancybox/helpers/jquery.fancybox-media.js delete mode 100644 themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.css delete mode 100644 themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.js delete mode 100644 themes/landscape/source/fancybox/jquery.fancybox.css delete mode 100644 themes/landscape/source/fancybox/jquery.fancybox.js delete mode 100644 themes/landscape/source/fancybox/jquery.fancybox.pack.js delete mode 100644 themes/landscape/source/js/script.js diff --git a/themes/landscape/.gitignore b/themes/landscape/.gitignore deleted file mode 100644 index 6e3a08a1a..000000000 --- a/themes/landscape/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store -node_modules -tmp \ No newline at end of file diff --git a/themes/landscape/Gruntfile.js b/themes/landscape/Gruntfile.js deleted file mode 100644 index 59fd5df35..000000000 --- a/themes/landscape/Gruntfile.js +++ /dev/null @@ -1,46 +0,0 @@ -module.exports = function(grunt){ - grunt.initConfig({ - gitclone: { - fontawesome: { - options: { - repository: 'https://github.com/FortAwesome/Font-Awesome.git', - directory: 'tmp/fontawesome' - }, - }, - fancybox: { - options: { - repository: 'https://github.com/fancyapps/fancyBox.git', - directory: 'tmp/fancybox' - } - } - }, - copy: { - fontawesome: { - expand: true, - cwd: 'tmp/fontawesome/fonts/', - src: ['**'], - dest: 'source/css/fonts/' - }, - fancybox: { - expand: true, - cwd: 'tmp/fancybox/source/', - src: ['**'], - dest: 'source/fancybox/' - } - }, - _clean: { - tmp: ['tmp'], - fontawesome: ['source/css/fonts'], - fancybox: ['source/fancybox'] - } - }); - - require('load-grunt-tasks')(grunt); - - grunt.renameTask('clean', '_clean'); - - grunt.registerTask('fontawesome', ['gitclone:fontawesome', 'copy:fontawesome', '_clean:tmp']); - grunt.registerTask('fancybox', ['gitclone:fancybox', 'copy:fancybox', '_clean:tmp']); - grunt.registerTask('default', ['gitclone', 'copy', '_clean:tmp']); - grunt.registerTask('clean', ['_clean']); -}; \ No newline at end of file diff --git a/themes/landscape/LICENSE b/themes/landscape/LICENSE deleted file mode 100644 index 9ce4d329b..000000000 --- a/themes/landscape/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -Copyright (c) 2013 Tommy Chen - -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. \ No newline at end of file diff --git a/themes/landscape/README.md b/themes/landscape/README.md deleted file mode 100644 index 90ecccd0a..000000000 --- a/themes/landscape/README.md +++ /dev/null @@ -1,112 +0,0 @@ -# Landscape - -A brand new default theme for [Hexo]. - -- [Preview](http://hexo.io/hexo-theme-landscape/) - -## Installation - -### Install - -``` bash -$ git clone https://github.com/hexojs/hexo-theme-landscape.git themes/landscape -``` - -**Landscape requires Hexo 2.4 and above.** If you would like to enable the RSS, the [hexo-generate-feed] plugin is also required. - -### Enable - -Modify `theme` setting in `_config.yml` to `landscape`. - -### Update - -``` bash -cd themes/landscape -git pull -``` - -## Configuration - -``` yml -# Header -menu: - Home: / - Archives: /archives -rss: /atom.xml - -# Content -excerpt_link: Read More -fancybox: true - -# Sidebar -sidebar: right -widgets: -- category -- tag -- tagcloud -- archives -- recent_posts - -# Miscellaneous -google_analytics: -favicon: /favicon.png -twitter: -google_plus: -``` - -- **menu** - Navigation menu -- **rss** - RSS link -- **excerpt_link** - "Read More" link at the bottom of excerpted articles. `false` to hide the link. -- **fancybox** - Enable [Fancybox] -- **sidebar** - Sidebar style. You can choose `left`, `right`, `bottom` or `false`. -- **widgets** - Widgets displaying in sidebar -- **google_analytics** - Google Analytics ID -- **favicon** - Favicon path -- **twitter** - Twiiter ID -- **google_plus** - Google+ ID - -## Features - -### Fancybox - -Landscape uses [Fancybox] to showcase your photos. You can use Markdown syntax or fancybox tag plugin to add your photos. - -``` -![img caption](img url) - -{% fancybox img_url [img_thumbnail] [img_caption] %} -``` - -### Sidebar - -You can put your sidebar in left side, right side or bottom of your site by editing `sidebar` setting. - -Landscape provides 5 built-in widgets: - -- category -- tag -- tagcloud -- archives -- recent_posts - -All of them are enabled by default. You can edit them in `widget` setting. - -## Development - -### Requirements - -- [Grunt] 0.4+ -- Hexo 2.4+ - -### Grunt tasks - -- **default** - Download [Fancybox] and [Font Awesome]. -- **fontawesome** - Only download [Font Awesome]. -- **fancybox** - Only download [Fancybox]. -- **clean** - Clean temporarily files and downloaded files. - -[Hexo]: https://hexo.io/ -[Fancybox]: http://fancyapps.com/fancybox/ -[Font Awesome]: http://fontawesome.io/ -[Grunt]: http://gruntjs.com/ -[hexo-generate-feed]: https://github.com/hexojs/hexo-generator-feed diff --git a/themes/landscape/_config.yml b/themes/landscape/_config.yml deleted file mode 100644 index ca223747c..000000000 --- a/themes/landscape/_config.yml +++ /dev/null @@ -1,37 +0,0 @@ -# Header -menu: - Home: / - Archives: /archives -rss: /atom.xml - -# Content -excerpt_link: Read More -fancybox: true - -# Sidebar -sidebar: right -widgets: -- category -- tag -- tagcloud -- archive -- recent_posts - -# display widgets at the bottom of index pages (pagination == 2) -index_widgets: -# - category -# - tagcloud -# - archive - -# widget behavior -archive_type: 'monthly' -show_count: false - -# Miscellaneous -google_analytics: -gauges_analytics: -favicon: /favicon.png -twitter: -google_plus: -fb_admins: -fb_app_id: diff --git a/themes/landscape/languages/de.yml b/themes/landscape/languages/de.yml deleted file mode 100644 index 630055f5b..000000000 --- a/themes/landscape/languages/de.yml +++ /dev/null @@ -1,19 +0,0 @@ -categories: Kategorien -search: Suche -tags: Tags -tagcloud: Tag Cloud -tweets: Tweets -prev: zurück -next: weiter -comment: Kommentare -archive_a: Archiv -archive_b: "Archive: %s" -page: Seite %d -recent_posts: letzter Beitrag -newer: Neuer -older: Älter -share: Teilen -powered_by: Powered by -rss_feed: RSS Feed -category: Kategorie -tag: Tag diff --git a/themes/landscape/languages/default.yml b/themes/landscape/languages/default.yml deleted file mode 100644 index 3ef7e921c..000000000 --- a/themes/landscape/languages/default.yml +++ /dev/null @@ -1,19 +0,0 @@ -categories: Categories -search: Search -tags: Tags -tagcloud: Tag Cloud -tweets: Tweets -prev: Prev -next: Next -comment: Comments -archive_a: Archives -archive_b: "Archives: %s" -page: Page %d -recent_posts: Recent Posts -newer: Newer -older: Older -share: Share -powered_by: Powered by -rss_feed: RSS Feed -category: Category -tag: Tag \ No newline at end of file diff --git a/themes/landscape/languages/es.yml b/themes/landscape/languages/es.yml deleted file mode 100644 index d862e8798..000000000 --- a/themes/landscape/languages/es.yml +++ /dev/null @@ -1,19 +0,0 @@ -categories: Categorías -search: Buscar -tags: Tags -tagcloud: Nube de Tags -tweets: Tweets -prev: Previo -next: Siguiente -comment: Comentarios -archive_a: Archivos -archive_b: "Archivos: %s" -page: Página %d -recent_posts: Posts recientes -newer: Nuevo -older: Viejo -share: Compartir -powered_by: Construido por -rss_feed: RSS -category: Categoría -tag: Tag \ No newline at end of file diff --git a/themes/landscape/languages/fr.yml b/themes/landscape/languages/fr.yml deleted file mode 100644 index c84f51b1e..000000000 --- a/themes/landscape/languages/fr.yml +++ /dev/null @@ -1,19 +0,0 @@ -categories: Catégories -search: Rechercher -tags: Mot-clés -tagcloud: Nuage de mot-clés -tweets: Tweets -prev: Précédent -next: Suivant -comment: Commentaires -archive_a: Archives -archive_b: "Archives: %s" -page: Page %d -recent_posts: Articles récents -newer: Récent -older: Ancien -share: Partager -powered_by: Propulsé par -rss_feed: Flux RSS -category: Catégorie -tag: Mot-clé diff --git a/themes/landscape/languages/ja.yml b/themes/landscape/languages/ja.yml deleted file mode 100644 index af0f7fedf..000000000 --- a/themes/landscape/languages/ja.yml +++ /dev/null @@ -1,19 +0,0 @@ -categories: カテゴリ -search: 検索 -tags: タグ -tagcloud: タグクラウド -tweets: ツイート -prev: 戻る -next: 次へ -comment: コメント -archive_a: アーカイブ -archive_b: "アーカイブ: %s" -page: ページ %d -recent_posts: 最近の投稿 -newer: 次の記事 -older: 前の記事 -share: 共有 -powered_by: Powered by -rss_feed: RSSフィード -category: カテゴリ -tag: タグ diff --git a/themes/landscape/languages/ko.yml b/themes/landscape/languages/ko.yml deleted file mode 100644 index 1d27b43f7..000000000 --- a/themes/landscape/languages/ko.yml +++ /dev/null @@ -1,19 +0,0 @@ -categories: 카테고리 -search: 검색 -tags: 태그 -tagcloud: 태그 클라우드 -tweets: 트윗 -prev: 이전 -next: 다음 -comment: 댓글 -archive_a: 아카이브 -archive_b: "아카이브: %s" -page: 페이지 %d -recent_posts: 최근 포스트 -newer: 최신 -older: 이전 -share: 공유 -powered_by: Powered by -rss_feed: RSS Feed -category: 카테고리 -tag: 태그 diff --git a/themes/landscape/languages/nl.yml b/themes/landscape/languages/nl.yml deleted file mode 100644 index 568d33eb7..000000000 --- a/themes/landscape/languages/nl.yml +++ /dev/null @@ -1,20 +0,0 @@ - -categories: Categorieën -search: Zoeken -tags: Labels -tagcloud: Tag Cloud -tweets: Tweets -prev: Vorige -next: Volgende -comment: Commentaren -archive_a: Archieven -archive_b: "Archieven: %s" -page: Pagina %d -recent_posts: Recente berichten -newer: Nieuwer -older: Ouder -share: Delen -powered_by: Powered by -rss_feed: RSS Feed -category: Categorie -tag: Label diff --git a/themes/landscape/languages/no.yml b/themes/landscape/languages/no.yml deleted file mode 100644 index b997691c4..000000000 --- a/themes/landscape/languages/no.yml +++ /dev/null @@ -1,19 +0,0 @@ -categories: Kategorier -search: Søk -tags: Tags -tagcloud: Tag Cloud -tweets: Tweets -prev: Forrige -next: Neste -comment: Kommentarer -archive_a: Arkiv -archive_b: "Arkiv: %s" -page: Side %d -recent_posts: Siste innlegg -newer: Newer -older: Older -share: Share -powered_by: Powered by -rss_feed: RSS Feed -category: Category -tag: Tag \ No newline at end of file diff --git a/themes/landscape/languages/pt.yml b/themes/landscape/languages/pt.yml deleted file mode 100644 index 3d74af326..000000000 --- a/themes/landscape/languages/pt.yml +++ /dev/null @@ -1,19 +0,0 @@ -categories: Categorias -search: Buscar -tags: Tags -tagcloud: Nuvem de Tags -tweets: Tweets -prev: Anterior -next: Próximo -comment: Comentários -archive_a: Arquivos -archive_b: "Arquivos: %s" -page: Página %d -recent_posts: Postagens Recentes -newer: Mais Recente -older: Mais Antigo -share: Compartilhar -powered_by: Desenvolvido por -rss_feed: Feed RSS -category: Categoria -tag: Tag diff --git a/themes/landscape/languages/ru.yml b/themes/landscape/languages/ru.yml deleted file mode 100644 index 625a83c2a..000000000 --- a/themes/landscape/languages/ru.yml +++ /dev/null @@ -1,19 +0,0 @@ -categories: Категории -search: Поиск -tags: Метки -tagcloud: Облако меток -tweets: Твиты -prev: Назад -next: Вперед -comment: Комментарии -archive_a: Архив -archive_b: "Архив: %s" -page: Страница %d -recent_posts: Недавние записи -newer: Следующий -older: Предыдущий -share: Поделиться -powered_by: Создано с помощью -rss_feed: RSS-каналы -category: Категория -tag: Метка \ No newline at end of file diff --git a/themes/landscape/languages/zh-CN.yml b/themes/landscape/languages/zh-CN.yml deleted file mode 100644 index 51e13212e..000000000 --- a/themes/landscape/languages/zh-CN.yml +++ /dev/null @@ -1,19 +0,0 @@ -categories: 分类 -search: 搜索 -tags: 标签 -tagcloud: 标签云 -tweets: 推文 -prev: 上一页 -next: 下一页 -comment: 留言 -archive_a: 归档 -archive_b: 归档:%s -page: 第 %d 页 -recent_posts: 最新文章 -newer: Newer -older: Older -share: Share -powered_by: Powered by -rss_feed: RSS Feed -category: Category -tag: Tag \ No newline at end of file diff --git a/themes/landscape/languages/zh-TW.yml b/themes/landscape/languages/zh-TW.yml deleted file mode 100644 index 76d291619..000000000 --- a/themes/landscape/languages/zh-TW.yml +++ /dev/null @@ -1,19 +0,0 @@ -categories: 分類 -search: 搜尋 -tags: 標籤 -tagcloud: 標籤雲 -tweets: 推文 -prev: 上一頁 -next: 下一頁 -comment: 留言 -archive_a: 彙整 -archive_b: 彙整:%s -page: 第 %d 頁 -recent_posts: 最新文章 -newer: Newer -older: Older -share: Share -powered_by: Powered by -rss_feed: RSS Feed -category: Category -tag: Tag \ No newline at end of file diff --git a/themes/landscape/layout/_partial/after-footer.ejs b/themes/landscape/layout/_partial/after-footer.ejs deleted file mode 100644 index ff2d509be..000000000 --- a/themes/landscape/layout/_partial/after-footer.ejs +++ /dev/null @@ -1,25 +0,0 @@ -<% if (config.disqus_shortname){ %> - -<% } %> - - - -<% if (theme.fancybox){ %> - <%- css('fancybox/jquery.fancybox') %> - <%- js('fancybox/jquery.fancybox.pack') %> -<% } %> - -<%- js('js/script') %> -<%- partial('gauges-analytics') %> diff --git a/themes/landscape/layout/_partial/archive-post.ejs b/themes/landscape/layout/_partial/archive-post.ejs deleted file mode 100644 index 36f2cc31f..000000000 --- a/themes/landscape/layout/_partial/archive-post.ejs +++ /dev/null @@ -1,8 +0,0 @@ -
    -
    -
    - <%- partial('post/date', {class_name: 'archive-article-date', date_format: 'MMM D'}) %> - <%- partial('post/title', {class_name: 'archive-article-title'}) %> -
    -
    -
    \ No newline at end of file diff --git a/themes/landscape/layout/_partial/archive.ejs b/themes/landscape/layout/_partial/archive.ejs deleted file mode 100644 index 9da934a3c..000000000 --- a/themes/landscape/layout/_partial/archive.ejs +++ /dev/null @@ -1,34 +0,0 @@ -<% if (pagination == 2){ %> - <% page.posts.each(function(post){ %> - <%- partial('article', {post: post, index: true}) %> - <% }) %> -<% } else { %> - <% var last; %> - <% page.posts.each(function(post, i){ %> - <% var year = post.date.year(); %> - <% if (last != year){ %> - <% if (last != null){ %> -
    - <% } %> - <% last = year; %> -
    - -
    - <% } %> - <%- partial('archive-post', {post: post, even: i % 2 == 0}) %> - <% }) %> - <% if (page.posts.length){ %> -
    - <% } %> -<% } %> -<% if (page.total > 1){ %> - -<% } %> diff --git a/themes/landscape/layout/_partial/article.ejs b/themes/landscape/layout/_partial/article.ejs deleted file mode 100644 index 0f951a902..000000000 --- a/themes/landscape/layout/_partial/article.ejs +++ /dev/null @@ -1,44 +0,0 @@ -
    - -
    - <%- partial('post/gallery') %> - <% if (post.link || post.title){ %> -
    - <%- partial('post/title', {class_name: 'article-title'}) %> -
    - <% } %> -
    - <% if (post.excerpt && index){ %> - <%- post.excerpt %> - <% if (theme.excerpt_link){ %> -

    - <%= theme.excerpt_link %> -

    - <% } %> - <% } else { %> - <%- post.content %> - <% } %> -
    - -
    - <% if (!index){ %> - <%- partial('post/nav') %> - <% } %> -
    - -<% if (!index && post.comments && config.disqus_shortname){ %> -
    -
    - -
    -
    -<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/_partial/footer.ejs b/themes/landscape/layout/_partial/footer.ejs deleted file mode 100644 index 3aca6187d..000000000 --- a/themes/landscape/layout/_partial/footer.ejs +++ /dev/null @@ -1,11 +0,0 @@ -
    - <% if (theme.sidebar === 'bottom'){ %> - <%- partial('_partial/sidebar') %> - <% } %> -
    - -
    -
    \ No newline at end of file diff --git a/themes/landscape/layout/_partial/gauges-analytics.ejs b/themes/landscape/layout/_partial/gauges-analytics.ejs deleted file mode 100644 index d64be389f..000000000 --- a/themes/landscape/layout/_partial/gauges-analytics.ejs +++ /dev/null @@ -1,18 +0,0 @@ -<% if (theme.gauges_analytics){ %> - - - -<% } %> diff --git a/themes/landscape/layout/_partial/google-analytics.ejs b/themes/landscape/layout/_partial/google-analytics.ejs deleted file mode 100644 index 84e75f04f..000000000 --- a/themes/landscape/layout/_partial/google-analytics.ejs +++ /dev/null @@ -1,14 +0,0 @@ -<% if (theme.google_analytics){ %> - - - -<% } %> diff --git a/themes/landscape/layout/_partial/head.ejs b/themes/landscape/layout/_partial/head.ejs deleted file mode 100644 index 43d5f93c8..000000000 --- a/themes/landscape/layout/_partial/head.ejs +++ /dev/null @@ -1,36 +0,0 @@ - - - - - <%- partial('google-analytics') %> - <% - var title = page.title; - - if (is_archive()){ - title = __('archive_a'); - - if (is_month()){ - title += ': ' + page.year + '/' + page.month; - } else if (is_year()){ - title += ': ' + page.year; - } - } else if (is_category()){ - title = __('category') + ': ' + page.category; - } else if (is_tag()){ - title = __('tag') + ': ' + page.tag; - } - %> - <% if (title){ %><%= title %> | <% } %><%= config.title %> - - <%- open_graph({twitter_id: theme.twitter, google_plus: theme.google_plus, fb_admins: theme.fb_admins, fb_app_id: theme.fb_app_id}) %> - <% if (theme.rss){ %> - - <% } %> - <% if (theme.favicon){ %> - - <% } %> - <% if (config.highlight.enable){ %> - - <% } %> - <%- css('css/style') %> - diff --git a/themes/landscape/layout/_partial/header.ejs b/themes/landscape/layout/_partial/header.ejs deleted file mode 100644 index e8a305e3e..000000000 --- a/themes/landscape/layout/_partial/header.ejs +++ /dev/null @@ -1,32 +0,0 @@ - \ No newline at end of file diff --git a/themes/landscape/layout/_partial/mobile-nav.ejs b/themes/landscape/layout/_partial/mobile-nav.ejs deleted file mode 100644 index 7c1d2af1d..000000000 --- a/themes/landscape/layout/_partial/mobile-nav.ejs +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/themes/landscape/layout/_partial/post/category.ejs b/themes/landscape/layout/_partial/post/category.ejs deleted file mode 100644 index db2ed4842..000000000 --- a/themes/landscape/layout/_partial/post/category.ejs +++ /dev/null @@ -1,10 +0,0 @@ -<% if (post.categories && post.categories.length){ %> - -<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/_partial/post/date.ejs b/themes/landscape/layout/_partial/post/date.ejs deleted file mode 100644 index 3f4961367..000000000 --- a/themes/landscape/layout/_partial/post/date.ejs +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/themes/landscape/layout/_partial/post/gallery.ejs b/themes/landscape/layout/_partial/post/gallery.ejs deleted file mode 100644 index 886c8ece4..000000000 --- a/themes/landscape/layout/_partial/post/gallery.ejs +++ /dev/null @@ -1,11 +0,0 @@ -<% if (post.photos && post.photos.length){ %> -
    -
    - <% post.photos.forEach(function(photo, i){ %> - - - - <% }) %> -
    -
    -<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/_partial/post/nav.ejs b/themes/landscape/layout/_partial/post/nav.ejs deleted file mode 100644 index 720798a6f..000000000 --- a/themes/landscape/layout/_partial/post/nav.ejs +++ /dev/null @@ -1,22 +0,0 @@ -<% if (post.prev || post.next){ %> - -<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/_partial/post/tag.ejs b/themes/landscape/layout/_partial/post/tag.ejs deleted file mode 100644 index e0f327f62..000000000 --- a/themes/landscape/layout/_partial/post/tag.ejs +++ /dev/null @@ -1,6 +0,0 @@ -<% if (post.tags && post.tags.length){ %> - <%- list_tags(post.tags, { - show_count: false, - class: 'article-tag' - }) %> -<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/_partial/post/title.ejs b/themes/landscape/layout/_partial/post/title.ejs deleted file mode 100644 index 69d646f93..000000000 --- a/themes/landscape/layout/_partial/post/title.ejs +++ /dev/null @@ -1,15 +0,0 @@ -<% if (post.link){ %> -

    - -

    -<% } else if (post.title){ %> - <% if (index){ %> -

    - <%= post.title %> -

    - <% } else { %> -

    - <%= post.title %> -

    - <% } %> -<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/_partial/sidebar.ejs b/themes/landscape/layout/_partial/sidebar.ejs deleted file mode 100644 index c1e48e53c..000000000 --- a/themes/landscape/layout/_partial/sidebar.ejs +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/themes/landscape/layout/_widget/archive.ejs b/themes/landscape/layout/_widget/archive.ejs deleted file mode 100644 index a20c58cc6..000000000 --- a/themes/landscape/layout/_widget/archive.ejs +++ /dev/null @@ -1,8 +0,0 @@ -<% if (site.posts.length){ %> -
    -

    <%= __('archive_a') %>

    -
    - <%- list_archives({show_count: theme.show_count, type: theme.archive_type}) %> -
    -
    -<% } %> diff --git a/themes/landscape/layout/_widget/category.ejs b/themes/landscape/layout/_widget/category.ejs deleted file mode 100644 index 8d9e5e9ed..000000000 --- a/themes/landscape/layout/_widget/category.ejs +++ /dev/null @@ -1,8 +0,0 @@ -<% if (site.categories.length){ %> -
    -

    <%= __('categories') %>

    -
    - <%- list_categories({show_count: theme.show_count}) %> -
    -
    -<% } %> diff --git a/themes/landscape/layout/_widget/recent_posts.ejs b/themes/landscape/layout/_widget/recent_posts.ejs deleted file mode 100644 index 7a38547db..000000000 --- a/themes/landscape/layout/_widget/recent_posts.ejs +++ /dev/null @@ -1,14 +0,0 @@ -<% if (site.posts.length){ %> -
    -

    <%= __('recent_posts') %>

    -
    - -
    -
    -<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/_widget/tag.ejs b/themes/landscape/layout/_widget/tag.ejs deleted file mode 100644 index ea5fb2c1b..000000000 --- a/themes/landscape/layout/_widget/tag.ejs +++ /dev/null @@ -1,8 +0,0 @@ -<% if (site.tags.length){ %> -
    -

    <%= __('tags') %>

    -
    - <%- list_tags({show_count: theme.show_count}) %> -
    -
    -<% } %> diff --git a/themes/landscape/layout/_widget/tagcloud.ejs b/themes/landscape/layout/_widget/tagcloud.ejs deleted file mode 100644 index 5feb435ab..000000000 --- a/themes/landscape/layout/_widget/tagcloud.ejs +++ /dev/null @@ -1,8 +0,0 @@ -<% if (site.tags.length){ %> -
    -

    <%= __('tagcloud') %>

    -
    - <%- tagcloud() %> -
    -
    -<% } %> \ No newline at end of file diff --git a/themes/landscape/layout/archive.ejs b/themes/landscape/layout/archive.ejs deleted file mode 100644 index 52f9b2105..000000000 --- a/themes/landscape/layout/archive.ejs +++ /dev/null @@ -1 +0,0 @@ -<%- partial('_partial/archive', {pagination: config.archive, index: true}) %> \ No newline at end of file diff --git a/themes/landscape/layout/category.ejs b/themes/landscape/layout/category.ejs deleted file mode 100644 index 3ffe25271..000000000 --- a/themes/landscape/layout/category.ejs +++ /dev/null @@ -1 +0,0 @@ -<%- partial('_partial/archive', {pagination: config.category, index: true}) %> \ No newline at end of file diff --git a/themes/landscape/layout/index.ejs b/themes/landscape/layout/index.ejs deleted file mode 100644 index 60a2c6884..000000000 --- a/themes/landscape/layout/index.ejs +++ /dev/null @@ -1 +0,0 @@ -<%- partial('_partial/archive', {pagination: 2, index: true}) %> \ No newline at end of file diff --git a/themes/landscape/layout/layout.ejs b/themes/landscape/layout/layout.ejs deleted file mode 100644 index cf88daf85..000000000 --- a/themes/landscape/layout/layout.ejs +++ /dev/null @@ -1,18 +0,0 @@ -<%- partial('_partial/head') %> - -
    -
    - <%- partial('_partial/header', null, {cache: !config.relative_link}) %> -
    -
    <%- body %>
    - <% if (theme.sidebar && theme.sidebar !== 'bottom'){ %> - <%- partial('_partial/sidebar', null, {cache: !config.relative_link}) %> - <% } %> -
    - <%- partial('_partial/footer', null, {cache: !config.relative_link}) %> -
    - <%- partial('_partial/mobile-nav', null, {cache: !config.relative_link}) %> - <%- partial('_partial/after-footer') %> -
    - - \ No newline at end of file diff --git a/themes/landscape/layout/page.ejs b/themes/landscape/layout/page.ejs deleted file mode 100644 index bea631879..000000000 --- a/themes/landscape/layout/page.ejs +++ /dev/null @@ -1 +0,0 @@ -<%- partial('_partial/article', {post: page, index: false}) %> \ No newline at end of file diff --git a/themes/landscape/layout/post.ejs b/themes/landscape/layout/post.ejs deleted file mode 100644 index bea631879..000000000 --- a/themes/landscape/layout/post.ejs +++ /dev/null @@ -1 +0,0 @@ -<%- partial('_partial/article', {post: page, index: false}) %> \ No newline at end of file diff --git a/themes/landscape/layout/tag.ejs b/themes/landscape/layout/tag.ejs deleted file mode 100644 index 048cdb0ec..000000000 --- a/themes/landscape/layout/tag.ejs +++ /dev/null @@ -1 +0,0 @@ -<%- partial('_partial/archive', {pagination: config.tag, index: true}) %> \ No newline at end of file diff --git a/themes/landscape/package.json b/themes/landscape/package.json deleted file mode 100644 index ac0df3d7f..000000000 --- a/themes/landscape/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "hexo-theme-landscape", - "version": "0.0.2", - "private": true, - "devDependencies": { - "grunt": "~0.4.2", - "load-grunt-tasks": "~0.2.0", - "grunt-git": "~0.2.2", - "grunt-contrib-clean": "~0.5.0", - "grunt-contrib-copy": "~0.4.1" - } -} diff --git a/themes/landscape/scripts/fancybox.js b/themes/landscape/scripts/fancybox.js deleted file mode 100644 index 83f1fdc32..000000000 --- a/themes/landscape/scripts/fancybox.js +++ /dev/null @@ -1,24 +0,0 @@ -var rUrl = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[.\!\/\\w]*))?)/; - -/** -* Fancybox tag -* -* Syntax: -* {% fancybox /path/to/image [/path/to/thumbnail] [title] %} -*/ - -hexo.extend.tag.register('fancybox', function(args){ - var original = args.shift(), - thumbnail = ''; - - if (args.length && rUrl.test(args[0])){ - thumbnail = args.shift(); - } - - var title = args.join(' '); - - return '' + - '' + title + '' - '' + - (title ? '' + title + '' : ''); -}); \ No newline at end of file diff --git a/themes/landscape/source/css/_extend.styl b/themes/landscape/source/css/_extend.styl deleted file mode 100644 index 96a181799..000000000 --- a/themes/landscape/source/css/_extend.styl +++ /dev/null @@ -1,63 +0,0 @@ -$block-caption - text-decoration: none - text-transform: uppercase - letter-spacing: 2px - color: color-grey - margin-bottom: 1em - margin-left: 5px - line-height: 1em - text-shadow: 0 1px #fff - font-weight: bold - -$block - background: #fff - box-shadow: 1px 2px 3px #ddd - border: 1px solid color-border - border-radius: 3px - -$base-style - h1 - font-size: 2em - h2 - font-size: 1.5em - h3 - font-size: 1.3em - h4 - font-size: 1.2em - h5 - font-size: 1em - h6 - font-size: 1em - color: color-grey - hr - border: 1px dashed color-border - strong - font-weight: bold - em, cite - font-style: italic - sup, sub - font-size: 0.75em - line-height: 0 - position: relative - vertical-align: baseline - sup - top: -0.5em - sub - bottom: -0.2em - small - font-size: 0.85em - acronym, abbr - border-bottom: 1px dotted - ul, ol, dl - margin: 0 20px - line-height: line-height - ul, ol - ul, ol - margin-top: 0 - margin-bottom: 0 - ul - list-style: disc - ol - list-style: decimal - dt - font-weight: bold \ No newline at end of file diff --git a/themes/landscape/source/css/_partial/archive.styl b/themes/landscape/source/css/_partial/archive.styl deleted file mode 100644 index 90ef0531e..000000000 --- a/themes/landscape/source/css/_partial/archive.styl +++ /dev/null @@ -1,80 +0,0 @@ -.archives-wrap - margin: block-margin 0 - -.archives - clearfix() - -.archive-year-wrap - margin-bottom: 1em - -.archive-year - @extend $block-caption - -.archives - column-gap: 10px - @media mq-tablet - column-count: 2 - @media mq-normal - column-count: 3 - -.archive-article - avoid-column-break() - -.archive-article-inner - @extend $block - padding: 10px - margin-bottom: 15px - -.archive-article-title - text-decoration: none - font-weight: bold - color: color-default - transition: color 0.2s - line-height: line-height - &:hover - color: color-link - -.archive-article-footer - margin-top: 1em - -.archive-article-date - color: color-grey - text-decoration: none - font-size: 0.85em - line-height: 1em - margin-bottom: 0.5em - display: block - -#page-nav - clearfix() - margin: block-margin auto - background: #fff - box-shadow: 1px 2px 3px #ddd - border: 1px solid color-border - border-radius: 3px - text-align: center - color: color-grey - overflow: hidden - a, span - padding: 10px 20px - line-height: 1 - height: 2ex - a - color: color-grey - text-decoration: none - &:hover - background: color-grey - color: #fff - .prev - float: left - .next - float: right - .page-number - display: inline-block - @media mq-mobile - display: none - .current - color: color-default - font-weight: bold - .space - color: color-border \ No newline at end of file diff --git a/themes/landscape/source/css/_partial/article.styl b/themes/landscape/source/css/_partial/article.styl deleted file mode 100644 index 46094f9fa..000000000 --- a/themes/landscape/source/css/_partial/article.styl +++ /dev/null @@ -1,357 +0,0 @@ -.article - margin: block-margin 0 - -.article-inner - @extend $block - overflow: hidden - -.article-meta - clearfix() - -.article-date - @extend $block-caption - float: left - -.article-category - float: left - line-height: 1em - color: #ccc - text-shadow: 0 1px #fff - margin-left: 8px - &:before - content: "\2022" - -.article-category-link - @extend $block-caption - margin: 0 12px 1em - -.article-header - padding: article-padding article-padding 0 - -.article-title - text-decoration: none - font-size: 2em - font-weight: bold - color: color-default - line-height: line-height-title - transition: color 0.2s - a&:hover - color: color-link - -.article-entry - @extend $base-style - clearfix() - color: color-default - padding: 0 article-padding - p, table - line-height: line-height - margin: line-height 0 - h1, h2, h3, h4, h5, h6 - font-weight: bold - h1, h2, h3, h4, h5, h6 - line-height: line-height-title - margin: line-height-title 0 - a - color: color-link - text-decoration: none - &:hover - text-decoration: underline - ul, ol, dl - margin-top: line-height - margin-bottom: line-height - img, video - max-width: 100% - height: auto - display: block - margin: auto - iframe - border: none - table - width: 100% - border-collapse: collapse - border-spacing: 0 - th - font-weight: bold - border-bottom: 3px solid color-border - padding-bottom: 0.5em - td - border-bottom: 1px solid color-border - padding: 10px 0 - blockquote - font-family: font-serif - font-size: 1.4em - margin: line-height 20px - text-align: center - footer - font-size: font-size - margin: line-height 0 - font-family: font-sans - cite - &:before - content: "—" - padding: 0 0.5em - .pullquote - text-align: left - width: 45% - margin: 0 - &.left - margin-left: 0.5em - margin-right: 1em - &.right - margin-right: 0.5em - margin-left: 1em - .caption - color: color-grey - display: block - font-size: 0.9em - margin-top: 0.5em - position: relative - text-align: center - // http://webdesignerwall.com/tutorials/css-elastic-videos - .video-container - position: relative - padding-top: (9 / 16 * 100)% // 16:9 ratio - height: 0 - overflow: hidden - iframe, object, embed - position: absolute - top: 0 - left: 0 - width: 100% - height: 100% - margin-top: 0 - -.article-more-link a - display: inline-block - line-height: 1em - padding: 6px 15px - border-radius: 15px - background: color-background - color: color-grey - text-shadow: 0 1px #fff - text-decoration: none - &:hover - background: color-link - color: #fff - text-decoration: none - text-shadow: 0 1px darken(color-link, 20%) - -.article-footer - clearfix() - font-size: 0.85em - line-height: line-height - border-top: 1px solid color-border - padding-top: line-height - margin: 0 article-padding article-padding - a - color: color-grey - text-decoration: none - &:hover - color: color-default - -.article-tag-list-item - float: left - margin-right: 10px - -.article-tag-list-link - &:before - content: "#" - -.article-comment-link - float: right - &:before - content: "\f075" - font-family: font-icon - padding-right: 8px - -.article-share-link - cursor: pointer - float: right - margin-left: 20px - &:before - content: "\f064" - font-family: font-icon - padding-right: 6px - -#article-nav - clearfix() - position: relative - @media mq-normal - margin: block-margin 0 - &:before - absolute-center(8px) - content: "" - border-radius: 50% - background: color-border - box-shadow: 0 1px 2px #fff - -.article-nav-link-wrap - text-decoration: none - text-shadow: 0 1px #fff - color: color-grey - box-sizing: border-box - margin-top: block-margin - text-align: center - display: block - &:hover - color: color-default - @media mq-normal - width: 50% - margin-top: 0 - -#article-nav-newer - @media mq-normal - float: left - text-align: right - padding-right: 20px - -#article-nav-older - @media mq-normal - float: right - text-align: left - padding-left: 20px - -.article-nav-caption - text-transform: uppercase - letter-spacing: 2px - color: color-border - line-height: 1em - font-weight: bold - #article-nav-newer & - margin-right: -2px - -.article-nav-title - font-size: 0.85em - line-height: line-height - margin-top: 0.5em - -.article-share-box - position: absolute - display: none - background: #fff - box-shadow: 1px 2px 10px rgba(0, 0, 0, 0.2) - border-radius: 3px - margin-left: -145px - overflow: hidden - z-index: 1 - &.on - display: block - -.article-share-input - width: 100% - background: none - box-sizing: border-box - font: 14px font-sans - padding: 0 15px - color: color-default - outline: none - border: 1px solid color-border - border-radius: 3px 3px 0 0 - height: 36px - line-height: 36px - -.article-share-links - clearfix() - background: color-background - -$article-share-link - width: 50px - height: 36px - display: block - float: left - position: relative - color: #999 - text-shadow: 0 1px #fff - &:before - font-size: 20px - font-family: font-icon - absolute-center(@font-size) - text-align: center - &:hover - color: #fff - -.article-share-twitter - @extend $article-share-link - &:before - content: "\f099" - &:hover - background: color-twitter - text-shadow: 0 1px darken(color-twitter, 20%) - -.article-share-facebook - @extend $article-share-link - &:before - content: "\f09a" - &:hover - background: color-facebook - text-shadow: 0 1px darken(color-facebook, 20%) - -.article-share-pinterest - @extend $article-share-link - &:before - content: "\f0d2" - &:hover - background: color-pinterest - text-shadow: 0 1px darken(color-pinterest, 20%) - -.article-share-google - @extend $article-share-link - &:before - content: "\f0d5" - &:hover - background: color-google - text-shadow: 0 1px darken(color-google, 20%) - -.article-gallery - background: #000 - position: relative - -.article-gallery-photos - position: relative - overflow: hidden - -.article-gallery-img - display: none - max-width: 100% - &:first-child - display: block - &.loaded - position: absolute - display: block - img - display: block - max-width: 100% - margin: 0 auto -/* -$article-gallery-ctrl - position: absolute - top: 0 - height: 100% - width: 60px - color: #fff - text-shadow: 0 0 3px rgba(0, 0, 0, 0.3) - opacity: 0.3 - transition: opacity 0.2s - cursor: pointer - &:hover - opacity: 0.8 - &:before - font-size: 30px - font-family: font-icon - position: absolute - top: 50% - margin-top: @font-size * -0.5 - -.article-gallery-prev - @extend $article-gallery-ctrl - left: 0 - &:before - content: "\f053" - left: 15px - -.article-gallery-next - @extend $article-gallery-ctrl - right: 0 - &:before - content: "\f054" - right: 15px*/ \ No newline at end of file diff --git a/themes/landscape/source/css/_partial/comment.styl b/themes/landscape/source/css/_partial/comment.styl deleted file mode 100644 index 296b7dd6b..000000000 --- a/themes/landscape/source/css/_partial/comment.styl +++ /dev/null @@ -1,9 +0,0 @@ -#comments - background: #fff - box-shadow: 1px 2px 3px #ddd - padding: article-padding - border: 1px solid color-border - border-radius: 3px - margin: block-margin 0 - a - color: color-link \ No newline at end of file diff --git a/themes/landscape/source/css/_partial/footer.styl b/themes/landscape/source/css/_partial/footer.styl deleted file mode 100644 index fe2fd2462..000000000 --- a/themes/landscape/source/css/_partial/footer.styl +++ /dev/null @@ -1,14 +0,0 @@ -#footer - background: color-footer-background - padding: 50px 0 - border-top: 1px solid color-border - color: color-grey - a - color: color-link - text-decoration: none - &:hover - text-decoration: underline - -#footer-info - line-height: line-height - font-size: 0.85em \ No newline at end of file diff --git a/themes/landscape/source/css/_partial/header.styl b/themes/landscape/source/css/_partial/header.styl deleted file mode 100644 index d18ebc8d5..000000000 --- a/themes/landscape/source/css/_partial/header.styl +++ /dev/null @@ -1,165 +0,0 @@ -#header - height: banner-height - position: relative - border-bottom: 1px solid color-border - &:before, &:after - content: "" - position: absolute - left: 0 - right: 0 - height: 40px - &:before - top: 0 - background: linear-gradient(rgba(0, 0, 0, 0.2), transparent) - &:after - bottom: 0 - background: linear-gradient(transparent, rgba(0, 0, 0, 0.2)) - -#header-outer - height: 100% - position: relative - -#header-inner - position: relative - overflow: hidden - -#banner - position: absolute - top: 0 - left: 0 - width: 100% - height: 100% - background: url(banner-url) center #000 - background-size: cover - z-index: -1 - -#header-title - text-align: center - height: logo-size - position: absolute - top: 50% - left: 0 - margin-top: logo-size * -0.5 - -$logo-text - text-decoration: none - color: #fff - font-weight: 300 - text-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) - -#logo - @extend $logo-text - font-size: logo-size - line-height: logo-size - letter-spacing: 2px - -#subtitle - @extend $logo-text - font-size: subtitle-size - line-height: subtitle-size - letter-spacing: 1px - -#subtitle-wrap - margin-top: subtitle-size - -#main-nav - float: left - margin-left: -15px - -$nav-link - float: left - color: #fff - opacity: 0.6 - text-decoration: none - text-shadow: 0 1px rgba(0, 0, 0, 0.2) - transition: opacity 0.2s - display: block - padding: 20px 15px - &:hover - opacity: 1 - -.nav-icon - @extend $nav-link - font-family: font-icon - text-align: center - font-size: font-size - width: font-size - height: font-size - padding: 20px 15px - position: relative - cursor: pointer - -.main-nav-link - @extend $nav-link - font-weight: 300 - letter-spacing: 1px - @media mq-mobile - display: none - -#main-nav-toggle - display: none - &:before - content: "\f0c9" - @media mq-mobile - display: block - -#sub-nav - float: right - margin-right: -15px - -#nav-rss-link - &:before - content: "\f09e" - -#nav-search-btn - &:before - content: "\f002" - -#search-form-wrap - position: absolute - top: 15px - width: 150px - height: 30px - right: -150px - opacity: 0 - transition: 0.2s ease-out - &.on - opacity: 1 - right: 0 - @media mq-mobile - width: 100% - right: -100% - -.search-form - position: absolute - top: 0 - left: 0 - right: 0 - background: #fff - padding: 5px 15px - border-radius: 15px - box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) - -.search-form-input - border: none - background: none - color: color-default - width: 100% - font: 13px font-sans - outline: none - &::-webkit-search-results-decoration - &::-webkit-search-cancel-button - -webkit-appearance: none - -.search-form-submit - position: absolute - top: 50% - right: 10px - margin-top: -7px - font: 13px font-icon - border: none - background: none - color: #bbb - cursor: pointer - &:hover, &:focus - color: #777 \ No newline at end of file diff --git a/themes/landscape/source/css/_partial/highlight.styl b/themes/landscape/source/css/_partial/highlight.styl deleted file mode 100644 index c932ec3bb..000000000 --- a/themes/landscape/source/css/_partial/highlight.styl +++ /dev/null @@ -1,158 +0,0 @@ -// https://github.com/chriskempson/tomorrow-theme -highlight-background = #2d2d2d -highlight-current-line = #393939 -highlight-selection = #515151 -highlight-foreground = #cccccc -highlight-comment = #999999 -highlight-red = #f2777a -highlight-orange = #f99157 -highlight-yellow = #ffcc66 -highlight-green = #99cc99 -highlight-aqua = #66cccc -highlight-blue = #6699cc -highlight-purple = #cc99cc - -$code-block - background: highlight-background - margin: 0 article-padding * -1 - padding: 15px article-padding - border-style: solid - border-color: color-border - border-width: 1px 0 - overflow: auto - color: highlight-foreground - line-height: font-size * line-height - -$line-numbers - color: #666 - font-size: 0.85em - -.article-entry - pre, code - font-family: font-mono - code - background: color-background - text-shadow: 0 1px #fff - padding: 0 0.3em - pre - @extend $code-block - code - background: none - text-shadow: none - padding: 0 - .highlight - @extend $code-block - pre - border: none - margin: 0 - padding: 0 - table - margin: 0 - width: auto - td - border: none - padding: 0 - figcaption - clearfix() - font-size: 0.85em - color: highlight-comment - line-height: 1em - margin-bottom: 1em - a - float: right - .gutter pre - @extend $line-numbers - text-align: right - padding-right: 20px - .line - height: font-size * line-height - .line.marked - background: highlight-selection - .gist - margin: 0 article-padding * -1 - border-style: solid - border-color: color-border - border-width: 1px 0 - background: highlight-background - padding: 15px article-padding 15px 0 - .gist-file - border: none - font-family: font-mono - margin: 0 - .gist-data - background: none - border: none - .line-numbers - @extend $line-numbers - background: none - border: none - padding: 0 20px 0 0 - .line-data - padding: 0 !important - .highlight - margin: 0 - padding: 0 - border: none - .gist-meta - background: highlight-background - color: highlight-comment - font: 0.85em font-sans - text-shadow: 0 0 - padding: 0 - margin-top: 1em - margin-left: article-padding - a - color: color-link - font-weight: normal - &:hover - text-decoration: underline - -pre - .comment - .title - color: highlight-comment - .variable - .attribute - .tag - .regexp - .ruby .constant - .xml .tag .title - .xml .pi - .xml .doctype - .html .doctype - .css .id - .css .class - .css .pseudo - color: highlight-red - .number - .preprocessor - .built_in - .literal - .params - .constant - color: highlight-orange - .class - .ruby .class .title - .css .rules .attribute - color: highlight-green - .string - .value - .inheritance - .header - .ruby .symbol - .xml .cdata - color: highlight-green - .css .hexcolor - color: highlight-aqua - .function - .python .decorator - .python .title - .ruby .function .title - .ruby .title .keyword - .perl .sub - .javascript .title - .coffeescript .title - color: highlight-blue - .keyword - .javascript .function - color: highlight-purple diff --git a/themes/landscape/source/css/_partial/mobile.styl b/themes/landscape/source/css/_partial/mobile.styl deleted file mode 100644 index eb68b3a2d..000000000 --- a/themes/landscape/source/css/_partial/mobile.styl +++ /dev/null @@ -1,19 +0,0 @@ -@media mq-mobile - #mobile-nav - position: absolute - top: 0 - left: 0 - width: mobile-nav-width - height: 100% - background: color-mobile-nav-background - border-right: 1px solid #fff - -@media mq-mobile - .mobile-nav-link - display: block - color: color-grey - text-decoration: none - padding: 15px 20px - font-weight: bold - &:hover - color: #fff diff --git a/themes/landscape/source/css/_partial/sidebar-aside.styl b/themes/landscape/source/css/_partial/sidebar-aside.styl deleted file mode 100644 index 838b1675b..000000000 --- a/themes/landscape/source/css/_partial/sidebar-aside.styl +++ /dev/null @@ -1,27 +0,0 @@ -#sidebar - @media mq-normal - column(sidebar-column) - -.widget-wrap - margin: block-margin 0 - -.widget-title - @extend $block-caption - -.widget - color: color-sidebar-text - text-shadow: 0 1px #fff - background: color-widget-background - box-shadow: 0 -1px 4px color-widget-border inset - border: 1px solid color-widget-border - padding: 15px - border-radius: 3px - a - color: color-link - text-decoration: none - &:hover - text-decoration: underline - ul, ol, dl - ul, ol, dl - margin-left: 15px - list-style: disc \ No newline at end of file diff --git a/themes/landscape/source/css/_partial/sidebar-bottom.styl b/themes/landscape/source/css/_partial/sidebar-bottom.styl deleted file mode 100644 index e2403fd4b..000000000 --- a/themes/landscape/source/css/_partial/sidebar-bottom.styl +++ /dev/null @@ -1,27 +0,0 @@ -.widget-wrap - margin-bottom: block-margin !important - @media mq-normal - column(main-column) - -.widget-title - color: #ccc - text-transform: uppercase - letter-spacing: 2px - margin-bottom: .5em - line-height: 1em - font-weight: bold - -.widget - color: color-grey - ul, ol - li - display: inline-block - zoom:1 - *display:inline - padding-right: .75em -/* Having problems getting balanced white space between items - li:before - content: " | " - li:first-child:before - content: none - */ diff --git a/themes/landscape/source/css/_partial/sidebar.styl b/themes/landscape/source/css/_partial/sidebar.styl deleted file mode 100644 index e43d66afb..000000000 --- a/themes/landscape/source/css/_partial/sidebar.styl +++ /dev/null @@ -1,35 +0,0 @@ -if sidebar is bottom - @import "sidebar-bottom" -else - @import "sidebar-aside" - -.widget - @extend $base-style - line-height: line-height - word-wrap: break-word - font-size: 0.9em - ul, ol - list-style: none - margin: 0 - ul, ol - margin: 0 20px - ul - list-style: disc - ol - list-style: decimal - -.category-list-count -.tag-list-count -.archive-list-count - padding-left: 5px - color: color-grey - font-size: 0.85em - &:before - content: "(" - &:after - content: ")" - -.tagcloud - a - margin-right: 5px - display: inline-block diff --git a/themes/landscape/source/css/_util/grid.styl b/themes/landscape/source/css/_util/grid.styl deleted file mode 100644 index 2a14dd238..000000000 --- a/themes/landscape/source/css/_util/grid.styl +++ /dev/null @@ -1,38 +0,0 @@ -///////////////// -// Semantic.gs // for Stylus: http://learnboost.github.com/stylus/ -///////////////// - -// Utility function — you should never need to modify this -// _gridsystem-width = (column-width + gutter-width) * columns -gridsystem-width(_columns = columns) - (column-width + gutter-width) * _columns - -// Set @total-width to 100% for a fluid layout -// total-width = gridsystem-width(columns) -total-width = 100% - -////////// -// GRID // -////////// - -body - clearfix() - width: 100% - -row(_columns = columns) - clearfix() - display: block - width: total-width * ((gutter-width + gridsystem-width(_columns)) / gridsystem-width(_columns)) - margin: 0 total-width * (((gutter-width * .5) / gridsystem-width(_columns)) * -1) - -column(x, _columns = columns) - display: inline - float: left - width: total-width * ((((gutter-width + column-width) * x) - gutter-width) / gridsystem-width(_columns)) - margin: 0 total-width * ((gutter-width * .5) / gridsystem-width(_columns)) - -push(offset = 1) - margin-left: total-width * (((gutter-width + column-width) * offset) / gridsystem-width(columns)) - -pull(offset = 1) - margin-right: total-width * (((gutter-width + column-width) * offset) / gridsystem-width(columns)) \ No newline at end of file diff --git a/themes/landscape/source/css/_util/mixin.styl b/themes/landscape/source/css/_util/mixin.styl deleted file mode 100644 index b56f03778..000000000 --- a/themes/landscape/source/css/_util/mixin.styl +++ /dev/null @@ -1,31 +0,0 @@ -// http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/ -hide-text() - text-indent: 100% - white-space: nowrap - overflow: hidden - -// http://codepen.io/shshaw/full/gEiDt -absolute-center(width, height = width) - // margin: auto - // position: absolute - // top: 50% - // top: 0 - // left: 0 - // bottom: 0 - // right: 0 - // width: width - // height: height - // overflow: auto - width: width - height: height - position: absolute - top: 50% - left: 50% - margin-top: width * -0.5 - margin-left: height * -0.5 - -avoid-column-break() - vendor("column-break-inside", avoid, only: webkit) - page-break-inside: avoid // for firefox - overflow: hidden // fix for firefox - break-inside: avoid-column diff --git a/themes/landscape/source/css/_variables.styl b/themes/landscape/source/css/_variables.styl deleted file mode 100644 index 456291133..000000000 --- a/themes/landscape/source/css/_variables.styl +++ /dev/null @@ -1,63 +0,0 @@ -// Config -support-for-ie = false -vendor-prefixes = webkit moz ms official - -// Colors -color-default = #555 -color-grey = #999 -color-border = #ddd -color-link = #258fb8 -color-background = #eee -color-sidebar-text = #777 -color-widget-background = #ddd -color-widget-border = #ccc -color-footer-background = #262a30 -color-mobile-nav-background = #191919 -color-twitter = #00aced -color-facebook = #3b5998 -color-pinterest = #cb2027 -color-google = #dd4b39 - -// Fonts -font-sans = -apple-system, BlinkMacSystemFont, - "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", - "Fira Sans", "Droid Sans", "Helvetica Neue", - sans-serif -font-serif = Georgia, "Times New Roman", serif -font-mono = "Source Code Pro", Consolas, Monaco, Menlo, Consolas, monospace -font-icon = FontAwesome -font-icon-path = "fonts/fontawesome-webfont" -font-icon-version = "4.0.3" -font-size = 14px -line-height = 1.6em -line-height-title = 1.1em - -// Header -logo-size = 40px -subtitle-size = 16px -banner-height = 300px -banner-url = "images/banner.jpg" - -sidebar = hexo-config("sidebar") - -// Layout -block-margin = 50px -article-padding = 20px -mobile-nav-width = 280px -main-column = 9 -sidebar-column = 3 - -if sidebar and sidebar isnt bottom - _sidebar-column = sidebar-column -else - _sidebar-column = 0 - -// Grids -column-width = 80px -gutter-width = 20px -columns = main-column + _sidebar-column - -// Media queries -mq-mobile = "screen and (max-width: 479px)" -mq-tablet = "screen and (min-width: 480px) and (max-width: 767px)" -mq-normal = "screen and (min-width: 768px)" \ No newline at end of file diff --git a/themes/landscape/source/css/fonts/FontAwesome.otf b/themes/landscape/source/css/fonts/FontAwesome.otf deleted file mode 100644 index 8b0f54e47e1d356dcf1496942a50e228e0f1ee14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62856 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 oMn#JeYGU{pbzL1U=O}QIp<2eKYy*8l(j diff --git a/themes/landscape/source/css/fonts/fontawesome-webfont.eot b/themes/landscape/source/css/fonts/fontawesome-webfont.eot deleted file mode 100644 index 7c79c6a6bc9a128a2a8eaffbe49a4338625fdbc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38205 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 E0QL`y%>V!Z diff --git a/themes/landscape/source/css/fonts/fontawesome-webfont.svg b/themes/landscape/source/css/fonts/fontawesome-webfont.svg deleted file mode 100644 index 45fdf3383..000000000 --- a/themes/landscape/source/css/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,414 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/themes/landscape/source/css/fonts/fontawesome-webfont.ttf b/themes/landscape/source/css/fonts/fontawesome-webfont.ttf deleted file mode 100644 index e89738de5eaf8fca33a2f2cdc5cb4929caa62b71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80652 zcmd4434B!5y$62Jx!dgfl1wJaOp=*N2qchXlCUL1*hxS(1pzUj2!bdoh~hR1qKGRh zwYF;1y3o}w_SLrdruJ!H7kRd|tG>S2R@?Wq7TP{rA#?eEf9K95lK|TG|33fEKg+%6 z+hTSaAdmL)uWh^R%I%Bq{=#vIHGE2vyyxxQ zu>PXwf4+35#HOMTl7@fkt@MNGkN*dqzrXxudarck;ms?=9TzfXbVcIGGxh+E^d!f> ztp1kWBdO@h9ZDcN>E)O$)*L%OUQ<(5(?2L3bseob+I4i% z(X~e}J$l2@yN*6`^z%o*bo9v4Umbn#sBz47tm;_Pv94o_j;%d*>9HG*-F57d|CLTs zlc>gL3N=cjYLt$8j>eB>jxIjhe{|c??9qFU4jg^^^s&K$J;*W3T~FTeWV|2+Pm&&ML33QxpS<_UX3 zo}ee-@q2t8ugBw&J>0`QlKZ6FaOd4a?i23g?ho95bN|)-zJuoA|NMsm7K+s}nqB%Y z{lQI|ivK_S=vvsKmRk#edAb%6i2hSQfN{*f8@=C#{(3MdvZPB=N8B5iy>ag#%Ndz% zd|;azJHAbmj*E8`hfQQA(J-EOQqrDKvr;880iAi{Eunx`8?Q;WwYSE-ESYZWVy*F( zDyBWrn7@r>BFSWAC`(6{$=}vkS07fh;rcptPAzWdrDR(Yf3n1{ZmbPgSS%G{s_+g8 z?`TBE8*uTOCf?S?TU)|jb#%6^y@R#4wuCfk)~1cCHg1}Q(}asx@ZVV6;lsib{$)h;3&X! zv#^nE>r1k8t{W+F*LfUs0DkxY35 zA&hmqcN%Y!F$Y>O5DtZ_l&QR>OYUgz=wcmSb8^yNnjQ>PHkL5{@qN#TZq2kl zV*Di$^E=g?)6Z1RVL6_0`tSSJtJ;*Bj-~)(fu@d{DcY;wYCkW#w&!@JXYJY^HP^E? zCQEfyNA@&MoHS`-XZ2cas^9s{_6MI-Cq)uIUm`L|ee%J^d;3q| zxwSnC)nU#t^(_m0Cn*@xCMAs)wp8(Omy8LeF_j-`^X2cc)%HzmHU_(Hx@>V>-Qvq` z>KZiO%HNyy@l}?(^Dn$><{N)&oS&(y%gk^5+Z+G+R{j~Y?$2TF2BjKgP>~{l@+5#xb#STNuZ8r?=WCN#*;G43z#WbeP}pXPs)z27Nc6N(s* z7!KVTtaQBluA?%jx!7OW`ifw}I-h-~p~09u-%4wQ;KqEnm7v$k5_U|!oKTDHICC?U z%UO%D>hNJ>6>FK#cCl;NcSO4y&fF{>U=3aD2IJ-~<7dX|?|etL6`R@eA+4k~0kR8WvKfSYMJobh>0d z!tvr{#Gs=xQsl%)QZ6lGj9fo`gtklOnC+PFB5q~+|H?r@3FXkQznBmY53W~ekX>W(B9tH3|SwvWJ~1XLheJ)N0I z(>o?V_Wu8Me(d|W)LC!j>N`8@S%!`yX`U_3UsHzz6Au-Z2`g~&4=#RcvTJE15t5HKCG3gq~ zrQNE0NeW>%!QQ27HO-7A+qxMxD=QAwOuIFjAAehPar8FhU^GezmgM(PUjEZ!aVvTo z+f4ar)c6Iz7iCcIr6=E0eaZm|+(=!(&9s`76^CY2-C-SFe<+|^nd%cY8^1JuY1YJ& zNEP13l7-rTiL2s0XS!=XLA99lj7d|~VsD&Yr5kF;8J`tNS3NtP z3km=mX{w2Vehi0vgtJWyPIUIJBgSuye>Z-6WY=Q{8ZWMnxyP;FvgG!|uO7aA$(Hrw z+_CD-;|@HQ&-QKV!ynInl1lD6!lIx2D(l%Ab2W~;IJV%Y*K9&@JhkbXpDu`9Jg(6d z+iJYP7vu#V=X4}m3WTqqe@p2FDIs8{2q`V01X>50LF_ODG-LDB`qKNS2O{^EnaD-4lj8PxQryhw9Ovnz(^f)Ef8uU z2*Uc*F(U!YNG;Z=rsJ1-f#sUgX(1$2M8Sf-$E7Al%LWLdqj6bc7WX_~h3j9O9*_O&uJZbsHf!YGkkdK3@Lg87({WRsC>(L4Fb~li4zjJka)fxa zJ<+n#5wRuivR)E)-_{cKI=|)#Zn4_0Xty~X_TcLBmPr*n=oDp}nkFxCIBd?kyKP%a z3)^)xWl9 z2=r7xK?qCFaWA6%eUW<(OS^n>tOSf)XGrI(tU^jX@g7V5_k36_LmfzD;9cZ2Bt60U(mW+|v56fMdYE1^I$# zYn;WCDXavVH)nd^#bB7oM%}kFw5ay^Kq2z{plQ z*kp&z*ff+Sx=PK|ch*OZe~qcIBxv>_<;k*S^aT##S!CCW3BP%kt1v!dz`J42aRDEB3Q^9 zD21}(34VTQ(IZF1Jhn)Zz6j{i3uu>ET5e**HtBLu3lZPM0<{ndq;MH6#$^pcf*PO; zMvz-W$VC(*%z=WTFr*hN%2>epb!UK;F`wfv4j+HNDW7rrSOAxeqqrVmK4(7D6k(59 z>H=&TuDEgKDHL&|2wN7Yv#`e^JgPA4Vt%KQQyd--xMIJPNp#^Pj`Q2Qlz>0#cjjo8 zb50~ryxS#YuAmFBly%H=0lx0*)XAQmQFc zVkB8gwmsEZe;gBw3IE}(Q$9K6HufsO;~U;;BjaoL8JTLYcN~)dnc$I_H0~)Ok20lF zEH*-E-`3fATPOE6R2mt-pXDkWQY&S}~TyokXyw@6buLX;*ub6eMzw9v-7(QKA+|L8-TdVjzepa!yjpUdH3-BzoS z^RN#-q^Xcm5ON2MJ89*!I0RmDT*l@V565YbFRc3xzln{*{*Zi$V6!2au+0Bx*H7*XCt+j>rd*JFSa16?@c(S!c!QKzj4ghXs#(BNfx8MKW zBJs8JwfVZoW#4CImaWG3K089H-N*b}ZU%&_l97od>r+*??<+P0u+n#%g zsAHWhdSusS8*aiP8m2FSuj{0_Xk|d>QoN=P1j~p30GtQ5SzQ}+72XTOe%Vit(OY{CQQmf*S4a-!rCL=&B z(CJbN?hlE3G6w2QX%r&SuPF&0CF^DV!xjJeG^zaQE{7S&Sbe7~`Fyx7${c(L58e zQHg&n=5!keg~5Y?YTC|+Ni!3LPbVIMqgMshgqEEacs{gm38lO<&kG^fB@*scroW@{W9O-ROG z?Ki$`92a<4V+*lVm4Oqq!r4Ns(=2x7h2|P0c!?=lQP+gi*9Iv8O(X`OOKxkDF*?Ne zobDYgd-fcgJCZD`sVSrXWW;TobD9?$z6W_|Am$cJq`G6!Mus~mfQn}2SD_BIBt{9=O676JNwgjI2{$qRA*qp zvSkYbovCER>AZt|+W4^(V4Bja^`^ROZ@>N8x+WyW%^&~$qtIa-G4fN@WF!@+bhkh8 zwI|x$m4OtXf9h9_Hsi+CxKkHaoJx6QHS@3*=2;ynM>brCBC90_4WiIPkRH+w+RqOe zN(FF1EwlrzVyy;i(|-KN@y|g0(=VMF60C3?yj!}~TkDMnThnx%epwbjau%!?u^sde zS&;zAY~an5J+Sao@ENtSReJH*(HOgzJIJ)h-SLtH00GoIooB1?3c{;3Nd zItcmYsr^Vn(q;B#D)b#vYpu7{|Nr8@8$Yqw+Un|u@z>RLLv?kx_zn@U-bhFpUq!UIUk>Ec_WYcV*tuLL-w-b>i$yiSh=vxZ!f`sbB z-=>;v02>IL2n8amC4Bu+tzcQvxVok)_R|ElFqg}#JPB|&a9k?c0rhlyvZITWpoS78Q5&7WEiJ5reQ7B^2Lk}GYoL%= zdn%+7>()ZDog}I(uyQ4NZDW1N_=Eq-8ABTu-W@FqX$*TJcLcTYc#EuZIVuOoDNI+C zI>q0tFbn6dkY@2Z{egH2Qe!9oV8P;$@m}5B^M*cAVYl1Lu9iPh*=}Lub)G!&2gTvy z{mybFh(vw>iA|?mQEDd78@ej9V#}hL)08Hcr9!g@Ds0IuNn5?eUZd4*tFbnz&RR9H zBWbC%S^^P^BN0!PhnOZ?w=EdDYUgaXr(#ZZM1DO~>#m~xQcw#9Q43}gLkhU~n2-ZN zSIk-+8nHbWxKEwL8t%nvp~o20mvgBjMit)x|{(&v217kK;Gm%Ge*DDkEd}3 zEcC!xm-842CmxLU*PoOw7i%S}X9dq3hdfu3$P5EU7$6d8bf|e|%Z9~Ok|{^`$n)Pj zbm+Z9@*t5+$Fp=CZ1rzQb1A*S-a;nkyjT2|&-h^`Q0)lX6-|y- zd2IoUi~3Kv3m6l4zz+$=258kmIHE^D78r%v8a=4{12SEsE6Br81A-H=yVLljW!mAz zZ!?>~I$A&okdQ`<6<~_!8j=WO#3+Sdi03dcjeVKjpH3tjrYu|h^nwZ|^TwVpeCh1v zpJ`hJI}?`wEuRox*yL5LTveEj*?p~5%N0oAuA89xRMrq!uySK#dh&$v<1*cm>%O>Z zO=Ym9XTkiNmu`P)`A_5S*wT4(F1w;K@(28nZKh;Nq5U>8jB7UBSrvR=yRd(vYP`*;+HPhnDTHj9A0I9 zUwx&cqSImVx$JtSCuC{Z7`6G?^i)mH{qZ@BE4tRvo=G?yR%Lu>da}{Mn7+e%c4ZViB0LPC|dWSDQ?y(zK%Ro0605Cgn)Hvx}3u07gM+AOX_w zkpve4C?F}UF31K#B34<&_qDw-vEY2y_hr!QjHD)jLV?bWz1 za6@1U{(bSqi%T==jTI_t<;-KTFcx_@ec_at-z_(uUAC~DyA{sWb*Tr9uNWV{uPIfo z+dPWJHbKSg*(@$4q(rQ7Ptp;r%^hQ(?YewTNKu(qVYg1aDDIC`cv-_aCwLp zzmL_AXI7`3hCXU58T#XYKJA3l> zv2a47oQfj}bB~LhhNHNbrF#mFIgz3RyXYg5{~xv6G>w$e7}0LgC>2Lx6(n*T$N%eg zkF|yPsQl>hE*4my+5|EWAjXcl7&dJ%nBi$iu?x{ z2ftGj%|0QHinvmm9w{RalF0@=9;Ji-BYRfTUkOT$Q~OxZF_@NeWa$HlDaDXu`|weD z)=wQ25=a-Cs2=)9yU343sRq+51u4TSMuiR~ojH9{&~~Dal923rLE_K^7Wz~a8B{Ww z&TvSVQjk&kjID=u<}*7F9oorrI}fq@d=(C7iiA<)ysDqw_f+xDp`A~%1AY}62U7+I zJ_z)c4!@QvsR`EvAJpCg_ASjYkl>ra5eYsTFHVL_xFce_d3M{twrvB-w&Pir8Q|b# zJ`f$%GU(}jrPh{;hYD`X!%RLWin5sBd4h^L6+99f}e!kWQ(MMn=A)U zAjLaUdayOf+CarI@Hn7s!Q!KRUdVeHI03TS2(c}z-&vjISA}eP{?|H=yh?9p14B8Z zUwtR>l+piGU3)tDP6DO2WaWVnm9mAX)c1`3p&T3FgXzRmY~aac@_!&z5qz1Tv31DS zMoCm$z(-h9LclJY#vtrq+_>M>s!2{I zYjl@PtYN67JwZBoGJlc58$jk$C5K^&5nz>}sIJr~dK83K0HP*H>|Qfg8m}$UE|H?nvgB=pa{W}siM-Fvh3iT%GguL@o^=lx>; z6V@Be^{V|1{nP+slcg?c9$ID2rj*27hB}ykG-wld0`d&8Fzg@i{<-` zL1oPvV{i>@@g9t_epJ)h&vV1|NQK~+4u zhQ-!IQ42X9(Y%r_0IOI3=q_E|S>6$+z zRy|qvcj=_bArOavE}&+MU6f8b{gH*8Hf>w6cfM%E;}8D9$coiJU>v@3=L9)yQ9L$V zX!5vPJy<(+(Pg(kw|M|4BjRUSKd&|N#eVvo6>6kLDfaTGew(w*W3jR~j4bfQxZLi2 z#5K?ckHqy#+;;WeUAdxtjswo~89U-m~%dGnMrGy#Pjk^B_V zmR$w8Wcg{@LX#uvigl>K^jWfHYOmA7YJe zI{s=n9uKP%!+c%7${C2Lxk$i?R2{*T*jEHkO?G!Cg*J>MOpPj0FU6f+*dItV&g76V z1b)pJ&Z!wP(E#rzjwNY&55X=l5!R#o)VENrBjrccGxDs4XEAo+;jV=ttEC~7{vmN(Hc`<9+{#fpHLj)Nd9eTcO~l4NgU1bOrQL!VpqQp zib+yUYF})TFh>{Clp6kaemgWrcOVVJ5D~Q z^rB8sKjecYq+-~LVDp})?U-e;_|57^a!dOlcUVjWQBca@2J(2{ZyU8X`l3 z!ZKqBCZ5TXguooG(a*5PF(lMTyU2d2(5_-@PHjVp@6l=BYJ$lrZz=76qtMm1H8T=; zL)Zn0K6KS|1i=Ogr#OaMVYNs06d3hV8d164|J-wa|0;h)gc6YoBu~A$=ZzS1s)}zl0NU8}YaCa@jC(V+kyrbM#+k?(iPn;jyOUHEk1n>nCMH%%UO0z z>j#QY`}pTq9$fm9GT()oV^&#NTRhnmitd5??kC*r}T6#G;# zT{4>ua-y&#TH0ZnA=XK;L!+!AC74DR4QTuOh2bC?SJFX#O5+DyJ}yy7B#fLm`Q*Eh zF_YgK+uo5i(hMI&X~g#gMiv-qQ}zODLySC{h&;4W71rlt+aHv#vZ#wET>Bzi;ca&u1rSmPQ3G&xc}HYiM#26F&DUrAx`u3aCK}v z5XBiDFVsi4Yh=C%cTL3z2uCAvAX#O!28fAe3N0efEC^aMGBB5Io|*; znm#!N-*Pp!BJbKaaM^bcoHJC;|9tC{V5ij>OsjqaADrKikrhxvC#!sg?|y7=-hJ+h z1KA#I_y(psW-K8JT^i~i=~ohErf-5MqY3uB9yQZHd2 zvjZa~Xp3ZD8@!%alE$wWbO-JULWg8MMCtqzV+|Kq%teyO5p!I#pgnWsn^55C(m=2- zc&&s31%G#_6ye;};fuGT2`1lW5MwsD{u3X+e0^7~s(RfXhwgC8H>Mxw-yH;Z#wB>& z`%#L>5l40V**gX{bj;Fft?q!=8o^Fk`P6szvipbKFk7%?rwBtNM2*2;N z&8GHYeSp@@0(J;^#d;j(7lv2JFaTl1RM?0Z{hjqWI5G4KuZ97UVXzgE$y@i7tD=12 zT^#R{O_6XaY>I zy0Q0#)#3Ig+TkVzzd}|0UQ?E8H^PXK&+) zOL6<-#w)_ZyY=IEnDis^28kc{4fX92q8$_?LW8qXYst__)tzbG_lR*${^0d6!=uONX5J;|nf-!1;nR z;Aa={tq#p%(H!~vY;JI`5@f>Qp(NlYC%k*B$?74I_QJLiviuMzi+0vZL^FH<;r2qr zb8Cy~r-q?6ndySL5uA8v{a|qk(va@Lkaobx)kSmBI-~R3H$)mSllep!x+h^|kYM?>=wK^lWze7D}H+0pF!brYsPI zmJ3$apq9uww+rYAb{>=fIg39EKmqTa$Y+f=ezOaUzARX=Hn5NBUybl&pvidW^`8#j zf4loY*wftDRarGI;N=!s?pn|l<<=D+dtqzGSHAqE2U50Fpe9w8>W+D2*iv0^=+?;y6u&ad)|$TZN008T^SNbfDq%}` z!`3x>whKNF>jv^OH>^@6@(ZNtFn2F#qXGiyrouwdsRDzCQ&kG-ltwgcC#6Ye_4l7O zX{N$f-LY>~hnee<&D?;{A<#kbFWPh7vU&4XxAtclYgoShrq8Y~URir{;R+2o=rOw`ynAzQsbu|GY)=^OFN;>mcZ!a(H*m zl+Fg^cfe||twYm&W80aacA6VEAOpqB7ROtJ7c0s7{osYbwWA#Qx&XvrY1RQkn>Q|6 zu^xSSn(rIw1-q49Y^>Ql$>wwH@{GUx*vdfQzRXUduRN7Uv*#g zJIv!<=W)Q7hue&a``>C|?@!n>rzW%HvoGxNz4y&8U%4&wC9oPacOKx=qXM4d1X0-a zKLRJoFe@FlDg}-OMVWU@qh6w3BEioP=-Z6|I)(Xwx=JWE z8X376kOPuHLlCBjbXbK#M(rP;>3eKI^=5U4BD*!?zm0rab@p3b+-*HPWarF=w8md# zvZ1(OFP3$A_{RtOa%z8DuJ5t@Jin`7W3rPC8Tl8zu6`@G4;|J$PRBYcOT#KDY=IYY z)~P-^(3c^pAjN6ISe|NoO%~*2b$ym}CFFl`({em9<_syfuqYSThlMu3e8!`ERRiZnEi zMP$Jc5#>1f%D2H?2YMl9o^VB!WU&lY2fq~-8LZDFXYwY7KrAnja($5jo!gQVAv zZSGvv*4NV0Hl<=}p$K_k7u^e~$VqA9qG{vGVoj9|GpDaO@9J4*9b+yQpHiyVJU5|Z zUPGl2lMK0_{?0-DonuVaUE!Lh>8bO+BJN{DguAA^vsj>NT6a^|)}B>YFFvO=E*>6r z#Vn3-!@43p4A3EwrXWbbnrJF;STdDPwkK&1R68gfLl?uQsp!&C3!KaK52%x zLXlNwgU_NqG1yR6Wqc3<> zX3R4ldkN$@#175VmNt!RS~{)S%u>K3auYXm6bxx3$8*{58ZSKe9P9b6C;_NVh7=`4 zj1ZpS7mXAxeT)VU;<$pz<`P{_!7K{Odzd(O@dmU)eAILyQ)mUZN;_K`=7elaJYN3f@5 z0o&xm4S7;s!3skuoXKlZSF7N+rh`~5z!4z5Lq^vHGgzgBaffH2xbNL8e_x!wA1goc zF4NUA`9XrCAt{m!CHNPAAb?8pl)LSU&Xg}kl4;>vBA)4$bB0uwkay{oWj4=5GN+HY zT4yP82a---bts`HX)S^l&tfe=*Dw~&q57mqd3)BJ$gJ73XAQ%V53JcE59CE&&e7Ev zOi7D#x&rn1rEw!o^AX@&xu@3x|%IUO3Bou zjYC7ZwMV8KUr<@$#WB2mUUjXpy>)J+s=Ailfis&jaQ-}FyQX-RlE#p1N8&l`h0w^s z3I;#~@E~+6q+!6!1ZE`S0hI9^1dUi~rRrPC7Sy%MFWV?!S&23m>sRP;@c@1>ek`L) za?X4gy@N11KzEb|8DMM59fZF4v=xqMgG*iy(!bC+ybB$I|0c~HOntCJ_XS1*?35_xct%NR#)2>jcL0W$O{82u=(lp6e? zog*^kiBbmb({!kWb>iqClK~k^rzE7yuv-UW0liA65afU0gi`Hefe?YFX3Q#|F?;%& z71yda{rarR)y?S(=U0ZDk>HkD+wYB(-T(P*|8~cQN#ME1!JIDRZfYw5gVIxFYBJ6sl}dnsEbubsQ|6Ni@jtP>a?dFs%p_WOl2qN7$|owN|! z*9Kd~SdZQT)Qa%S)t#4q;lVw-cQcLMU)m79`Sq=nQm@~0=kC|@xA1G(`=xKw#hgl* zQ;M5Zf%m1LH|Rnuh=VNQTG|Wv1D4Zq$&-v}o=}X^avb2Mmxclm0wsCC=jvJOi~2h2 zU4MeN@WI!H4pJ;rC0mG7IP@m@0cJI6=-)E=>$Gfd`nUw+AIL=0z5Gj2-`XCcGwM4n zB6Q8ri&H}FSVPY}CB5Ejv zaXMM@)1;GB5-8n=Z5~%(3RHAety1I+Ow9ZZ;}(;t8J*>CulHJ0HH~ur8_`AM>ZAE} z&mMl_l^0mcz!R_RW*79!O*OIgUZ+i4y!_nB^0P2eTRg78kB7zCki6?-HBIzz{kTO@ z{^;&ko)};)FTC=^;b)D9`{hOid-1NfX$zOG>Ou3xT61Hq9R(iuVqR{P4ofEr{i4`J zX8+JLki&&(BB>SFgMxPoupc%l5H({176Bmw+e1|JcZVy&$P|MW;T@=v#)?KR1tdf7 z5iyX!d4OI4)kqsC#jXs6fpg$82Xh>hhanckEC2k%a#lc*d=TNRu)UZ^BkQt$!XB*Y z)b;RAzuk6aqTcS%!(X@iSh%L)D&1+f-J{#OJYmO!HrH^`(A8A5rm?iB#X&_K)7)V@ zit_9O4qvOXi(C3!fk433XW_e)R-fa62b|tkMd|7++-Pmkl&h6iuk(R_w0t2X(@8Z|;YOPb5vwvXF_=jxVQDy%lwqR{wc8S~nQ zi`uOYOVw5SDxd3;rcp&beW8gpVeZWj-r;dqlwV%1$aB{QIS;O#D=WxWxIMU08KxWX zXFm_O<~Hy-bT3@#mXH23PZ9hI94u(;gpfyhC>TbHz>(l4i5RCOXd=-A#qPzz)IoMs zX#{D)i$kl8(Tc4DtYYm_xT9|x-}u*aR$cc{U5jk@b1(y3m0<``=cx?ZuDk1-Y&N@r z&F0hYy3Q7?^whyIg8VK~EZ}IVd+54V=NQMnJEiI|R=@rFz2Tb<%KMG~d3T>@WxW*~ zE$kUJMVGO8CWDFkvUxw+x&PgL`||s){^7i``b03PG2B!%O_yCBrd#V*diE%*majRw zcVX|`pAOUW*dBHGD{dW$nuAqZ8*c;hN!AW?SRe(^QxY?xUtO@Nq}xbzV2RK&p??j5 zg)vAYBtAJAfh_^uOD<@n426vX=&3g4sYNZuK!2t`QkG~4btuX5@pTO;#658)Dx1R- z)gSM^CZ|@_`qBY+tT8*ungo^m**ojb>;J~J+e5}6AzbFG+c0HPSvc94YF)l}&ctUo zJ@^z=o#ffpg;Tyib^Y4NRkt*TXQ?f*bZwn4pVf4?#mnbE9jWrnUl41VT|V8**3_N5 zAYQj{W-zp2;r_=aG}iZ~c{bf!w!1f7e$Ae7i5a)=IPZc70T)D{0=WTC>ySVp{=h!qkX`Q5q$w(Sf?HcBtUOu}ewqU-eDsuMH z`P^%9>smhRtE)}NTGUzL##^q6tX)6#`%@OSY<%#7^RAjTdqyI@e%U#}mW8|FM@ger zKYsip`_zRSLcy5}>*5QD#yj~rIinJv4{Ga_;K_1kY_Mc?@c2uo21hPkmlW@LGHOF` z2EqNqc^3&8lo8k~z@ng4Nsvk~SBM3zWgBPqui13h z!x;FPdMQJ^S_oq6k(tH>n->Zuuv2)IETkU9EDskmwQfAind(MFEHdGw=vaj;NmW=3 zD9EeX6nVg(A0(5?j9_hYq>796E3sh2X_~{s#+)*1d-4$Vz>U$)TVRehNQ$wT$zZb> z$oKqU!6sh7x(w$GARxE3WmM!9;#~glyWhRf z=4_uocQTtgkI(+IP>PqVuodSu6j zp8OqbPtsRA>0y3lDeXr%T2hFfx0Ag-^rJ*dz)XrFmqEaQC{I{~DVfF*aNsTQhr~2` zfq@1=-QkaeS2dQka<79`sC~vIk>tY{&|W6ON48z?Fdtx$yugekgQM|zFte2oZv}fR z8M*c)E}8Ku4e2FJHrhid6nHd6F&f4a;$;7UsUJ3WF4~t;IgmQ0+@VCLIbz++MFVKU zOv`OE7F-r{`)q!@soUgtJc}tLqe$LwLWm4XUKA`^F_X&0CoeTnMm#4}ob(*2I7Qnr z*AQ?@8FWLepi^MbI^3r=h?y|8?dSyX{5XV-2Wk_SLdxktkX?CbCpqH_m}R0TkQACQ zTe!CK5V3Hl14Y(K?i|CA%X22=T1>DOI5{hLa19!<`51X1SuCtXIv&umGX)X(9~(E> zMPN%7b~v;Ig>*`wWFX(Bg0PAJ1rRGZYxcbbC#A#6w@*q7?mV1bcIPXXk4q;jr_b!& z;d2dPN_OYwze-=J)5S%m6^SIL3``Mnud1utnK&A&DMAJ3+X7-q!c3xG7xi*aY4gZg|#;U zlD0d6KQu&xfPH)lCh# zMKzmM$Nw(Hja|bt4Ik<7PT?^HU+Q@I(9S`RH)Ly@yn5Y?hO-hAqMK96^IksBlfI&I zeB!Kz%(~T+>#f0wJu|}osewSyqd9av)M&FgyXMWLU>u>)ps-vA^81?AVYlEv?a;M| zsy9O`tgEuxpxf*a>e_cWG&uRH9+>CbxooqP$z1*-p$%>cdjGg?f>zdk*6y>fIeYcx z*7~xtNW>nSV7+`bF5JAhy-ceE)!Nt)t5;;J%cZKe&Tu%{?1X!A@@6>{mf=i+7J$hW zemQ`-92UIWT<^sggT?b`xj_}laN0Xajsq+(EC7vz`6yV%LtjaB3nSX4G}_>2f)`9@ z()0_0>@yt+tR8S^w1lvy;s{*t>p<*Z z!AhBB#e+b$MC%EavRM|72^a$ze51?muvu(2#p+)anD+arjT>in?wiqnTowzoCL#VuNe)gP2552f++V7_L`vOZA*tmjV1RfuM zdHnv0s_2ABcy%b@W7dh`vQYb^`TzaLo9YJ|!YjsChN|l({EP+mKWTj9M928b%FE`L ztqj*c)^OQRj(l~-)ai>R+BPf?uL|3|URy}3f0)Ju^h&{&0-9*xDD)l!VNz*Od!~r2 zAc7WKok`b`G?K;#ga)KBRru}%@sE_`lbE?Kb|$QR<5%9 z^w!Rn@)Z>>-B)W*#@uqHYx2y=Ha*Dt{%s$xaaCA-oh{P>uF7#r`Q$nNIhxGsD^`@Z zbhhd~dzD-}@hs-eE?jS2T%BpHShIFR&>nzSm4D9Ua%EhlD=@94(`T)4)$o1)*2jXn z4RyOJWp^xTuk}H0V&Z&ZGh*7_kKUV3ad1=mNBm6I{;KGCL)(lh755nOD;g+z9nnG| z_%dUzXhIeQQCmlt`9C!H3Pfb=>2uFzPdm;Sg+)4%WCzba+t{qG`tW!x0=@+RG)q;Tx{ps|lRu?R^fi>%c_!Z%1ou-)@~{~s`kaj@M*sd*~ zc|Pm=#7~VMebzYkW^Ln}&tCjgbv)WQZrgpc7WFI|e+^sxvgPpJJNmcwCoVou*|dJP zD|)k$fA3$m-mBcsuV1Iy!(ZH?B<1mUEnC_9z?W^wy1j=l3QoSV+h(qdpO0e5|xWW4_Sit>MUpNdrc-gvzbj`s-9o-i(3 zh-e@`{^xg{i)3G!x{%#_;)kXw5uql5p9H;=K*rqNX>$hkD*_yn^TY^`A^bA6Y!YTt zNr<3?1&;Yq0#LRh_Kut@`VCMFpIm2sN%X_#DKrn>31BM7&fU;zk(9L&?>4`XqHj#mxYMseX72QVfMY+CvMj4YY(63d$K}C6r~iZm zr{R7CjPhschv>WlUZ!s;A-eCdhc2igB2X}mSkFR=Hx+grh&itg-{Df-$UO(F4}8pY z*yY=}-&c8Sc^wZK-*~GWR#XvnfYn`o#jV`Q1HS0pkpy#m35K%Q|E#<=;ETwRPyg4~ zzwuM%5njB;OVL0uUj7!F9pZK6w^sVR&Regz+<4>hia?;Y{AX-8tNfCaCCcvxv*G;d zH@+-1e=*DZ{cgxJw56C<1GTW?}m&l3+@XpkAMc^tne=-T)-_ZhV9Pd^bBb)df zd&OYjRSl!{xwbx9WPNRqv0pIl$rl4YKM`tvU*N?jjpK&U@4~YYG?}4ZFL)WawS!ov zV>8iVphW0QVb$qK7WU?`1EOkT4#=3#JceO3Nz4L0jpx<=+pBDj`fsKk)s+ojpJ;1v z=+%K+Z;g&?uuc4WLuIui{mpuZt?KqMr5Y-4y|uDobQzu<^B51&WA=uT%Ev`VSKVN9 zRPWzkWw(tgBjzP5U`U62VbfUIqcH3v7Z&r^l%|31DwRDJG^e6Fgl>fE_-b#>Oyn_D$|ZY(zMg_o8bE=U|%FQD#Y7avmMLh5+S z;ZIF1h#X_KFf0mPWqd}hv%aReJ9+&RA$C=%;4v^cy{vKO^!?+5nI%igC+D-7OsT-J zFMaWYU6V~|%WGV}4&KXqkI1Ml7FeS%h$my{05mS+`>O%P+7^CfCxNHU_7D z>V+HcdX};2a$Grd@y8zA#I6cGaecD8xu)J(JA;?GDuQKU8;hlTvpieYGA=I58eftL zfx?a_!_#LrE=x}iEQCGouqd)DcJ|Ut#^h}%US_&?>g-S4q4r%A3Qq2N@ZyaRPMfuB zZ*8V)X|Q8~j6wAJtuTxz$ZCaLTfml590>}Y04bIZ=0?*A(Gs4;sEVNs{lz}7)I zUKmgCNKn-Y{fN*@f*3&#Fx4f~+S7`5KNv>hhBBGFn0Bjrx=C-EY>J<0&LQFw9C2Z; z+h@>Rw=cNn)-iJ}#LiP^^9&$yUIB0|${E16mgMKkI(fPn+WagNRIBt42h{>#W7x#L zXUb=)1rF(eH4fq_Bn~G()R$7UO+pjUDyUV_C}0S(R&R}qCWhdj z*iq{Fr>dfEvoVHE$dBJIG?i^$&75PKwgE-a`a)wOBMn7qV~nHR2p?8xR|=aI+9euB zgEj2kDn80Es$I&dJs*Amb+9Bwc25bkTT6!G6 zI{i~=sIyQluMMH@j&=yJLWm?QN@(Gv3(PW0)lik~NTC`Mc2MjgRUPKNFc{hpe2KMGTN4M0Mq{Zl7$q%OlR~e$WNHmHn(mOr zq`1mLAp1Z?gwU>zwq!@BL%bYVkJ{Mzrw-0@KS02|i9RWBIV8)@#wQkj^SZ#jQC0iX7Hsm&?_{R*=3X9F*Rozj&&d*i5&ee#Df(Wo$?NepMIka+wHwLXAQe{NflsU6% z+zxRIBNcg#jyPUWzB?3zI>jf3WSQxWnp;;nj0ekA89h^N+-}hkc@jTv9e!mluM)%; zbs2`+3Td=zg=AW-mUV>h3~{e4`e~y7{DULJWhZV z$Ix5LWYw+$yj2?_apDWI9Lg3Aky~NUU`60ftD;%`vgT5CuhW7!nL&*!G)8L3U9MWJ zPN!96_~?`tripbs6t`N2v9ytsgAXsTVuZqgyK?5XxR?W>H&xw=DACNOFwCnGP}Fk8 zDl>)a77Qqc+Z{m@tjwjW9;+g2nnROa7|F$VAi$DUmD3=fPeSJa>)<86A-6XIG$z-Fn_bf<X~j}>pSeswiai#x7;04^a=|o zHdzXu3~D!k_twGB!iup-<%>wx!n(HuDjeATlAIHvY9Un}`;FJJc|{`9 z-^eP`5K?4)M{evN9gQ)Ivh+8UDT=wU1GBf!lmQtmso=k_g?xr&l!&KZ3_Az9*8E0P zi+U}-`{WnV=3tR(`03+Msx(gd1-|R#&qqX{Imr*3ZT1Iz{{}+=eG!d^m^rdjB)d}@ zhv6|Gg(Yc-5b`RBcykb*k*rxTX9aa6^#76}DUg)W_p?cD%^=e2hYDQ!00MXh&pi5I z3G44!t4i6tWW-GI$p8@?0~mrqGDd}bo&*j9YpI__JtHg*t=Pz5=w`NuBnsrA174Bj zAoLZJYFr@J5w>!s6rAJ=Rv~d9ei09fyQ*wF%r3YGod%I3J`{A1@v!mmJv2b1fr9qw z9(DmP_#+NSJ-UFHS>9?~!b9Q7|;*yG03lx9S&g z2w#aT#@!2P_+)8@v`ku!t_wS^w1>1bU}!)Hfrk-&9rN|-g4Jm8E7m9lmnE|A5eBz- zmKRF!C6901yL8)iTJP0UXZEPd=+9l-dKT}!ZSUe9Tj6upLuQ;j`J93^sT|+7bnnK; zm#956r(WHwU1u5#azNpdMQq);#&Du?f8KS5Ph+bs!p797E_@+7|LCG6*Qz`AS0=)Z zCdBjmI$D>Co8tS9>Me{SF zN22wq%KM_xS1TIEmXdEg`@UsYU$gAUvXv{(*>&~uSC@~;;}eIdJtkK>BIWM-PTg-u z8g{M!Q4u*1<-bQFT5%wnLZOQ4(S`DF9$j`|+1dZG?CNXJS-BE5kIvG%z*@}$cU54F z1YAHpAOwLxqYCxS6bI_rHy=Hb1G>CxJ4eL7M;Mzrr+@RohMS&Y*+<`mW8IA#nxI7`cA~EsZ zB0@lmq&3oJ>1t`ObO&yc#1>XDDv%tR-ePrQje|G`4N4jDr3v(wtYAU4(j_8a+ex)6 zsBQWJXkpTUEL70BNfOp!r)h1GK}%E41v~=NWkfweB~&y1@Dzf0!i*WUAl*T4m7fy) zIJ<bgFWYnPZRf1A>+6^9Ik0S&)wyez(>iO}fjvvt>uN*e z+57I@vuwSNl9o&Pmt0jd^0O{|Znre2adYkAvU3nxxuN)Ov@(KDXfy1?z@_Owo|qeFgb>z;9S;=l){ z*y{q8=7{V8S;YQ3#xogX$>sePsI@&x#K>jXgSX4rG_VN)f6=~Cji?X_Sb^Y+5+p(& z**FA(#%DgDj~0lyy%jMx5F64@n+QR#*h_{pn!x|00m={3mmnB@3WB`;XHCl*KVgm7 zVsZR8HqFSA$3K_q<)52L1s6=$eikcya{>>e4&!U}KQVs7KV$sF_!PdKH$ZOQ_!5p( z-#_#>C2QsYZA?;5?oqE(uOod2c`X6lOu?h+tR(WL2##0X*y-ktwOq^2@i&K`mRHNMSxQTG)~ zS5D`%FZ|e!M=q2tSAO!*UtOMm+~)91xAF5A9^8C!-_T#XmuHrC^Vwy|%2C;m4gEiK{lgY8LcUti zW04jM6b(hIrcKn;^qA49KP*2w?p`q@oth;ycU&APof9cKu(wZ_q{VSE2U;^DnfkO8 z^gEzvik@S>!VV3&_^8$uHEv_CkBx|2&=Zm$#kK+UXsKrHxT!)MeX+E_t3pS}?h&W_ z01V*Fxs-o1_6i$`bd702pWL+W)xW~}Yns#ttbK`e9ngVTHA48BZqrkcKBOTT5g)LE zddeS+3!y6sBx`UNLVvzaYCzjYcn4rdyRuUK-&WPDEpeB(v#Dz{oYp|NY~{7mn{3C&AtI6|43)`Tu!rgp-*)z4*b^gHU3 zi?5yLs{l{=KY(m8KR9{7|DU06X@Cnq#sM0b@sRo831Zd6+f((G}2m25mpZIv36j}4j( z;C=Nq(4g@E8s1cNzlZRAGc8BzL@rXqqENp@K`qic>gu|&5uIobG}rDcTrg*AenUPJ zniI{)VZ~5_UGPkp^bfra@_w(r&L)I^kP0?6IokinDX1=M@ z)?IMu{%zZvTRb*fKcvzFhupsB+hh9Y2r0a}cxS?e<~qsHpj78{-N{vTg3y<&XhxL~NFa@zFmU3ak= z$8(BK?8)>E+}_FeMa6wK6k17W0?SmC_w#zy5m3%ib+?Z?AKfvaV(w zp81BXm$8}InMH{X2Tt9Q#)WV~9tcB^Q9}r~F;>KVq)G502hIW(@e-wgk>D(Q>Dw%_ z4rpg3juR(fH+a$EP-|#^;^pPb^Yih?c0T`nb2I+L->0vnzL`D{zssL}tB#(g=riiT;) zg!eRU!GI}(9~hZd_ybdHN?I);B)R*${0d8c)2#ooUah#pv*|jgC1i?;C2XscFoAw0Y5=wuX+8! zTOPc6UCUI9E`nIW)&)5$?9!`pCL8-~ZqW&zJE`zHv2j;_dU*3oyBm9UUD?t5&7di$ z9SgmF%Q?6F=H9&zeY~(Gylrtob^GS|Q>x_diR+fIoqyr}UfFd6V#W~PpQ)V#l_OV1 zrE+u?HiR#!92sSaF_i|0kxP}%_v*{sYnqS!dE%u{ukAgy>zvYAGt6$upw`%{e{uiK z_wQfZOqKJ*t6Jv!miz3_&|^F<0i56^iwYl$HL%zp=iRkq%DA3OuV`O&XHadhl-a$` z)w|VpmA%|qWY00^<==gH%j$=MQTN{#o>#LpG1j~K-1fDtLGcZQDU`*^I%af~ zRkV+F*a2@ zlYQqRbxTeMJGyd5?cCnp%ANyrc3+vF3T}UJ%DnbXQzle5cvfJL|~-hkLbp`M02S`iMdZr((3Y9evH-jHK2a+cexH1<$k@5Xs`leX+m zG_C8dzc|#guKnCq-m!_LHRmnd%Z}~eKWSz~dwWGFo=C()*WN1sSJRG5yPG4y{zv;s7K452_o-6#ymjR42ds~zQd zO>VwvMv0kpt|c>eAKpEqMA-=?YY(4H5>1klhd+e+88j^F*J8_(J*@xgu82z>c>mgi zJ7><^c~IHOCCE382V}k#6DO1O2<0{c@dE8)2}va;5xD{%KqYQX!La}`lbnF%ADgHj ziJioA_^}h-`?W;&__G)&BH_T{SuWh9Q5gs%We{KBH)F%N9|@h|b;`2|RZ>Vw{JSLg zku1(1266@hi||q9LsBC9Jv@Oj%8X|d%Ckd}LL8w%NboYlX#-DFI8UbVKzU54@E_;D zhhlYryANDzXem4qY@z)g-4lKA|3u1#3jm$a12@oYUO-Bo>;rm_)N?ZF90{R7ylX!& z%&A?V!5i7CkOoO49cm|D-r-`7YPR2IwZs|PkbeiC`^vs!*)O7YKpTqaJ6^`G=sWbg z(w>>Vf;Usag$L2NAdyk>e?;``4su8rH1jPEdaM?-ny33@rEVxLxrsu&Yhv|AHPg& z9DJYHG0|TY{nv_;%Brf$l1qOdV+&>-tdUP9w3T^94o6X5r8e=AujIzInZ4b-&mV`s z>v|kn!9StI2m_!bf}9+|C66>zplpx|-1d;e2Dce^nAQOgJ6C?1En}3b&Xm=6RnxwxbjUsJ z2bM)xiPIW1M52SAL6mWNSXXFpUn^o4xZVuCizi=&29j$k6^K|rDwVoTENq9-OW^`q`_Mk ziAUB05TC4ur3~M)z+{5=*$h#<+vw5jNd;MK##fC2d>^)0$t~bB_}1ySqEu(Nb@wS% zDe4j<4i|g{pBtnLqKvj=^?@^BhQZD3nX|3}JO*M!$rlD|Vl-nx&D@dk7GyR)24Ycr zt%HL7$#a|o1Tmws`}}-Opt?ePesj0Y)ph#;m#s`#&VNZM;6pz7adJ}>Vb zrg@rPa^0u$Q#7uLE}#KG7d*87!CQ#rbArv+Vr-M_UQ}m`5<)u04FQIM9T`wLpyHiR6ePH9uQ>%NH z%x+sB)#$GI8*}{aC&S=kZu=Rq#U5p`haXO_54;X8(6*J?wHT^HZIpW9OAr~@mt!%2 z?-v&%aq-5_CtLEI=&@j*C zEHGGlpLpeo53c^(SHL!${Nk$-8!o;0b@SXo)qOB5y&dB4_GD;iiR`>|T3&1A5NQAqrVQ@)sSb{in6v}%w; z7jq-#7E3Tdc9XZhb}Q_4Ggr>c1@9?d204?MTNm>RtwKC`&C^x{^@`qys=ymmJ?G-b`H=HsMU4Q76d3-LJjVW zIxTdX;t7_f^hki`aCW~UYB!&WDv{fN;CX;xo>YSL-vV^A7`~;j7@@Z_hA7}gqo3SX zS_{CKqI>#Skl#<6)CIVIehPgI*9FCdL1rhj73)C{h=jsd^1L-RAT2CK-*M#yaTOfm z7|o9*o#M+}+;Zuyf$tu9PhuGrhLKB1CBWmLsoP0v;(zeg!y$zlA)|AGA*CUhFc7?S4q%t`D!ldH>{nx)E|oN{wpg{!N(%T>{4F3-uSl$x8$S1-Qd zneRVy!(tJQ;51iM<88s|wUc+wDleb4bMpDKjAh2#Zn)t#>}H*R$EK?3TdH&GB7s1p zHqYy;s4lCmEvv5ZdGl)NT3v4Smg!ZS?pX2grt#x9JH+b;BuyGJuxc)&V^oP%f#DKti~TMtPKgC4pFD#B*e+D0d zmYLq<_W3<;*XNsIpMUfq?DNxG3&=h{s*GqlCCwrrZ-#u7A#G!PfiXN=8R;`8C;4U+A(-|$01{+vA5IHI1%=+ zN#k<%v5EU~)*cQb=qU)*9p6uAf}YQy>x3=CDEFsbTmS?JGPP^Rfde}_cOTxe#9G_= zvTJ1v@X5MbR=QqpE$HnnXiXemyEw0eW_d~8VnX2ZR{Y|=k^ z_gx^Wp)H8-Nv7KZy3Gv#29O=C-30*a7T9LF+N;{jO=9S|LL_qSR6kl;(qkM235Qb{pzL8ZmeAT*`^r`AXlt}529YAF z+Ld9%`5ev-@VGz>B;pL{SZRIgn4#VwAks^a!|@{42vGxvcA#B|L*5FHCR~1;J)KgV*D`=XsnQpsTdad4%C3J0>d`> z_^5LzOVcZRh_bly94Bdsmyao0#U;?(RDw(|86=v_@nBL?kAO70kMp8vgmqkN&rAl+W~;;gX%WkpM{t z6oxFz4Vtu(UovN&QTz^AeF@tnnmanF#=BSQkLTEFh-I|W)NgR;SNlpclrJ6YvX4#}ro z8JjEt>IgbYUf%ypWArOV)ZmR$GDsvicrwYymDsPikM;C$2D+cN{J4C0`Vig~sy0CD zPa=&Gq1c(5VYeEJOF$on$;VWiVb7er`_g@g-c%evnlMf>y$L3pFTDz{!M6&xhQ(H~ zL#LhW(pcZ}%dkURbU#MKj|wc+w6!mT`{wQf1GHWZ9U=nU-=DEfCy5OBoi92Q{yxPj z!ylbSCTT(YW0N6ulHJS5ogqcwV z&qu;1`#M$sT3jBNhR#q$*h`4}OLERe>Oa}vH_ZJ7agmWH#Tjbz@s~1%;Jz6CRNADJ zP4aed&_&*k}kB9L;+<$O24wD4k!dQ)04Ok9slF9GNeFF*k zcN3`jd-@WIzW$zIFxlUq3AZ)2nZP260oKFR2pdWS@jv7$i$2Ku27>)ToiFLr zVL!n7g18D^H`s_QCE(!_XQmYc+LH;6!ad}E?8W~W<%dZ;YgV}w z70pnQU>H}Te$!+Ug;OTh=yJ*ZO4;Ze_?A*Ce12rfgapc>lxp+?LgUDS3E-h;i2syo zfQ>(fBvefQAu}V-4X9_*nJx-j4Ap=&lq(Qh_XZBC4F-8TyP6$1VgutLrd|1(oA#XiXWc#waFCwugwTx5zJby1j0Wl}zOHNL>V#oj=<&U9Ir zp;UpYg2Gc)OR5OHfND1SGL>tF>KjsxGlizwGwt9yo45YUs5uCq*sF1eJyU4{vp=pSg<}f+wRamPUl?Nd;5Db!1!ygR>Qv+l)*1+a01Vzq) z4H7pY&LDTY$m|v~5gki&SF{`HD{w0+rGg%s>kBDg8leV&=0dE?2r4`R0t|wO%7%-) zti%HH!hso7SJ#3lyJ}b;eVV_u{bV0dMEU1W;`8dBJ_VAhPuys;^&!3%c5wj(QqXb5 zo?(Txb8v1C@i{$MrKng~W>CN+)&eaed0=?VSPyAcIK9<|i=B=sVc$lw6>0%9wFVp; zhOzZlajnsSq9Gon!iqm1;grbR1sH0i6Y(mZ_hZrx7FAIx zKogz))C7HOER;5|r;v@McKR|73-u}K?9=*taYis09OO4hv?aQgS$~Wuk4hD^Fk3zg zBKb8pHU^7;(+G>5c$55V%4^HB+n$!aSL(}3l>5EYz!30_^qNkwYgp5V*40*lgnaVh zrX`q`Iyxs+OnQMk^9`bEW0#!l+DImQEOLmbT6?&mc%W;e2<_1se-ILMd1IH*Po{pp zJRV*P=2yA>4A-g1r5tX5LKs@cw-ks!NlZQevtZ8iP0sd z2R3${aX4Vy1VyD7q%~LZ(o`cRv%iu`jAi$73#)5;ULc-c`F~UgBQ=6ckw*=&zvI{ z+UcS0)T{JRySSJhTHV9rDh5B`Str@$eDqR%Sk@TjKBAdX$^AUDhnuMQZDv6HUQIs> z9-imOWiAm0BT^ef=^7_DM8bGSLu6JRm^5pGaB){%CR&jb*Jib=)#29Vn{K;f`2aaq zsgTQEMagr8pWYK^eczVS11fQ40 zyr+3q1-(BgKde<143rp|{IZU{WcVUS5$vGq&lfQ#T16*}U9kOENMz39mMul^O=@w9 zXMnCUr)6GC4sC?nh7O-QaM76CCp|Lh*3yd(B$gk#a?S&Dt~|6nG0+m-f8!4iFP)jZ z|G-siL#NwdyluQbeTz}m;9;v_a zP4NleYHgHnj!%HLpFbPix3sUSB1rAZcvf<6z56qP^efdl)#xu zoB=3Q*(!vfMX==yp!7p&amjz=!pP6$pG9;&e@>+?Xa58Hb97^?eX@a1bpc{I{;_GR z9{xxk{OI9T*fZ&)huwU5K9H@_2e-@Q|G@?H=VC~Y`RvJIewpx>MGa&_v%)YQ)$aoOQ);M zK~)9)|FmvKcqxN=E%D$aIJ-PWt8Of3GHrQI8$_Zxuex*I}nb zQ_y<;H8dg_f2@oGsmP{+9WM-0Oz;+=YB2#th{KY!IH23eIusJ=A(!6CZ@$@o=|9SX3zi2DzN8bFE_?N%l>~g9b%+<~ce_6Q9z zLB2-vnp(|fiEUF3gm0X&0#{Rw6ctli@bZ+6Z}R!by{X$BH;XYP?Q0 z%9mVyV^igp&4zbTtS5!2uPW{QN^f3fAkdhHbUlQCoDaZ|L!At>0wBtv-kXyx<{ zDq#o_#J^JL6;tm>CGEv(gC~&c_k;}&ms(}E1sqnb^sSSsu%HfmghZgM7*1DOrv-{# z@Wqrn8+@?EO@np+h9kbjmR*lnZlV zx|o|fDkU=po58*jmI`t1zc5Pm`p*a8*QLU(zr|lq|L{Fx4;Jst>F0Vq?*7-{QJO4V ze&RlYd_JJ){$I}-8h`}XJ zz7?KTMAq6eVW4w=a&B2IB-z@s^sa7Y{rKr6F*`r?@u#F``ED}b_S7!Uk>9;6T3XyX z!Jo6ZmIQTN5^IN#Wvd@pV3CsMS?P-zc^y^&l?72DQQ#b%3xuC-;6#Wf(Ns|s$R3xM zgjKF@sP+JIdx&9FlVXxjwHP6XL6b<{`}LH31qfeJB}^1^PfKnh1m;461t{xTui$cU z`qgUENDh6JJ#$KBFq@3BR}DGf5Pm6IRO9z$saqyZq_v~ zb;~F6Cuy)C=D;=i@iZO~o9Py=%X&@fAIhuQEvHmQ-_Qq{{*;Q31q7O6NYrEnGY{}I zP<wD4m;$J15AMqV$M(8_|yWS+rb=ZI3fAtPu(cef{XYA@^{>8lr&PRtXJMQ z;$sR;=)pu8#Jsce*fc&jGLr%NIHG9et4B&KK1CpxkSGZuo@g5<-VS7I7KDBuI2s?{ zu;zl;q_WtUdYoC^duBFOpW8CNG(6etFq!W)t98)jb=|XP4)bLm@ClRax|^B<9`C#y zdqKomKKI6Ops}(fk(YChO}ERCZ)S$p-dj*$E^iAor}HVd7Wuf)NKqzlW*UQCC2a@X znX`VTi%@cMy)U$CT(?F^y>Wo6!>DWhT;{-r;W9r?^+%;u{UnLdhRU!Un|zdk^uMQh zGC2{uL1l`GQDs?GWxqZ@m&NF7F_z0BWQ~om-~hdwHj*Z#qGOS^oNB3nx4uqQNVp*p zcbL!%!UTx~kPN37j)yp)Lrq2u1*^(nB$b%4i0}UP{2)5HJ7Yhz~e| zdV}>2Sx&z2+||fGBe-!z)a6{u*sf<^5k5@GqEtKcoSC&vV`?fao;Ci++%*?oRW)tV z^m_4w`|lqt(VN^Z---KKnAsk9Pl^J2(^T@_1M+9`uZ8XQXy|TgENu>TDdSB|c?!insMEx+Qz!M=>m+{7I{hsrOXA2nb*;bfstGGrPL;l* zO22tEP|i-TQTv*X#?Ba32tYQFw=To{5ka|C5kfffkm`kx04$>*M;Lfwl63+3?s3g$ zR%6a!GTN9@McZsR7I7@%I7x6hQoL|l?x3n{Od<9X_OvdlPQA_j9eZ(t!OqdZ;ftVk z1HuX{K6%s*1&Z_ZgG!eh>l%1!R*qCLauNHpj)fdN*kd2|I)$%kYyX zxp>x?DdnA!3xmvKEWE6@qGeuqOnCk5c^BnJ@+%@;%MR-!dNYtRg@TB9cv)AZ0@p8^ z-?bih&1*?~P{{!P>I;{Zd&X6DmCjkho}NuV?Tpy86sa*x@#9eyQ3S4jR|V6@ zvYP~j)AFuBmainBzWc#9Gp@em%lhpKC@yX`HuXYZyzq=-##Ck z^iGl>)~i=^C{8Ux0@-M; zZ=3q8_;^aS;K98+=S=Zy0e9=4GH2)B2Nx)W5Z@ynNi~Fb5hi-*h4eFc<)tvcr|6r0Qou5{qQ8d=5+2 z@ywIl45h}lhm3YT$`&Rm&-_J zT2LYdxsv!JgqV4XqJmVRc!P`IHUZC8loLkFDbl*Mk>ieS^mNi8nPUTiaa?IyLe zVf>ng9GEC9tiobs{UU&jO=@L$_sIP=y_WR|4&y5C<68y?Xrzn5wGZZRsBD@V(uK9A zYM&uEZTtjBNg35GRA6)nJpc`+x)q%Ya(-J23;0mo0BHz48-Jm~#US556Kl@rwLM+TJD&p8uVu<`Us#N-ZWDf}z1l;&b%JCe5BQ zYaTHHwY@tcKTjZ!L){yshpc9JyyjL^_O`4)3xF6Rw~IxHvm&wV02;G=mt1L zA7q*z-ZM%=j4FdzepWH+~Hh68Nu+sCw^XA7qY^}srSEqJb|56j*sRE-RI73=B-s^mpI1f&srlt6cX;4&{f_^EL{KTQGabEI<2!#br0& z{{N{}bDL1%2W+yLx$vNa8Q;F$ zYce2TDR=_#yd$PR<2u#_Hl2-gp8jo_iajks@JL_83|Lpa$LS%-EQ zURM=apCoJ8))mjyGyAJ5PO;=Ddj=0xMWry(BbASBzHTV7M5k*MzQT8ll#-PA85(+U zKO>yBk{Bhxh6277kgFX-VN5+7Ha)NTh%z zJsvoJ(^Mut7~fFQXmf)1;`$n}3#3!8CvqI(ykcFDT)g^=ivn^#UJ6HJJ3a}Oma)&Q z2e6ydGI;mYpp5sjWI;3{B#r$R7nr@_ek1z>#~A#&dS8{69IH z<77A!S7pz%k8qE|is2sR=G&d(mD#gtnC@#p-Q9{O9P?_)@ti{<@b*L64dRl(5Q90% zmQzSyz;3#=wxNf;VX@2a*v%F@Fnr~cLQoz^4T#C5xw*IIcI7S=`mzhg9=Wx)r-A*4 znI5s2>5)`I2r|q~c|hn{iYIQ(&0X4)UDE7!${}B9ihD*^Yc)W>PIGP?pyPC!MIPgF zkb~r>K2#b)@EmjmOy=0AVc)|BfSo@k?;!5uEryNHUOp3{E;jFSTzNV1_Yn5p4& z0`ZS~7mi4)MZp>rSR<>%V3r%|3tGc9MB zRe2<3@d2ew8VnrgC`vK9m82aGuiWo!cgp=v!4q&yh_e+?~~wsDa#{`WsnE(@%)6X15aq-BXGG z1P{{#iUb?H75Qf1B@!F5K1DP6NSjz4ApJ?Zi+jjKs)oOumau=x7!uNWl|xcA=MyfJ z1k&vFh_8i3lTj_1oxT7%!1VyWmcOOn-<6DY9k zeyN(hY111-pE@A>knZJWD>wunbO7?Mu`gfdC@RQxBVCNyZ2I#Nlbh1cAe9pG=rHv= zPV*+SbKF>mWwXWc22*+Qee)4A$s)ZHGRY)20y$u_KhkM3SvMN3+pb2+7&Tsifmf5E=#u-pSB!S(VDbmw6V`^%i>y%xtG9{&90 zBNO!M+@kL3zj9dinw|0$$M7JE%2c($ws`|G({h}^)HcL&lIJ3N0GUe0QlD{*ctD#~ z=uo=)Azc&Df2jMY8t`@`_ea2@X~Z{va>QZTZ+5m{+SQq(wp&+gZC1UoX-_0F`_lYK zS8ZLad}d|)n2H?x^LIJT`z?-f>pGep8oOz>&T27>-ul*sCCe_hmqeyjRK^>6>L99Pm zDGZg^G!EAxEAm%~j&PoLL8reg76>B^thX}SI(|{Q&-S3tTG0l)0f08+p+pVfzGL8m zl@5exCSZHWvQ=~+X7XqWW$6M?)J#@ zsc+a_POCG_X7@)xfU?0B!rThb(&fxfw)9@>2#4twt1D*Q^c7t9g|KwME%>AAfDtlCg zO?6mSo1OC=mR_?{Xt&vH4tZg8p>L6$-Rrbj?5XcL&Ak@Ke5ZLeFgKnyJBgPeVG?x! z3=s}#iAJy#5C+1b;gSsv#vy7#ct+{z#2q{&=N?F=FlVq0sh8wO*uSZrWUbSDf5t35 zKvxD3P9JzlT>a8cIl=ChcmLN#qn+1q;bxS5o5ev21X3ZOY&sxZ+Tf9$r@9a$!x?tM zqzed3M6`u!Vqv-fpj+jFA|r}?#E4Dc0sQe>_iBAdeA;inen0j`yU_O<)%CH^ zb+o%+G4hbvuJ)_XVXM#6`gZ%Y%h?6zs{L2n3`hn+()V%^pE? zUJ9Z#vQnsFzhFm`$sk5)>Q@`SZj^ntux;|dxuB*W&Uj*c; z1jKy+hgP?0=mbjxPFgk6^^TjjZ8d9aW^TP~&h1?#w>u^~Un*#N^Y{a}QrL zY5l}Xk96uJ8wA3^Gd1iGV+Eb}GB)_R@Y$fYpy|BST}2H=IVO!DKgvY4$>xV6#}}cR zkQZ418PsSDDCpjT3WZPSW81F8L=LNDAZox&6$#nN)DQoS40uBjA)|S+IH#I5REw&? z0a7jyHUp&%NwSo+T7Ico;nnziNv5izdGnQ6=2_~X5#K&L%mh1gsropzq756u!FR9= z&r(#BwGg(AU6@J+$SUosIha2+kPG5rEfyK1N=y4caIr`+TySX#rqMV<#4)8>z+A#W z3Aq`V3OC&tN798jCZ4v2_RboobpLlIn9FN96S&_mhSV0$e}$O%*#+&$3O( z^@rqcCdUUC3-$8#8mrNwcYpDQJTR^DpOw?(cPGAo&-+sEZ!2w*ixrwq=4SwzpkY(@ z&_p@W=eXi8=LmL(9yrrZ!AqwXtkWGDMmso+J{Jbg+|^PrTVsF`kV;bD3E1L9PS6SK z=O?FB`~=&cGu3(+j6Ro8o8bz` z!85mp&^M~iBU)ovvl1Mt;N~+m1=~FI`&k=+k9qa0>ABuP-n|iW)_{5oT;titd<2d- zq12QRqv-h8?Aeum_jj@CK-m;Rw`?bOZF>lU1;&h@R^FPKwh z(`h$pCG)n0-rVcYUvubtLgnVo>~XD6Z8Mo2jSHSjZ62EMLv^p`p3TE`|8hDvs(Q{Z zYmTo`_t&!P_v0^V2q|6plMkJ#_JgCVsjfL=d(iq$a(e>nJLy+}1E}=6;)pRCT^hpx z=}3_8jB=i7w1ksPdCp*OK_^260(ihys6vn#keR(_b;AGGv7} zsMCQ|rV?|{+}uwu!8?V(P%s8AENCkWPH$;w85h|&VY*Nd@B>33;ukK@i3q~x#KMrH zIZ_fUYj!!^1=YpP`M&7%vOp<oB$@JDx<&+A))0Jz~>h*p{ zsI#iqms1q=hcBJ6@XmJo^r9;gjry3?Zm$rDVPj+*8g6=!5aBbr96hWnUc}0@ zU}UUB?v-m*-&8%J`VmG+8~|rpH)ec2z|;!e@Bu>(fp8o+Yw@&kt|qOPw__l1gB@-m zwve<3bVV`ZK@Q*!tpGGZP*`<+ZCx$pUZUWRYF10m%F$4eBZWe}1``Gl`DmPhZP&&q z!!_PjgTheU9=B&G3ONGN;IRo1tB_@kU(5*d83z#YmOMKQ19{K3x2Im{nu;_89kEDA zuW3iZ9G8c+X-#9op^lDV(HN8Vq#&9C@!CAMD{oc6eMO;9!{o~o3Bm0&w3l9m)Pf&f zRW{z>asdYXY9V?xAi!NI^EuOM;xlzYZP+-Kh1_{nH37FfP*auXKGxB}p`|-CM!cPU zo~{1-%U#uo_IS9krsji*@?v)X#NF}@#pSuSC@Ylz;S;O{%(vlCt-EAQ5&P)w;u81M z`aFxrQ5+34UEUOkMspjdkFW7FliMgZ+*wm|XKhOS&fKylwbiO_DqDE;@p+}qblhAz z4-t;VKmM_Isdsh#PcPonm=}%aHS%4cnQfN;TwoJ?4C!nm4mg_Wvb9Bgb^tHw&sZyl z$Hx+2*X&YVt-3??7?;1XCQwL-8q8m9b)<%{ZS6IoGjvO)^WqpCaT-r`k$9L77=)ys z*0Jb$3^xc^)jU(LRukky1ksr^DuR53uo@AaPI;1QoSCslj0#aDFM#t;AEDyQF|Wtt zjj=iBoHN+CPJU_4N)}waI3LN2*EgxZW9#6nJ!c8XTE&xrSVw0p zH!n6}G6WDI)wf`Q@C(0XQRA~I|FeyY&3+s=JtMr&j|cs$cC55iMsn9qVo&ErCUit| zbE6#-BDrkVl6ZB6S+|6VjzB&u`p*szEBAC(RCFHh?oR!LeJo#D;ueE!y}YB!7isB! zVT!+@?l-A5W9#b!bImn|q6rIE&x+L4L}neuE*=Qz#UH&fVZs{|Qwu-b+SH|SyER=+ z8$YIFt;?mwv1Eb4`|r#;^}ykVr-bJ2e(wx*gtKmvYJUy9Qw9K7Rwy-)z7lrwT&jZm<+%7|kvAf~R?ER$J zFaFGEOnu6_j0S_}lM-F&BfKE!BO@L2~kRm+3yHr?;CCn&h(cM6Rr`>&b&ZHvWR zB+fR4Q!zmfg&{bzx0&#twyQ=?7e!A3T?F|u!>XuKEC?C1CGsNCItkQqK9(ux1_fEB zM>C=eRQa;1pfD7&SrO_EMZ93O+SX3`{owB3Pg-ZQScUYtxF>zSWU8GdTncvfBk*qr>xZF1t-VNG9xeqd> z31h`^tC8gy?uao;78$YwNh#t~;}0%gNDLlvA}f4fszrQ?oxCZ`c8Gn0zlMb_)iy_X zIF_3KGvT}$sUz$dyKbkvNoe13^N#(uuv^%YR7V))8Au%#)-D=r@(a&FCd{mfiroyFVNeqCU>qrZxaLwe8j*-c2 zvKWvIYsh&NJw|=*kwufdU4*PdBuG5=+@aM56s@W zb+&ZT?5!6HSG9HSerqSQ_II|WF7}7R?8z@4d+dwHgd6Y69Wy5PK0Nf%@aUNR zBPar~gR&sOs~JlGRNP<&Drg>I4Z!qqf)guJgZm^$V{l}@TqfZ zI5q)N7(!7Fy*TBCs4qec5rDWWb=%^xyxeHfl==;p7niq96QvuMF1h4A*W|J)`5pPA z(u#y5e`$U5dvCYJmoCs*&1FRke(}QUib-=4uAHF8@du%Pz^$ z>vfe?T0@~fH>}s@nzSUUah%Bs_?rJ3=KW(eiaVpvfS$_>tQrI=Yr`FZ;kZ&H& z?nDcseFe&#SqDznS&N*-AXHX{8Tm)o@C-NUqOL1mKA4@P2u*^3Xf}z1KC*GFElOfs9NMI zn8O;~evR4%%~g)e>C?h+rPk)8L~SfbTDw+by1ij`pkjq{{955BaZi1yEnq6Ny2j>r zUi-5mb*-z=*yYMyVs=H{@K>uIo(1qqK*OnK!ta~bB+w~jw}tYXcuvlBy3>3vH4=Ey zI0h-RHYmWQ#`sqq!o)6)I{>& zvV#bodyRQ{Rbx9ZgVDLPrFCXU>p1pdc9ULqtifx~&0oP{$5{BBapOvgz2B18&nzt| zinv@Bv!p()O~g|PA%&ra=mS+c-@<5>neds-EZ<`=TMY7DW}V(OphTiUNV3UE#6~7< zPNy_L%A1oxyoG!-R614X(fEZd8m0(n%gaK$(28O?}+`?G7v zra%2o(xH*{X-GQ+-3a(4O+OW3RH=l$XbM0wW>*0Xgm?1(R&PRkMtQ_wdRURv6D|}H zLZNWC#6NQh3%^5#2a~Lf1R8cAkS>pUQ*7Sl$*Ls_#<$F#U32TrH*VVa$mBJ>h2_gv zP1@dFTRST}{($^$UVd9$U8F;tHuZ6aq=Ibxu3gUugP}s4sQ>Zap@aGPg@xmb5*;<& zn|8h^UD7gbT3emNsJVIlx-p^+ZrekC@t6}L)^sD*a#&I$a7m!(d1Ws=lv+T4n&jX% za*+}oscqeeX#78^3xs%T`{2jBgqy_+2j3U&Lj8$mVTP%9<84;>|I`EfZ3(VdlQ)*e zC8hUjWpz{7JcRCpQAKx>o)Y3ES}GbRBTn2-L5k$14rhS60`eIGb;BT~6 z(CZC)*zusp6Z8(AENO09(A+G|N|aA)UeJ7?xwNF2O|3`>kFHA&u1Kz*q&1nflb5}@ zY_isD(z3(!dvi%?vy|th_bC5<(Oe?WDQ#{pWsjCLJ5#GF5`UtzKPlTpg>XB&x&DQ1 z+g_;OYu0K^`$|gonKW8+>gLQ-rAbur|yq$=ZoR~y3#^aB=%C-|g?SZg@QjkuR%X<@ z9cDAL6y|s&$z_aLn>0F&Cnu6?Fgn0%*mFF#bq=N+v z8wwe`O_{;6z@G1O$AdM6db2|?!RwblTkl7!l>*!cL`qHz;|PgS_0ez6rSh|v%T)D=1c4!uS2L>)Gl)6j5EaZ}5b_*i2s z7z&9NX0iHh0qK0^WExb3Sw*8+BhO(vz+CAJ0<#&A!3*6j$hSLu)|`MX&rql>Rgb;U zzw=|k9&NfPDDn=>RKkY=Qt5#o>1o(yY-@Ow^c7n+Hp`{ zjVrL06$qkH&+?p}d{$Br71LGX4bUt@MTW&65WyYUx3QFGndTT|oXl<&h z@OA2JIzg@1*4nI-qdHARPKP&-IkyJgYZm(*k)Tm5vHJzMurRCZM>?dC77ef>3buNQ zIR=b&9X$JBuMUXnzX=+hU}a{rMl!3RY%qyTI`NVz$LsOHbJ!s{rv_|Vhd$4PVT?}7 z4dyV`Y{sxQ*^S3#%p-3qoN8jjnT=^3)N_ zy!wf|#!pg*s=_&_R*um)b&{!|CO=@rBA3B|OCqj32n|IAkV0BvQCJRnF)D`1a2|t} zON_>(5UtQ&B}FhO3CKiH9fhK}l|h|Rrv^!)6UiBk(Nmo60DB3(Id#ZLmVslFR3*y= z!B%(E?yJJqXFuH6;tt9`l@GH;UDY=pxHKA(9IG$hd7wYYD#W+n_{qXC8*Uo>I~H_d z)^lG>pS5?(gi9thTi+88F}ekhSkfwhUH8PiovV7G5{Q zcv!fxs`Xs0W#_w#7vIs{X)!bPFW5ig#LlYM~ue%Ondf@LQPFGVK5yDu$0Q2 zb7znQxJ7j64927rNwNc}vF(>s#NQ9nmR%<#>4e)$Ma%F_Q8X{-rJ?jv55WHd2r%5r z12-SHlLiy_Dj$+6Fo2wKcmi>grV=xaX3xaRkn=}P-k-`p*CR@(y`rz89kv+#=jDIO zt0`^(IO>$uEV+6LaGd0xz5lUy?|(3Of|RoP`{eVj4uD#JN~wVX`ssIA*&X}jhf5oZ z^L#A1Zk?R;i9PhdUZt#%EeDXvhP-OQp;FsG+jPb~%&us&O!*`gViywtd*pvO2IwY$ zEad@S8ZkkcNPwB&Gq{nLAy?!>u?K z0@x^zw^GjNJq3PnD88}C>V!dgSW-4>K^%3cxh?6zc8D>=+?lEi&gii zt#;EFUzlz9l~pUhnoP>C@~imOX8z&}6Yuk+`um7;aA1V0B1FrGlxaBCLsrTN&%nwv zuh$iE)|j9$$l(?zz{UBvuHk9ZjUS+v=-p0JI?9vEh#uUu_#g>~+ z9I9~?Sc);H6@9T{GcKjxfaf1qdWNb;YZ*q{kflTx>V&W=dj{i|6Dpd{8f=Ac^VmA3 z8cfh7Zsla(9)`ofOcqqZQ+=8q=mXl}o2J63FNMHMl#qr2kUKF=083Dr9;AS1f$I{% z{UM42@jEmeLKqZjFdYVYFzC_r0P&*ZH5i)f951R}iT34VlQrj0X|hQ;ul4_`q6(R&HjxqyI1yQva2L&u&tVUoq#0+?C@u`5(4><-(Yfw69 zM)MgY7ZOL19zyU&Ah&3Dd5`+W%rw~x>1rsWDOzjI#D7EHj)J{%2hL6 zQDg6v;&!vCP%n6#M!&#JYI{Mbv37CP*jiXwpcf>6>5|so9R@4RJNPH4t$K1FRh@cB z^SOE&^vy)|DiM*o23BxYWJnH%w1eu-W1?9RFJA=tjV2?)$l)YI92>=@ zI&extAX4bUF`K-3Efl>9FbVRiuWbGgJjqzpE~ph`F9q5A7h99z#=R<_23WXl>EN@ zUvKTXCix&+Jav4zq_J2vnrnVpQC=>nEe6xLrJY;nB_F(UYT^cq3By2WYH8bIwg6<#(YQuf)_rLM zzK$}q^_cN>-x#%dR!?e6!0)II%z3JFLfoM#XsFcq0bns~ci0TAh!Z}(DhlC`L2#$6 z^$75%B*aC?NDN|WN2H^4!NV^+|L}ny7lwZ<-;sLd7+k!i__0?~PqL!>3%k1)esS>N z7wQ%{Fesn5;#bV~T{hvDsS^2vU#(zA2HBtUe<@>%LT5<2s7s)KK_nith{U35R8WUt z^#wh)2v8^h0aozV(XpD2)lf3UE7XwoB@09wkf>IyK^B_I8ah;85?s{XyP|tmv(3Iq zKJuCqDOQfM(p5#1yB95AFgLXMrTv@Ra^iliXHw^~ISUfynu(V!U(iw$@~8ol5SY|Z zYl+rOxuCg7t#QGo3AxBpS+{7}<()#TW#;^O)0^yeZ?(oZt!w+%>)3a?wzdRCOMZ^Q z@Sgl{=8xvEw~kvJI&<07-E%8l;hEFR_VzJR5bb#lQ@2dawL8Z&wY61QZI?{ZxF$^9 zxak|6Ia9jMSu}TI9efFv__f})cw>R!oq5@umV5{1k9gx%T5nTDRH%a8%nkqHzryxO zUf3=ko5Z;+3Z#Qt4r(|%{YBs^rZ6wkU$@L2Cl97RnY~5&<;jxF-RMMf>bHYgs8rClzow^(gBx zJF|h|PmAb+)*4}pNHNOVC=;lXfmA;ArKJ^z>_wS4P_8E(F6L++el!mtsiJotLDZL&koA%;!_`kmrnBt0xYObF z6~0_^F8Fe{st#1Z%ULpTX^wiV13>-COsED**bl=NE-u?zfMH z#mLsxp;cFw=9ZOu^Ylg$+P=!bxQTW572BL9cSn`o2x?(3Dsq>!l+G*MyS?}7kybl# z@BGT~F40+1Kfg*_F}-%lOn0!tH+%eQ=;k8-x3a5&v!lA|bME`x_p!T4^PK=oNJ9uA zY<82)hZHtp2}wvoNMlGs!ppq(?t5?Y=FLpzW50l~4IiaIDMri>u|-5gtcW!#(we3b z5h)_piY?-=h_PaeNU^rH@{7U$xihob1*|{c?wxz?x#ymH?z!ilduQg(On(+DsR!m| zvI_(*9-cGxqLsy^pFPrBnNyfPeaj>F;3XXkPmkZ5#$7r1XxxMtOO0s*NK6yS@RUxS zuD~B)p|oNm9PZ*i2d4-8^hPE%JqD)q@h59>`+i1p?5k&vf9;X>sozedb8W?$-;d*| z?Lg8{$DEn?c1jo>r=-G)lV3Y?{Hxf%TvU>w@P&;TzoVqy6Tx>raPIfPeTpAie~;mO8eXHHKb*@F z(Eji_kp2JX6WSl5SDb#<6Wd`wVDH4?8{K-TQQ@m+ zLS?IRY3i}F;_uj2pl75 zClU7|W+4OzMtv1JxRn2tGcyuK8(vLzQ~JZVj6V8c>NRG_K`5?Sq3f>$4Yj_BPe;0 z7vV-#dm`G2`Dwg^E;**HKnOnArk|1SS9vH0UMo}`A@3sBqv{&dc`Lmiz_>;X>^O){3BW5ywLa2(5ma&wXHpGX($ zhi!m^7}NR@xDJ($@#B0z19%aqP&F}J*hn4L0^o=C*TC|3luLdKOu1YfiG}g5-{g6jv|=T$m@&o zs6WABB9D)PS28mWAbI81ze`xF2P@cxGT8if&BNPG@*h z0G`uH#9Rl{f5dMF_LKd8|IXF6X-BkIXdOB96!v9amROKDoZOInIr(1dvee_L)9D@Q z=Q6d->Fkc|k?b378`_>|JA=0s-k*Cdza;-qVW2Qvc(K@5+*^FCeW3k`ju{=BJ09=c z)p>X4sVR%6d~xc))Tci-JZ;sq2d2F{ebe;EW^A2ta%RuW+RS4!e==*qtZlO%oZUJ5 zzS%#WvwzP0bG|hf`u16c)=+=7{@ty;pq$a zUwH3@#}_SLba>I@i{8Fy{zbbkdUA1L@w&y2U);XLTJl}omYlY9&C(-F-@UZ|(z`Bw zvwNWX$z_L@o$4`r-sqj$yS?|N<#U!_zWn&|pR8E5;`4o4-_E`#SI%E~3|FDwSbg*A z7uU>KQ(p6>Pn@{C{c`j2qnE#N#r7*+?Kk@$>VIYJv30Z74X-xZv@ zZdd27y}O>+^`qVWyASMsVE2jL-`mr@=g^+xHzaT9yWz+U@9f>V*WdfhzP^3K`%dxS zjoWTKQJPmew15Bp*Y(5tv*pF*d&{p?u$ijzeD!Gc9oa3b^5t4ztyX)t-d{gff2*;z zaoi{vYm8CjE5_*qmmM$<9BCGs1I@>qZ<$NXhs~%;)OyWcVq5kz zj&L?RuN+)*@F_R#Hr%JZJ>Iu`;qUTa3AP3=4{jZNX=u~XH->kNR7dxYK012(rp-4U zx#{(r*W7H~{Kzc>x4eC5;i17pj~sgO(2s6C_twE%A0At9_=mS0xqaI0qqjeI$DBKE zyyM|Jr`=h-^NCMS{q(DMeetgEerEJDU%ESe_ujjoxckj}`tN!A-dXpKe)tcghwy(? z%*NR~|AfK-r}ZO*zoPaihB_s25e@f0dDt^d7-KyVEO38xLj)(Z`M5(G(%@848;;-< zo;rOvg3~DbYy@Y({nZH0YO`oGg4?udbR>fDjRtx=f?v?^{k91Hy4Fo^;=3ao@s`Uj z?OLoLC7uiK($;G>Vjs|ET;r=KtcPP4t|Kf(i1XLtYb8?iK;1&T9ifi5hMSs>uR*K_ zzpdI1a9E2g(rb{~0o+yi?$kEG+f^#8Wipqp5AfLut}f~@luTXt#?Vr&Tir?Sg8sT8 zP4E9A&o)RRAxkK^3%I6ub)jW8+Tv>sq`Pn~VWZ_EsKtQ%4b^TgQvnp$S_6$cp$w-( z4f(+9cpgYX2i)!^sC1NMyn#F2!2~WAN-yyeYRq|eslI3xVu+O@&LySvwp-*h^?!q6xN^co7xCY1NIQAkw zt5ddQ{N5kc_Jq*nBOOH=uh7?UeOS9syGOfQ`>e({SCV+pK8;;iS>B$5{h{yyfvuHNWp}Ba?Hoq$WJnEwJX+GXsy@0RL(uK5$E~3SB zG2VrD2`>F!O5NDm)r0ff<@^)_zDTi(R?`~1$n7%v1a87zLH)EAbI_GEKv&Uv>;cJLv$;R(WmGz-A1?59dsvs zn(iWeewOZ`d+D=uAAOGQr(eMH1HVWQ&@a(Z?7V-FewiMkU!l*_7wBR7ReFSejUJ_6 zr^o0w@RG>i#8-oUi@r#|O;6JA&{Oog^d7VIM`WN~heV^W9s0liEAPCumoz$YSp zOh2Ljq@U7%(R+mV4A6hm8G0Y{KXz*2T6R*TL|SA7UI!_1c(F-A6a}vMicaiznkqgf zritldhM1|%7qi4{F-Oc5^TauLrsF)(CC(S~#RX!4__$aoE)d1fAg&VY#nobi*eEuMYs6-; zMQjz<~XMc8cr8F0ote5jTjvVxPECl*E3ai?a4jQ4v)kMNQO2L*T7+ z*c@Prmav2^9C1*%!V|s-#Gn`w!(v2?ikrmE;udj8+$zSzr^I1#o48%vp*@fZETg-7 zZ8yg~-Q97#EK2u8ac>kakKz?k+!w_wqj*&mua4riVcfGmj8~}mD%6vzo4V(vT7hR& z(w@}aN+T<+L225KOf``9lb)};IX;wR%kf8&fhXN$%`jV8zfm%Ew=RX>$S`bpzOb8V zSGMdynHjb1R>`okDz*bZVb^MD&!}6vnW)(Hl<(?ZBiXQ9G7E09q?>-yH(E03+IqE6 zwTCPd0Hd>UA{{u4OBq(#9?mVuWpr0S@R1aSdo@5-F%pE znYrwJJPBcX0D|>C6-mX zX}!t}p<&1=tA?NQ8oDb}m4<|dxWkH`FP&0ZuQZ2rw_2>}P+^?P#z2ylo^o^;0Sv=- zGBw*}@`56d6N*!mNXY}T;ulcQplgRMFUASggf_Emu4Pyem=BFep)+<<#l?ex zgi64KiQ5dTW{1VRiYuk%HEh2a6$`DR4Fy9eSJtf<)LqveQku+%ppqgR!hw?u0c8)H_@==0C=!gU#l&)`}#wk&{VY|jC%vU$tVDY62?7}bjLxvB#3>D8t z#%8Zlh0x+lsNA&^O*xXpX!f#^$X?NJ1g)}H3LI8kN0ef5Io+llNkcbldF5R~pOWDY zg^MVfhSh{|hCQ5d0e3%3CeV>OivF|0HycN!!4x`7(Xp&f+YfvZWG@Ih8e zjrY7V@vx%yc<_eFoFY(#Gf{)Haa+?N=X3x!RB7g6Vi+{6;A+D4yhNi~&6Z&eP@a`6 zOVi9(SgkcE)|a^ky0H{mw*q;*XA~4TZ7ODkObLy%bk-uLPQoY#9g|RjGr176fe*LK zGCkyC%r{cL?lrwMJSue7R(1_ptLUE0vE_#2Bvp6qz=2z_nkg7$P)(Pm4iAy21U|ab z8Ob@iqwL3UlAb;&bKEsCdk zTe8|T{Ctf?LM;a*M3< zf~sIPgxRAi{!E&wO0S7&BW>yqN6JwALd!05yVPhbME0)iEq5@m{ZO=g2!{QP)>;-C z6Vj$I`#$>j8{~9O4m&(V0it)&fsUsZAStf}K~go$5LTik8<{$0 zcSo;g;pUWGWO*&Y#o861Tnp^FnuU%rd+8=dP*t`mfk0+&}oBi3yY$@+znO zEXWI;wAV1CS#6Ienoyc4JVlk@USUIl;WeO97tT)d#4}u}!a+r|w(gT%B;25!Xu3m*vR~n4vTPe4vz^Khl}8|= z)6mNpk)__A)l4}z6F?W*k<4x#5}-16yR1L8T@442@X)z@CNu^v#TACdA`t||;-DUMaCk_l9+ qx{Kk=rVu5YQ9XR<GPS>b$X_& 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 z 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
      V$fDV|Iw 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�j?iv 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ⅇ? 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
      UhB;TYKNUX2 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 diff --git a/themes/landscape/source/css/style.styl b/themes/landscape/source/css/style.styl deleted file mode 100644 index c51f8e40e..000000000 --- a/themes/landscape/source/css/style.styl +++ /dev/null @@ -1,89 +0,0 @@ -@import "nib" -@import "_variables" -@import "_util/mixin" -@import "_util/grid" - -global-reset() - -input, button - margin: 0 - padding: 0 - &::-moz-focus-inner - border: 0 - padding: 0 - -@font-face - font-family: FontAwesome - font-style: normal - font-weight: normal - src: url(font-icon-path + ".eot?v=#" + font-icon-version) - src: url(font-icon-path + ".eot?#iefix&v=#" + font-icon-version) format("embedded-opentype"), - url(font-icon-path + ".woff?v=#" + font-icon-version) format("woff"), - url(font-icon-path + ".ttf?v=#" + font-icon-version) format("truetype"), - url(font-icon-path + ".svg#fontawesomeregular?v=#" + font-icon-version) format("svg") - -html, body, #container - height: 100% - -body - background: color-background - font: font-size font-sans - -webkit-text-size-adjust: 100% - -.outer - clearfix() - max-width: (column-width + gutter-width) * columns + gutter-width - margin: 0 auto - padding: 0 gutter-width - -.inner - column(columns) - -.left, .alignleft - float: left - -.right, .alignright - float: right - -.clear - clear: both - -#container - position: relative - -.mobile-nav-on - overflow: hidden - -#wrap - height: 100% - width: 100% - position: absolute - top: 0 - left: 0 - transition: 0.2s ease-out - z-index: 1 - background: color-background - .mobile-nav-on & - left: mobile-nav-width - -if sidebar and sidebar isnt bottom - #main - @media mq-normal - column(main-column) - -if sidebar is left - @media mq-normal - #main - float: right - -@import "_extend" -@import "_partial/header" -@import "_partial/article" -@import "_partial/comment" -@import "_partial/archive" -@import "_partial/footer" -@import "_partial/highlight" -@import "_partial/mobile" - -if sidebar - @import "_partial/sidebar" \ No newline at end of file diff --git a/themes/landscape/source/fancybox/blank.gif b/themes/landscape/source/fancybox/blank.gif deleted file mode 100644 index 35d42e808f0a8017b8d52a06be2f8fec0b466a66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE7Dgb&paUX6G7L;iE{qJ;0LZEa`2YX_ diff --git a/themes/landscape/source/fancybox/fancybox_loading.gif b/themes/landscape/source/fancybox/fancybox_loading.gif deleted file mode 100644 index a03a40c097ee728709f65d4ea7397903a389d484..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6567 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 diff --git a/themes/landscape/source/fancybox/fancybox_loading@2x.gif b/themes/landscape/source/fancybox/fancybox_loading@2x.gif deleted file mode 100644 index 9205aeb09fffa6b571b4c6beee30b18400829c03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13984 zcmdtpX;f2(+Ar{(ot=4L0|COk2@%3*z%UvmBmq&;1`CRoVn8Z`pb=0JsqPHSQ$#>O zlpu(Ls8JA6P{W{NYc1kXYOM{3ii(OuTWdX>n;y^c^`4${?|t8U*In!0e1XN{3&Z}c z|NnWOELa%o9}vd{xWEAbfIvv4P>F@&!Tv!ui=7ak(7eBSVtj&O!iZcJ$@AuAre}7Z z=&Y=+yfJd)^~={(GPR_rBz#f$m9MV2ySk^Qq_(%U+gRDetcu|W@^i9tde8K}d;4zc z*;M_$`a5^;KzK-%rxJ&X2QLn?o!AL$6PjC^Cmu{N%o&l(BYD2O%*~mdU7huH^*3(a zc>T+3DxF$VRuaB6{L0lU?w;r>m0w%gd*#Kgw%=ks&6=k%WIeK+$C_{YoPuau=B zk)Mi!B_ZCPTr9@$b%);|5($_Gxc~7zfBcvLenz)X7Uph+@%iqcoEz9Md`R*#z-GR2 zt8dXVpW?ZVIZ+-Gx=Ycb(>>SzCy`;_Wwyar_cK7Wh&O zrlIseae92AkZ50;y?W<7KWti>V~)@`f6qLxhBEd3d4LHAEHdDkiYOs-Y)E{V> zW6~D2Vh>eoeqwMQvwM#Fl3qfgiFP)WjF1Bwg^0QQ6y5A-#_f4rQ>{ZN!bL)0FKcTj zmtREz>uarK!Iv6s=Pl9&3g{3SgfGt;U2si=UkR|9DQrcaG60u7isr@<0SI=eK&Fo^ zD5be?9#mQCKQjUyhnGl(MIkd-Q|7a?DLlO$K=fO7R5j{NxbUU>FJ2r>(*il^6xhiY z>VYN#BOC1&Nbi>(V6PW1W^Qu2@}*POh)!lqE&*prUJD90A6Ur~1Cn9C3_=KY-6?@2 z+kBkHC|pv+ec`({{OnGtI;_W%MbkT22*IID5#$9S zXvQ)C7@*nAY@T$WGDj4Gs1X2WF#xqhL=24KkO8B4T{q2%dO;l3^!ANQqQmk-HIRco zYYlba_0G!GuXnx?`&;QJn|JA-4k2QTD;$VyMqM~oZ3Y1Sv_
      bMxRL(pijsY@019xTxeF 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 diff --git a/themes/landscape/source/fancybox/fancybox_overlay.png b/themes/landscape/source/fancybox/fancybox_overlay.png deleted file mode 100644 index a4391396a9d6b6d7ff3b781f16904732fea40bdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1003 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 S1P^~LSQ@H2DwWEJcmD(3qHSjY diff --git a/themes/landscape/source/fancybox/helpers/fancybox_buttons.png b/themes/landscape/source/fancybox/helpers/fancybox_buttons.png deleted file mode 100644 index 07872072704114b91681e2e6f9697ce1521b64d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1080 zcmeAS@N?(olHy`uVBq!ia0vp^Q6S903?%u>HW~n_y#YQUu0R?WSg~RSP%1Go5lD7* zbwQLpe*757ICA6&kW5WYZD?o!GK`Ilf#ib+545$lfs7|lo|Kf7golSGBqXd|yY}6? zcgK$(2by;H@Zldne!PGGe#3?hK*r6RH}~(~f9%+?@87@w1cMhZUi|v?>-O#24<9~! z_3G8{-@iY6_yAP-?b|mX`_G?0|Ns97D*W>0%coDDfKr0iiH$(}%u0g%f*BZ@S=qVy z1VzPVE?Tl=<;G1rjvPIE`Ra{3j~;*c^fm05 z&}0S%rZ1i@jv*CsZ>PnU&vFoGYh)GcNLbUk(XcbqE{E69EG*srz@Pu~uR3~FiyV{r zKBIe^jd`)*o5yoLKHYF_zn{1F51Du38}jGBJ=VP0ecMa>bF+9K`W*ijXIeka_uU8A z*POd= z37@}bnmsYU%ylPY9@}5u*!t|)yNM@Xh;kTr{CTM%UpgJrq;^z1sCv#Ff{JcXH0QycQ=j-SpqK)3sqC&x%d{>uv#p4L4W% zmLHbjTwSCP^ID(pX0NGG_)`a^m0!6nD|Dt#Dvad0vf#zR8xqRnG{y^pfbH6Kc3;s;HW4p`heoW(jKH<7AtsEly z$M&AE{dQl2(Z%x9#dt|gSIbWy<4Xjtobc#5EmRoE7k>Wa#EFw7ELWat{GexP^oT7` zWJjo_z_Z6E{wwPO!J9zw9U;?iErx;1Arv+D^&N20C4AEY>{Ek`B=i66zn9m4$^{AUqIL)kd`}_|Y zirXZ4+!kL{DD1t`cieXN&YnLTl;^yVdNTEd730M4<~70>Dwl5dOP&;N_1dH)?&X@x qGoDO6XT>`g#8(4K<@tG^_7CJ-u|B8Hp&OWk7(8A5T-G@yGywqna}dM; diff --git a/themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.css b/themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.css deleted file mode 100644 index a26273af2..000000000 --- a/themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.css +++ /dev/null @@ -1,97 +0,0 @@ -#fancybox-buttons { - position: fixed; - left: 0; - width: 100%; - z-index: 8050; -} - -#fancybox-buttons.top { - top: 10px; -} - -#fancybox-buttons.bottom { - bottom: 10px; -} - -#fancybox-buttons ul { - display: block; - width: 166px; - height: 30px; - margin: 0 auto; - padding: 0; - list-style: none; - border: 1px solid #111; - border-radius: 3px; - -webkit-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); - -moz-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); - box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); - background: rgb(50,50,50); - background: -moz-linear-gradient(top, rgb(68,68,68) 0%, rgb(52,52,52) 50%, rgb(41,41,41) 50%, rgb(51,51,51) 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(68,68,68)), color-stop(50%,rgb(52,52,52)), color-stop(50%,rgb(41,41,41)), color-stop(100%,rgb(51,51,51))); - background: -webkit-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); - background: -o-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); - background: -ms-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); - background: linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#444444', endColorstr='#222222',GradientType=0 ); -} - -#fancybox-buttons ul li { - float: left; - margin: 0; - padding: 0; -} - -#fancybox-buttons a { - display: block; - width: 30px; - height: 30px; - text-indent: -9999px; - background-color: transparent; - background-image: url('fancybox_buttons.png'); - background-repeat: no-repeat; - outline: none; - opacity: 0.8; -} - -#fancybox-buttons a:hover { - opacity: 1; -} - -#fancybox-buttons a.btnPrev { - background-position: 5px 0; -} - -#fancybox-buttons a.btnNext { - background-position: -33px 0; - border-right: 1px solid #3e3e3e; -} - -#fancybox-buttons a.btnPlay { - background-position: 0 -30px; -} - -#fancybox-buttons a.btnPlayOn { - background-position: -30px -30px; -} - -#fancybox-buttons a.btnToggle { - background-position: 3px -60px; - border-left: 1px solid #111; - border-right: 1px solid #3e3e3e; - width: 35px -} - -#fancybox-buttons a.btnToggleOn { - background-position: -27px -60px; -} - -#fancybox-buttons a.btnClose { - border-left: 1px solid #111; - width: 35px; - background-position: -56px 0px; -} - -#fancybox-buttons a.btnDisabled { - opacity : 0.4; - cursor: default; -} \ No newline at end of file diff --git a/themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.js b/themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.js deleted file mode 100644 index 352bb5f0d..000000000 --- a/themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.js +++ /dev/null @@ -1,122 +0,0 @@ - /*! - * Buttons helper for fancyBox - * version: 1.0.5 (Mon, 15 Oct 2012) - * @requires fancyBox v2.0 or later - * - * Usage: - * $(".fancybox").fancybox({ - * helpers : { - * buttons: { - * position : 'top' - * } - * } - * }); - * - */ -;(function ($) { - //Shortcut for fancyBox object - var F = $.fancybox; - - //Add helper object - F.helpers.buttons = { - defaults : { - skipSingle : false, // disables if gallery contains single image - position : 'top', // 'top' or 'bottom' - tpl : '

      ' - }, - - list : null, - buttons: null, - - beforeLoad: function (opts, obj) { - //Remove self if gallery do not have at least two items - - if (opts.skipSingle && obj.group.length < 2) { - obj.helpers.buttons = false; - obj.closeBtn = true; - - return; - } - - //Increase top margin to give space for buttons - obj.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30; - }, - - onPlayStart: function () { - if (this.buttons) { - this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn'); - } - }, - - onPlayEnd: function () { - if (this.buttons) { - this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn'); - } - }, - - afterShow: function (opts, obj) { - var buttons = this.buttons; - - if (!buttons) { - this.list = $(opts.tpl).addClass(opts.position).appendTo('body'); - - buttons = { - prev : this.list.find('.btnPrev').click( F.prev ), - next : this.list.find('.btnNext').click( F.next ), - play : this.list.find('.btnPlay').click( F.play ), - toggle : this.list.find('.btnToggle').click( F.toggle ), - close : this.list.find('.btnClose').click( F.close ) - } - } - - //Prev - if (obj.index > 0 || obj.loop) { - buttons.prev.removeClass('btnDisabled'); - } else { - buttons.prev.addClass('btnDisabled'); - } - - //Next / Play - if (obj.loop || obj.index < obj.group.length - 1) { - buttons.next.removeClass('btnDisabled'); - buttons.play.removeClass('btnDisabled'); - - } else { - buttons.next.addClass('btnDisabled'); - buttons.play.addClass('btnDisabled'); - } - - this.buttons = buttons; - - this.onUpdate(opts, obj); - }, - - onUpdate: function (opts, obj) { - var toggle; - - if (!this.buttons) { - return; - } - - toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn'); - - //Size toggle button - if (obj.canShrink) { - toggle.addClass('btnToggleOn'); - - } else if (!obj.canExpand) { - toggle.addClass('btnDisabled'); - } - }, - - beforeClose: function () { - if (this.list) { - this.list.remove(); - } - - this.list = null; - this.buttons = null; - } - }; - -}(jQuery)); diff --git a/themes/landscape/source/fancybox/helpers/jquery.fancybox-media.js b/themes/landscape/source/fancybox/helpers/jquery.fancybox-media.js deleted file mode 100644 index 62737a517..000000000 --- a/themes/landscape/source/fancybox/helpers/jquery.fancybox-media.js +++ /dev/null @@ -1,199 +0,0 @@ -/*! - * Media helper for fancyBox - * version: 1.0.6 (Fri, 14 Jun 2013) - * @requires fancyBox v2.0 or later - * - * Usage: - * $(".fancybox").fancybox({ - * helpers : { - * media: true - * } - * }); - * - * Set custom URL parameters: - * $(".fancybox").fancybox({ - * helpers : { - * media: { - * youtube : { - * params : { - * autoplay : 0 - * } - * } - * } - * } - * }); - * - * Or: - * $(".fancybox").fancybox({, - * helpers : { - * media: true - * }, - * youtube : { - * autoplay: 0 - * } - * }); - * - * Supports: - * - * Youtube - * http://www.youtube.com/watch?v=opj24KnzrWo - * http://www.youtube.com/embed/opj24KnzrWo - * http://youtu.be/opj24KnzrWo - * http://www.youtube-nocookie.com/embed/opj24KnzrWo - * Vimeo - * http://vimeo.com/40648169 - * http://vimeo.com/channels/staffpicks/38843628 - * http://vimeo.com/groups/surrealism/videos/36516384 - * http://player.vimeo.com/video/45074303 - * Metacafe - * http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/ - * http://www.metacafe.com/watch/7635964/ - * Dailymotion - * http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people - * Twitvid - * http://twitvid.com/QY7MD - * Twitpic - * http://twitpic.com/7p93st - * Instagram - * http://instagr.am/p/IejkuUGxQn/ - * http://instagram.com/p/IejkuUGxQn/ - * Google maps - * http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17 - * http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16 - * http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56 - */ -;(function ($) { - "use strict"; - - //Shortcut for fancyBox object - var F = $.fancybox, - format = function( url, rez, params ) { - params = params || ''; - - if ( $.type( params ) === "object" ) { - params = $.param(params, true); - } - - $.each(rez, function(key, value) { - url = url.replace( '$' + key, value || '' ); - }); - - if (params.length) { - url += ( url.indexOf('?') > 0 ? '&' : '?' ) + params; - } - - return url; - }; - - //Add helper object - F.helpers.media = { - defaults : { - youtube : { - matcher : /(youtube\.com|youtu\.be|youtube-nocookie\.com)\/(watch\?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*)).*/i, - params : { - autoplay : 1, - autohide : 1, - fs : 1, - rel : 0, - hd : 1, - wmode : 'opaque', - enablejsapi : 1 - }, - type : 'iframe', - url : '//www.youtube.com/embed/$3' - }, - vimeo : { - matcher : /(?:vimeo(?:pro)?.com)\/(?:[^\d]+)?(\d+)(?:.*)/, - params : { - autoplay : 1, - hd : 1, - show_title : 1, - show_byline : 1, - show_portrait : 0, - fullscreen : 1 - }, - type : 'iframe', - url : '//player.vimeo.com/video/$1' - }, - metacafe : { - matcher : /metacafe.com\/(?:watch|fplayer)\/([\w\-]{1,10})/, - params : { - autoPlay : 'yes' - }, - type : 'swf', - url : function( rez, params, obj ) { - obj.swf.flashVars = 'playerVars=' + $.param( params, true ); - - return '//www.metacafe.com/fplayer/' + rez[1] + '/.swf'; - } - }, - dailymotion : { - matcher : /dailymotion.com\/video\/(.*)\/?(.*)/, - params : { - additionalInfos : 0, - autoStart : 1 - }, - type : 'swf', - url : '//www.dailymotion.com/swf/video/$1' - }, - twitvid : { - matcher : /twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i, - params : { - autoplay : 0 - }, - type : 'iframe', - url : '//www.twitvid.com/embed.php?guid=$1' - }, - twitpic : { - matcher : /twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i, - type : 'image', - url : '//twitpic.com/show/full/$1/' - }, - instagram : { - matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i, - type : 'image', - url : '//$1/p/$2/media/?size=l' - }, - google_maps : { - matcher : /maps\.google\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|maps\?)(.*)/i, - type : 'iframe', - url : function( rez ) { - return '//maps.google.' + rez[1] + '/' + rez[3] + '' + rez[4] + '&output=' + (rez[4].indexOf('layer=c') > 0 ? 'svembed' : 'embed'); - } - } - }, - - beforeLoad : function(opts, obj) { - var url = obj.href || '', - type = false, - what, - item, - rez, - params; - - for (what in opts) { - if (opts.hasOwnProperty(what)) { - item = opts[ what ]; - rez = url.match( item.matcher ); - - if (rez) { - type = item.type; - params = $.extend(true, {}, item.params, obj[ what ] || ($.isPlainObject(opts[ what ]) ? opts[ what ].params : null)); - - url = $.type( item.url ) === "function" ? item.url.call( this, rez, params, obj ) : format( item.url, rez, params ); - - break; - } - } - } - - if (type) { - obj.href = url; - obj.type = type; - - obj.autoHeight = false; - } - } - }; - -}(jQuery)); \ No newline at end of file diff --git a/themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.css b/themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.css deleted file mode 100644 index 63d294368..000000000 --- a/themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.css +++ /dev/null @@ -1,55 +0,0 @@ -#fancybox-thumbs { - position: fixed; - left: 0; - width: 100%; - overflow: hidden; - z-index: 8050; -} - -#fancybox-thumbs.bottom { - bottom: 2px; -} - -#fancybox-thumbs.top { - top: 2px; -} - -#fancybox-thumbs ul { - position: relative; - list-style: none; - margin: 0; - padding: 0; -} - -#fancybox-thumbs ul li { - float: left; - padding: 1px; - opacity: 0.5; -} - -#fancybox-thumbs ul li.active { - opacity: 0.75; - padding: 0; - border: 1px solid #fff; -} - -#fancybox-thumbs ul li:hover { - opacity: 1; -} - -#fancybox-thumbs ul li a { - display: block; - position: relative; - overflow: hidden; - border: 1px solid #222; - background: #111; - outline: none; -} - -#fancybox-thumbs ul li img { - display: block; - position: relative; - border: 0; - padding: 0; - max-width: none; -} \ No newline at end of file diff --git a/themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.js b/themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.js deleted file mode 100644 index 58c971943..000000000 --- a/themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.js +++ /dev/null @@ -1,165 +0,0 @@ - /*! - * Thumbnail helper for fancyBox - * version: 1.0.7 (Mon, 01 Oct 2012) - * @requires fancyBox v2.0 or later - * - * Usage: - * $(".fancybox").fancybox({ - * helpers : { - * thumbs: { - * width : 50, - * height : 50 - * } - * } - * }); - * - */ -;(function ($) { - //Shortcut for fancyBox object - var F = $.fancybox; - - //Add helper object - F.helpers.thumbs = { - defaults : { - width : 50, // thumbnail width - height : 50, // thumbnail height - position : 'bottom', // 'top' or 'bottom' - source : function ( item ) { // function to obtain the URL of the thumbnail image - var href; - - if (item.element) { - href = $(item.element).find('img').attr('src'); - } - - if (!href && item.type === 'image' && item.href) { - href = item.href; - } - - return href; - } - }, - - wrap : null, - list : null, - width : 0, - - init: function (opts, obj) { - var that = this, - list, - thumbWidth = opts.width, - thumbHeight = opts.height, - thumbSource = opts.source; - - //Build list structure - list = ''; - - for (var n = 0; n < obj.group.length; n++) { - list += '
    • '; - } - - this.wrap = $('
      ').addClass(opts.position).appendTo('body'); - this.list = $('
        ' + list + '
      ').appendTo(this.wrap); - - //Load each thumbnail - $.each(obj.group, function (i) { - var el = obj.group[ i ], - href = thumbSource( el ); - - if (!href) { - return; - } - - $("").load(function () { - var width = this.width, - height = this.height, - widthRatio, heightRatio, parent; - - if (!that.list || !width || !height) { - return; - } - - //Calculate thumbnail width/height and center it - widthRatio = width / thumbWidth; - heightRatio = height / thumbHeight; - - parent = that.list.children().eq(i).find('a'); - - if (widthRatio >= 1 && heightRatio >= 1) { - if (widthRatio > heightRatio) { - width = Math.floor(width / heightRatio); - height = thumbHeight; - - } else { - width = thumbWidth; - height = Math.floor(height / widthRatio); - } - } - - $(this).css({ - width : width, - height : height, - top : Math.floor(thumbHeight / 2 - height / 2), - left : Math.floor(thumbWidth / 2 - width / 2) - }); - - parent.width(thumbWidth).height(thumbHeight); - - $(this).hide().appendTo(parent).fadeIn(300); - - }) - .attr('src', href) - .attr('title', el.title); - }); - - //Set initial width - this.width = this.list.children().eq(0).outerWidth(true); - - this.list.width(this.width * (obj.group.length + 1)).css('left', Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5))); - }, - - beforeLoad: function (opts, obj) { - //Remove self if gallery do not have at least two items - if (obj.group.length < 2) { - obj.helpers.thumbs = false; - - return; - } - - //Increase bottom margin to give space for thumbs - obj.margin[ opts.position === 'top' ? 0 : 2 ] += ((opts.height) + 15); - }, - - afterShow: function (opts, obj) { - //Check if exists and create or update list - if (this.list) { - this.onUpdate(opts, obj); - - } else { - this.init(opts, obj); - } - - //Set active element - this.list.children().removeClass('active').eq(obj.index).addClass('active'); - }, - - //Center list - onUpdate: function (opts, obj) { - if (this.list) { - this.list.stop(true).animate({ - 'left': Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5)) - }, 150); - } - }, - - beforeClose: function () { - if (this.wrap) { - this.wrap.remove(); - } - - this.wrap = null; - this.list = null; - this.width = 0; - } - } - -}(jQuery)); \ No newline at end of file diff --git a/themes/landscape/source/fancybox/jquery.fancybox.css b/themes/landscape/source/fancybox/jquery.fancybox.css deleted file mode 100644 index c75d05135..000000000 --- a/themes/landscape/source/fancybox/jquery.fancybox.css +++ /dev/null @@ -1,273 +0,0 @@ -/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */ -.fancybox-wrap, -.fancybox-skin, -.fancybox-outer, -.fancybox-inner, -.fancybox-image, -.fancybox-wrap iframe, -.fancybox-wrap object, -.fancybox-nav, -.fancybox-nav span, -.fancybox-tmp -{ - padding: 0; - margin: 0; - border: 0; - outline: none; - vertical-align: top; -} - -.fancybox-wrap { - position: absolute; - top: 0; - left: 0; - z-index: 8020; -} - -.fancybox-skin { - position: relative; - background: #f9f9f9; - color: #444; - text-shadow: none; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.fancybox-opened { - z-index: 8030; -} - -.fancybox-opened .fancybox-skin { - -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); - box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); -} - -.fancybox-outer, .fancybox-inner { - position: relative; -} - -.fancybox-inner { - overflow: hidden; -} - -.fancybox-type-iframe .fancybox-inner { - -webkit-overflow-scrolling: touch; -} - -.fancybox-error { - color: #444; - font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; - margin: 0; - padding: 15px; - white-space: nowrap; -} - -.fancybox-image, .fancybox-iframe { - display: block; - width: 100%; - height: 100%; -} - -.fancybox-image { - max-width: 100%; - max-height: 100%; -} - -#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { - background-image: url(fancybox_sprite.png); -} - -#fancybox-loading { - position: fixed; - top: 50%; - left: 50%; - margin-top: -22px; - margin-left: -22px; - background-position: 0 -108px; - opacity: 0.8; - cursor: pointer; - z-index: 8060; -} - -#fancybox-loading div { - width: 44px; - height: 44px; - background: url(fancybox_loading.gif) center center no-repeat; -} - -.fancybox-close { - position: absolute; - top: -18px; - right: -18px; - width: 36px; - height: 36px; - cursor: pointer; - z-index: 8040; -} - -.fancybox-nav { - position: absolute; - top: 0; - width: 40%; - height: 100%; - cursor: pointer; - text-decoration: none; - background: transparent url(blank.gif); /* helps IE */ - -webkit-tap-highlight-color: rgba(0,0,0,0); - z-index: 8040; -} - -.fancybox-prev { - left: 0; -} - -.fancybox-next { - right: 0; -} - -.fancybox-nav span { - position: absolute; - top: 50%; - width: 36px; - height: 34px; - margin-top: -18px; - cursor: pointer; - z-index: 8040; - visibility: hidden; -} - -.fancybox-prev span { - left: 10px; - background-position: 0 -36px; -} - -.fancybox-next span { - right: 10px; - background-position: 0 -72px; -} - -.fancybox-nav:hover span { - visibility: visible; -} - -.fancybox-tmp { - position: absolute; - top: -99999px; - left: -99999px; - max-width: 99999px; - max-height: 99999px; - overflow: visible !important; -} - -/* Overlay helper */ - -.fancybox-lock { - overflow: visible !important; - width: auto; -} - -.fancybox-lock body { - overflow: hidden !important; -} - -.fancybox-lock-test { - overflow-y: hidden !important; -} - -.fancybox-overlay { - position: absolute; - top: 0; - left: 0; - overflow: hidden; - display: none; - z-index: 8010; - background: url(fancybox_overlay.png); -} - -.fancybox-overlay-fixed { - position: fixed; - bottom: 0; - right: 0; -} - -.fancybox-lock .fancybox-overlay { - overflow: auto; - overflow-y: scroll; -} - -/* Title helper */ - -.fancybox-title { - visibility: hidden; - font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; - position: relative; - text-shadow: none; - z-index: 8050; -} - -.fancybox-opened .fancybox-title { - visibility: visible; -} - -.fancybox-title-float-wrap { - position: absolute; - bottom: 0; - right: 50%; - margin-bottom: -35px; - z-index: 8050; - text-align: center; -} - -.fancybox-title-float-wrap .child { - display: inline-block; - margin-right: -100%; - padding: 2px 20px; - background: transparent; /* Fallback for web browsers that doesn't support RGBa */ - background: rgba(0, 0, 0, 0.8); - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; - text-shadow: 0 1px 2px #222; - color: #FFF; - font-weight: bold; - line-height: 24px; - white-space: nowrap; -} - -.fancybox-title-outside-wrap { - position: relative; - margin-top: 10px; - color: #fff; -} - -.fancybox-title-inside-wrap { - padding-top: 10px; -} - -.fancybox-title-over-wrap { - position: absolute; - bottom: 0; - left: 0; - color: #fff; - padding: 10px; - background: #000; - background: rgba(0, 0, 0, .8); -} - -/*Retina graphics!*/ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (min--moz-device-pixel-ratio: 1.5), - only screen and (min-device-pixel-ratio: 1.5){ - - #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { - background-image: url(fancybox_sprite@2x.png); - background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/ - } - - #fancybox-loading div { - background-image: url(fancybox_loading@2x.gif); - background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/ - } -} \ No newline at end of file diff --git a/themes/landscape/source/fancybox/jquery.fancybox.js b/themes/landscape/source/fancybox/jquery.fancybox.js deleted file mode 100644 index 7a0f8acb0..000000000 --- a/themes/landscape/source/fancybox/jquery.fancybox.js +++ /dev/null @@ -1,2017 +0,0 @@ -/*! - * fancyBox - jQuery Plugin - * version: 2.1.5 (Fri, 14 Jun 2013) - * requires jQuery v1.6 or later - * - * Examples at http://fancyapps.com/fancybox/ - * License: www.fancyapps.com/fancybox/#license - * - * Copyright 2012 Janis Skarnelis - janis@fancyapps.com - * - */ - -;(function (window, document, $, undefined) { - "use strict"; - - var H = $("html"), - W = $(window), - D = $(document), - F = $.fancybox = function () { - F.open.apply( this, arguments ); - }, - IE = navigator.userAgent.match(/msie/i), - didUpdate = null, - isTouch = document.createTouch !== undefined, - - isQuery = function(obj) { - return obj && obj.hasOwnProperty && obj instanceof $; - }, - isString = function(str) { - return str && $.type(str) === "string"; - }, - isPercentage = function(str) { - return isString(str) && str.indexOf('%') > 0; - }, - isScrollable = function(el) { - return (el && !(el.style.overflow && el.style.overflow === 'hidden') && ((el.clientWidth && el.scrollWidth > el.clientWidth) || (el.clientHeight && el.scrollHeight > el.clientHeight))); - }, - getScalar = function(orig, dim) { - var value = parseInt(orig, 10) || 0; - - if (dim && isPercentage(orig)) { - value = F.getViewport()[ dim ] / 100 * value; - } - - return Math.ceil(value); - }, - getValue = function(value, dim) { - return getScalar(value, dim) + 'px'; - }; - - $.extend(F, { - // The current version of fancyBox - version: '2.1.5', - - defaults: { - padding : 15, - margin : 20, - - width : 800, - height : 600, - minWidth : 100, - minHeight : 100, - maxWidth : 9999, - maxHeight : 9999, - pixelRatio: 1, // Set to 2 for retina display support - - autoSize : true, - autoHeight : false, - autoWidth : false, - - autoResize : true, - autoCenter : !isTouch, - fitToView : true, - aspectRatio : false, - topRatio : 0.5, - leftRatio : 0.5, - - scrolling : 'auto', // 'auto', 'yes' or 'no' - wrapCSS : '', - - arrows : true, - closeBtn : true, - closeClick : false, - nextClick : false, - mouseWheel : true, - autoPlay : false, - playSpeed : 3000, - preload : 3, - modal : false, - loop : true, - - ajax : { - dataType : 'html', - headers : { 'X-fancyBox': true } - }, - iframe : { - scrolling : 'auto', - preload : true - }, - swf : { - wmode: 'transparent', - allowfullscreen : 'true', - allowscriptaccess : 'always' - }, - - keys : { - next : { - 13 : 'left', // enter - 34 : 'up', // page down - 39 : 'left', // right arrow - 40 : 'up' // down arrow - }, - prev : { - 8 : 'right', // backspace - 33 : 'down', // page up - 37 : 'right', // left arrow - 38 : 'down' // up arrow - }, - close : [27], // escape key - play : [32], // space - start/stop slideshow - toggle : [70] // letter "f" - toggle fullscreen - }, - - direction : { - next : 'left', - prev : 'right' - }, - - scrollOutside : true, - - // Override some properties - index : 0, - type : null, - href : null, - content : null, - title : null, - - // HTML templates - tpl: { - wrap : '
      ', - image : '', - iframe : '', - error : '

      The requested content cannot be loaded.
      Please try again later.

      ', - closeBtn : '', - next : '', - prev : '' - }, - - // Properties for each animation type - // Opening fancyBox - openEffect : 'fade', // 'elastic', 'fade' or 'none' - openSpeed : 250, - openEasing : 'swing', - openOpacity : true, - openMethod : 'zoomIn', - - // Closing fancyBox - closeEffect : 'fade', // 'elastic', 'fade' or 'none' - closeSpeed : 250, - closeEasing : 'swing', - closeOpacity : true, - closeMethod : 'zoomOut', - - // Changing next gallery item - nextEffect : 'elastic', // 'elastic', 'fade' or 'none' - nextSpeed : 250, - nextEasing : 'swing', - nextMethod : 'changeIn', - - // Changing previous gallery item - prevEffect : 'elastic', // 'elastic', 'fade' or 'none' - prevSpeed : 250, - prevEasing : 'swing', - prevMethod : 'changeOut', - - // Enable default helpers - helpers : { - overlay : true, - title : true - }, - - // Callbacks - onCancel : $.noop, // If canceling - beforeLoad : $.noop, // Before loading - afterLoad : $.noop, // After loading - beforeShow : $.noop, // Before changing in current item - afterShow : $.noop, // After opening - beforeChange : $.noop, // Before changing gallery item - beforeClose : $.noop, // Before closing - afterClose : $.noop // After closing - }, - - //Current state - group : {}, // Selected group - opts : {}, // Group options - previous : null, // Previous element - coming : null, // Element being loaded - current : null, // Currently loaded element - isActive : false, // Is activated - isOpen : false, // Is currently open - isOpened : false, // Have been fully opened at least once - - wrap : null, - skin : null, - outer : null, - inner : null, - - player : { - timer : null, - isActive : false - }, - - // Loaders - ajaxLoad : null, - imgPreload : null, - - // Some collections - transitions : {}, - helpers : {}, - - /* - * Static methods - */ - - open: function (group, opts) { - if (!group) { - return; - } - - if (!$.isPlainObject(opts)) { - opts = {}; - } - - // Close if already active - if (false === F.close(true)) { - return; - } - - // Normalize group - if (!$.isArray(group)) { - group = isQuery(group) ? $(group).get() : [group]; - } - - // Recheck if the type of each element is `object` and set content type (image, ajax, etc) - $.each(group, function(i, element) { - var obj = {}, - href, - title, - content, - type, - rez, - hrefParts, - selector; - - if ($.type(element) === "object") { - // Check if is DOM element - if (element.nodeType) { - element = $(element); - } - - if (isQuery(element)) { - obj = { - href : element.data('fancybox-href') || element.attr('href'), - title : $('
      ').text( element.data('fancybox-title') || element.attr('title') ).html(), - isDom : true, - element : element - }; - - if ($.metadata) { - $.extend(true, obj, element.metadata()); - } - - } else { - obj = element; - } - } - - href = opts.href || obj.href || (isString(element) ? element : null); - title = opts.title !== undefined ? opts.title : obj.title || ''; - - content = opts.content || obj.content; - type = content ? 'html' : (opts.type || obj.type); - - if (!type && obj.isDom) { - type = element.data('fancybox-type'); - - if (!type) { - rez = element.prop('class').match(/fancybox\.(\w+)/); - type = rez ? rez[1] : null; - } - } - - if (isString(href)) { - // Try to guess the content type - if (!type) { - if (F.isImage(href)) { - type = 'image'; - - } else if (F.isSWF(href)) { - type = 'swf'; - - } else if (href.charAt(0) === '#') { - type = 'inline'; - - } else if (isString(element)) { - type = 'html'; - content = element; - } - } - - // Split url into two pieces with source url and content selector, e.g, - // "/mypage.html #my_id" will load "/mypage.html" and display element having id "my_id" - if (type === 'ajax') { - hrefParts = href.split(/\s+/, 2); - href = hrefParts.shift(); - selector = hrefParts.shift(); - } - } - - if (!content) { - if (type === 'inline') { - if (href) { - content = $( isString(href) ? href.replace(/.*(?=#[^\s]+$)/, '') : href ); //strip for ie7 - - } else if (obj.isDom) { - content = element; - } - - } else if (type === 'html') { - content = href; - - } else if (!type && !href && obj.isDom) { - type = 'inline'; - content = element; - } - } - - $.extend(obj, { - href : href, - type : type, - content : content, - title : title, - selector : selector - }); - - group[ i ] = obj; - }); - - // Extend the defaults - F.opts = $.extend(true, {}, F.defaults, opts); - - // All options are merged recursive except keys - if (opts.keys !== undefined) { - F.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false; - } - - F.group = group; - - return F._start(F.opts.index); - }, - - // Cancel image loading or abort ajax request - cancel: function () { - var coming = F.coming; - - if (coming && false === F.trigger('onCancel')) { - return; - } - - F.hideLoading(); - - if (!coming) { - return; - } - - if (F.ajaxLoad) { - F.ajaxLoad.abort(); - } - - F.ajaxLoad = null; - - if (F.imgPreload) { - F.imgPreload.onload = F.imgPreload.onerror = null; - } - - if (coming.wrap) { - coming.wrap.stop(true, true).trigger('onReset').remove(); - } - - F.coming = null; - - // If the first item has been canceled, then clear everything - if (!F.current) { - F._afterZoomOut( coming ); - } - }, - - // Start closing animation if is open; remove immediately if opening/closing - close: function (event) { - F.cancel(); - - if (false === F.trigger('beforeClose')) { - return; - } - - F.unbindEvents(); - - if (!F.isActive) { - return; - } - - if (!F.isOpen || event === true) { - $('.fancybox-wrap').stop(true).trigger('onReset').remove(); - - F._afterZoomOut(); - - } else { - F.isOpen = F.isOpened = false; - F.isClosing = true; - - $('.fancybox-item, .fancybox-nav').remove(); - - F.wrap.stop(true, true).removeClass('fancybox-opened'); - - F.transitions[ F.current.closeMethod ](); - } - }, - - // Manage slideshow: - // $.fancybox.play(); - toggle slideshow - // $.fancybox.play( true ); - start - // $.fancybox.play( false ); - stop - play: function ( action ) { - var clear = function () { - clearTimeout(F.player.timer); - }, - set = function () { - clear(); - - if (F.current && F.player.isActive) { - F.player.timer = setTimeout(F.next, F.current.playSpeed); - } - }, - stop = function () { - clear(); - - D.unbind('.player'); - - F.player.isActive = false; - - F.trigger('onPlayEnd'); - }, - start = function () { - if (F.current && (F.current.loop || F.current.index < F.group.length - 1)) { - F.player.isActive = true; - - D.bind({ - 'onCancel.player beforeClose.player' : stop, - 'onUpdate.player' : set, - 'beforeLoad.player' : clear - }); - - set(); - - F.trigger('onPlayStart'); - } - }; - - if (action === true || (!F.player.isActive && action !== false)) { - start(); - } else { - stop(); - } - }, - - // Navigate to next gallery item - next: function ( direction ) { - var current = F.current; - - if (current) { - if (!isString(direction)) { - direction = current.direction.next; - } - - F.jumpto(current.index + 1, direction, 'next'); - } - }, - - // Navigate to previous gallery item - prev: function ( direction ) { - var current = F.current; - - if (current) { - if (!isString(direction)) { - direction = current.direction.prev; - } - - F.jumpto(current.index - 1, direction, 'prev'); - } - }, - - // Navigate to gallery item by index - jumpto: function ( index, direction, router ) { - var current = F.current; - - if (!current) { - return; - } - - index = getScalar(index); - - F.direction = direction || current.direction[ (index >= current.index ? 'next' : 'prev') ]; - F.router = router || 'jumpto'; - - if (current.loop) { - if (index < 0) { - index = current.group.length + (index % current.group.length); - } - - index = index % current.group.length; - } - - if (current.group[ index ] !== undefined) { - F.cancel(); - - F._start(index); - } - }, - - // Center inside viewport and toggle position type to fixed or absolute if needed - reposition: function (e, onlyAbsolute) { - var current = F.current, - wrap = current ? current.wrap : null, - pos; - - if (wrap) { - pos = F._getPosition(onlyAbsolute); - - if (e && e.type === 'scroll') { - delete pos.position; - - wrap.stop(true, true).animate(pos, 200); - - } else { - wrap.css(pos); - - current.pos = $.extend({}, current.dim, pos); - } - } - }, - - update: function (e) { - var type = (e && e.originalEvent && e.originalEvent.type), - anyway = !type || type === 'orientationchange'; - - if (anyway) { - clearTimeout(didUpdate); - - didUpdate = null; - } - - if (!F.isOpen || didUpdate) { - return; - } - - didUpdate = setTimeout(function() { - var current = F.current; - - if (!current || F.isClosing) { - return; - } - - F.wrap.removeClass('fancybox-tmp'); - - if (anyway || type === 'load' || (type === 'resize' && current.autoResize)) { - F._setDimension(); - } - - if (!(type === 'scroll' && current.canShrink)) { - F.reposition(e); - } - - F.trigger('onUpdate'); - - didUpdate = null; - - }, (anyway && !isTouch ? 0 : 300)); - }, - - // Shrink content to fit inside viewport or restore if resized - toggle: function ( action ) { - if (F.isOpen) { - F.current.fitToView = $.type(action) === "boolean" ? action : !F.current.fitToView; - - // Help browser to restore document dimensions - if (isTouch) { - F.wrap.removeAttr('style').addClass('fancybox-tmp'); - - F.trigger('onUpdate'); - } - - F.update(); - } - }, - - hideLoading: function () { - D.unbind('.loading'); - - $('#fancybox-loading').remove(); - }, - - showLoading: function () { - var el, viewport; - - F.hideLoading(); - - el = $('
      ').click(F.cancel).appendTo('body'); - - // If user will press the escape-button, the request will be canceled - D.bind('keydown.loading', function(e) { - if ((e.which || e.keyCode) === 27) { - e.preventDefault(); - - F.cancel(); - } - }); - - if (!F.defaults.fixed) { - viewport = F.getViewport(); - - el.css({ - position : 'absolute', - top : (viewport.h * 0.5) + viewport.y, - left : (viewport.w * 0.5) + viewport.x - }); - } - - F.trigger('onLoading'); - }, - - getViewport: function () { - var locked = (F.current && F.current.locked) || false, - rez = { - x: W.scrollLeft(), - y: W.scrollTop() - }; - - if (locked && locked.length) { - rez.w = locked[0].clientWidth; - rez.h = locked[0].clientHeight; - - } else { - // See http://bugs.jquery.com/ticket/6724 - rez.w = isTouch && window.innerWidth ? window.innerWidth : W.width(); - rez.h = isTouch && window.innerHeight ? window.innerHeight : W.height(); - } - - return rez; - }, - - // Unbind the keyboard / clicking actions - unbindEvents: function () { - if (F.wrap && isQuery(F.wrap)) { - F.wrap.unbind('.fb'); - } - - D.unbind('.fb'); - W.unbind('.fb'); - }, - - bindEvents: function () { - var current = F.current, - keys; - - if (!current) { - return; - } - - // Changing document height on iOS devices triggers a 'resize' event, - // that can change document height... repeating infinitely - W.bind('orientationchange.fb' + (isTouch ? '' : ' resize.fb') + (current.autoCenter && !current.locked ? ' scroll.fb' : ''), F.update); - - keys = current.keys; - - if (keys) { - D.bind('keydown.fb', function (e) { - var code = e.which || e.keyCode, - target = e.target || e.srcElement; - - // Skip esc key if loading, because showLoading will cancel preloading - if (code === 27 && F.coming) { - return false; - } - - // Ignore key combinations and key events within form elements - if (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && !(target && (target.type || $(target).is('[contenteditable]')))) { - $.each(keys, function(i, val) { - if (current.group.length > 1 && val[ code ] !== undefined) { - F[ i ]( val[ code ] ); - - e.preventDefault(); - return false; - } - - if ($.inArray(code, val) > -1) { - F[ i ] (); - - e.preventDefault(); - return false; - } - }); - } - }); - } - - if ($.fn.mousewheel && current.mouseWheel) { - F.wrap.bind('mousewheel.fb', function (e, delta, deltaX, deltaY) { - var target = e.target || null, - parent = $(target), - canScroll = false; - - while (parent.length) { - if (canScroll || parent.is('.fancybox-skin') || parent.is('.fancybox-wrap')) { - break; - } - - canScroll = isScrollable( parent[0] ); - parent = $(parent).parent(); - } - - if (delta !== 0 && !canScroll) { - if (F.group.length > 1 && !current.canShrink) { - if (deltaY > 0 || deltaX > 0) { - F.prev( deltaY > 0 ? 'down' : 'left' ); - - } else if (deltaY < 0 || deltaX < 0) { - F.next( deltaY < 0 ? 'up' : 'right' ); - } - - e.preventDefault(); - } - } - }); - } - }, - - trigger: function (event, o) { - var ret, obj = o || F.coming || F.current; - - if (obj) { - if ($.isFunction( obj[event] )) { - ret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1)); - } - - if (ret === false) { - return false; - } - - if (obj.helpers) { - $.each(obj.helpers, function (helper, opts) { - if (opts && F.helpers[helper] && $.isFunction(F.helpers[helper][event])) { - F.helpers[helper][event]($.extend(true, {}, F.helpers[helper].defaults, opts), obj); - } - }); - } - } - - D.trigger(event); - }, - - isImage: function (str) { - return isString(str) && str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i); - }, - - isSWF: function (str) { - return isString(str) && str.match(/\.(swf)((\?|#).*)?$/i); - }, - - _start: function (index) { - var coming = {}, - obj, - href, - type, - margin, - padding; - - index = getScalar( index ); - obj = F.group[ index ] || null; - - if (!obj) { - return false; - } - - coming = $.extend(true, {}, F.opts, obj); - - // Convert margin and padding properties to array - top, right, bottom, left - margin = coming.margin; - padding = coming.padding; - - if ($.type(margin) === 'number') { - coming.margin = [margin, margin, margin, margin]; - } - - if ($.type(padding) === 'number') { - coming.padding = [padding, padding, padding, padding]; - } - - // 'modal' propery is just a shortcut - if (coming.modal) { - $.extend(true, coming, { - closeBtn : false, - closeClick : false, - nextClick : false, - arrows : false, - mouseWheel : false, - keys : null, - helpers: { - overlay : { - closeClick : false - } - } - }); - } - - // 'autoSize' property is a shortcut, too - if (coming.autoSize) { - coming.autoWidth = coming.autoHeight = true; - } - - if (coming.width === 'auto') { - coming.autoWidth = true; - } - - if (coming.height === 'auto') { - coming.autoHeight = true; - } - - /* - * Add reference to the group, so it`s possible to access from callbacks, example: - * afterLoad : function() { - * this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : ''); - * } - */ - - coming.group = F.group; - coming.index = index; - - // Give a chance for callback or helpers to update coming item (type, title, etc) - F.coming = coming; - - if (false === F.trigger('beforeLoad')) { - F.coming = null; - - return; - } - - type = coming.type; - href = coming.href; - - if (!type) { - F.coming = null; - - //If we can not determine content type then drop silently or display next/prev item if looping through gallery - if (F.current && F.router && F.router !== 'jumpto') { - F.current.index = index; - - return F[ F.router ]( F.direction ); - } - - return false; - } - - F.isActive = true; - - if (type === 'image' || type === 'swf') { - coming.autoHeight = coming.autoWidth = false; - coming.scrolling = 'visible'; - } - - if (type === 'image') { - coming.aspectRatio = true; - } - - if (type === 'iframe' && isTouch) { - coming.scrolling = 'scroll'; - } - - // Build the neccessary markup - coming.wrap = $(coming.tpl.wrap).addClass('fancybox-' + (isTouch ? 'mobile' : 'desktop') + ' fancybox-type-' + type + ' fancybox-tmp ' + coming.wrapCSS).appendTo( coming.parent || 'body' ); - - $.extend(coming, { - skin : $('.fancybox-skin', coming.wrap), - outer : $('.fancybox-outer', coming.wrap), - inner : $('.fancybox-inner', coming.wrap) - }); - - $.each(["Top", "Right", "Bottom", "Left"], function(i, v) { - coming.skin.css('padding' + v, getValue(coming.padding[ i ])); - }); - - F.trigger('onReady'); - - // Check before try to load; 'inline' and 'html' types need content, others - href - if (type === 'inline' || type === 'html') { - if (!coming.content || !coming.content.length) { - return F._error( 'content' ); - } - - } else if (!href) { - return F._error( 'href' ); - } - - if (type === 'image') { - F._loadImage(); - - } else if (type === 'ajax') { - F._loadAjax(); - - } else if (type === 'iframe') { - F._loadIframe(); - - } else { - F._afterLoad(); - } - }, - - _error: function ( type ) { - $.extend(F.coming, { - type : 'html', - autoWidth : true, - autoHeight : true, - minWidth : 0, - minHeight : 0, - scrolling : 'no', - hasError : type, - content : F.coming.tpl.error - }); - - F._afterLoad(); - }, - - _loadImage: function () { - // Reset preload image so it is later possible to check "complete" property - var img = F.imgPreload = new Image(); - - img.onload = function () { - this.onload = this.onerror = null; - - F.coming.width = this.width / F.opts.pixelRatio; - F.coming.height = this.height / F.opts.pixelRatio; - - F._afterLoad(); - }; - - img.onerror = function () { - this.onload = this.onerror = null; - - F._error( 'image' ); - }; - - img.src = F.coming.href; - - if (img.complete !== true) { - F.showLoading(); - } - }, - - _loadAjax: function () { - var coming = F.coming; - - F.showLoading(); - - F.ajaxLoad = $.ajax($.extend({}, coming.ajax, { - url: coming.href, - error: function (jqXHR, textStatus) { - if (F.coming && textStatus !== 'abort') { - F._error( 'ajax', jqXHR ); - - } else { - F.hideLoading(); - } - }, - success: function (data, textStatus) { - if (textStatus === 'success') { - coming.content = data; - - F._afterLoad(); - } - } - })); - }, - - _loadIframe: function() { - var coming = F.coming, - iframe = $(coming.tpl.iframe.replace(/\{rnd\}/g, new Date().getTime())) - .attr('scrolling', isTouch ? 'auto' : coming.iframe.scrolling) - .attr('src', coming.href); - - // This helps IE - $(coming.wrap).bind('onReset', function () { - try { - $(this).find('iframe').hide().attr('src', '//about:blank').end().empty(); - } catch (e) {} - }); - - if (coming.iframe.preload) { - F.showLoading(); - - iframe.one('load', function() { - $(this).data('ready', 1); - - // iOS will lose scrolling if we resize - if (!isTouch) { - $(this).bind('load.fb', F.update); - } - - // Without this trick: - // - iframe won't scroll on iOS devices - // - IE7 sometimes displays empty iframe - $(this).parents('.fancybox-wrap').width('100%').removeClass('fancybox-tmp').show(); - - F._afterLoad(); - }); - } - - coming.content = iframe.appendTo( coming.inner ); - - if (!coming.iframe.preload) { - F._afterLoad(); - } - }, - - _preloadImages: function() { - var group = F.group, - current = F.current, - len = group.length, - cnt = current.preload ? Math.min(current.preload, len - 1) : 0, - item, - i; - - for (i = 1; i <= cnt; i += 1) { - item = group[ (current.index + i ) % len ]; - - if (item.type === 'image' && item.href) { - new Image().src = item.href; - } - } - }, - - _afterLoad: function () { - var coming = F.coming, - previous = F.current, - placeholder = 'fancybox-placeholder', - current, - content, - type, - scrolling, - href, - embed; - - F.hideLoading(); - - if (!coming || F.isActive === false) { - return; - } - - if (false === F.trigger('afterLoad', coming, previous)) { - coming.wrap.stop(true).trigger('onReset').remove(); - - F.coming = null; - - return; - } - - if (previous) { - F.trigger('beforeChange', previous); - - previous.wrap.stop(true).removeClass('fancybox-opened') - .find('.fancybox-item, .fancybox-nav') - .remove(); - } - - F.unbindEvents(); - - current = coming; - content = coming.content; - type = coming.type; - scrolling = coming.scrolling; - - $.extend(F, { - wrap : current.wrap, - skin : current.skin, - outer : current.outer, - inner : current.inner, - current : current, - previous : previous - }); - - href = current.href; - - switch (type) { - case 'inline': - case 'ajax': - case 'html': - if (current.selector) { - content = $('
      ').html(content).find(current.selector); - - } else if (isQuery(content)) { - if (!content.data(placeholder)) { - content.data(placeholder, $('
      ').insertAfter( content ).hide() ); - } - - content = content.show().detach(); - - current.wrap.bind('onReset', function () { - if ($(this).find(content).length) { - content.hide().replaceAll( content.data(placeholder) ).data(placeholder, false); - } - }); - } - break; - - case 'image': - content = current.tpl.image.replace(/\{href\}/g, href); - break; - - case 'swf': - content = ''; - embed = ''; - - $.each(current.swf, function(name, val) { - content += ''; - embed += ' ' + name + '="' + val + '"'; - }); - - content += ''; - break; - } - - if (!(isQuery(content) && content.parent().is(current.inner))) { - current.inner.append( content ); - } - - // Give a chance for helpers or callbacks to update elements - F.trigger('beforeShow'); - - // Set scrolling before calculating dimensions - current.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling)); - - // Set initial dimensions and start position - F._setDimension(); - - F.reposition(); - - F.isOpen = false; - F.coming = null; - - F.bindEvents(); - - if (!F.isOpened) { - $('.fancybox-wrap').not( current.wrap ).stop(true).trigger('onReset').remove(); - - } else if (previous.prevMethod) { - F.transitions[ previous.prevMethod ](); - } - - F.transitions[ F.isOpened ? current.nextMethod : current.openMethod ](); - - F._preloadImages(); - }, - - _setDimension: function () { - var viewport = F.getViewport(), - steps = 0, - canShrink = false, - canExpand = false, - wrap = F.wrap, - skin = F.skin, - inner = F.inner, - current = F.current, - width = current.width, - height = current.height, - minWidth = current.minWidth, - minHeight = current.minHeight, - maxWidth = current.maxWidth, - maxHeight = current.maxHeight, - scrolling = current.scrolling, - scrollOut = current.scrollOutside ? current.scrollbarWidth : 0, - margin = current.margin, - wMargin = getScalar(margin[1] + margin[3]), - hMargin = getScalar(margin[0] + margin[2]), - wPadding, - hPadding, - wSpace, - hSpace, - origWidth, - origHeight, - origMaxWidth, - origMaxHeight, - ratio, - width_, - height_, - maxWidth_, - maxHeight_, - iframe, - body; - - // Reset dimensions so we could re-check actual size - wrap.add(skin).add(inner).width('auto').height('auto').removeClass('fancybox-tmp'); - - wPadding = getScalar(skin.outerWidth(true) - skin.width()); - hPadding = getScalar(skin.outerHeight(true) - skin.height()); - - // Any space between content and viewport (margin, padding, border, title) - wSpace = wMargin + wPadding; - hSpace = hMargin + hPadding; - - origWidth = isPercentage(width) ? (viewport.w - wSpace) * getScalar(width) / 100 : width; - origHeight = isPercentage(height) ? (viewport.h - hSpace) * getScalar(height) / 100 : height; - - if (current.type === 'iframe') { - iframe = current.content; - - if (current.autoHeight && iframe.data('ready') === 1) { - try { - if (iframe[0].contentWindow.document.location) { - inner.width( origWidth ).height(9999); - - body = iframe.contents().find('body'); - - if (scrollOut) { - body.css('overflow-x', 'hidden'); - } - - origHeight = body.outerHeight(true); - } - - } catch (e) {} - } - - } else if (current.autoWidth || current.autoHeight) { - inner.addClass( 'fancybox-tmp' ); - - // Set width or height in case we need to calculate only one dimension - if (!current.autoWidth) { - inner.width( origWidth ); - } - - if (!current.autoHeight) { - inner.height( origHeight ); - } - - if (current.autoWidth) { - origWidth = inner.width(); - } - - if (current.autoHeight) { - origHeight = inner.height(); - } - - inner.removeClass( 'fancybox-tmp' ); - } - - width = getScalar( origWidth ); - height = getScalar( origHeight ); - - ratio = origWidth / origHeight; - - // Calculations for the content - minWidth = getScalar(isPercentage(minWidth) ? getScalar(minWidth, 'w') - wSpace : minWidth); - maxWidth = getScalar(isPercentage(maxWidth) ? getScalar(maxWidth, 'w') - wSpace : maxWidth); - - minHeight = getScalar(isPercentage(minHeight) ? getScalar(minHeight, 'h') - hSpace : minHeight); - maxHeight = getScalar(isPercentage(maxHeight) ? getScalar(maxHeight, 'h') - hSpace : maxHeight); - - // These will be used to determine if wrap can fit in the viewport - origMaxWidth = maxWidth; - origMaxHeight = maxHeight; - - if (current.fitToView) { - maxWidth = Math.min(viewport.w - wSpace, maxWidth); - maxHeight = Math.min(viewport.h - hSpace, maxHeight); - } - - maxWidth_ = viewport.w - wMargin; - maxHeight_ = viewport.h - hMargin; - - if (current.aspectRatio) { - if (width > maxWidth) { - width = maxWidth; - height = getScalar(width / ratio); - } - - if (height > maxHeight) { - height = maxHeight; - width = getScalar(height * ratio); - } - - if (width < minWidth) { - width = minWidth; - height = getScalar(width / ratio); - } - - if (height < minHeight) { - height = minHeight; - width = getScalar(height * ratio); - } - - } else { - width = Math.max(minWidth, Math.min(width, maxWidth)); - - if (current.autoHeight && current.type !== 'iframe') { - inner.width( width ); - - height = inner.height(); - } - - height = Math.max(minHeight, Math.min(height, maxHeight)); - } - - // Try to fit inside viewport (including the title) - if (current.fitToView) { - inner.width( width ).height( height ); - - wrap.width( width + wPadding ); - - // Real wrap dimensions - width_ = wrap.width(); - height_ = wrap.height(); - - if (current.aspectRatio) { - while ((width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight) { - if (steps++ > 19) { - break; - } - - height = Math.max(minHeight, Math.min(maxHeight, height - 10)); - width = getScalar(height * ratio); - - if (width < minWidth) { - width = minWidth; - height = getScalar(width / ratio); - } - - if (width > maxWidth) { - width = maxWidth; - height = getScalar(width / ratio); - } - - inner.width( width ).height( height ); - - wrap.width( width + wPadding ); - - width_ = wrap.width(); - height_ = wrap.height(); - } - - } else { - width = Math.max(minWidth, Math.min(width, width - (width_ - maxWidth_))); - height = Math.max(minHeight, Math.min(height, height - (height_ - maxHeight_))); - } - } - - if (scrollOut && scrolling === 'auto' && height < origHeight && (width + wPadding + scrollOut) < maxWidth_) { - width += scrollOut; - } - - inner.width( width ).height( height ); - - wrap.width( width + wPadding ); - - width_ = wrap.width(); - height_ = wrap.height(); - - canShrink = (width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight; - canExpand = current.aspectRatio ? (width < origMaxWidth && height < origMaxHeight && width < origWidth && height < origHeight) : ((width < origMaxWidth || height < origMaxHeight) && (width < origWidth || height < origHeight)); - - $.extend(current, { - dim : { - width : getValue( width_ ), - height : getValue( height_ ) - }, - origWidth : origWidth, - origHeight : origHeight, - canShrink : canShrink, - canExpand : canExpand, - wPadding : wPadding, - hPadding : hPadding, - wrapSpace : height_ - skin.outerHeight(true), - skinSpace : skin.height() - height - }); - - if (!iframe && current.autoHeight && height > minHeight && height < maxHeight && !canExpand) { - inner.height('auto'); - } - }, - - _getPosition: function (onlyAbsolute) { - var current = F.current, - viewport = F.getViewport(), - margin = current.margin, - width = F.wrap.width() + margin[1] + margin[3], - height = F.wrap.height() + margin[0] + margin[2], - rez = { - position: 'absolute', - top : margin[0], - left : margin[3] - }; - - if (current.autoCenter && current.fixed && !onlyAbsolute && height <= viewport.h && width <= viewport.w) { - rez.position = 'fixed'; - - } else if (!current.locked) { - rez.top += viewport.y; - rez.left += viewport.x; - } - - rez.top = getValue(Math.max(rez.top, rez.top + ((viewport.h - height) * current.topRatio))); - rez.left = getValue(Math.max(rez.left, rez.left + ((viewport.w - width) * current.leftRatio))); - - return rez; - }, - - _afterZoomIn: function () { - var current = F.current; - - if (!current) { - return; - } - - F.isOpen = F.isOpened = true; - - F.wrap.css('overflow', 'visible').addClass('fancybox-opened').hide().show(0); - - F.update(); - - // Assign a click event - if ( current.closeClick || (current.nextClick && F.group.length > 1) ) { - F.inner.css('cursor', 'pointer').bind('click.fb', function(e) { - if (!$(e.target).is('a') && !$(e.target).parent().is('a')) { - e.preventDefault(); - - F[ current.closeClick ? 'close' : 'next' ](); - } - }); - } - - // Create a close button - if (current.closeBtn) { - $(current.tpl.closeBtn).appendTo(F.skin).bind('click.fb', function(e) { - e.preventDefault(); - - F.close(); - }); - } - - // Create navigation arrows - if (current.arrows && F.group.length > 1) { - if (current.loop || current.index > 0) { - $(current.tpl.prev).appendTo(F.outer).bind('click.fb', F.prev); - } - - if (current.loop || current.index < F.group.length - 1) { - $(current.tpl.next).appendTo(F.outer).bind('click.fb', F.next); - } - } - - F.trigger('afterShow'); - - // Stop the slideshow if this is the last item - if (!current.loop && current.index === current.group.length - 1) { - - F.play( false ); - - } else if (F.opts.autoPlay && !F.player.isActive) { - F.opts.autoPlay = false; - - F.play(true); - } - }, - - _afterZoomOut: function ( obj ) { - obj = obj || F.current; - - $('.fancybox-wrap').trigger('onReset').remove(); - - $.extend(F, { - group : {}, - opts : {}, - router : false, - current : null, - isActive : false, - isOpened : false, - isOpen : false, - isClosing : false, - wrap : null, - skin : null, - outer : null, - inner : null - }); - - F.trigger('afterClose', obj); - } - }); - - /* - * Default transitions - */ - - F.transitions = { - getOrigPosition: function () { - var current = F.current, - element = current.element, - orig = current.orig, - pos = {}, - width = 50, - height = 50, - hPadding = current.hPadding, - wPadding = current.wPadding, - viewport = F.getViewport(); - - if (!orig && current.isDom && element.is(':visible')) { - orig = element.find('img:first'); - - if (!orig.length) { - orig = element; - } - } - - if (isQuery(orig)) { - pos = orig.offset(); - - if (orig.is('img')) { - width = orig.outerWidth(); - height = orig.outerHeight(); - } - - } else { - pos.top = viewport.y + (viewport.h - height) * current.topRatio; - pos.left = viewport.x + (viewport.w - width) * current.leftRatio; - } - - if (F.wrap.css('position') === 'fixed' || current.locked) { - pos.top -= viewport.y; - pos.left -= viewport.x; - } - - pos = { - top : getValue(pos.top - hPadding * current.topRatio), - left : getValue(pos.left - wPadding * current.leftRatio), - width : getValue(width + wPadding), - height : getValue(height + hPadding) - }; - - return pos; - }, - - step: function (now, fx) { - var ratio, - padding, - value, - prop = fx.prop, - current = F.current, - wrapSpace = current.wrapSpace, - skinSpace = current.skinSpace; - - if (prop === 'width' || prop === 'height') { - ratio = fx.end === fx.start ? 1 : (now - fx.start) / (fx.end - fx.start); - - if (F.isClosing) { - ratio = 1 - ratio; - } - - padding = prop === 'width' ? current.wPadding : current.hPadding; - value = now - padding; - - F.skin[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) ) ); - F.inner[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) - (skinSpace * ratio) ) ); - } - }, - - zoomIn: function () { - var current = F.current, - startPos = current.pos, - effect = current.openEffect, - elastic = effect === 'elastic', - endPos = $.extend({opacity : 1}, startPos); - - // Remove "position" property that breaks older IE - delete endPos.position; - - if (elastic) { - startPos = this.getOrigPosition(); - - if (current.openOpacity) { - startPos.opacity = 0.1; - } - - } else if (effect === 'fade') { - startPos.opacity = 0.1; - } - - F.wrap.css(startPos).animate(endPos, { - duration : effect === 'none' ? 0 : current.openSpeed, - easing : current.openEasing, - step : elastic ? this.step : null, - complete : F._afterZoomIn - }); - }, - - zoomOut: function () { - var current = F.current, - effect = current.closeEffect, - elastic = effect === 'elastic', - endPos = {opacity : 0.1}; - - if (elastic) { - endPos = this.getOrigPosition(); - - if (current.closeOpacity) { - endPos.opacity = 0.1; - } - } - - F.wrap.animate(endPos, { - duration : effect === 'none' ? 0 : current.closeSpeed, - easing : current.closeEasing, - step : elastic ? this.step : null, - complete : F._afterZoomOut - }); - }, - - changeIn: function () { - var current = F.current, - effect = current.nextEffect, - startPos = current.pos, - endPos = { opacity : 1 }, - direction = F.direction, - distance = 200, - field; - - startPos.opacity = 0.1; - - if (effect === 'elastic') { - field = direction === 'down' || direction === 'up' ? 'top' : 'left'; - - if (direction === 'down' || direction === 'right') { - startPos[ field ] = getValue(getScalar(startPos[ field ]) - distance); - endPos[ field ] = '+=' + distance + 'px'; - - } else { - startPos[ field ] = getValue(getScalar(startPos[ field ]) + distance); - endPos[ field ] = '-=' + distance + 'px'; - } - } - - // Workaround for http://bugs.jquery.com/ticket/12273 - if (effect === 'none') { - F._afterZoomIn(); - - } else { - F.wrap.css(startPos).animate(endPos, { - duration : current.nextSpeed, - easing : current.nextEasing, - complete : F._afterZoomIn - }); - } - }, - - changeOut: function () { - var previous = F.previous, - effect = previous.prevEffect, - endPos = { opacity : 0.1 }, - direction = F.direction, - distance = 200; - - if (effect === 'elastic') { - endPos[ direction === 'down' || direction === 'up' ? 'top' : 'left' ] = ( direction === 'up' || direction === 'left' ? '-' : '+' ) + '=' + distance + 'px'; - } - - previous.wrap.animate(endPos, { - duration : effect === 'none' ? 0 : previous.prevSpeed, - easing : previous.prevEasing, - complete : function () { - $(this).trigger('onReset').remove(); - } - }); - } - }; - - /* - * Overlay helper - */ - - F.helpers.overlay = { - defaults : { - closeClick : true, // if true, fancyBox will be closed when user clicks on the overlay - speedOut : 200, // duration of fadeOut animation - showEarly : true, // indicates if should be opened immediately or wait until the content is ready - css : {}, // custom CSS properties - locked : !isTouch, // if true, the content will be locked into overlay - fixed : true // if false, the overlay CSS position property will not be set to "fixed" - }, - - overlay : null, // current handle - fixed : false, // indicates if the overlay has position "fixed" - el : $('html'), // element that contains "the lock" - - // Public methods - create : function(opts) { - var parent; - - opts = $.extend({}, this.defaults, opts); - - if (this.overlay) { - this.close(); - } - - parent = F.coming ? F.coming.parent : opts.parent; - - this.overlay = $('
      ').appendTo( parent && parent.lenth ? parent : 'body' ); - this.fixed = false; - - if (opts.fixed && F.defaults.fixed) { - this.overlay.addClass('fancybox-overlay-fixed'); - - this.fixed = true; - } - }, - - open : function(opts) { - var that = this; - - opts = $.extend({}, this.defaults, opts); - - if (this.overlay) { - this.overlay.unbind('.overlay').width('auto').height('auto'); - - } else { - this.create(opts); - } - - if (!this.fixed) { - W.bind('resize.overlay', $.proxy( this.update, this) ); - - this.update(); - } - - if (opts.closeClick) { - this.overlay.bind('click.overlay', function(e) { - if ($(e.target).hasClass('fancybox-overlay')) { - if (F.isActive) { - F.close(); - } else { - that.close(); - } - - return false; - } - }); - } - - this.overlay.css( opts.css ).show(); - }, - - close : function() { - W.unbind('resize.overlay'); - - if (this.el.hasClass('fancybox-lock')) { - $('.fancybox-margin').removeClass('fancybox-margin'); - - this.el.removeClass('fancybox-lock'); - - W.scrollTop( this.scrollV ).scrollLeft( this.scrollH ); - } - - $('.fancybox-overlay').remove().hide(); - - $.extend(this, { - overlay : null, - fixed : false - }); - }, - - // Private, callbacks - - update : function () { - var width = '100%', offsetWidth; - - // Reset width/height so it will not mess - this.overlay.width(width).height('100%'); - - // jQuery does not return reliable result for IE - if (IE) { - offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth); - - if (D.width() > offsetWidth) { - width = D.width(); - } - - } else if (D.width() > W.width()) { - width = D.width(); - } - - this.overlay.width(width).height(D.height()); - }, - - // This is where we can manipulate DOM, because later it would cause iframes to reload - onReady : function (opts, obj) { - var overlay = this.overlay; - - $('.fancybox-overlay').stop(true, true); - - if (!overlay) { - this.create(opts); - } - - if (opts.locked && this.fixed && obj.fixed) { - obj.locked = this.overlay.append( obj.wrap ); - obj.fixed = false; - } - - if (opts.showEarly === true) { - this.beforeShow.apply(this, arguments); - } - }, - - beforeShow : function(opts, obj) { - if (obj.locked && !this.el.hasClass('fancybox-lock')) { - if (this.fixPosition !== false) { - $('*').filter(function(){ - return ($(this).css('position') === 'fixed' && !$(this).hasClass("fancybox-overlay") && !$(this).hasClass("fancybox-wrap") ); - }).addClass('fancybox-margin'); - } - - this.el.addClass('fancybox-margin'); - - this.scrollV = W.scrollTop(); - this.scrollH = W.scrollLeft(); - - this.el.addClass('fancybox-lock'); - - W.scrollTop( this.scrollV ).scrollLeft( this.scrollH ); - } - - this.open(opts); - }, - - onUpdate : function() { - if (!this.fixed) { - this.update(); - } - }, - - afterClose: function (opts) { - // Remove overlay if exists and fancyBox is not opening - // (e.g., it is not being open using afterClose callback) - if (this.overlay && !F.coming) { - this.overlay.fadeOut(opts.speedOut, $.proxy( this.close, this )); - } - } - }; - - /* - * Title helper - */ - - F.helpers.title = { - defaults : { - type : 'float', // 'float', 'inside', 'outside' or 'over', - position : 'bottom' // 'top' or 'bottom' - }, - - beforeShow: function (opts) { - var current = F.current, - text = current.title, - type = opts.type, - title, - target; - - if ($.isFunction(text)) { - text = text.call(current.element, current); - } - - if (!isString(text) || $.trim(text) === '') { - return; - } - - title = $('
      ' + text + '
      '); - - switch (type) { - case 'inside': - target = F.skin; - break; - - case 'outside': - target = F.wrap; - break; - - case 'over': - target = F.inner; - break; - - default: // 'float' - target = F.skin; - - title.appendTo('body'); - - if (IE) { - title.width( title.width() ); - } - - title.wrapInner(''); - - //Increase bottom margin so this title will also fit into viewport - F.current.margin[2] += Math.abs( getScalar(title.css('margin-bottom')) ); - break; - } - - title[ (opts.position === 'top' ? 'prependTo' : 'appendTo') ](target); - } - }; - - // jQuery plugin initialization - $.fn.fancybox = function (options) { - var index, - that = $(this), - selector = this.selector || '', - run = function(e) { - var what = $(this).blur(), idx = index, relType, relVal; - - if (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && !what.is('.fancybox-wrap')) { - relType = options.groupAttr || 'data-fancybox-group'; - relVal = what.attr(relType); - - if (!relVal) { - relType = 'rel'; - relVal = what.get(0)[ relType ]; - } - - if (relVal && relVal !== '' && relVal !== 'nofollow') { - what = selector.length ? $(selector) : that; - what = what.filter('[' + relType + '="' + relVal + '"]'); - idx = what.index(this); - } - - options.index = idx; - - // Stop an event from bubbling if everything is fine - if (F.open(what, options) !== false) { - e.preventDefault(); - } - } - }; - - options = options || {}; - index = options.index || 0; - - if (!selector || options.live === false) { - that.unbind('click.fb-start').bind('click.fb-start', run); - - } else { - D.undelegate(selector, 'click.fb-start').delegate(selector + ":not('.fancybox-item, .fancybox-nav')", 'click.fb-start', run); - } - - this.filter('[data-fancybox-start=1]').trigger('click'); - - return this; - }; - - // Tests that need a body at doc ready - D.ready(function() { - var w1, w2; - - if ( $.scrollbarWidth === undefined ) { - // http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth - $.scrollbarWidth = function() { - var parent = $('
      ').appendTo('body'), - child = parent.children(), - width = child.innerWidth() - child.height( 99 ).innerWidth(); - - parent.remove(); - - return width; - }; - } - - if ( $.support.fixedPosition === undefined ) { - $.support.fixedPosition = (function() { - var elem = $('
      ').appendTo('body'), - fixed = ( elem[0].offsetTop === 20 || elem[0].offsetTop === 15 ); - - elem.remove(); - - return fixed; - }()); - } - - $.extend(F.defaults, { - scrollbarWidth : $.scrollbarWidth(), - fixed : $.support.fixedPosition, - parent : $('body') - }); - - //Get real width of page scroll-bar - w1 = $(window).width(); - - H.addClass('fancybox-lock-test'); - - w2 = $(window).width(); - - H.removeClass('fancybox-lock-test'); - - $("").appendTo("head"); - }); - -}(window, document, jQuery)); \ No newline at end of file diff --git a/themes/landscape/source/fancybox/jquery.fancybox.pack.js b/themes/landscape/source/fancybox/jquery.fancybox.pack.js deleted file mode 100644 index 2db128084..000000000 --- a/themes/landscape/source/fancybox/jquery.fancybox.pack.js +++ /dev/null @@ -1,46 +0,0 @@ -/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */ -(function(s,H,f,w){var K=f("html"),q=f(s),p=f(H),b=f.fancybox=function(){b.open.apply(this,arguments)},J=navigator.userAgent.match(/msie/i),C=null,t=H.createTouch!==w,u=function(a){return a&&a.hasOwnProperty&&a instanceof f},r=function(a){return a&&"string"===f.type(a)},F=function(a){return r(a)&&0
      ',image:'',iframe:'",error:'

      The requested content cannot be loaded.
      Please try again later.

      ',closeBtn:'',next:'',prev:''},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0, -openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1, -isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=u(a)?f(a).get():[a]),f.each(a,function(e,c){var l={},g,h,k,n,m;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),u(c)?(l={href:c.data("fancybox-href")||c.attr("href"),title:f("
      ").text(c.data("fancybox-title")||c.attr("title")).html(),isDom:!0,element:c}, -f.metadata&&f.extend(!0,l,c.metadata())):l=c);g=d.href||l.href||(r(c)?c:null);h=d.title!==w?d.title:l.title||"";n=(k=d.content||l.content)?"html":d.type||l.type;!n&&l.isDom&&(n=c.data("fancybox-type"),n||(n=(n=c.prop("class").match(/fancybox\.(\w+)/))?n[1]:null));r(g)&&(n||(b.isImage(g)?n="image":b.isSWF(g)?n="swf":"#"===g.charAt(0)?n="inline":r(c)&&(n="html",k=c)),"ajax"===n&&(m=g.split(/\s+/,2),g=m.shift(),m=m.shift()));k||("inline"===n?g?k=f(r(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):l.isDom&&(k=c): -"html"===n?k=g:n||g||!l.isDom||(n="inline",k=c));f.extend(l,{href:g,type:n,content:k,title:h,selector:m});a[e]=l}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==w&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1===b.trigger("onCancel")||(b.hideLoading(),a&&(b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(), -b.coming=null,b.current||b._afterZoomOut(a)))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(b.isOpen&&!0!==a?(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]()):(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&& -(b.player.timer=setTimeout(b.next,b.current.playSpeed))},c=function(){d();p.unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};!0===a||!b.player.isActive&&!1!==a?b.current&&(b.current.loop||b.current.index=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==w&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,l;c&&(l=b._getPosition(d),a&&"scroll"===a.type?(delete l.position,c.stop(!0,!0).animate(l,200)):(c.css(l),e.pos=f.extend({},e.dim,l)))}, -update:function(a){var d=a&&a.originalEvent&&a.originalEvent.type,e=!d||"orientationchange"===d;e&&(clearTimeout(C),C=null);b.isOpen&&!C&&(C=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),C=null)},e&&!t?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,t&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"), -b.trigger("onUpdate")),b.update())},hideLoading:function(){p.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('
      ').click(b.cancel).appendTo("body");p.bind("keydown.loading",function(a){27===(a.which||a.keyCode)&&(a.preventDefault(),b.cancel())});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}));b.trigger("onLoading")},getViewport:function(){var a=b.current&& -b.current.locked||!1,d={x:q.scrollLeft(),y:q.scrollTop()};a&&a.length?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=t&&s.innerWidth?s.innerWidth:q.width(),d.h=t&&s.innerHeight?s.innerHeight:q.height());return d},unbindEvents:function(){b.wrap&&u(b.wrap)&&b.wrap.unbind(".fb");p.unbind(".fb");q.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(q.bind("orientationchange.fb"+(t?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&p.bind("keydown.fb",function(e){var c= -e.which||e.keyCode,l=e.target||e.srcElement;if(27===c&&b.coming)return!1;e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||l&&(l.type||f(l).is("[contenteditable]"))||f.each(d,function(d,l){if(1h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();0!==c&&!k&&1g||0>l)&&b.next(0>g?"up":"right"),d.preventDefault())}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,e){if(e&& -b.helpers[d]&&f.isFunction(b.helpers[d][a]))b.helpers[d][a](f.extend(!0,{},b.helpers[d].defaults,e),c)})}p.trigger(a)},isImage:function(a){return r(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(a){return r(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=m(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&&(d.padding=[c,c, -c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=!0;if("image"=== -c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=!0);"iframe"===c&&t&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(t?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,x(d.padding[a]))});b.trigger("onReady"); -if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width= -this.width/b.opts.pixelRatio;b.coming.height=this.height/b.opts.pixelRatio;b._afterLoad()};a.onerror=function(){this.onload=this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming, -d=f(a.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",t?"auto":a.iframe.scrolling).attr("src",a.href);f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);t||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload|| -b._afterLoad()},_preloadImages:function(){var a=b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,l,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove()); -b.unbindEvents();e=a.content;c=a.type;l=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("
      ").html(e).find(a.selector):u(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('
      ').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder", -!1)}));break;case "image":e=a.tpl.image.replace(/\{href\}/g,g);break;case "swf":e='',h="",f.each(a.swf,function(a,b){e+='';h+=" "+a+'="'+b+'"'}),e+='"}u(e)&&e.parent().is(a.inner)||a.inner.append(e);b.trigger("beforeShow"); -a.inner.css("overflow","yes"===l?"scroll":"no"===l?"hidden":l);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(!b.isOpened)f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();else if(d.prevMethod)b.transitions[d.prevMethod]();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,l=b.skin,g=b.inner,h=b.current,c=h.width,k=h.height,n=h.minWidth,v=h.minHeight,p=h.maxWidth, -q=h.maxHeight,t=h.scrolling,r=h.scrollOutside?h.scrollbarWidth:0,y=h.margin,z=m(y[1]+y[3]),s=m(y[0]+y[2]),w,A,u,D,B,G,C,E,I;e.add(l).add(g).width("auto").height("auto").removeClass("fancybox-tmp");y=m(l.outerWidth(!0)-l.width());w=m(l.outerHeight(!0)-l.height());A=z+y;u=s+w;D=F(c)?(a.w-A)*m(c)/100:c;B=F(k)?(a.h-u)*m(k)/100:k;if("iframe"===h.type){if(I=h.content,h.autoHeight&&1===I.data("ready"))try{I[0].contentWindow.document.location&&(g.width(D).height(9999),G=I.contents().find("body"),r&&G.css("overflow-x", -"hidden"),B=G.outerHeight(!0))}catch(H){}}else if(h.autoWidth||h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(D),h.autoHeight||g.height(B),h.autoWidth&&(D=g.width()),h.autoHeight&&(B=g.height()),g.removeClass("fancybox-tmp");c=m(D);k=m(B);E=D/B;n=m(F(n)?m(n,"w")-A:n);p=m(F(p)?m(p,"w")-A:p);v=m(F(v)?m(v,"h")-u:v);q=m(F(q)?m(q,"h")-u:q);G=p;C=q;h.fitToView&&(p=Math.min(a.w-A,p),q=Math.min(a.h-u,q));A=a.w-z;s=a.h-s;h.aspectRatio?(c>p&&(c=p,k=m(c/E)),k>q&&(k=q,c=m(k*E)),cA||z>s)&&c>n&&k>v&&!(19p&&(c=p,k=m(c/E)),g.width(c).height(k),e.width(c+y),a=e.width(),z=e.height();else c=Math.max(n,Math.min(c,c-(a-A))),k=Math.max(v,Math.min(k,k-(z-s)));r&&"auto"===t&&kA||z>s)&&c>n&&k>v;c=h.aspectRatio?cv&&k
      ').appendTo(d&&d.lenth?d:"body");this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(q.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay", -function(a){if(f(a.target).hasClass("fancybox-overlay"))return b.isActive?b.close():d.close(),!1});this.overlay.css(a.css).show()},close:function(){q.unbind("resize.overlay");this.el.hasClass("fancybox-lock")&&(f(".fancybox-margin").removeClass("fancybox-margin"),this.el.removeClass("fancybox-lock"),q.scrollTop(this.scrollV).scrollLeft(this.scrollH));f(".fancybox-overlay").remove().hide();f.extend(this,{overlay:null,fixed:!1})},update:function(){var a="100%",b;this.overlay.width(a).height("100%"); -J?(b=Math.max(H.documentElement.offsetWidth,H.body.offsetWidth),p.width()>b&&(a=p.width())):p.width()>q.width()&&(a=p.width());this.overlay.width(a).height(p.height())},onReady:function(a,b){var e=this.overlay;f(".fancybox-overlay").stop(!0,!0);e||this.create(a);a.locked&&this.fixed&&b.fixed&&(b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){b.locked&&!this.el.hasClass("fancybox-lock")&&(!1!==this.fixPosition&&f("*").filter(function(){return"fixed"=== -f(this).css("position")&&!f(this).hasClass("fancybox-overlay")&&!f(this).hasClass("fancybox-wrap")}).addClass("fancybox-margin"),this.el.addClass("fancybox-margin"),this.scrollV=q.scrollTop(),this.scrollH=q.scrollLeft(),this.el.addClass("fancybox-lock"),q.scrollTop(this.scrollV).scrollLeft(this.scrollH));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.coming&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float", -position:"bottom"},beforeShow:function(a){var d=b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(r(e)&&""!==f.trim(e)){d=f('
      '+e+"
      ");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),J&&d.width(d.width()),d.wrapInner(''),b.current.margin[2]+=Math.abs(m(d.css("margin-bottom")))}d["top"===a.position?"prependTo": -"appendTo"](c)}}};f.fn.fancybox=function(a){var d,e=f(this),c=this.selector||"",l=function(g){var h=f(this).blur(),k=d,l,m;g.ctrlKey||g.altKey||g.shiftKey||g.metaKey||h.is(".fancybox-wrap")||(l=a.groupAttr||"data-fancybox-group",m=h.attr(l),m||(l="rel",m=h.get(0)[l]),m&&""!==m&&"nofollow"!==m&&(h=c.length?f(c):e,h=h.filter("["+l+'="'+m+'"]'),k=h.index(this)),a.index=k,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;c&&!1!==a.live?p.undelegate(c,"click.fb-start").delegate(c+":not('.fancybox-item, .fancybox-nav')", -"click.fb-start",l):e.unbind("click.fb-start").bind("click.fb-start",l);this.filter("[data-fancybox-start=1]").trigger("click");return this};p.ready(function(){var a,d;f.scrollbarWidth===w&&(f.scrollbarWidth=function(){var a=f('
      ').appendTo("body"),b=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});f.support.fixedPosition===w&&(f.support.fixedPosition=function(){var a=f('
      ').appendTo("body"), -b=20===a[0].offsetTop||15===a[0].offsetTop;a.remove();return b}());f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")});a=f(s).width();K.addClass("fancybox-lock-test");d=f(s).width();K.removeClass("fancybox-lock-test");f("").appendTo("head")})})(window,document,jQuery); \ No newline at end of file diff --git a/themes/landscape/source/js/script.js b/themes/landscape/source/js/script.js deleted file mode 100644 index 1e5876745..000000000 --- a/themes/landscape/source/js/script.js +++ /dev/null @@ -1,137 +0,0 @@ -(function($){ - // Search - var $searchWrap = $('#search-form-wrap'), - isSearchAnim = false, - searchAnimDuration = 200; - - var startSearchAnim = function(){ - isSearchAnim = true; - }; - - var stopSearchAnim = function(callback){ - setTimeout(function(){ - isSearchAnim = false; - callback && callback(); - }, searchAnimDuration); - }; - - $('#nav-search-btn').on('click', function(){ - if (isSearchAnim) return; - - startSearchAnim(); - $searchWrap.addClass('on'); - stopSearchAnim(function(){ - $('.search-form-input').focus(); - }); - }); - - $('.search-form-input').on('blur', function(){ - startSearchAnim(); - $searchWrap.removeClass('on'); - stopSearchAnim(); - }); - - // Share - $('body').on('click', function(){ - $('.article-share-box.on').removeClass('on'); - }).on('click', '.article-share-link', function(e){ - e.stopPropagation(); - - var $this = $(this), - url = $this.attr('data-url'), - encodedUrl = encodeURIComponent(url), - id = 'article-share-box-' + $this.attr('data-id'), - offset = $this.offset(); - - if ($('#' + id).length){ - var box = $('#' + id); - - if (box.hasClass('on')){ - box.removeClass('on'); - return; - } - } else { - var html = [ - '
      ', - '', - '
      ', - '', - '', - '', - '', - '
      ', - '
      ' - ].join(''); - - var box = $(html); - - $('body').append(box); - } - - $('.article-share-box.on').hide(); - - box.css({ - top: offset.top + 25, - left: offset.left - }).addClass('on'); - }).on('click', '.article-share-box', function(e){ - e.stopPropagation(); - }).on('click', '.article-share-box-input', function(){ - $(this).select(); - }).on('click', '.article-share-box-link', function(e){ - e.preventDefault(); - e.stopPropagation(); - - window.open(this.href, 'article-share-box-window-' + Date.now(), 'width=500,height=450'); - }); - - // Caption - $('.article-entry').each(function(i){ - $(this).find('img').each(function(){ - if ($(this).parent().hasClass('fancybox')) return; - - var alt = this.alt; - - if (alt) $(this).after('' + alt + ''); - - $(this).wrap(''); - }); - - $(this).find('.fancybox').each(function(){ - $(this).attr('rel', 'article' + i); - }); - }); - - if ($.fancybox){ - $('.fancybox').fancybox(); - } - - // Mobile nav - var $container = $('#container'), - isMobileNavAnim = false, - mobileNavAnimDuration = 200; - - var startMobileNavAnim = function(){ - isMobileNavAnim = true; - }; - - var stopMobileNavAnim = function(){ - setTimeout(function(){ - isMobileNavAnim = false; - }, mobileNavAnimDuration); - } - - $('#main-nav-toggle').on('click', function(){ - if (isMobileNavAnim) return; - - startMobileNavAnim(); - $container.toggleClass('mobile-nav-on'); - stopMobileNavAnim(); - }); - - $('#wrap').on('click', function(){ - if (isMobileNavAnim || !$container.hasClass('mobile-nav-on')) return; - - $container.removeClass('mobile-nav-on'); - }); -})(jQuery); \ No newline at end of file From ec956bbf3d0b7d6663b1a2d77a673addc5be8fb8 Mon Sep 17 00:00:00 2001 From: Jerry xu Date: Sat, 5 May 2018 16:12:51 +0800 Subject: [PATCH 005/163] add about page --- README.md | 5 ++- _config.yml | 16 +++++++-- package-lock.json | 72 +++++++++++++++++++++++++++++++------- package.json | 2 ++ source/README.md | 2 +- source/_posts/gitlab1.md | 2 +- source/about/index.md | 31 ++++++++++++++++ source/categories/index.md | 1 + source/tags/index.md | 1 + 9 files changed, 112 insertions(+), 20 deletions(-) create mode 100644 source/about/index.md diff --git a/README.md b/README.md index f18eccf83..545862920 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,9 @@ BladeCode -![BladeCode](https://travis-ci.org/BladeCode/BladeCode.github.io.svg?branch=dev) +![BladeCode](https://travis-ci.com/BladeCode/BladeCode.github.io.svg?branch=dev) ### Thanks 1. [Node](https://nodejs.org) 2. [Hexo](https://hexo.io) -3. [Next](https://github.com/theme-next/hexo-theme-next) -4. [Cloudflare](https://www.cloudflare.com) \ No newline at end of file +3. [Next](https://github.com/theme-next/hexo-theme-next) \ No newline at end of file diff --git a/_config.yml b/_config.yml index 6690d9c26..8fb984980 100644 --- a/_config.yml +++ b/_config.yml @@ -26,7 +26,7 @@ archive_dir: archives category_dir: categories code_dir: downloads/code i18n_dir: :lang -skip_render: +skip_render: README.md # Writing new_post_name: :title.md # File name of new posts @@ -93,6 +93,13 @@ deploy: repo: https://github.com/BladeCode/BladeCode.github.io.git branch: master +githubEmojis: + enable: true + className: github-emoji + unicode: false + styles: + localEmojis: + leancloud_counter_security: enable: true app_id: fAWWlD5N0zGklmW8OBweP1kl-gzGzoHsz @@ -106,4 +113,9 @@ symbols_count_time: time: true total_symbols: true total_time: true - \ No newline at end of file + +search: + path: search.xml + field: post + format: html + limit: 10000 \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 09f36dace..2a021ef81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1307,19 +1307,6 @@ "mobx": "3.6.2" } }, - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "optional": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", @@ -1625,6 +1612,50 @@ "object-assign": "4.1.1" } }, + "hexo-generator-searchdb": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hexo-generator-searchdb/-/hexo-generator-searchdb-1.0.8.tgz", + "integrity": "sha1-BCRSVuFBOmYxOTLb8cCn5WhVkwE=", + "requires": { + "ejs": "1.0.0", + "striptags": "3.1.1", + "utils-merge": "1.0.1" + }, + "dependencies": { + "ejs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-1.0.0.tgz", + "integrity": "sha1-ycYKSKRu5FL7MqccMXuV5aofyz0=" + }, + "striptags": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.1.1.tgz", + "integrity": "sha1-yMPn/db7S7OjKjt1LltePjgJPr0=" + } + } + }, + "hexo-generator-sitemap": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hexo-generator-sitemap/-/hexo-generator-sitemap-1.2.0.tgz", + "integrity": "sha1-MBj419Hi5Cs/caZacxb/z1g7w/M=", + "requires": { + "minimatch": "3.0.4", + "nunjucks": "2.5.2", + "object-assign": "4.1.1" + }, + "dependencies": { + "nunjucks": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-2.5.2.tgz", + "integrity": "sha1-6n00bnhbikh0Zmw8yp4YxXf7oiw=", + "requires": { + "asap": "2.0.6", + "chokidar": "1.7.0", + "yargs": "3.32.0" + } + } + } + }, "hexo-generator-tag": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/hexo-generator-tag/-/hexo-generator-tag-0.2.0.tgz", @@ -2683,6 +2714,21 @@ "optional": true, "requires": { "glob": "6.0.4" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "optional": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } } }, "safe-buffer": { diff --git a/package.json b/package.json index 3e722bf14..05fc3adca 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,8 @@ "hexo-generator-category": "^0.1.3", "hexo-generator-feed": "^1.2.2", "hexo-generator-index": "^0.2.0", + "hexo-generator-searchdb": "^1.0.8", + "hexo-generator-sitemap": "^1.2.0", "hexo-generator-tag": "^0.2.0", "hexo-leancloud-counter-security": "^1.3.2", "hexo-renderer-ejs": "^0.3.0", diff --git a/source/README.md b/source/README.md index 24cd018c7..545862920 100644 --- a/source/README.md +++ b/source/README.md @@ -2,7 +2,7 @@ BladeCode -![BladeCode](https://travis-ci.org/BladeCode/BladeCode.github.io.svg?branch=dev) +![BladeCode](https://travis-ci.com/BladeCode/BladeCode.github.io.svg?branch=dev) ### Thanks 1. [Node](https://nodejs.org) diff --git a/source/_posts/gitlab1.md b/source/_posts/gitlab1.md index f34de54a2..9cf0e3fb1 100644 --- a/source/_posts/gitlab1.md +++ b/source/_posts/gitlab1.md @@ -17,7 +17,7 @@ tag: Gitlab 目的: 1. 搭建Gitlab服务 2. 和公司AD域账号关联,用域账号直接登录Gitlab -3. 挂载Gitlab 仓库到 +3. 挂载Gitlab 仓库到指定存储位置 ## Gitlab安装 diff --git a/source/about/index.md b/source/about/index.md new file mode 100644 index 000000000..cdac8b315 --- /dev/null +++ b/source/about/index.md @@ -0,0 +1,31 @@ +--- +title: about +date: 2018-05-04 17:50:34 +comments: false +--- + + + +## 关于我 + +>Life's a struggle!(生命不息,折腾不止,当然这不能是瞎折腾)~ + +陕西汉中人,现居浙江杭州,理工男一枚 +机械制造与自动化专业,14年毕业后投奔于互联网世界 +16年开始自学Android开发,现从事Android开发工作 + +喜欢音乐,电影,coding + +## 关于本站 + +> 本站已开启HTTPS,由于org域名目前无法备案,因此图片部分依旧是HTTP + +资源:便捷,高效,有趣的工具资源 + +经验:工作中一些问题解决方式及思考 + +阅读:阅读一些书籍的收获以及感兴趣的文字 + +学习:编程语言,热门开源框架的学习过程记录 + +影音:视觉,听觉的享受分享 diff --git a/source/categories/index.md b/source/categories/index.md index 59c437dcc..c59389801 100644 --- a/source/categories/index.md +++ b/source/categories/index.md @@ -2,4 +2,5 @@ title: categories type: categories date: 2018-03-24 22:38:58 +comments: false --- diff --git a/source/tags/index.md b/source/tags/index.md index 65144235c..49932d693 100644 --- a/source/tags/index.md +++ b/source/tags/index.md @@ -2,4 +2,5 @@ title: tags type: tags date: 2018-03-24 22:36:28 +comments: false --- From 1a065ee6fe17888c50ded131dc1102d08d3fc5d9 Mon Sep 17 00:00:00 2001 From: Jerry xu Date: Sat, 5 May 2018 22:53:49 +0800 Subject: [PATCH 006/163] http to https --- _config.yml | 2 +- source/_data/next.yml | 964 ++++++++++++++++++++++++++++++++ source/_posts/gitlab1.md | 14 +- source/_posts/hexo-blog.md | 26 +- source/_posts/hexo-iterative.md | 13 +- source/_posts/rap1.md | 16 +- source/_posts/rap2.md | 10 +- source/_posts/realm.md | 2 +- source/about/index.md | 6 +- source/categories/index.md | 2 +- source/tags/index.md | 2 +- 11 files changed, 1014 insertions(+), 43 deletions(-) create mode 100644 source/_data/next.yml diff --git a/_config.yml b/_config.yml index 8fb984980..6563ffb73 100644 --- a/_config.yml +++ b/_config.yml @@ -88,10 +88,10 @@ theme: next # Deployment ## Docs: https://hexo.io/docs/deployment.html deploy: - # - type: leancloud_counter_security_sync type: git repo: https://github.com/BladeCode/BladeCode.github.io.git branch: master + # - type: leancloud_counter_security_sync githubEmojis: enable: true diff --git a/source/_data/next.yml b/source/_data/next.yml new file mode 100644 index 000000000..02a5d7f62 --- /dev/null +++ b/source/_data/next.yml @@ -0,0 +1,964 @@ +# --------------------------------------------------------------- +# Theme Core Configuration Settings +# --------------------------------------------------------------- + +# If false, merge configs from `_data/next.yml` into default configuration (rewrite). +# If true, will fully override default configuration by options from `_data/next.yml` (override). Only for NexT settings. +# And if true, all config from default NexT `_config.yml` must be copied into `next.yml`. Use if you know what you are doing. +# Useful if you want to comment some options from NexT `_config.yml` by `next.yml` without editing default config. +override: true + +# Allow to cache content generation. Introduced in NexT v6.0.0. +cache: + enable: true + +# Redefine custom file paths. Introduced in NexT v6.0.2. +# If commented, will be used default custom file paths. + +# For example, you want to put your custom styles file +# outside theme directory in root `source/_data`, set +# `styles: source/_data/styles.styl` +#custom_file_path: + # Default paths: layout/_custom/* + #head: source/_data/head.swig + #header: source/_data/header.swig + #sidebar: source/_data/sidebar.swig + + # Default path: source/css/_variables/custom.styl + #variables: source/_data/variables.styl + # Default path: source/css/_mixins/custom.styl + #mixins: source/_data/mixins.styl + # Default path: source/css/_custom/custom.styl + #styles: source/_data/styles.styl + + +# --------------------------------------------------------------- +# Site Information Settings +# --------------------------------------------------------------- + +# To get or check favicons visit: https://realfavicongenerator.net +# Put your favicons into `hexo-site/source/` (recommend) or `hexo-site/themes/next/source/images/` directory. + +# Default NexT favicons placed in `hexo-site/themes/next/source/images/` directory. +# And if you want to place your icons in `hexo-site/source/` root directory, you must remove `/images` prefix from pathes. + +# For example, you put your favicons into `hexo-site/source/images` directory. +# Then need to rename & redefine they on any other names, otherwise icons from Next will rewrite your custom icons in Hexo. +favicon: + small: https://res.cloudinary.com/incoder/image/upload/v1525515979/favicon-16x16.png + medium: https://res.cloudinary.com/incoder/image/upload/v1525515979/favicon-32x32.png + apple_touch_icon: https://res.cloudinary.com/incoder/image/upload/v1525515979/apple-touch-icon.png + safari_pinned_tab: /images/logo.svg + #android_manifest: /images/manifest.json + #ms_browserconfig: /images/browserconfig.xml + +# Set rss to false to disable feed link. +# Leave rss as empty to use site's feed link, and install hexo-generator-feed: `npm install hexo-generator-feed --save`. +# Set rss to specific value if you have burned your feed already. +rss: + +footer: + # Specify the date when the site was setup. + # If not defined, current year will be used. + #since: 2015 + + # Icon between year and copyright info. + icon: + # Icon name in fontawesome, see: https://fontawesome.com/v4.7.0/icons + # `heart` is recommended with animation in red (#ff0000). + name: user + # If you want to animate the icon, set it to true. + animated: false + # Change the color of icon, using Hex Code. + color: "#808080" + + # If not defined, will be used `author` from Hexo main config. + copyright: + # ------------------------------------------------------------- + powered: + # Hexo link (Powered by Hexo). + enable: true + # Version info of Hexo after Hexo link (vX.X.X). + version: true + + theme: + # Theme & scheme info link (Theme - NexT.scheme). + enable: true + # Version info of NexT after scheme info (vX.X.X). + version: true + # ------------------------------------------------------------- + # Any custom text can be defined here. + #custom_text: Hosted by Coding Pages + +# --------------------------------------------------------------- +# SEO Settings +# --------------------------------------------------------------- + +# Canonical, set a canonical link tag in your hexo, you could use it for your SEO of blog. +# See: https://support.google.com/webmasters/answer/139066 +# Tips: Before you open this tag, remember set up your URL in hexo _config.yml ( ex. url: http://yourdomain.com ) +canonical: true + +# Change headers hierarchy on site-subtitle (will be main site description) and on all post/pages titles for better SEO-optimization. +seo: false + +# If true, will add site-subtitle to index page, added in main hexo config. +# subtitle: Subtitle +index_with_subtitle: false + + +# --------------------------------------------------------------- +# Menu Settings +# --------------------------------------------------------------- + +# When running the site in a subdirectory (e.g. domain.tld/blog), remove the leading slash from link value (/archives -> archives). +# Usage: `Key: /link/ || icon` +# Key is the name of menu item. If translate for this menu will find in languages - this translate will be loaded; if not - Key name will be used. Key is case-senstive. +# Value before `||` delimeter is the target link. +# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, question icon will be loaded. +menu: + home: / || home + tags: /tags/ || tags + categories: /categories/ || th + archives: /archives/ || archive + about: /about/ || user + #schedule: /schedule/ || calendar + #sitemap: /sitemap.xml || sitemap + #commonweal: /404/ || heartbeat + +# Enable/Disable menu icons / item badges. +menu_settings: + icons: true + badges: true + +# --------------------------------------------------------------- +# Scheme Settings +# --------------------------------------------------------------- + +# Schemes +scheme: Muse +#scheme: Mist +#scheme: Pisces +#scheme: Gemini + + +# --------------------------------------------------------------- +# Sidebar Settings +# --------------------------------------------------------------- + +# Posts / Categories / Tags in sidebar. +site_state: true + +# Social Links. +# Usage: `Key: permalink || icon` +# Key is the link label showing to end users. +# Value before `||` delimeter is the target permalink. +# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, globe icon will be loaded. +social: + GitHub: https://github.com/BladeCode || github + E-Mail: mailto:incoder.xu@gmail.com || envelope + # Google: https://plus.google.com/101381611051487754759 || google + Twitter: https://twitter.com/_incoder || twitter + Weibo: http://weibo.com/onblade || weibo + #FB Page: https://www.facebook.com/yourname || facebook + #VK Group: https://vk.com/yourname || vk + # StackOverflow: https://stackoverflow.com/users/5776993/blade || stack-overflow + #YouTube: https://youtube.com/yourname || youtube + #Instagram: https://instagram.com/yourname || instagram + #Skype: skype:yourname?call|chat || skype + +social_icons: + enable: true + icons_only: false + transition: false + # Dependencies: exturl: true in Tags Settings section below. + # To encrypt links above use https://www.base64encode.org + # Example encoded link: `GitHub: aHR0cHM6Ly9naXRodWIuY29tL3RoZW1lLW5leHQ= || github` + exturl: false + +# Follow me on GitHub banner in right-top corner. +# Usage: `permalink || title` +# Value before `||` delimeter is the target permalink. +# Value after `||` delimeter is the title and aria-label name. +#github_banner: https://github.com/yourname || Follow me on GitHub + +# Blog rolls +links_icon: link +links_title: Links +links_layout: block +#links_layout: inline +#links: +# Title: https://incoder.org/ + +# Sidebar Avatar +# in theme directory(source/images): /images/avatar.gif +# in site directory(source/uploads): /uploads/avatar.gif +#avatar: /images/avatar.gif +avatar: https://res.cloudinary.com/incoder/image/upload/v1525515979/avatar.png + +# Table Of Contents in the Sidebar +toc: + enable: true + + # Automatically add list number to toc. + number: true + + # If true, all words will placed on next lines if header width longer then sidebar width. + wrap: false + +# Creative Commons 4.0 International License. +# http://creativecommons.org/ +# Available: by | by-nc | by-nc-nd | by-nc-sa | by-nd | by-sa | zero +#creative_commons: by-nc-sa +#creative_commons: + +sidebar: + # Sidebar Position, available value: left | right (only for Pisces | Gemini). + position: left + #position: right + + # Sidebar Display, available value (only for Muse | Mist): + # - post expand on posts automatically. Default. + # - always expand for all pages automatically + # - hide expand only when click on the sidebar toggle icon. + # - remove Totally remove sidebar including sidebar toggle. + display: post + #display: always + #display: hide + #display: remove + + # Sidebar offset from top menubar in pixels (only for Pisces | Gemini). + offset: 12 + + # Back to top in sidebar (only for Pisces | Gemini). + b2t: false + + # Scroll percent label in b2t button. + scrollpercent: false + + # Enable sidebar on narrow view (only for Muse | Mist). + onmobile: false + + +# --------------------------------------------------------------- +# Post Settings +# --------------------------------------------------------------- + +# Automatically scroll page to section which is under mark. +scroll_to_more: true + +# Automatically saving scroll position on each post/page in cookies. +save_scroll: false + +# Automatically excerpt description in homepage as preamble text. +excerpt_description: true + +# Automatically Excerpt. Not recommend. +# Please use in the post to control excerpt accurately. +auto_excerpt: + enable: true + length: 150 + +# Post meta display settings +post_meta: + item_text: true + created_at: true + updated_at: + enabled: false + # If true, show updated date label only if `updated date` different from 'created date' (post edited in another day than was created). + # And if post will edited in same day as created, edited time will show in popup title under created time label. + # If false show anyway, but if post edited in same day, show only edited time. + another_day: true + categories: true + +# Post wordcount display settings +# Dependencies: https://github.com/theme-next/hexo-symbols-count-time +symbols_count_time: + separated_meta: true + item_text_post: true + item_text_total: false + awl: 2 + wpm: 275 + +codeblock: + # Manual define the border radius in codeblock + # Leave it empty for the default 1 + border_radius: + # Add copy button on codeblock + copy_button: false + +# Wechat Subscriber +#wechat_subscriber: + #enabled: true + #qcode: /path/to/your/wechatqcode ex. /uploads/wechat-qcode.jpg + #description: ex. subscribe to my blog by scanning my public wechat account + +# Reward +#reward_comment: Donate comment here +wechatpay: https://res.cloudinary.com/incoder/image/upload/v1525515979/wechatpay.png +alipay: https://res.cloudinary.com/incoder/image/upload/v1525515979/alipay.png +#bitcoin: /images/bitcoin.png + +# Related popular posts +# Dependencies: https://github.com/tea3/hexo-related-popular-posts +related_posts: + enable: false + title: # custom header, leave empty to use the default one + display_in_home: false + params: + maxCount: 5 + #PPMixingRate: 0.0 + #isDate: false + #isImage: false + #isExcerpt: false + +# Declare license on posts +post_copyright: + enable: true + license: CC BY-NC-SA 4.0 + +# Post edit +# Dependencies: https://github.com/hexojs/hexo-deployer-git +post_edit: + enable: true + url: https://github.com/theme-next/theme-next.org/_posts/tree/master/ # Link for view source. +# url: https://github.com/theme-next/theme-next.org/_posts/edit/master/ # Link for fork & edit. + + +# --------------------------------------------------------------- +# Misc Theme Settings +# --------------------------------------------------------------- + +# Reduce padding / margin indents on devices with narrow width. +mobile_layout_economy: false + +# Android Chrome header panel color ($brand-bg / $headband-bg => $black-deep). +android_chrome_color: "#222" + +# Custom Logo. +# !!Only available for Default Scheme currently. +# Options: +# enabled: [true/false] - Replace with specific image +# image: url-of-image - Images's url +custom_logo: + enabled: true + image: https://res.cloudinary.com/incoder/image/upload/v1525515979/favicon-32x32.png + +# Code Highlight theme +# Available values: normal | night | night eighties | night blue | night bright +# https://github.com/chriskempson/tomorrow-theme +highlight_theme: night + +# Enable "cheers" for archive page. +cheers_enabled: true + +# Manual define the max content width +# !!Only available for Gemini Scheme currently +# Leave it empty for the default 75% (suggest not less than 1000px) +#max_content_width: 1000px + +# Manual define the sidebar width +# !!Only available for Gemini Scheme currently +# Leave it empty for the default 240 +sidebar_width: + +# --------------------------------------------------------------- +# Font Settings +# - Find fonts on Google Fonts (https://www.google.com/fonts) +# - All fonts set here will have the following styles: +# light, light italic, normal, normal italic, bold, bold italic +# - Be aware that setting too much fonts will cause site running slowly +# - Introduce in 5.0.1 +# --------------------------------------------------------------- +# CAUTION! Safari Version 10.1.2 bug: https://github.com/iissnan/hexo-theme-next/issues/1844 +# To avoid space between header and sidebar in Pisces / Gemini themes recommended to use Web Safe fonts for `global` (and `logo`): +# Arial | Tahoma | Helvetica | Times New Roman | Courier New | Verdana | Georgia | Palatino | Garamond | Comic Sans MS | Trebuchet MS +# --------------------------------------------------------------- +font: + enable: false + + # Uri of fonts host. E.g. //fonts.googleapis.com (Default). + host: + + # Font options: + # `external: true` will load this font family from `host` above. + # `family: Times New Roman`. Without any quotes. + # `size: xx`. Use `px` as unit. + + # Global font settings used for all elements in . + global: + external: true + family: Lato + size: + + # Font settings for Headlines (H1, H2, H3, H4, H5, H6). + # Fallback to `global` font settings. + headings: + external: true + family: + size: + + # Font settings for posts. + # Fallback to `global` font settings. + posts: + external: true + family: + + # Font settings for Logo. + # Fallback to `global` font settings. + logo: + external: true + family: + size: + + # Font settings for and code blocks. + codes: + external: true + family: + size: + + +# --------------------------------------------------------------- +# Third Party Services Settings +# --------------------------------------------------------------- + +# Math Equations Render Support +math: + enable: false + + # Default(true) will load mathjax/katex script on demand + # That is it only render those page who has 'mathjax: true' in Front Matter. + # If you set it to false, it will load mathjax/katex srcipt EVERY PAGE. + per_page: true + + engine: mathjax + #engine: katex + + # hexo-rendering-pandoc (or hexo-renderer-kramed) needed to full MathJax support. + mathjax: + # Use 2.7.1 as default, jsdelivr as default CDN, works everywhere even in China + cdn: //cdn.jsdelivr.net/npm/mathjax@2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML + # For newMathJax CDN (cdnjs.cloudflare.com) with fallback to oldMathJax (cdn.mathjax.org). + #cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML + # For direct link to MathJax.js with CloudFlare CDN (cdnjs.cloudflare.com). + #cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML + # For automatic detect latest version link to MathJax.js and get from Bootcss. + #cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML + + # hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin) + # needed to full Katex support. + katex: + # Use 0.7.1 as default, jsdelivr as default CDN, works everywhere even in China + cdn: //cdn.jsdelivr.net/npm/katex@0.7.1/dist/katex.min.css + # CDNJS, provided by cloudflare, maybe the best CDN, but not works in China + #cdn: //cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css + # Bootcss, works great in China, but not so well in other region + #cdn: //cdn.bootcss.com/KaTeX/0.7.1/katex.min.css + +# Han Support +# Dependencies: https://github.com/theme-next/theme-next-han +han: false + +# Pangu Support +# Dependencies: https://github.com/theme-next/theme-next-pangu +# For more information: https://github.com/vinta/pangu.js +pangu: false + +# Swiftype Search API Key +#swiftype_key: + +# Baidu Analytics ID +#baidu_analytics: + +# Disqus +disqus: + enable: false + shortname: + count: true + lazyload: false + +# Hypercomments +#hypercomments_id: + +# changyan +changyan: + enable: false + appid: + appkey: + + +# Valine. +# You can get your appid and appkey from https://leancloud.cn +# more info please open https://valine.js.org +valine: + enable: false + appid: # your leancloud application appid + appkey: # your leancloud application appkey + notify: false # mail notifier , https://github.com/xCss/Valine/wiki + verify: false # Verification code + placeholder: Just go go # comment box placeholder + avatar: mm # gravatar style + guest_info: nick,mail,link # custom comment header + pageSize: 10 # pagination size + + +# Support for youyan comments system. +# You can get your uid from http://www.uyan.cc +#youyan_uid: your uid + +# Support for LiveRe comments system. +# You can get your uid from https://livere.com/insight/myCode (General web site) +#livere_uid: your uid + +# Gitment +# Introduction: https://imsun.net/posts/gitment-introduction/ +gitment: + enable: true + mint: true # RECOMMEND, A mint on Gitment, to support count, language and proxy_gateway + count: true # Show comments count in post meta area + lazy: false # Comments lazy loading with a button + cleanly: false # Hide 'Powered by ...' on footer, and more + language: # Force language, or auto switch by theme + github_user: BladeCode # MUST HAVE, Your Github Username + github_repo: BladeCode.github.io # MUST HAVE, The name of the repo you use to store Gitment comments + client_id: 2e3028f6ae11f92b2c38 # MUST HAVE, Github client id for the Gitment + client_secret: 97aa93b198112873842f608c0feb14c3740ac491 # EITHER this or proxy_gateway, Github access secret token for the Gitment + proxy_gateway: # Address of api proxy, See: https://github.com/aimingoo/intersect + redirect_protocol: # Protocol of redirect_uri with force_redirect_protocol when mint enabled + +# Baidu Share +# Available value: +# button | slide +# Warning: Baidu Share does not support https. +#baidushare: +## type: button + +# Share +# This plugin is more useful in China, make sure you known how to use it. +# And you can find the use guide at official webiste: http://www.jiathis.com/. +# Warning: JiaThis does not support https. +#jiathis: + ##uid: Get this uid from http://www.jiathis.com/ + +#add_this_id: + +# NeedMoreShare2 +# Dependencies: https://github.com/theme-next/theme-next-needmoreshare2 +# See: https://github.com/revir/need-more-share2 +# Also see: https://github.com/DzmVasileusky/needShareButton +# iconStyle: default | box +# boxForm: horizontal | vertical +# position: top / middle / bottom + Left / Center / Right +# networks: Weibo,Wechat,Douban,QQZone,Twitter,Linkedin,Mailto,Reddit, +# Delicious,StumbleUpon,Pinterest,Facebook,GooglePlus,Slashdot, +# Technorati,Posterous,Tumblr,GoogleBookmarks,Newsvine, +# Evernote,Friendfeed,Vkontakte,Odnoklassniki,Mailru +needmoreshare2: + enable: false + postbottom: + enable: false + options: + iconStyle: box + boxForm: horizontal + position: bottomCenter + networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook + float: + enable: false + options: + iconStyle: box + boxForm: horizontal + position: middleRight + networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook + +# Google Webmaster tools verification setting +# See: https://www.google.com/webmasters/ +#google_site_verification: + +# Google Analytics +# google_analytics: UA-100235665-1 + +# Bing Webmaster tools verification setting +# See: https://www.bing.com/webmaster/ +#bing_site_verification: + +# Yandex Webmaster tools verification setting +# See: https://webmaster.yandex.ru/ +#yandex_site_verification: + +# CNZZ count +#cnzz_siteid: + +# Application Insights +# See https://azure.microsoft.com/en-us/services/application-insights/ +# application_insights: + +# Post widgets & FB/VK comments settings. +# --------------------------------------------------------------- +# Facebook SDK Support. +# https://github.com/iissnan/hexo-theme-next/pull/410 +facebook_sdk: + enable: false + app_id: # + fb_admin: # + like_button: #true + webmaster: #true + +# Facebook comments plugin +# This plugin depends on Facebook SDK. +# If facebook_sdk.enable is false, Facebook comments plugin is unavailable. +facebook_comments_plugin: + enable: false + num_of_posts: 10 # min posts num is 1 + width: 100% # default width is 550px + scheme: light # default scheme is light (light or dark) + +# VKontakte API Support. +# To get your AppID visit https://vk.com/editapp?act=create +vkontakte_api: + enable: false + app_id: # + like: true + comments: true + num_of_posts: 10 + +# Star rating support to each article. +# To get your ID visit https://widgetpack.com +rating: + enable: false + id: # + color: fc6423 +# --------------------------------------------------------------- + +# Show number of visitors to each article. +# You can visit https://leancloud.cn get AppID and AppKey. +leancloud_visitors: + enable: true + app_id: fAWWlD5N0zGklmW8OBweP1kl-gzGzoHsz + app_key: 7Jd3g9Ux1jhtWour5UFUPQuV + # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security + # If you don't care about security in lc counter and just want to use it directly + # (without hexo-leancloud-counter-security plugin), set the `security` to `false`. + security: false + betterPerformance: false + +# Another tool to show number of visitors to each article. +# visit https://console.firebase.google.com/u/0/ to get apiKey and projectId +# visit https://firebase.google.com/docs/firestore/ to get more information about firestore +firestore: + enable: false + collection: articles #required, a string collection name to access firestore database + apiKey: #required + projectId: #required + bluebird: false #enable this if you want to include bluebird 3.5.1(core version) Promise polyfill + +# Show Views/Visitors of the website/page with busuanzi. +# Get more information on http://ibruce.info/2015/04/04/busuanzi/ +busuanzi_count: + enable: false + total_visitors: true + total_visitors_icon: user + total_views: true + total_views_icon: eye + post_views: true + post_views_icon: eye + + +# Tencent analytics ID +# tencent_analytics: + +# Tencent MTA ID +# tencent_mta: + + +# Enable baidu push so that the blog will push the url to baidu automatically which is very helpful for SEO +baidu_push: false + +# Google Calendar +# Share your recent schedule to others via calendar page +# +# API Documentation: +# https://developers.google.com/google-apps/calendar/v3/reference/events/list +calendar: + enable: false + calendar_id: + api_key: + orderBy: startTime + offsetMax: 24 + offsetMin: 4 + timeZone: + showDeleted: false + singleEvents: true + maxResults: 250 + +# Algolia Search +# See: https://github.com/theme-next/hexo-theme-next/blob/master/docs/ALGOLIA-SEARCH.md +# Dependencies: https://github.com/theme-next/theme-next-algolia-instant-search +algolia_search: + enable: false + hits: + per_page: 10 + labels: + input_placeholder: Search for Posts + hits_empty: "We didn't find any results for the search: ${query}" + hits_stats: "${hits} results found in ${time} ms" + +# Local search +# Dependencies: https://github.com/theme-next/hexo-generator-searchdb +local_search: + enable: true + # if auto, trigger search by changing input + # if manual, trigger search by pressing enter key or search button + trigger: auto + # show top n results per article, show all results by setting to -1 + top_n_per_article: 1 + # unescape html strings to the readable one + unescape: false + +# Bookmark Support +# Dependencies: https://github.com/theme-next/theme-next-bookmark +bookmark: + enable: false + # if auto + # - save the reading position when closing the page + # - or clicking the bookmark-icon + # if manual, only save it by clicking the bookmark-icon + save: auto + + +# --------------------------------------------------------------- +# Tags Settings +# --------------------------------------------------------------- + +# External URL with BASE64 encrypt & decrypt. +# Usage: {% exturl text url "title" %} +# Alias: {% extlink text url "title" %} +exturl: true + +# Note tag (bs-callout). +note: + # Note tag style values: + # - simple bs-callout old alert style. Default. + # - modern bs-callout new (v2-v3) alert style. + # - flat flat callout style with background, like on Mozilla or StackOverflow. + # - disabled disable all CSS styles import of note tag. + style: simple + icons: false + border_radius: 3 + # Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6). + # Offset also applied to label tag variables. This option can work with disabled note tag. + light_bg_offset: 0 + +# Label tag. +label: true + +# Tabs tag. +tabs: + enable: true + transition: + tabs: false + labels: true + border_radius: 0 + +# Reading progress bar +# Dependencies: https://github.com/theme-next/theme-next-reading-progress +reading_progress: + enable: true + color: "#37c6c0" + height: 2px + + +#! --------------------------------------------------------------- +#! DO NOT EDIT THE FOLLOWING SETTINGS +#! UNLESS YOU KNOW WHAT YOU ARE DOING +#! --------------------------------------------------------------- + +# Use velocity to animate everything. +motion: + enable: true + async: true + transition: + # Transition variants: + # fadeIn | fadeOut | flipXIn | flipXOut | flipYIn | flipYOut | flipBounceXIn | flipBounceXOut | flipBounceYIn | flipBounceYOut + # swoopIn | swoopOut | whirlIn | whirlOut | shrinkIn | shrinkOut | expandIn | expandOut + # bounceIn | bounceOut | bounceUpIn | bounceUpOut | bounceDownIn | bounceDownOut | bounceLeftIn | bounceLeftOut | bounceRightIn | bounceRightOut + # slideUpIn | slideUpOut | slideDownIn | slideDownOut | slideLeftIn | slideLeftOut | slideRightIn | slideRightOut + # slideUpBigIn | slideUpBigOut | slideDownBigIn | slideDownBigOut | slideLeftBigIn | slideLeftBigOut | slideRightBigIn | slideRightBigOut + # perspectiveUpIn | perspectiveUpOut | perspectiveDownIn | perspectiveDownOut | perspectiveLeftIn | perspectiveLeftOut | perspectiveRightIn | perspectiveRightOut + post_block: fadeIn + post_header: slideDownIn + post_body: slideDownIn + coll_header: slideLeftIn + # Only for Pisces | Gemini. + sidebar: slideUpIn + +# Fancybox. There is support for old version 2 and new version 3. +# Please, choose only any one variant, do not need to install both. +# For install 2.x: https://github.com/theme-next/theme-next-fancybox +# For install 3.x: https://github.com/theme-next/theme-next-fancybox3 +fancybox: true + +# Added switch option for separated repo in 6.0.0. +# Dependencies: https://github.com/theme-next/theme-next-fastclick +fastclick: true + +# Added switch option for separated repo in 6.0.0. +# Dependencies: https://github.com/theme-next/theme-next-jquery-lazyload +lazyload: false + +# Progress bar in the top during page loading. +# Dependencies: https://github.com/theme-next/theme-next-pace +pace: false +# Themes list: +#pace-theme-big-counter +#pace-theme-bounce +#pace-theme-barber-shop +#pace-theme-center-atom +#pace-theme-center-circle +#pace-theme-center-radar +#pace-theme-center-simple +#pace-theme-corner-indicator +#pace-theme-fill-left +#pace-theme-flash +#pace-theme-loading-bar +#pace-theme-mac-osx +#pace-theme-minimal +# For example +# pace_theme: pace-theme-center-simple +pace_theme: pace-theme-minimal + +# Canvas-nest +# Dependencies: https://github.com/theme-next/theme-next-canvas-nest +canvas_nest: false + +# JavaScript 3D library. +# Dependencies: https://github.com/theme-next/theme-next-three +# three_waves +three_waves: false +# canvas_lines +canvas_lines: false +# canvas_sphere +canvas_sphere: false + +# Only fit scheme Pisces +# Dependencies: https://github.com/theme-next/theme-next-canvas-ribbon +# Canvas-ribbon +# size: The width of the ribbon. +# alpha: The transparency of the ribbon. +# zIndex: The display level of the ribbon. +canvas_ribbon: + enable: false + size: 300 + alpha: 0.6 + zIndex: -1 + +# Script Vendors. +# Set a CDN address for the vendor you want to customize. +# For example +# jquery: https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js +# Be aware that you should use the same version as internal ones to avoid potential problems. +# Please use the https protocol of CDN files when you enable https on your site. +vendors: + # Internal path prefix. Please do not edit it. + _internal: lib + + # Internal version: 2.1.3 + jquery: + + # Internal version: 2.1.5 + # See: http://fancyapps.com/fancybox/ + fancybox: + fancybox_css: + + # Internal version: 1.0.6 + # See: https://github.com/ftlabs/fastclick + fastclick: + + # Internal version: 1.9.7 + # See: https://github.com/tuupola/jquery_lazyload + lazyload: + + # Internal version: 1.2.1 + # See: http://VelocityJS.org + velocity: + + # Internal version: 1.2.1 + # See: http://VelocityJS.org + velocity_ui: + + # Internal version: 0.7.9 + # See: https://faisalman.github.io/ua-parser-js/ + ua_parser: + + # Internal version: 4.6.2 + # See: http://fontawesome.io/ + fontawesome: + + # Internal version: 1 + # https://www.algolia.com + algolia_instant_js: + algolia_instant_css: + + # Internal version: 1.0.2 + # See: https://github.com/HubSpot/pace + # Or use direct links below: + # pace: //cdn.bootcss.com/pace/1.0.2/pace.min.js + # pace_css: //cdn.bootcss.com/pace/1.0.2/themes/blue/pace-theme-flash.min.css + pace: + pace_css: + + # Internal version: 1.0.0 + # https://github.com/hustcc/canvas-nest.js + canvas_nest: + + # three + three: + + # three_waves + # https://github.com/jjandxa/three_waves + three_waves: + + # three_waves + # https://github.com/jjandxa/canvas_lines + canvas_lines: + + # three_waves + # https://github.com/jjandxa/canvas_sphere + canvas_sphere: + + # Internal version: 1.0.0 + # https://github.com/zproo/canvas-ribbon + canvas_ribbon: + + # Internal version: 3.3.0 + # https://github.com/ethantw/Han + han: + + # Internal version: 3.3.0 + # https://github.com/vinta/pangu.js + pangu: + + # needMoreShare2 + # https://github.com/revir/need-more-share2 + needmoreshare2_js: + needmoreshare2_css: + + # bookmark + # Internal version: 1.0.0 + # https://github.com/theme-next/theme-next-bookmark + bookmark: + + # reading_progress + # Internal version: 1.0 + # https://github.com/theme-next/theme-next-reading-progress + # Example: https://cdn.jsdelivr.net/gh/theme-next/theme-next-reading-progress@1.1/reading_progress.min.js + reading_progress: + + # valine comment + # Example: https://cdn.jsdelivr.net/npm/valine@1.1.8/dist/Valine.min.js + valine: + + +# Assets +css: css +js: js +images: images \ No newline at end of file diff --git a/source/_posts/gitlab1.md b/source/_posts/gitlab1.md index 9cf0e3fb1..259001bc8 100644 --- a/source/_posts/gitlab1.md +++ b/source/_posts/gitlab1.md @@ -102,11 +102,11 @@ cd /opt/gitlab/bin ### 访问地址 修改`external_url`为Gitlab对应机器IP所配置的域名 -![gitlab-url](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-gitlab-url.png) +![gitlab-url](https://res.cloudinary.com/incoder/image/upload/v1525517587/blog/gitpages-gitlab-url.png) ### LDAP启用 修改`host`,`port`,`bind_dn`,`password`,`base`参数即可 -![gitlab-ladp](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-gitlab-ldap.png) +![gitlab-ladp](https://res.cloudinary.com/incoder/image/upload/v1525517612/blog/gitpages-gitlab-ldap.png) 各参数解释: * `host` 和 `port` 是 LDAP 服务的主机地址及端口 @@ -117,15 +117,15 @@ cd /opt/gitlab/bin 编译重启后,查看登录是否已经显示LDAP登录入口 -![gitlab-ldap-login](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-gitlab-ldap-login.png) +![gitlab-ldap-login](https://res.cloudinary.com/incoder/image/upload/v1525517639/blog/gitpages-gitlab-ldap-login.png) 为了安全我们需要关闭 GitLab 自己的注册功能,这样新用户只能通过 LDAP 认证的方式进行登陆。 -![gitlab-sign-up](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-gitlab-sign-up.png) +![gitlab-sign-up](https://res.cloudinary.com/incoder/image/upload/v1525517671/blog/gitpages-gitlab-sign-up.png) ### 存储仓库修改 默认仓库存储位置:`/var/opt/gitlab/git-data/repositories/` -![gitlab-dirs](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-gitlab-dirs.png) +![gitlab-dirs](https://res.cloudinary.com/incoder/image/upload/v1525517697/blog/gitpages-gitlab-dirs.png) ### Gitlab日志 默认日志位置: `/var/log/gitlab` @@ -135,8 +135,8 @@ cd /opt/gitlab/bin gitlab-ctl tail -f nginx/gitlab_access.log ``` 或者在Gitlab服务的系统设置中查看 -![gitlab-logs](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-gitlab-logs.png) +![gitlab-logs](https://res.cloudinary.com/incoder/image/upload/v1525517725/blog/gitpages-gitlab-logs.png) ## 附录 -* [官方安装教程](https://about.gitlab.com/installation/) +* [官方安装教程](https://about.gitlab.com/installation) * [官方配置文件](https://docs.gitlab.com.cn/omnibus/settings/README.html) \ No newline at end of file diff --git a/source/_posts/hexo-blog.md b/source/_posts/hexo-blog.md index d943ff854..fe44545ec 100644 --- a/source/_posts/hexo-blog.md +++ b/source/_posts/hexo-blog.md @@ -5,7 +5,7 @@ categories: Hexo tag: Build --- -之前一直纠结用[Jekyll](https://jekyllrb.com)还是[Hexo](https://hexo.io)来搭建[GitHub Page](https://pages.github.com)博客,原本一直想搭建一个[Material Design](https://material.io/guidelines/)主题风格,从[Hexo Themes](https://hexo.io/themes)中寻找到一款不错的主题,[indigo](https://github.com/yscoder/hexo-theme-indigo)是一款支持IE10+,评论,目录导航,分享等功能的轻量Blog主题。 +之前一直纠结用[Jekyll](https://jekyllrb.com)还是[Hexo](https://hexo.io)来搭建[GitHub Page](https://pages.github.com)博客,原本一直想搭建一个[Material Design](https://material.io/guidelines)主题风格,从[Hexo Themes](https://hexo.io/themes)中寻找到一款不错的主题,[indigo](https://github.com/yscoder/hexo-theme-indigo)是一款支持IE10+,评论,目录导航,分享等功能的轻量Blog主题。 简单的修改了该主题之后,本地预览都没有什么问题,但是部署到[Github]()上,样式什么的都无法加载,应该是我的操作姿势不对吧,调整了半天没有解决,烦躁中找到之前star的另一款很受欢迎的[Next](https://github.com/iissnan/hexo-theme-next)主题。 @@ -74,7 +74,7 @@ $ hexo d ## 自定义域名 虽然现在blog可以使用Githug提供的项目二级域名来访问,为了个性化以及方便等,配置自己的域名 1. 登录域名所属的管理网站(这里以阿里云域名服务为例) - ![gitpages-domain-manger](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-domain-manger.png) + ![gitpages-domain-manger](https://res.cloudinary.com/incoder/image/upload/v1525516603/blog/gitpages-domain-manger.png) 2. 添加解析 ``` bash $ # 解析一 @@ -98,7 +98,7 @@ $ # 解析三 > 192.30.252.153是GitHub的地址,你也可以ping你的 http://xxxx.github.io 的ip地址,填入进去 3. 修改Github上项目的domain设置 - ![gitpages-domain-custom](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-domain-custom.png) + ![gitpages-domain-custom](https://res.cloudinary.com/incoder/image/upload/v1525516630/blog/gitpages-domain-custom.png) 4. 添加CNAME文件 保存路径:`you blog name`/source 新增文件:CNAME 文件 (格式要求:`保存成所有文件而不是txt文件`) @@ -109,26 +109,26 @@ CNAME 文件内容:`incoder.org` 开启Https 需要借助[Cloudflare](https://www.cloudflare.com),关于Cloudflare的介绍等不在这里展开 1. 注册账号 2. Add website - ![site](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-add-site.png) + ![site](https://res.cloudinary.com/incoder/image/upload/v1525516650/blog/gitpages-https-add-site.png) 3. Querying your DNS - ![query](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-dns-query.png) + ![query](https://res.cloudinary.com/incoder/image/upload/v1525516664/blog/gitpages-https-dns-query.png) 4. Select Plan - ![plan](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-select-plan.png) + ![plan](https://res.cloudinary.com/incoder/image/upload/v1525516681/blog/gitpages-https-select-plan.png) 5. 域名解析记录获取 - ![continue](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-continue.png) + ![continue](https://res.cloudinary.com/incoder/image/upload/v1525516694/blog/gitpages-https-continue.png) 6. DNS 对比,并修改[Cloudflare]()提供的DNS来解析 - ![change](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-change-dns.png) + ![change](https://res.cloudinary.com/incoder/image/upload/v1525516714/blog/gitpages-https-change-dns.png) 7. 域名管理后台,修改DNS - ![dns](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-wanwang-dns.png) + ![dns](https://res.cloudinary.com/incoder/image/upload/v1525516733/blog/gitpages-https-wanwang-dns.png) > 阿里云服务相关域名DNS修改帮助[文档](https://help.aliyun.com/knowledge_detail/39844.html) 8. 成功激活 - ![active](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-active.png) + ![active](https://res.cloudinary.com/incoder/image/upload/v1525516756/blog/gitpages-https-active.png) 9. SSL证书申请提醒 - ![cer](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-ssl-cer.png) + ![cer](https://res.cloudinary.com/incoder/image/upload/v1525516994/blog/gitpages-https-ssl-cer.png) 10. 添加强制HTTPS规则 - ![rule](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-page-rule.png) + ![rule](https://res.cloudinary.com/incoder/image/upload/v1525517025/blog/gitpages-https-page-rule.png) 11. 规则制定 - ![deploy](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-https-deploy-https.png) + ![deploy](https://res.cloudinary.com/incoder/image/upload/v1525517045/blog/gitpages-https-deploy-https.png) 好了剩下的就是等证书颁发,可能要等上一些时间,具体每个人不尽相同,这里就不多做解释了。 diff --git a/source/_posts/hexo-iterative.md b/source/_posts/hexo-iterative.md index 2de7ae586..6b17bc2bf 100644 --- a/source/_posts/hexo-iterative.md +++ b/source/_posts/hexo-iterative.md @@ -40,12 +40,11 @@ tag: Build ### 准备 1. 使用GitHub账号登录Travis-CI,并确认接受访问 2. 同步了GitHub存储库,转到您的配置文件页面并启用您想要构建的存储库 -![enable](https://docs.travis-ci.com/images/enable.png) 3. 添加 `.travis.yml` 文件到构建部署项目的根目录下 ### Hexo 自动部署 部署流程 -![部署流程](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-travis-ci-branch-deploy.png) +![部署流程](https://res.cloudinary.com/incoder/image/upload/v1525517765/blog/gitpages-travis-ci-branch-deploy.png) Hexo 部署脚本示例 ```bash @@ -92,4 +91,12 @@ env: * 文章字符统计 [hexo-symbols-count-time](https://github.com/theme-next/hexo-symbols-count-time) * 修复LeanCloud访客计数器中的严重安全漏洞 [hexo-leancloud-counter-security](https://github.com/theme-next/hexo-leancloud-counter-security) -* 图片灯箱 [theme-next-fancybox3](https://github.com/theme-next/theme-next-fancybox3) \ No newline at end of file +* 图片灯箱 [theme-next-fancybox3](https://github.com/theme-next/theme-next-fancybox3) +* 本地检索 [hexo-generator-searchdb](https://github.com/theme-next/hexo-generator-searchdb) + +## 其他 + +### 图床选择 +* [个人网站中的静态文件云存储选择](https://jimmysong.io/posts/static-website-storage) +* [嗯,图片就交给它了](https://sspai.com/post/40499) +* [NexT主题无法备份解决方式](https://github.com/iissnan/hexo-theme-next/issues/932) diff --git a/source/_posts/rap1.md b/source/_posts/rap1.md index 3dc6b6475..c157095c2 100644 --- a/source/_posts/rap1.md +++ b/source/_posts/rap1.md @@ -28,11 +28,11 @@ API管理工具又很多,选择适合自身需求的就是最好 * 以管理员身份运行安装包`Redis-x64-3.2.100.msi` 1. 添加环境变量 - ![env](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-redis-env-var.png) + ![env](https://res.cloudinary.com/incoder/image/upload/v1525517089/blog/gitpages-redis-env-var.png) 2. 默认`6379`端口 - ![port](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-redis-port.png) + ![port](https://res.cloudinary.com/incoder/image/upload/v1525517270/blog/gitpages-redis-port.png) 3. 检查Redis服务,是否已经启动 - ![serve](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-redis-serve.png) + ![serve](https://res.cloudinary.com/incoder/image/upload/v1525517284/blog/gitpages-redis-serve.png) >其他默认即可,不要设置Memory Limit @@ -53,16 +53,16 @@ IDEA==>Open==>RAP ### 修改配置文件 文件:RAP\src\main\resources\database\\`config.properties` 修改:数据库`用户名`及`密码` -![update](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap1-update-database-config.png) +![update](https://res.cloudinary.com/incoder/image/upload/v1525517302/blog/gitpages-rap1-update-database-config.png) ## 启动项目 1. Edit config -![config](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap1-tomcat-config.png) +![config](https://res.cloudinary.com/incoder/image/upload/v1525517326/blog/gitpages-rap1-tomcat-config.png) 2. Create Tomcat -![create](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap1-tomcat-create.png) +![create](https://res.cloudinary.com/incoder/image/upload/v1525517350/blog/gitpages-rap1-tomcat-create.png) 3. Deploy war -![deploy](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap1-tomcat-deploy.png) +![deploy](https://res.cloudinary.com/incoder/image/upload/v1525517364/blog/gitpages-rap1-tomcat-deploy.png) 4. Deploy success -![success](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap1-deploy-success.png) +![success](https://res.cloudinary.com/incoder/image/upload/v1525517384/blog/gitpages-rap1-deploy-success.png) 注意成功部署后,请`注册`新账号登录 diff --git a/source/_posts/rap2.md b/source/_posts/rap2.md index f371c87c6..54186135c 100644 --- a/source/_posts/rap2.md +++ b/source/_posts/rap2.md @@ -98,7 +98,7 @@ npm run check >RAP2后端服务已启动,请从前端服务(rap2-dolores)访问。 RAP2 back-end server is started, please visit via front-end service (rap2-dolores). 或者在程序控制台出现如下Log,表示**服务端delos**已经部署成功 -![delos](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap2-delos-success.png) +![delos](https://res.cloudinary.com/incoder/image/upload/v1525517437/blog/gitpages-rap2-delos-success.png) ### 常见问题 @@ -167,7 +167,7 @@ npm install ``` 看到浏览器中出现登录页面,表示部署成功 -![dolores](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap2-dolores-success.png) +![dolores](https://res.cloudinary.com/incoder/image/upload/v1525517454/blog/gitpages-rap2-dolores-success.png) ### 常见问题 @@ -195,12 +195,12 @@ npm install ## 其他 ### MySQL 运行问题 * 错误一 -![mysql](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap2-mysql.png) +![mysql](https://res.cloudinary.com/incoder/image/upload/v1525517475/blog/gitpages-rap2-mysql.png) 原因:MySQL 集成命令没有加入系统的环境变量 解决方法:将安装的MySQL Service路径加入系统变量 -![path](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap2-mysql-path.png) +![path](https://res.cloudinary.com/incoder/image/upload/v1525517495/blog/gitpages-rap2-mysql-path.png) * 错误二 -![create](http://7xoc0z.com1.z0.glb.clouddn.com/gitpages-rap2-mysql-create.png) +![create](https://res.cloudinary.com/incoder/image/upload/v1525517523/blog/gitpages-rap2-mysql-create.png) 原因:没有数据库链接权限 解决方法:先登录用root数据库,密码具体看自己数据库当时设置的密码 diff --git a/source/_posts/realm.md b/source/_posts/realm.md index 909d7aecb..e36d12b0d 100644 --- a/source/_posts/realm.md +++ b/source/_posts/realm.md @@ -5,7 +5,7 @@ categories: DataBase tag: Realm --- -![realm-db](http://p5jcutnur.bkt.clouddn.com/gitpages-realm-mobile-db.png) +![realm-db](https://res.cloudinary.com/incoder/image/upload/v1525517554/blog/gitpages-realm-mobile-db.png) Android 供了多种选项来保存永久性应用数据。 * [Shared preferences](https://developer.android.google.cn/guide/topics/data/data-storage.html?hl=zh-cn#pref) * [Internal file storage](https://developer.android.google.cn/guide/topics/data/data-storage.html?hl=zh-cn#filesInternal) diff --git a/source/about/index.md b/source/about/index.md index cdac8b315..982f37fec 100644 --- a/source/about/index.md +++ b/source/about/index.md @@ -1,10 +1,10 @@ --- -title: about +title: 关于 date: 2018-05-04 17:50:34 comments: false --- - + ## 关于我 @@ -18,7 +18,7 @@ comments: false ## 关于本站 -> 本站已开启HTTPS,由于org域名目前无法备案,因此图片部分依旧是HTTP +> 本站已开启HTTPS 资源:便捷,高效,有趣的工具资源 diff --git a/source/categories/index.md b/source/categories/index.md index c59389801..dea1cbcc2 100644 --- a/source/categories/index.md +++ b/source/categories/index.md @@ -1,5 +1,5 @@ --- -title: categories +title: 分类 type: categories date: 2018-03-24 22:38:58 comments: false diff --git a/source/tags/index.md b/source/tags/index.md index 49932d693..286c05569 100644 --- a/source/tags/index.md +++ b/source/tags/index.md @@ -1,5 +1,5 @@ --- -title: tags +title: 标签 type: tags date: 2018-03-24 22:36:28 comments: false From 19e956c159e7a0b18cc262c2020c720baf1351f4 Mon Sep 17 00:00:00 2001 From: Jerry xu Date: Fri, 18 May 2018 22:17:27 +0800 Subject: [PATCH 007/163] delete next --- themes/next | 1 - 1 file changed, 1 deletion(-) delete mode 160000 themes/next diff --git a/themes/next b/themes/next deleted file mode 160000 index 2dd686ad2..000000000 --- a/themes/next +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2dd686ad206c0d2bde1272e7695ddb4a9413e730 From 17c6b50d2beb6fd06a5eb29d65bcbd7ffff20eaf Mon Sep 17 00:00:00 2001 From: Jerry xu Date: Fri, 18 May 2018 22:18:24 +0800 Subject: [PATCH 008/163] Squashed 'themes/next/' content from commit 4b78733 git-subtree-dir: themes/next git-subtree-split: 4b78733974ca2a544604ad69847804667cd07f3a --- .bowerrc | 3 + .editorconfig | 14 + .eslintrc.json | 4 + .gitattributes | 2 + .github/CODE_OF_CONDUCT.md | 94 + .github/CONTRIBUTING.md | 142 + .github/ISSUE_TEMPLATE.md | 84 + .github/PULL_REQUEST_TEMPLATE.md | 87 + .github/browserstack_logo.png | Bin 0 -> 7151 bytes .github/stale.yml | 30 + .gitignore | 22 + .stickler.yml | 6 + .stylintrc | 45 + .travis.yml | 18 + LICENSE.md | 63 + README.md | 140 + _config.yml | 973 +++++ bower.json | 31 + crowdin.yml | 9 + docs/AGPL3.md | 649 +++ docs/ALGOLIA-SEARCH.md | 87 + docs/AUTHORS.md | 87 + docs/DATA-FILES.md | 61 + docs/INSTALLATION.md | 120 + docs/LEANCLOUD-COUNTER-SECURITY.md | 174 + docs/LICENSE | 56 + docs/MATH.md | 290 ++ docs/UPDATE-FROM-5.1.X.md | 19 + docs/ru/DATA-FILES.md | 61 + docs/ru/INSTALLATION.md | 120 + docs/ru/README.md | 121 + docs/ru/UPDATE-FROM-5.1.X.md | 19 + docs/zh-CN/ALGOLIA-SEARCH.md | 84 + docs/zh-CN/CODE_OF_CONDUCT.md | 99 + docs/zh-CN/CONTRIBUTING.md | 144 + docs/zh-CN/DATA-FILES.md | 61 + docs/zh-CN/INSTALLATION.md | 120 + docs/zh-CN/LEANCLOUD-COUNTER-SECURITY.md | 185 + docs/zh-CN/MATH.md | 297 ++ docs/zh-CN/README.md | 138 + docs/zh-CN/UPDATE-FROM-5.1.X.md | 29 + gulpfile.coffee | 53 + languages/de.yml | 98 + languages/default.yml | 1 + languages/en.yml | 114 + languages/fr.yml | 98 + languages/id.yml | 98 + languages/it.yml | 98 + languages/ja.yml | 98 + languages/ko.yml | 98 + languages/nl.yml | 98 + languages/pt-BR.yml | 98 + languages/pt.yml | 98 + languages/ru.yml | 98 + languages/tr.yml | 98 + languages/vi.yml | 98 + languages/zh-CN.yml | 98 + languages/zh-HK.yml | 98 + languages/zh-TW.yml | 98 + layout/_custom/head.swig | 3 + layout/_custom/header.swig | 1 + layout/_custom/sidebar.swig | 1 + layout/_layout.swig | 110 + layout/_macro/menu/menu-badge.swig | 14 + layout/_macro/menu/menu-item.swig | 20 + layout/_macro/post-collapse.swig | 34 + layout/_macro/post-copyright.swig | 14 + layout/_macro/post-related.swig | 20 + layout/_macro/post.swig | 469 ++ layout/_macro/reward.swig | 30 + layout/_macro/sidebar.swig | 192 + layout/_macro/wechat-subscriber.swig | 4 + layout/_partials/breadcrumb.swig | 23 + layout/_partials/comments.swig | 63 + layout/_partials/footer.swig | 64 + layout/_partials/head/external-fonts.swig | 51 + layout/_partials/head/head-unique.swig | 27 + layout/_partials/head/head.swig | 139 + layout/_partials/header/brand.swig | 35 + layout/_partials/header/index.swig | 9 + layout/_partials/header/menu.swig | 52 + layout/_partials/header/sub-menu.swig | 92 + layout/_partials/page-header.swig | 12 + layout/_partials/pagination.swig | 11 + layout/_partials/search/index.swig | 9 + layout/_partials/search/localsearch.swig | 16 + layout/_partials/search/swiftype.swig | 12 + layout/_partials/search/tinysou.swig | 3 + layout/_partials/share/add-this.swig | 4 + layout/_partials/share/baidushare.swig | 57 + layout/_partials/share/duoshuo_share.swig | 18 + layout/_partials/share/jiathis.swig | 25 + layout/_scripts/boostrap.swig | 9 + layout/_scripts/commons.swig | 10 + layout/_scripts/noscript.swig | 26 + layout/_scripts/pages/post-details.swig | 2 + layout/_scripts/schemes/gemini.swig | 10 + layout/_scripts/schemes/mist.swig | 0 layout/_scripts/schemes/muse.swig | 0 layout/_scripts/schemes/pisces.swig | 10 + layout/_scripts/vendors.swig | 61 + .../analytics/analytics-with-widget.swig | 4 + .../analytics/application-insights.swig | 11 + .../analytics/baidu-analytics.swig | 11 + .../analytics/busuanzi-counter.swig | 20 + .../analytics/cnzz-analytics.swig | 7 + .../_third-party/analytics/facebook-sdk.swig | 19 + layout/_third-party/analytics/firestore.swig | 99 + .../analytics/google-analytics.swig | 10 + layout/_third-party/analytics/index.swig | 5 + .../analytics/lean-analytics.swig | 120 + .../analytics/tencent-analytics.swig | 10 + .../_third-party/analytics/tencent-mta.swig | 14 + .../_third-party/analytics/vkontakte-api.swig | 27 + layout/_third-party/bookmark.swig | 14 + layout/_third-party/comments/changyan.swig | 18 + layout/_third-party/comments/disqus.swig | 45 + layout/_third-party/comments/gitment.swig | 57 + .../_third-party/comments/hypercomments.swig | 27 + layout/_third-party/comments/index.swig | 7 + layout/_third-party/comments/livere.swig | 16 + layout/_third-party/comments/valine.swig | 27 + layout/_third-party/comments/youyan.swig | 14 + layout/_third-party/copy-code.swig | 70 + layout/_third-party/exturl.swig | 3 + layout/_third-party/github-banner.swig | 16 + layout/_third-party/math/index.swig | 20 + layout/_third-party/math/katex.swig | 1 + layout/_third-party/math/mathjax.swig | 20 + layout/_third-party/needsharebutton.swig | 24 + layout/_third-party/pangu.swig | 8 + layout/_third-party/rating.swig | 18 + layout/_third-party/schedule.swig | 185 + layout/_third-party/scroll-cookie.swig | 4 + .../search/algolia-search/assets.swig | 18 + .../search/algolia-search/dom.swig | 20 + layout/_third-party/search/index.swig | 3 + layout/_third-party/search/localsearch.swig | 336 ++ layout/_third-party/search/tinysou.swig | 23 + layout/_third-party/seo/baidu-push.swig | 16 + layout/archive.swig | 64 + layout/category.swig | 38 + layout/index.swig | 23 + layout/page.swig | 83 + layout/post.swig | 35 + layout/schedule.swig | 25 + layout/tag.swig | 37 + package.json | 36 + scripts/helpers.js | 23 + scripts/merge-configs.js | 45 + scripts/merge.js | 2225 ++++++++++ scripts/tags/button.js | 38 + scripts/tags/center-quote.js | 19 + scripts/tags/exturl.js | 67 + scripts/tags/full-image.js | 33 + scripts/tags/group-pictures.js | 843 ++++ scripts/tags/include-raw.js | 36 + scripts/tags/label.js | 25 + scripts/tags/lazy-image.js | 33 + scripts/tags/note.js | 22 + scripts/tags/tabs.js | 78 + .../components/back-to-top-sidebar.styl | 25 + .../css/_common/components/back-to-top.styl | 31 + source/css/_common/components/buttons.styl | 38 + source/css/_common/components/comments.styl | 1 + source/css/_common/components/components.styl | 16 + .../css/_common/components/footer/footer.styl | 44 + .../components/header/github-banner.styl | 48 + .../css/_common/components/header/header.styl | 9 + .../_common/components/header/headerband.styl | 4 + .../css/_common/components/header/menu.styl | 32 + .../_common/components/header/site-meta.styl | 48 + .../_common/components/header/site-nav.styl | 28 + .../_common/components/highlight/diff.styl | 8 + .../components/highlight/highlight.styl | 182 + .../_common/components/highlight/theme.styl | 92 + .../css/_common/components/pages/archive.styl | 29 + .../_common/components/pages/breadcrumb.styl | 22 + .../_common/components/pages/categories.styl | 27 + .../css/_common/components/pages/pages.styl | 7 + .../_common/components/pages/post-detail.styl | 6 + .../_common/components/pages/schedule.styl | 101 + source/css/_common/components/pagination.styl | 56 + .../_common/components/post/post-button.styl | 3 + .../components/post/post-collapse.styl | 111 + .../components/post/post-copyright.styl | 7 + .../css/_common/components/post/post-eof.styl | 17 + .../_common/components/post/post-expand.styl | 65 + .../_common/components/post/post-gallery.styl | 23 + .../_common/components/post/post-meta.styl | 50 + .../css/_common/components/post/post-nav.styl | 57 + .../post/post-reading_progress.styl | 10 + .../_common/components/post/post-reward.styl | 64 + .../css/_common/components/post/post-rtl.styl | 11 + .../_common/components/post/post-tags.styl | 10 + .../_common/components/post/post-title.styl | 51 + .../_common/components/post/post-type.styl | 14 + .../_common/components/post/post-widgets.styl | 41 + source/css/_common/components/post/post.styl | 61 + .../sidebar/sidebar-author-links.styl | 25 + .../components/sidebar/sidebar-author.styl | 45 + .../components/sidebar/sidebar-blogroll.styl | 25 + .../components/sidebar/sidebar-dimmer.styl | 21 + .../components/sidebar/sidebar-feed-link.styl | 23 + .../components/sidebar/sidebar-nav.styl | 29 + .../components/sidebar/sidebar-toc.styl | 60 + .../components/sidebar/sidebar-toggle.styl | 36 + .../_common/components/sidebar/sidebar.styl | 52 + .../components/sidebar/site-state.styl | 28 + source/css/_common/components/tag-cloud.styl | 8 + .../components/tags/blockquote-center.styl | 33 + .../css/_common/components/tags/exturl.styl | 18 + .../_common/components/tags/full-image.styl | 12 + .../components/tags/group-pictures.styl | 35 + source/css/_common/components/tags/label.styl | 12 + .../_common/components/tags/note-modern.styl | 183 + source/css/_common/components/tags/note.styl | 161 + source/css/_common/components/tags/tabs.styl | 99 + source/css/_common/components/tags/tags.styl | 8 + .../third-party/algolia-search.styl | 135 + .../components/third-party/baidushare.styl | 12 + .../third-party/busuanzi-counter.styl | 30 + .../components/third-party/gitment.styl | 13 + .../_common/components/third-party/han.styl | 3 + .../components/third-party/jiathis.styl | 10 + .../components/third-party/localsearch.styl | 102 + .../third-party/needsharebutton.styl | 27 + .../components/third-party/related-posts.styl | 22 + .../components/third-party/third-party.styl | 9 + source/css/_common/outline/outline.styl | 58 + source/css/_common/scaffolding/base.styl | 111 + source/css/_common/scaffolding/helpers.styl | 67 + source/css/_common/scaffolding/mobile.styl | 121 + source/css/_common/scaffolding/normalize.styl | 427 ++ .../css/_common/scaffolding/scaffolding.styl | 9 + source/css/_common/scaffolding/tables.styl | 32 + source/css/_custom/custom.styl | 1 + source/css/_mixins/Gemini.styl | 1 + source/css/_mixins/Mist.styl | 0 source/css/_mixins/Muse.styl | 0 source/css/_mixins/Pisces.styl | 16 + source/css/_mixins/base.styl | 98 + source/css/_mixins/custom.styl | 0 source/css/_schemes/Gemini/index.styl | 274 ++ source/css/_schemes/Mist/_base.styl | 9 + source/css/_schemes/Mist/_header.styl | 63 + source/css/_schemes/Mist/_logo.styl | 1 + source/css/_schemes/Mist/_menu.styl | 67 + source/css/_schemes/Mist/_posts-expanded.styl | 67 + source/css/_schemes/Mist/_search.styl | 5 + source/css/_schemes/Mist/index.styl | 92 + source/css/_schemes/Mist/outline/outline.styl | 1 + .../Mist/sidebar/sidebar-blogroll.styl | 1 + source/css/_schemes/Muse/_layout.styl | 9 + source/css/_schemes/Muse/_logo.styl | 21 + source/css/_schemes/Muse/_menu.styl | 60 + source/css/_schemes/Muse/_search.styl | 5 + source/css/_schemes/Muse/index.styl | 7 + .../Muse/sidebar/sidebar-blogroll.styl | 1 + source/css/_schemes/Pisces/_brand.styl | 30 + source/css/_schemes/Pisces/_layout.styl | 130 + source/css/_schemes/Pisces/_menu.styl | 87 + source/css/_schemes/Pisces/_posts.styl | 5 + source/css/_schemes/Pisces/_sidebar.styl | 129 + source/css/_schemes/Pisces/_sub-menu.styl | 38 + source/css/_schemes/Pisces/index.styl | 6 + source/css/_variables/Gemini.styl | 22 + source/css/_variables/Mist.styl | 13 + source/css/_variables/Muse.styl | 0 source/css/_variables/Pisces.styl | 77 + source/css/_variables/base.styl | 416 ++ source/css/_variables/custom.styl | 0 source/css/main.styl | 50 + source/fonts/.gitkeep | 0 source/images/algolia_logo.svg | 9 + source/images/apple-touch-icon-next.png | Bin 0 -> 1544 bytes source/images/avatar.gif | Bin 0 -> 2926 bytes source/images/cc-by-nc-nd.svg | 121 + source/images/cc-by-nc-sa.svg | 121 + source/images/cc-by-nc.svg | 121 + source/images/cc-by-nd.svg | 117 + source/images/cc-by-sa.svg | 121 + source/images/cc-by.svg | 121 + source/images/cc-zero.svg | 72 + source/images/favicon-16x16-next.png | Bin 0 -> 435 bytes source/images/favicon-32x32-next.png | Bin 0 -> 640 bytes source/images/loading.gif | Bin 0 -> 35 bytes source/images/logo.svg | 23 + source/images/placeholder.gif | Bin 0 -> 35 bytes source/images/quote-l.svg | 13 + source/images/quote-r.svg | 12 + source/images/searchicon.png | Bin 0 -> 766 bytes source/js/src/affix.js | 162 + source/js/src/algolia-search.js | 115 + source/js/src/bootstrap.js | 53 + source/js/src/exturl.js | 15 + source/js/src/js.cookie.js | 165 + source/js/src/motion.js | 352 ++ source/js/src/post-details.js | 104 + source/js/src/schemes/pisces.js | 57 + source/js/src/scroll-cookie.js | 23 + source/js/src/scrollspy.js | 182 + source/js/src/utils.js | 329 ++ source/lib/font-awesome/.bower.json | 36 + source/lib/font-awesome/.gitignore | 33 + source/lib/font-awesome/.npmignore | 42 + source/lib/font-awesome/HELP-US-OUT.txt | 7 + source/lib/font-awesome/bower.json | 22 + source/lib/font-awesome/css/font-awesome.css | 2337 ++++++++++ .../lib/font-awesome/css/font-awesome.css.map | 7 + .../lib/font-awesome/css/font-awesome.min.css | 4 + .../fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes .../fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes source/lib/jquery/index.js | 4 + source/lib/ua-parser-js/dist/ua-parser.min.js | 9 + .../lib/ua-parser-js/dist/ua-parser.pack.js | 9 + source/lib/velocity/velocity.js | 3868 +++++++++++++++++ source/lib/velocity/velocity.min.js | 4 + source/lib/velocity/velocity.ui.js | 762 ++++ source/lib/velocity/velocity.ui.min.js | 2 + test/.jshintrc | 23 + test/helpers.js | 133 + test/intern.js | 65 + 324 files changed, 28510 insertions(+) create mode 100644 .bowerrc create mode 100644 .editorconfig create mode 100644 .eslintrc.json create mode 100644 .gitattributes create mode 100644 .github/CODE_OF_CONDUCT.md create mode 100644 .github/CONTRIBUTING.md create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/browserstack_logo.png create mode 100644 .github/stale.yml create mode 100644 .gitignore create mode 100644 .stickler.yml create mode 100644 .stylintrc create mode 100644 .travis.yml create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 _config.yml create mode 100644 bower.json create mode 100644 crowdin.yml create mode 100644 docs/AGPL3.md create mode 100644 docs/ALGOLIA-SEARCH.md create mode 100644 docs/AUTHORS.md create mode 100644 docs/DATA-FILES.md create mode 100644 docs/INSTALLATION.md create mode 100644 docs/LEANCLOUD-COUNTER-SECURITY.md create mode 100644 docs/LICENSE create mode 100644 docs/MATH.md create mode 100644 docs/UPDATE-FROM-5.1.X.md create mode 100644 docs/ru/DATA-FILES.md create mode 100644 docs/ru/INSTALLATION.md create mode 100644 docs/ru/README.md create mode 100644 docs/ru/UPDATE-FROM-5.1.X.md create mode 100644 docs/zh-CN/ALGOLIA-SEARCH.md create mode 100644 docs/zh-CN/CODE_OF_CONDUCT.md create mode 100644 docs/zh-CN/CONTRIBUTING.md create mode 100644 docs/zh-CN/DATA-FILES.md create mode 100644 docs/zh-CN/INSTALLATION.md create mode 100644 docs/zh-CN/LEANCLOUD-COUNTER-SECURITY.md create mode 100644 docs/zh-CN/MATH.md create mode 100644 docs/zh-CN/README.md create mode 100644 docs/zh-CN/UPDATE-FROM-5.1.X.md create mode 100644 gulpfile.coffee create mode 100644 languages/de.yml create mode 120000 languages/default.yml create mode 100644 languages/en.yml create mode 100644 languages/fr.yml create mode 100644 languages/id.yml create mode 100644 languages/it.yml create mode 100644 languages/ja.yml create mode 100644 languages/ko.yml create mode 100644 languages/nl.yml create mode 100644 languages/pt-BR.yml create mode 100644 languages/pt.yml create mode 100644 languages/ru.yml create mode 100644 languages/tr.yml create mode 100644 languages/vi.yml create mode 100644 languages/zh-CN.yml create mode 100644 languages/zh-HK.yml create mode 100644 languages/zh-TW.yml create mode 100644 layout/_custom/head.swig create mode 100644 layout/_custom/header.swig create mode 100644 layout/_custom/sidebar.swig create mode 100644 layout/_layout.swig create mode 100644 layout/_macro/menu/menu-badge.swig create mode 100644 layout/_macro/menu/menu-item.swig create mode 100644 layout/_macro/post-collapse.swig create mode 100644 layout/_macro/post-copyright.swig create mode 100644 layout/_macro/post-related.swig create mode 100644 layout/_macro/post.swig create mode 100644 layout/_macro/reward.swig create mode 100644 layout/_macro/sidebar.swig create mode 100644 layout/_macro/wechat-subscriber.swig create mode 100644 layout/_partials/breadcrumb.swig create mode 100644 layout/_partials/comments.swig create mode 100644 layout/_partials/footer.swig create mode 100644 layout/_partials/head/external-fonts.swig create mode 100644 layout/_partials/head/head-unique.swig create mode 100644 layout/_partials/head/head.swig create mode 100644 layout/_partials/header/brand.swig create mode 100644 layout/_partials/header/index.swig create mode 100644 layout/_partials/header/menu.swig create mode 100644 layout/_partials/header/sub-menu.swig create mode 100644 layout/_partials/page-header.swig create mode 100644 layout/_partials/pagination.swig create mode 100644 layout/_partials/search/index.swig create mode 100644 layout/_partials/search/localsearch.swig create mode 100644 layout/_partials/search/swiftype.swig create mode 100644 layout/_partials/search/tinysou.swig create mode 100644 layout/_partials/share/add-this.swig create mode 100644 layout/_partials/share/baidushare.swig create mode 100644 layout/_partials/share/duoshuo_share.swig create mode 100644 layout/_partials/share/jiathis.swig create mode 100644 layout/_scripts/boostrap.swig create mode 100644 layout/_scripts/commons.swig create mode 100644 layout/_scripts/noscript.swig create mode 100644 layout/_scripts/pages/post-details.swig create mode 100644 layout/_scripts/schemes/gemini.swig create mode 100644 layout/_scripts/schemes/mist.swig create mode 100644 layout/_scripts/schemes/muse.swig create mode 100644 layout/_scripts/schemes/pisces.swig create mode 100644 layout/_scripts/vendors.swig create mode 100644 layout/_third-party/analytics/analytics-with-widget.swig create mode 100644 layout/_third-party/analytics/application-insights.swig create mode 100644 layout/_third-party/analytics/baidu-analytics.swig create mode 100644 layout/_third-party/analytics/busuanzi-counter.swig create mode 100644 layout/_third-party/analytics/cnzz-analytics.swig create mode 100644 layout/_third-party/analytics/facebook-sdk.swig create mode 100644 layout/_third-party/analytics/firestore.swig create mode 100644 layout/_third-party/analytics/google-analytics.swig create mode 100644 layout/_third-party/analytics/index.swig create mode 100644 layout/_third-party/analytics/lean-analytics.swig create mode 100644 layout/_third-party/analytics/tencent-analytics.swig create mode 100644 layout/_third-party/analytics/tencent-mta.swig create mode 100644 layout/_third-party/analytics/vkontakte-api.swig create mode 100644 layout/_third-party/bookmark.swig create mode 100644 layout/_third-party/comments/changyan.swig create mode 100644 layout/_third-party/comments/disqus.swig create mode 100644 layout/_third-party/comments/gitment.swig create mode 100644 layout/_third-party/comments/hypercomments.swig create mode 100644 layout/_third-party/comments/index.swig create mode 100644 layout/_third-party/comments/livere.swig create mode 100644 layout/_third-party/comments/valine.swig create mode 100644 layout/_third-party/comments/youyan.swig create mode 100644 layout/_third-party/copy-code.swig create mode 100644 layout/_third-party/exturl.swig create mode 100644 layout/_third-party/github-banner.swig create mode 100644 layout/_third-party/math/index.swig create mode 100644 layout/_third-party/math/katex.swig create mode 100644 layout/_third-party/math/mathjax.swig create mode 100644 layout/_third-party/needsharebutton.swig create mode 100644 layout/_third-party/pangu.swig create mode 100644 layout/_third-party/rating.swig create mode 100644 layout/_third-party/schedule.swig create mode 100644 layout/_third-party/scroll-cookie.swig create mode 100644 layout/_third-party/search/algolia-search/assets.swig create mode 100644 layout/_third-party/search/algolia-search/dom.swig create mode 100644 layout/_third-party/search/index.swig create mode 100644 layout/_third-party/search/localsearch.swig create mode 100644 layout/_third-party/search/tinysou.swig create mode 100644 layout/_third-party/seo/baidu-push.swig create mode 100644 layout/archive.swig create mode 100644 layout/category.swig create mode 100644 layout/index.swig create mode 100644 layout/page.swig create mode 100644 layout/post.swig create mode 100644 layout/schedule.swig create mode 100644 layout/tag.swig create mode 100644 package.json create mode 100644 scripts/helpers.js create mode 100644 scripts/merge-configs.js create mode 100644 scripts/merge.js create mode 100644 scripts/tags/button.js create mode 100644 scripts/tags/center-quote.js create mode 100644 scripts/tags/exturl.js create mode 100644 scripts/tags/full-image.js create mode 100644 scripts/tags/group-pictures.js create mode 100644 scripts/tags/include-raw.js create mode 100644 scripts/tags/label.js create mode 100644 scripts/tags/lazy-image.js create mode 100644 scripts/tags/note.js create mode 100644 scripts/tags/tabs.js create mode 100644 source/css/_common/components/back-to-top-sidebar.styl create mode 100644 source/css/_common/components/back-to-top.styl create mode 100644 source/css/_common/components/buttons.styl create mode 100644 source/css/_common/components/comments.styl create mode 100644 source/css/_common/components/components.styl create mode 100644 source/css/_common/components/footer/footer.styl create mode 100644 source/css/_common/components/header/github-banner.styl create mode 100644 source/css/_common/components/header/header.styl create mode 100644 source/css/_common/components/header/headerband.styl create mode 100644 source/css/_common/components/header/menu.styl create mode 100644 source/css/_common/components/header/site-meta.styl create mode 100644 source/css/_common/components/header/site-nav.styl create mode 100644 source/css/_common/components/highlight/diff.styl create mode 100644 source/css/_common/components/highlight/highlight.styl create mode 100644 source/css/_common/components/highlight/theme.styl create mode 100644 source/css/_common/components/pages/archive.styl create mode 100644 source/css/_common/components/pages/breadcrumb.styl create mode 100644 source/css/_common/components/pages/categories.styl create mode 100644 source/css/_common/components/pages/pages.styl create mode 100644 source/css/_common/components/pages/post-detail.styl create mode 100644 source/css/_common/components/pages/schedule.styl create mode 100644 source/css/_common/components/pagination.styl create mode 100644 source/css/_common/components/post/post-button.styl create mode 100644 source/css/_common/components/post/post-collapse.styl create mode 100644 source/css/_common/components/post/post-copyright.styl create mode 100644 source/css/_common/components/post/post-eof.styl create mode 100644 source/css/_common/components/post/post-expand.styl create mode 100644 source/css/_common/components/post/post-gallery.styl create mode 100644 source/css/_common/components/post/post-meta.styl create mode 100644 source/css/_common/components/post/post-nav.styl create mode 100644 source/css/_common/components/post/post-reading_progress.styl create mode 100644 source/css/_common/components/post/post-reward.styl create mode 100644 source/css/_common/components/post/post-rtl.styl create mode 100644 source/css/_common/components/post/post-tags.styl create mode 100644 source/css/_common/components/post/post-title.styl create mode 100644 source/css/_common/components/post/post-type.styl create mode 100644 source/css/_common/components/post/post-widgets.styl create mode 100644 source/css/_common/components/post/post.styl create mode 100644 source/css/_common/components/sidebar/sidebar-author-links.styl create mode 100644 source/css/_common/components/sidebar/sidebar-author.styl create mode 100644 source/css/_common/components/sidebar/sidebar-blogroll.styl create mode 100644 source/css/_common/components/sidebar/sidebar-dimmer.styl create mode 100644 source/css/_common/components/sidebar/sidebar-feed-link.styl create mode 100644 source/css/_common/components/sidebar/sidebar-nav.styl create mode 100644 source/css/_common/components/sidebar/sidebar-toc.styl create mode 100644 source/css/_common/components/sidebar/sidebar-toggle.styl create mode 100644 source/css/_common/components/sidebar/sidebar.styl create mode 100644 source/css/_common/components/sidebar/site-state.styl create mode 100644 source/css/_common/components/tag-cloud.styl create mode 100644 source/css/_common/components/tags/blockquote-center.styl create mode 100644 source/css/_common/components/tags/exturl.styl create mode 100644 source/css/_common/components/tags/full-image.styl create mode 100644 source/css/_common/components/tags/group-pictures.styl create mode 100644 source/css/_common/components/tags/label.styl create mode 100644 source/css/_common/components/tags/note-modern.styl create mode 100644 source/css/_common/components/tags/note.styl create mode 100644 source/css/_common/components/tags/tabs.styl create mode 100644 source/css/_common/components/tags/tags.styl create mode 100644 source/css/_common/components/third-party/algolia-search.styl create mode 100644 source/css/_common/components/third-party/baidushare.styl create mode 100644 source/css/_common/components/third-party/busuanzi-counter.styl create mode 100644 source/css/_common/components/third-party/gitment.styl create mode 100644 source/css/_common/components/third-party/han.styl create mode 100644 source/css/_common/components/third-party/jiathis.styl create mode 100644 source/css/_common/components/third-party/localsearch.styl create mode 100644 source/css/_common/components/third-party/needsharebutton.styl create mode 100644 source/css/_common/components/third-party/related-posts.styl create mode 100644 source/css/_common/components/third-party/third-party.styl create mode 100644 source/css/_common/outline/outline.styl create mode 100644 source/css/_common/scaffolding/base.styl create mode 100644 source/css/_common/scaffolding/helpers.styl create mode 100644 source/css/_common/scaffolding/mobile.styl create mode 100644 source/css/_common/scaffolding/normalize.styl create mode 100644 source/css/_common/scaffolding/scaffolding.styl create mode 100644 source/css/_common/scaffolding/tables.styl create mode 100644 source/css/_custom/custom.styl create mode 100644 source/css/_mixins/Gemini.styl create mode 100644 source/css/_mixins/Mist.styl create mode 100644 source/css/_mixins/Muse.styl create mode 100644 source/css/_mixins/Pisces.styl create mode 100644 source/css/_mixins/base.styl create mode 100644 source/css/_mixins/custom.styl create mode 100644 source/css/_schemes/Gemini/index.styl create mode 100644 source/css/_schemes/Mist/_base.styl create mode 100644 source/css/_schemes/Mist/_header.styl create mode 100644 source/css/_schemes/Mist/_logo.styl create mode 100644 source/css/_schemes/Mist/_menu.styl create mode 100644 source/css/_schemes/Mist/_posts-expanded.styl create mode 100644 source/css/_schemes/Mist/_search.styl create mode 100644 source/css/_schemes/Mist/index.styl create mode 100644 source/css/_schemes/Mist/outline/outline.styl create mode 100644 source/css/_schemes/Mist/sidebar/sidebar-blogroll.styl create mode 100644 source/css/_schemes/Muse/_layout.styl create mode 100644 source/css/_schemes/Muse/_logo.styl create mode 100644 source/css/_schemes/Muse/_menu.styl create mode 100644 source/css/_schemes/Muse/_search.styl create mode 100644 source/css/_schemes/Muse/index.styl create mode 100644 source/css/_schemes/Muse/sidebar/sidebar-blogroll.styl create mode 100644 source/css/_schemes/Pisces/_brand.styl create mode 100644 source/css/_schemes/Pisces/_layout.styl create mode 100644 source/css/_schemes/Pisces/_menu.styl create mode 100644 source/css/_schemes/Pisces/_posts.styl create mode 100644 source/css/_schemes/Pisces/_sidebar.styl create mode 100644 source/css/_schemes/Pisces/_sub-menu.styl create mode 100644 source/css/_schemes/Pisces/index.styl create mode 100644 source/css/_variables/Gemini.styl create mode 100644 source/css/_variables/Mist.styl create mode 100644 source/css/_variables/Muse.styl create mode 100644 source/css/_variables/Pisces.styl create mode 100644 source/css/_variables/base.styl create mode 100644 source/css/_variables/custom.styl create mode 100644 source/css/main.styl create mode 100644 source/fonts/.gitkeep create mode 100644 source/images/algolia_logo.svg create mode 100644 source/images/apple-touch-icon-next.png create mode 100644 source/images/avatar.gif create mode 100644 source/images/cc-by-nc-nd.svg create mode 100644 source/images/cc-by-nc-sa.svg create mode 100644 source/images/cc-by-nc.svg create mode 100644 source/images/cc-by-nd.svg create mode 100644 source/images/cc-by-sa.svg create mode 100644 source/images/cc-by.svg create mode 100644 source/images/cc-zero.svg create mode 100644 source/images/favicon-16x16-next.png create mode 100644 source/images/favicon-32x32-next.png create mode 100644 source/images/loading.gif create mode 100644 source/images/logo.svg create mode 100644 source/images/placeholder.gif create mode 100644 source/images/quote-l.svg create mode 100644 source/images/quote-r.svg create mode 100644 source/images/searchicon.png create mode 100644 source/js/src/affix.js create mode 100644 source/js/src/algolia-search.js create mode 100644 source/js/src/bootstrap.js create mode 100644 source/js/src/exturl.js create mode 100644 source/js/src/js.cookie.js create mode 100644 source/js/src/motion.js create mode 100644 source/js/src/post-details.js create mode 100644 source/js/src/schemes/pisces.js create mode 100644 source/js/src/scroll-cookie.js create mode 100644 source/js/src/scrollspy.js create mode 100644 source/js/src/utils.js create mode 100644 source/lib/font-awesome/.bower.json create mode 100644 source/lib/font-awesome/.gitignore create mode 100644 source/lib/font-awesome/.npmignore create mode 100644 source/lib/font-awesome/HELP-US-OUT.txt create mode 100644 source/lib/font-awesome/bower.json create mode 100644 source/lib/font-awesome/css/font-awesome.css create mode 100644 source/lib/font-awesome/css/font-awesome.css.map create mode 100644 source/lib/font-awesome/css/font-awesome.min.css create mode 100644 source/lib/font-awesome/fonts/fontawesome-webfont.eot create mode 100644 source/lib/font-awesome/fonts/fontawesome-webfont.woff create mode 100644 source/lib/font-awesome/fonts/fontawesome-webfont.woff2 create mode 100644 source/lib/jquery/index.js create mode 100644 source/lib/ua-parser-js/dist/ua-parser.min.js create mode 100644 source/lib/ua-parser-js/dist/ua-parser.pack.js create mode 100644 source/lib/velocity/velocity.js create mode 100644 source/lib/velocity/velocity.min.js create mode 100644 source/lib/velocity/velocity.ui.js create mode 100644 source/lib/velocity/velocity.ui.min.js create mode 100644 test/.jshintrc create mode 100644 test/helpers.js create mode 100644 test/intern.js diff --git a/.bowerrc b/.bowerrc new file mode 100644 index 000000000..8013f263d --- /dev/null +++ b/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "source/lib" +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..f0627b937 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +# editorconfig.org + +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +indent_style = space +indent_size = 2 + +[*.py] +indent_size = 4 diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 000000000..a8ac41464 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,4 @@ +{ + "extends": "theme-next", + "root": true +} diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..7ead58ec1 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +source/lib/* linguist-vendored +scripts/merge.js linguist-vendored diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..d95bde0ee --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,94 @@ +
      Language: :us: +:cn: +:ru:
      + +#
      e x T
      + +[NexT](https://github.com/theme-next/hexo-theme-next) is an elegant and powerful theme for [Hexo](https://hexo.io/). With it, you can build a static blog hosted on [GitHub Pages](https://pages.github.com/) to share your life and communicate with new friends. + +A CODE_OF_CONDUCT dictates how conversation during code updates, issue communication, and pull requests should happen within [NexT](https://github.com/theme-next/hexo-theme-next) repository. We expect all users to show respect and courtesy to others through our repositories. Anyone violating these rules will not be reviewed and will be blocked and expelled from our repositories immediately upon discovery. + +## Table Of Contents + +- [Our Pledge](#our-pledge) +- [Our Responsibilities](#our-responsibilities) +- [Our Standards](#our-standards) +- [Scope](#scope) +- [Enforcement](#enforcement) +- [Contacting Maintainers](#contacting-maintainers) +- [Attribution](#attribution) + +## Our Pledge + +As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities. + +In the interest of fostering an open and welcoming environment, we are committed to making participation in our community a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual identity and orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality. + +## Our Responsibilities + +Project maintainers have the right and responsibility to clarify the standards of acceptable behavior and are expected to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to block temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Our Standards + +As a project on GitHub, this project is overed by the [GitHub Community Guidelines](https://help.github.com/articles/github-community-guidelines/). Additionally, as a project hosted on npm, it is covered by [npm Inc's Code of Conduct](https://www.npmjs.com/policies/conduct). + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language. +* Being respectful of differing viewpoints and experiences. +* Gracefully accepting constructive feedback. +* Focusing on what is best for the community. +* Showing empathy and kindness towards other community members. + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others’ private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. + +Depending on the violation, the maintainers may decide that violations of this code of conduct that have happened outside of the scope of the community may deem an individual unwelcome, and take appropriate action to maintain the comfort and safety of its members. + +## Enforcement + +If you see a Code of Conduct violation, follow these steps: + +1. Let the person know that what they did is not appropriate and ask them to stop and/or edit their message(s) or commits. That person should immediately stop the behavior and correct the issue. +2. If this doesn’t happen, or if you're uncomfortable speaking up, [contact the maintainers](#contacting-maintainers). When reporting, please include any relevant details, links, screenshots, context, or other information that may be used to better understand and resolve the situation. +3. As soon as available, a maintainer will look into the issue, and take further action. + +Once the maintainers get involved, they will follow a documented series of steps and do their best to preserve the well-being of project members. + +All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Thesehese are the steps maintainers will take for further enforcement, as needed: + +1. Repeat the request to stop. +2. If the person doubles down, they will have offending messages removed or edited by a maintainers given an official warning. The PR or Issue may be locked. +3. If the behavior continues or is repeated later, the person will be blocked from participating for 24 hours. +4. If the behavior continues or is repeated after the temporary block, a long-term (6-12 months) ban will be used. + +On top of this, maintainers may remove any offending messages, images, contributions, etc, as they deem necessary. Maintainers reserve full rights to skip any of these steps, at their discretion, if the violation is considered to be a serious and/or immediate threat to the well-being of members of the community. These include any threats, serious physical or verbal attacks, and other such behavior that would be completely unacceptable in any social setting that puts our members at risk. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Contacting Maintainers + +You may get in touch with the maintainer team through any of the following methods: + +* Through Email: + * [support@theme-next.org](mailto:support@theme-next.org) + +* Through Chat: + * [Gitter](https://gitter.im/theme-next) + * [Riot](https://riot.im/app/#/room/#NexT:matrix.org) + * [Telegram](https://t.me/joinchat/GUNHXA-vZkgSMuimL1VmMw) + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/) and [WeAllJS Code of Conduct](https://wealljs.org/code-of-conduct). diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 000000000..4d80ec2eb --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,142 @@ +
      Language: :us: +:cn: +:ru:
      + +#
      e x T
      + +First of all, thanks for taking your time to contribute and help make our project even better than it is today! The following is a set of guidelines for contributing to [Theme-Next](https://github.com/theme-next) and its libs submodules. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request. + +## Table Of Contents + +[How Can I Contribute?](#how-can-i-contribute) + + * [Before Submitting An Issue](#before-submitting-an-issue) + * [Reporting Bugs](#reporting-bugs) + * [Suggesting Enhancements](#suggesting-enhancements) + * [Submitting a Pull Request](#submitting-a-pull-request) + * [Creating Releases](#creating-releases) + +[Guides](#guides) + + * [Coding Rules](#coding-rules) + * [Coding Standards](#coding-standards) + * [Commit Messages Rules](#commit-messages-rules) + + +## How Can I Contribute? + +Main Theme-Next repository was rebased from [iissnan's](https://github.com/iissnan/hexo-theme-next) profile to [Theme-Next](https://github.com/theme-next) organization on GitHub. Most libraries under the `next/source/lib` directory was moved out to [external repos](https://github.com/theme-next) under NexT organization. Version 5 works fine at most cases, but for frequent users, you maybe need to [upgrade version 5 to 6](https://github.com/theme-next/hexo-theme-next/blob/master/docs/UPDATE-FROM-5.1.X.md) to get features and supports in new [Theme-Next](https://github.com/theme-next/hexo-theme-next) repository. + + +### Before Submitting An Issue + +If you just have a question, you'll get faster results by checking the FAQs for a list of common questions and problems (Work in progress) or the [«NexT» Documentation Site](https://theme-next.org/docs/) (Work in progress). + +Also, you can perform a [cursory search](https://github.com/theme-next/hexo-theme-next/search?q=&type=Issues&utf8=%E2%9C%93) to see if the problem has already been reported or solved. You don't want to duplicate effort. You might be able to find the cause of the problem and fix things yourself, or add comments to the existed issue. + +If you find a bug in the source code, most importantly, please check carefully if you can reproduce the problem [in the latest release version of Next](https://github.com/theme-next/hexo-theme-next/releases/latest). Then, you can help us by +[Reporting Bugs](#reporting-bugs) or [Suggesting Enhancements](#suggesting-enhancements) to our [ Repository](https://github.com/theme-next/hexo-theme-next). Even better, you can +[submit a Pull Request](#submitting-a-pull-request) with a fix. + + +### Reporting Bugs + +Before creating bug reports, please check [this list](#before-submitting-an-issue) as you might find out that you don't need to create one. After you've determined the repository your bug is related to, create an issue on that repository and provide the information as many details as possible by filling in [the required template](ISSUE_TEMPLATE.md). + +Following these guidelines helps maintainers and the community understand your report :pencil:, reproduce the behavior, and find related reports: + +* Use a clear and descriptive title for the issue to identify the problem. +* Provide more context by answering these questions: + * Can you reproduce the problem? Can you reliably reproduce the issue? If not, provide details about how often the problem happens and under which conditions it normally happens. + * Did the problem start happening recently or was this always a problem? + * If the problem started happening recently, can you reproduce the problem in an older version of Next? What's the most recent version in which the problem doesn't happen? You can download older versions of Next from [the releases page](https://github.com/theme-next/hexo-theme-next/releases). + * Which version of Node, Hexo and Next are you using? You can get the exact version by running `node -v`, `hexo version` in your terminal, or copy the contents in site's`package.json`. + * Which packages do you have installed? You can get that list by copying the contents in site's`package.json`. +* Describe the exact steps which reproduce the problem in as many details as possible. When listing steps, don't just say what you did, but explain how you did it, e.g. which command exactly you used. If you're providing snippets in the issue, use [Markdown code blocks](https://help.github.com/articles/creating-and-highlighting-code-blocks/) or [a permanent link to a code snippet](https://help.github.com/articles/creating-a-permanent-link-to-a-code-snippet/), or a [Gist link](https://gist.github.com/). +* Provide specific examples to demonstrate the steps. Include links to files (screenshots or GIFs) or live demo. +* Describe the behavior you observed after following the steps and point out what exactly is the problem with that behavior. +* Explain which behavior you expected to see instead and why. + +### Suggesting Enhancements + +Before creating enhancement suggestions, please check [this list](#before-submitting-an-issue) as you might find out that you don't need to create one. After you've determined the repository your enhancement suggestion is related to, create an issue on that repository and provide the information as many details as possible by filling in [the required template](ISSUE_TEMPLATE.md). + +Following these guidelines helps maintainers and the community understand your suggestion :pencil: and find related suggestions. + +* Use a clear and descriptive title for the issue to identify the suggestion. +* Describe the current behavior and explain which behavior you expected to see instead and Explain why this enhancement would be useful to most users. +* Provide specific examples to demonstrate the suggestion. Include links to files (screenshots or GIFs) or live demo. + +### Submitting a Pull Request + +Before creating a Pull Request (PR), please check [this list](#before-submitting-an-issue) as you might find out that you don't need to create one. After you've determined the repository your pull request is related to, create a pull request on that repository. The detailed document of creating a pull request can be found [here](https://help.github.com/articles/creating-a-pull-request/). + +1. On GitHub, navigate to the original page of the [hexo-theme-next](https://github.com/theme-next/hexo-theme-next). In the top-right corner of the page, click **Fork**. +2. Under the repository name in your forked repository, click **Clone or download**. In the `Clone with SSH` section, copy the clone URL for the repository. Open Git Bash, and change the current working directory to the location where you want the cloned directory to be made. Type `git clone`, and then paste the URL you copied. Press **Enter**. Your local clone will be created. + ```bash + $ git clone git@github.com:username/hexo-theme-next.git + ``` +3. Navigate into your new cloned repository. Switch branches to the compare branch of the pull request where the original changes were made. + ```bash + $ cd hexo-theme-next + $ git checkout -b patchname + ``` +4. After you commit your changes to the head branch of the pull request you can push your changes up to the original pull request directly. + ```bash + $ git add . + $ git commit -m "add commit messamge" + $ git push origin patchname + ``` +5. Navigate to the original repository you created your fork from. To the right of the Branch menu, click **New pull request**. On the Compare page, confirm that the base fork is the repository you'd like to merge changes into. Use the base branch drop-down menu to select the branch of the upstream repository you'd like to merge changes into. Use the head fork drop-down menu to select your fork, then use the compare branch drop-down menu to select the branch you made your changes in. Click **Create pull request** and type a title and description for your pull request. + +Following these guidelines helps maintainers and the community understand your pull request :pencil:: + +* Follow our [Coding Rules](#coding-rules) and [commit message conventions](#commit-messages-rules). +* Use a clear and descriptive title for the issue to identify the pull request. Do not include issue numbers in the PR title. +* Fill in [the required template](PULL_REQUEST_TEMPLATE.md) as many details as possible. +* All features or bug fixes must be tested in all schemes. And provide specific examples to demonstrate the pull request. Include links to files (screenshots or GIFs) or live demo. + +### Creating Releases + +Releases are a great way to ship projects on GitHub to your users. + +1. On GitHub, navigate to the main page of the repository. Under your repository name, click **Releases**. Click **Draft a new release**. +2. Type a version number for your release. Versions are based on [Git tags](https://git-scm.com/book/en/Git-Basics-Tagging). We recommend naming tags that fit within [About Major and Minor NexT versions](https://github.com/theme-next/hexo-theme-next/issues/187). +3. Select a branch that contains the project you want to release. Usually, you'll want to release against your `master` branch, unless you're releasing beta software. +4. Type a title and description that describes your release. + - Use the version as the title. + - The types of changes include **Breaking Changes**, **Updates**, **Features**, and **Bugfixes**. In the section of Breaking Changes, use multiple secondary headings, and use item list in other sections. + - Use the passive tense and subject-less sentences. + - All changes must be documented in release notes. If commits happen without pull request (minimal changes), just add this commit ID into release notes. If commits happen within pull request alreay, just add the related pull request ID including all possible commits. +5. If you'd like to include binary files along with your release, such as compiled programs, drag and drop or select files manually in the binaries box. +6. If the release is unstable, select **This is a pre-release** to notify users that it's not ready for production. If you're ready to publicize your release, click **Publish release**. Otherwise, click **Save draft** to work on it later. + +## Guides + +### Coding Rules + +This project and everyone participating in it is governed by the [Code of Conduct](CODE_OF_CONDUCT.md) to keep open and inclusive. By participating, you are expected to uphold this code. + +### Coding Standards + +To be continued. + +### Commit Messages Rules + +We have very precise rules over how our git commit messages can be formatted. Each commit message consists of a `type` and a `subject`. This leads to more +readable messages that are easy to follow when looking through the project history. + +- `type` describes the meaning of this commit including but not limited to the following items, and capitalize the first letter. + * `Build`: Changes that affect the build system or external dependencies + * `Ci`: Changes to our CI configuration files and scripts + * `Docs`: Documentation only changes + * `Feat`: A new feature + * `Fix`: A bug fix + * `Perf`: A code change that improves performance + * `Refactor`: A code change that neither fixes a bug nor adds a feature + * `Style`: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) + * `Revert`: Revert some existing commits + * `Release`: Commit a release for a conventional changelog project +- The `subject` contains a succinct description of the change, like `Update code highlighting in readme.md`. + * No dot (.) at the end. + * Use the imperative, present tense: "change" not "changed" nor "changes". diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..8332ad0da --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,84 @@ + + +### I agree and want to create new issue + + +- [ ] Yes, I was on [Hexo Docs page](https://hexo.io/docs/), especially on [Templates](https://hexo.io/docs/templates.html), [Variables](https://hexo.io/docs/variables.html), [Helpers](https://hexo.io/docs/helpers.html) and [Troubleshooting](https://hexo.io/docs/troubleshooting.html). +- [ ] Yes, I was on [NexT Documentation Site](http://theme-next.org/docs/). +- [ ] And yes, I already searched for current [issues](https://github.com/theme-next/hexo-theme-next/issues?utf8=%E2%9C%93&q=is%3Aissue) and this is not help to me. + +*** + +### Expected behavior + + +### Actual behavior + + +### Steps to reproduce the behavior +1. N/A +2. N/A +3. N/A + +* Link to demo site with this issue: N/A +* Link(s) to source code or any usefull link(s): N/A + +### Node.js and NPM Information + +``` + +``` + +### Package dependencies Information + +``` + +``` + +### Hexo Information + +#### Hexo version + +``` + +``` + +#### Hexo Configuration + +```yml + +``` + +### NexT Information + +**NexT Version:** + + +- [ ] Latest Master branch +- [ ] Latest Release version +- [ ] Old version + + +**NexT Scheme:** + + +- [ ] All schemes +- [ ] Muse +- [ ] Mist +- [ ] Pisces +- [ ] Gemini + + +#### NexT Configuration: + +```yml + +``` + +### Other Information diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..0dc55ece7 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,87 @@ + + + + +## PR Checklist +**Please check if your PR fulfills the following requirements:** + +- [ ] The commit message follows [our guidelines](https://github.com/theme-next/hexo-theme-next/blob/master/.github/CONTRIBUTING.md). +- [ ] Tests for the changes have been added (for bug fixes / features). + - [ ] Muse | Mist have been tested. + - [ ] Pisces | Gemini have been tested. +- [ ] Docs have been added / updated (for bug fixes / features). + +## PR Type +**What kind of change does this PR introduce?** + +- [ ] Bugfix. +- [ ] Feature. +- [ ] Code style update (formatting, local variables). +- [ ] Refactoring (no functional changes, no api changes). +- [ ] Build related changes. +- [ ] CI related changes. +- [ ] Documentation content changes. +- [ ] Other... Please describe: + +## What is the current behavior? + + +Issue Number(s): N/A + +## What is the new behavior? +Description about this pull, in several words... + +* Screens with this changes: N/A +* Link to demo site with this changes: N/A + +### How to use? +In NexT `_config.yml`: +```yml +... +``` + +## Does this PR introduce a breaking change? +- [ ] Yes. +- [ ] No. + + + + + + diff --git a/.github/browserstack_logo.png b/.github/browserstack_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0be37e77e84ced62bce966456c202a69dd8efe28 GIT binary patch literal 7151 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 + This issue has been automatically marked as stale because lack of + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +# Comment to post when removing the stale label. Set to `false` to disable +unmarkComment: false +# Comment to post when closing a stale Issue or Pull Request. Set to `false` to disable +closeComment: false +# Limit to only `issues` or `pulls` +only: issues diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..26b5eab0b --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +.DS_Store +.idea/ +*.log +*.iml +yarn.lock +package-lock.json +node_modules/ + +# Ignore optional external libraries +source/lib/* + +# Track internal libraries & Ignore unused verdors files +source/lib/font-awesome/less/ +source/lib/font-awesome/scss/ +!source/lib/font-awesome/* + +!source/lib/jquery/ + +source/lib/ua-parser-js/* +!source/lib/ua-parser-js/dist/ + +!source/lib/velocity/ diff --git a/.stickler.yml b/.stickler.yml new file mode 100644 index 000000000..303949dfe --- /dev/null +++ b/.stickler.yml @@ -0,0 +1,6 @@ +linters: + eslint: + config: https://github.com/theme-next/eslint-config-theme-next/index.js +files: + ignore: + - 'bower_components/*' diff --git a/.stylintrc b/.stylintrc new file mode 100644 index 000000000..38e6ac14e --- /dev/null +++ b/.stylintrc @@ -0,0 +1,45 @@ +{ + "blocks": false, + "brackets": "always", + "colons": "always", + "colors": "always", + "commaSpace": "always", + "commentSpace": "always", + "cssLiteral": "never", + "customProperties": [], + "depthLimit": false, + "duplicates": true, + "efficient": "always", + "exclude": [], + "extendPref": false, + "globalDupe": false, + "groupOutputByFile": true, + "indentPref": false, + "leadingZero": "never", + "maxErrors": false, + "maxWarnings": false, + "mixed": false, + "mixins": [], + "namingConvention": "lowercase-dash", + "namingConventionStrict": false, + "none": "never", + "noImportant": true, + "parenSpace": false, + "placeholders": "always", + "prefixVarsWithDollar": "always", + "quotePref": false, + "reporterOptions": { + "columns": ["lineData", "severity", "description", "rule"], + "columnSplitter": " ", + "showHeaders": false, + "truncate": true + }, + "semicolons": "always", + "sortOrder": "grouped", + "stackedProperties": false, + "trailingWhitespace": "never", + "universal": false, + "valid": true, + "zeroUnits": "never", + "zIndexNormalize": false +} diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..9591f0b23 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,18 @@ +language: node_js +#node_js: node +node_js: lts/* + +cache: + directories: + - node_modules + +install: npm install + +before_script: + - npm install -g gulp + +addons: + browserstack: + username: "ivannginx1" + access_key: + secure: "NutOhdgtUdBUXMPZhy8X1F1Jq+tan1LeNOV0FArBt15SNlxtNArqhiyTi4XnG9MPruX4306aGF2RBrKso+OiGNRdGtRGngH613Q0GWNtlC/boMqnI7fHqLIyCs6S12y2uA8PK4Ifxg9bZ0VtCTYYbMy+p1KvBM//L12vmtfdnby8z5Qvex3tB3dLoPOR50CKkINHJVDLm+iVRFrdz4/83oDsulZSRRGIaxu5taDWPIcp3fYZtre2Nc+RXcsyFDyjN7U0Hvr5tKBbloJxXEQEBv2xLkMOtp85nmCPD06s1Il8Wus1ux3raVsfUyaW5FpNX37Jeb5e00RQUM1wgU5m75H6qiGwDvQswbugJG0i/a2nNfsgVmbrSZdMnkHcx2Uxmrw4ejyEP5NSrJSBi05Ck1fQ4UsZ4Qkdf1fd04SI0LpLWt43eoNO/7rHKsQoP4LCX9gxKUuC075NEBLODyJ529RYfA6dKKwwH6o0ZbOgASmCoAWaM65g4+FHRnJcKL/Kj9ZWklQtRa7/ynlHaA65jefFS2lB8Ut6d3rXDDBih9mIrwV1uUaEH96xgAN42bgU/vY6FGzNkDOYZqj4YfsepDM0wbOsslFie7JZq7iFjsYvrXqLvYUMk37AZwQ2Sb6uH4tIT4Qw/4oZfDzA1En3/8HdZJ28nKW/lzjwMSqheIY=" diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 000000000..2bff1aceb --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,63 @@ +#
      «NexT» — Elegant and powerful theme for Hexo.
      + +

      Copyright © 2017 «NexT».

      + +

      Detail attribution information for «NexT»
      + is contained in the 'docs/AUTHORS.md' file.

      + + This program is free software; you can redistribute it and/or modify +it under the terms of the [GNU Affero General Public License version 3][AGPL3] +as published by the Free Software Foundation with the addition of the +following permission added to [Section 15][AGPL3-15] as permitted in [Section 7(a)][AGPL3-7]: +FOR ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY «NEXT», +«NEXT» DISCLAIMS THE WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. + + This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Affero General Public License for more details. +You should have received a copy of the GNU Affero General Public License +along with this program; if not, see: https://www.gnu.org/licenses/agpl.txt + + In accordance with [Section 7(b)][AGPL3-7] of the GNU Affero General Public License: + +* a) It is not necessary to specify copyright in each source file of + this program because GitHub fully save commits of all modified files + with their authors and provides to see for this changes publicly. + +* b) For any part of the covered work in which the copyright not specified, + except of third party libraries ('[source/lib/*](source/lib)') and '\*custom.\*' files, + will mean this part owned by «NexT» in accord with terms in this file. + +* c) A covered work must retain theme info link to the «NexT» repository + (https://github.com/theme-next/hexo-theme-next) in footer section + of every website created, modified or manipulated by using «NexT». + «NexT» theme configuration must be: + ```yml + footer: + theme: + enable: true + ``` + Collaborators, best contributors and all authors specified in the + '[docs/AUTHORS.md][AUTHORS]' file of «NexT» repository under the + 'https://github.com/theme-next' organization can ignore theme info link + requirements. + +Anyone can be released from the requirements of the license by purchasing +a commercial license. Buying such a license is mandatory as soon as you +develop commercial activities involving the «NexT» software without +disclosing the source code of your own applications. +These activities include: + 1. Access to private repository with various premium features. + 2. Priority support for resolve all possible issues with «NexT». + 3. Priority support for implement all possible features to «NexT». + + For more information, please contact «NexT» Organization at this +address: sales@theme-next.org + +

      This license also available in text format.

      + +[AUTHORS]: docs/AUTHORS.md +[AGPL3]: docs/AGPL3.md +[AGPL3-7]: docs/AGPL3.md/#7-additional-terms +[AGPL3-15]: docs/AGPL3.md/#15-disclaimer-of-warranty diff --git a/README.md b/README.md new file mode 100644 index 000000000..8deb5154b --- /dev/null +++ b/README.md @@ -0,0 +1,140 @@ +
      Language: :us: +:cn: +:ru:
      + + +#
      e x T
      + + +

      «NexT» is a high quality elegant Hexo theme. It is crafted from scratch, with love.

      + +[![gitter-image]][gitter-url] +[![riot-image]][riot-url] +[![t-chat-image]][t-chat-url] +[![t-news-image]][t-news-url] +[![lang-image]][lang-url] +[![travis-image]][travis-url] +[![rel-image]][releases-url] +[![hexo-image]][hexo-url] +[![lic-image]][lic-url] + +## Live Preview + +* :heart_decoration: Muse scheme: [LEAFERx](https://leaferx.online) | [XiaMo](https://notes.wanghao.work) | [OAwan](https://oawan.me) +* :six_pointed_star: Mist scheme: [Jeff](https://blog.zzbd.org) | [uchuhimo](http://uchuhimo.me) | [xirong](http://www.ixirong.com) +* :pisces: Pisces scheme: [Vi](http://notes.iissnan.com) | [Acris](https://acris.me) | [Rainy](https://rainylog.com) +* :gemini: Gemini scheme: [Ivan.Nginx](https://almostover.ru) | [Raincal](https://raincal.com) | [Dandy](https://dandyxu.me) + +More «NexT» examples [here](https://github.com/iissnan/hexo-theme-next/issues/119). + +## Installation + +Simplest way to install is by cloning whole repository: + + ```sh + $ cd hexo + $ git clone https://github.com/theme-next/hexo-theme-next themes/next + ``` + +Or you can see [detailed installation instructions][docs-installation-url] if you want any other variant. + +## Plugins + +In NexT config now you can find dependencies on each module which was moved to external repositories which can be found by [main organization link](https://github.com/theme-next). + +For example, you want to use `fancybox` in your site. Go to NexT config and see: + +```yml +# Fancybox +# Dependencies: https://github.com/theme-next/theme-next-fancybox +fancybox: false +``` + +Then turn on `fancybox` and go to «Dependencies» link with installation instructions of this module. + +### Exceptions + +If you use cdn for any plugins, you need to replace your cdn link. + +For example, you want to use `fancybox` and you configured a cdn link. Go to NexT config and see: + +```yml +vendors: + # ... + # Some contents... + # ... + fancybox: # Set or update fancybox cdn url. + fancybox_css: # Set or update fancybox cdn url. +``` + +Instead of defining [main organization link](https://github.com/theme-next) for updates. + +## Update + +You can update to latest master branch by the following command: + +```sh +$ cd themes/next +$ git pull +``` + +And if you see any error message during update (something like **«Commit your changes or stash them before you can merge»**), recommended to learn [Hexo data files][docs-data-files-url] feature.\ +Howbeit, you can bypass update errors by `Commit`, `Stash` or `Discard` local changes. See [here](https://stackoverflow.com/a/15745424/5861495) how to do it. + +**If you want to update from v5.1.x to v6.0.x, read [here][docs-update-5-1-x-url].** + +## Known Bugs + +For those who also encounter **«[Error: Cannot find module 'hexo-util'](https://github.com/iissnan/hexo-theme-next/issues/1490)»**, please check your NPM version. + +* `> 3`: Still not work? Please remove `node_modules` directory and reinstall using `npm install`. +* `< 3`: Please add `hexo-util` explicitly via `npm install --save-dev hexo-util` to you site package deps. + +## Contributing + +Contribution is welcome, feel free to open an issue and fork. Waiting for your pull request. + +## Third party applications + +* :triangular_flag_on_post: HexoEditor + +[browser-image]: https://img.shields.io/badge/browser-%20chrome%20%7C%20firefox%20%7C%20opera%20%7C%20safari%20%7C%20ie%20%3E%3D%209-lightgrey.svg +[browser-url]: https://www.browserstack.com + +[lang-image]: https://d322cqt584bo4o.cloudfront.net/theme-next/localized.svg "Add or improve translation in few seconds!" +[lang-url]: https://crwd.in/theme-next + +[gitter-image]: https://img.shields.io/badge/gitter-chat-orange.svg "Join to our Gitter room" +[gitter-url]: https://gitter.im/theme-next + +[riot-image]: https://img.shields.io/badge/riot-chat-DCAB08.svg "Join to our Riot room" +[riot-url]: https://riot.im/app/#/room/#NexT:matrix.org + +[t-chat-image]: https://img.shields.io/badge/telegram-chat-BAB210.svg "Join to our Telegram group" +[t-chat-url]: https://t.me/theme_next + +[t-news-image]: https://img.shields.io/badge/telegram-news-98B919.svg "Join to our Telegram news channel" +[t-news-url]: https://t.me/theme_next_news + +[travis-image]: https://travis-ci.org/theme-next/hexo-theme-next.svg?branch=master +[travis-url]: https://travis-ci.org/theme-next/hexo-theme-next?branch=master "Travis CI [Linux]" + +[hexo-image]: https://img.shields.io/badge/hexo-%3E%3D%203.5.0-blue.svg +[hexo-url]: http://hexo.io + +[lic-image]: https://img.shields.io/badge/license-%20AGPL-blue.svg +[lic-url]: https://github.com/theme-next/hexo-theme-next/blob/master/LICENSE.md + + +[rel-image]: https://badge.fury.io/gh/theme-next%2Fhexo-theme-next.svg + + +[download-latest-url]: https://github.com/theme-next/hexo-theme-next/archive/master.zip +[releases-latest-url]: https://github.com/theme-next/hexo-theme-next/releases/latest +[releases-url]: https://github.com/theme-next/hexo-theme-next/releases +[tags-url]: https://github.com/theme-next/hexo-theme-next/tags +[commits-url]: https://github.com/theme-next/hexo-theme-next/commits/master + +[docs-installation-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/INSTALLATION.md +[docs-data-files-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/DATA-FILES.md +[docs-update-5-1-x-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/UPDATE-FROM-5.1.X.md diff --git a/_config.yml b/_config.yml new file mode 100644 index 000000000..7b3107c58 --- /dev/null +++ b/_config.yml @@ -0,0 +1,973 @@ +# --------------------------------------------------------------- +# Theme Core Configuration Settings +# --------------------------------------------------------------- + +# If false, merge configs from `_data/next.yml` into default configuration (rewrite). +# If true, will fully override default configuration by options from `_data/next.yml` (override). Only for NexT settings. +# And if true, all config from default NexT `_config.yml` must be copied into `next.yml`. Use if you know what you are doing. +# Useful if you want to comment some options from NexT `_config.yml` by `next.yml` without editing default config. +override: false + +# Allow to cache content generation. Introduced in NexT v6.0.0. +cache: + enable: true + +# Redefine custom file paths. Introduced in NexT v6.0.2. +# If commented, will be used default custom file paths. + +# For example, you want to put your custom styles file +# outside theme directory in root `source/_data`, set +# `styles: source/_data/styles.styl` +#custom_file_path: + # Default paths: layout/_custom/* + #head: source/_data/head.swig + #header: source/_data/header.swig + #sidebar: source/_data/sidebar.swig + + # Default path: source/css/_variables/custom.styl + #variables: source/_data/variables.styl + # Default path: source/css/_mixins/custom.styl + #mixins: source/_data/mixins.styl + # Default path: source/css/_custom/custom.styl + #styles: source/_data/styles.styl + + +# --------------------------------------------------------------- +# Site Information Settings +# --------------------------------------------------------------- + +# To get or check favicons visit: https://realfavicongenerator.net +# Put your favicons into `hexo-site/source/` (recommend) or `hexo-site/themes/next/source/images/` directory. + +# Default NexT favicons placed in `hexo-site/themes/next/source/images/` directory. +# And if you want to place your icons in `hexo-site/source/` root directory, you must remove `/images` prefix from pathes. + +# For example, you put your favicons into `hexo-site/source/images` directory. +# Then need to rename & redefine they on any other names, otherwise icons from Next will rewrite your custom icons in Hexo. +favicon: + small: /images/favicon-16x16-next.png + medium: /images/favicon-32x32-next.png + apple_touch_icon: /images/apple-touch-icon-next.png + safari_pinned_tab: /images/logo.svg + #android_manifest: /images/manifest.json + #ms_browserconfig: /images/browserconfig.xml + +# Set rss to false to disable feed link. +# Leave rss as empty to use site's feed link, and install hexo-generator-feed: `npm install hexo-generator-feed --save`. +# Set rss to specific value if you have burned your feed already. +rss: + +footer: + # Specify the date when the site was setup. + # If not defined, current year will be used. + #since: 2015 + + # Icon between year and copyright info. + icon: + # Icon name in fontawesome, see: https://fontawesome.com/v4.7.0/icons + # `heart` is recommended with animation in red (#ff0000). + name: user + # If you want to animate the icon, set it to true. + animated: false + # Change the color of icon, using Hex Code. + color: "#808080" + + # If not defined, will be used `author` from Hexo main config. + copyright: + # ------------------------------------------------------------- + powered: + # Hexo link (Powered by Hexo). + enable: true + # Version info of Hexo after Hexo link (vX.X.X). + version: true + + theme: + # Theme & scheme info link (Theme - NexT.scheme). + enable: true + # Version info of NexT after scheme info (vX.X.X). + version: true + # ------------------------------------------------------------- + # Any custom text can be defined here. + #custom_text: Hosted by Coding Pages + +# --------------------------------------------------------------- +# SEO Settings +# --------------------------------------------------------------- + +# Canonical, set a canonical link tag in your hexo, you could use it for your SEO of blog. +# See: https://support.google.com/webmasters/answer/139066 +# Tips: Before you open this tag, remember set up your URL in hexo _config.yml ( ex. url: http://yourdomain.com ) +canonical: true + +# Change headers hierarchy on site-subtitle (will be main site description) and on all post/pages titles for better SEO-optimization. +seo: false + +# If true, will add site-subtitle to index page, added in main hexo config. +# subtitle: Subtitle +index_with_subtitle: false + + +# --------------------------------------------------------------- +# Menu Settings +# --------------------------------------------------------------- + +# When running the site in a subdirectory (e.g. domain.tld/blog), remove the leading slash from link value (/archives -> archives). +# Usage: `Key: /link/ || icon` +# Key is the name of menu item. If translate for this menu will find in languages - this translate will be loaded; if not - Key name will be used. Key is case-senstive. +# Value before `||` delimeter is the target link. +# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, question icon will be loaded. +menu: + home: / || home + #about: /about/ || user + #tags: /tags/ || tags + #categories: /categories/ || th + archives: /archives/ || archive + #schedule: /schedule/ || calendar + #sitemap: /sitemap.xml || sitemap + #commonweal: /404/ || heartbeat + +# Enable/Disable menu icons / item badges. +menu_settings: + icons: true + badges: false + +# --------------------------------------------------------------- +# Scheme Settings +# --------------------------------------------------------------- + +# Schemes +scheme: Muse +#scheme: Mist +#scheme: Pisces +#scheme: Gemini + + +# --------------------------------------------------------------- +# Sidebar Settings +# --------------------------------------------------------------- + +# Posts / Categories / Tags in sidebar. +site_state: true + +# Social Links. +# Usage: `Key: permalink || icon` +# Key is the link label showing to end users. +# Value before `||` delimeter is the target permalink. +# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, globe icon will be loaded. +#social: + #GitHub: https://github.com/yourname || github + #E-Mail: mailto:yourname@gmail.com || envelope + #Google: https://plus.google.com/yourname || google + #Twitter: https://twitter.com/yourname || twitter + #FB Page: https://www.facebook.com/yourname || facebook + #VK Group: https://vk.com/yourname || vk + #StackOverflow: https://stackoverflow.com/yourname || stack-overflow + #YouTube: https://youtube.com/yourname || youtube + #Instagram: https://instagram.com/yourname || instagram + #Skype: skype:yourname?call|chat || skype + +social_icons: + enable: true + icons_only: false + transition: false + # Dependencies: exturl: true in Tags Settings section below. + # To encrypt links above use https://www.base64encode.org + # Example encoded link: `GitHub: aHR0cHM6Ly9naXRodWIuY29tL3RoZW1lLW5leHQ= || github` + exturl: false + +# Follow me on GitHub banner in right-top corner. +# Usage: `permalink || title` +# Value before `||` delimeter is the target permalink. +# Value after `||` delimeter is the title and aria-label name. +#github_banner: https://github.com/yourname || Follow me on GitHub + +# Blog rolls +links_icon: link +links_title: Links +links_layout: block +#links_layout: inline +#links: + #Title: http://example.com/ + +# Sidebar Avatar +avatar: + # in theme directory(source/images): /images/avatar.gif + # in site directory(source/uploads): /uploads/avatar.gif + # You can also use other linking images. + url: #/images/avatar.gif + # If true, the avatar would be dispalyed in circle. + rounded: false + # The value of opacity should be choose from 0 to 1 to set the opacity of the avatar. + opacity: 1 + # If true, the avatar would be rotated with the cursor. + rotated: false + +# Table Of Contents in the Sidebar +toc: + enable: true + + # Automatically add list number to toc. + number: true + + # If true, all words will placed on next lines if header width longer then sidebar width. + wrap: false + +# Creative Commons 4.0 International License. +# http://creativecommons.org/ +# Available: by | by-nc | by-nc-nd | by-nc-sa | by-nd | by-sa | zero +#creative_commons: by-nc-sa +#creative_commons: + +sidebar: + # Sidebar Position, available value: left | right (only for Pisces | Gemini). + position: left + #position: right + + # Sidebar Display, available value (only for Muse | Mist): + # - post expand on posts automatically. Default. + # - always expand for all pages automatically + # - hide expand only when click on the sidebar toggle icon. + # - remove Totally remove sidebar including sidebar toggle. + display: post + #display: always + #display: hide + #display: remove + + # Sidebar offset from top menubar in pixels (only for Pisces | Gemini). + offset: 12 + + # Back to top in sidebar (only for Pisces | Gemini). + b2t: false + + # Scroll percent label in b2t button. + scrollpercent: false + + # Enable sidebar on narrow view (only for Muse | Mist). + onmobile: false + + +# --------------------------------------------------------------- +# Post Settings +# --------------------------------------------------------------- + +# Automatically scroll page to section which is under mark. +scroll_to_more: true + +# Automatically saving scroll position on each post/page in cookies. +save_scroll: false + +# Automatically excerpt description in homepage as preamble text. +excerpt_description: true + +# Automatically Excerpt. Not recommend. +# Please use in the post to control excerpt accurately. +auto_excerpt: + enable: false + length: 150 + +# Post meta display settings +post_meta: + item_text: true + created_at: true + updated_at: + enabled: true + # If true, show updated date label only if `updated date` different from 'created date' (post edited in another day than was created). + # And if post will edited in same day as created, edited time will show in popup title under created time label. + # If false show anyway, but if post edited in same day, show only edited time. + another_day: true + categories: true + +# Post wordcount display settings +# Dependencies: https://github.com/theme-next/hexo-symbols-count-time +symbols_count_time: + separated_meta: true + item_text_post: true + item_text_total: false + awl: 4 + wpm: 275 + +codeblock: + # Manual define the border radius in codeblock + # Leave it empty for the default 1 + border_radius: + # Add copy button on codeblock + copy_button: + enable: false + # Show text copy result + show_result: false + +# Wechat Subscriber +#wechat_subscriber: + #enabled: true + #qcode: /path/to/your/wechatqcode ex. /uploads/wechat-qcode.jpg + #description: ex. subscribe to my blog by scanning my public wechat account + +# Reward +#reward_comment: Donate comment here +#wechatpay: /images/wechatpay.jpg +#alipay: /images/alipay.jpg +#bitcoin: /images/bitcoin.png + +# Related popular posts +# Dependencies: https://github.com/tea3/hexo-related-popular-posts +related_posts: + enable: false + title: # custom header, leave empty to use the default one + display_in_home: false + params: + maxCount: 5 + #PPMixingRate: 0.0 + #isDate: false + #isImage: false + #isExcerpt: false + +# Declare license on posts +post_copyright: + enable: false + license: CC BY-NC-SA 4.0 + +# Post edit +# Dependencies: https://github.com/hexojs/hexo-deployer-git +post_edit: + enable: false + url: https://github.com/theme-next/theme-next.org/_posts/tree/master/ # Link for view source. +# url: https://github.com/theme-next/theme-next.org/_posts/edit/master/ # Link for fork & edit. + + +# --------------------------------------------------------------- +# Misc Theme Settings +# --------------------------------------------------------------- + +# Reduce padding / margin indents on devices with narrow width. +mobile_layout_economy: false + +# Android Chrome header panel color ($brand-bg / $headband-bg => $black-deep). +android_chrome_color: "#222" + +# Custom Logo. +# !!Only available for Default Scheme currently. +# Options: +# enabled: [true/false] - Replace with specific image +# image: url-of-image - Images's url +custom_logo: + enabled: false + image: + +# Code Highlight theme +# Available values: normal | night | night eighties | night blue | night bright +# https://github.com/chriskempson/tomorrow-theme +highlight_theme: normal + +# Enable "cheers" for archive page. +cheers_enabled: true + +# Manual define the max content width +# !!Only available for Gemini Scheme currently +# Leave it empty for the default 75% (suggest not less than 1000px) +#max_content_width: 1000px + +# Manual define the sidebar width +# !!Only available for Gemini Scheme currently +# Leave it empty for the default 240 +sidebar_width: + +# --------------------------------------------------------------- +# Font Settings +# - Find fonts on Google Fonts (https://www.google.com/fonts) +# - All fonts set here will have the following styles: +# light, light italic, normal, normal italic, bold, bold italic +# - Be aware that setting too much fonts will cause site running slowly +# - Introduce in 5.0.1 +# --------------------------------------------------------------- +# CAUTION! Safari Version 10.1.2 bug: https://github.com/iissnan/hexo-theme-next/issues/1844 +# To avoid space between header and sidebar in Pisces / Gemini themes recommended to use Web Safe fonts for `global` (and `logo`): +# Arial | Tahoma | Helvetica | Times New Roman | Courier New | Verdana | Georgia | Palatino | Garamond | Comic Sans MS | Trebuchet MS +# --------------------------------------------------------------- +font: + enable: false + + # Uri of fonts host. E.g. //fonts.googleapis.com (Default). + host: + + # Font options: + # `external: true` will load this font family from `host` above. + # `family: Times New Roman`. Without any quotes. + # `size: xx`. Use `px` as unit. + + # Global font settings used for all elements in . + global: + external: true + family: Lato + size: + + # Font settings for Headlines (H1, H2, H3, H4, H5, H6). + # Fallback to `global` font settings. + headings: + external: true + family: + size: + + # Font settings for posts. + # Fallback to `global` font settings. + posts: + external: true + family: + + # Font settings for Logo. + # Fallback to `global` font settings. + logo: + external: true + family: + size: + + # Font settings for and code blocks. + codes: + external: true + family: + size: + + +# --------------------------------------------------------------- +# Third Party Services Settings +# --------------------------------------------------------------- + +# Math Equations Render Support +math: + enable: false + + # Default(true) will load mathjax/katex script on demand + # That is it only render those page who has 'mathjax: true' in Front Matter. + # If you set it to false, it will load mathjax/katex srcipt EVERY PAGE. + per_page: true + + engine: mathjax + #engine: katex + + # hexo-rendering-pandoc (or hexo-renderer-kramed) needed to full MathJax support. + mathjax: + # Use 2.7.1 as default, jsdelivr as default CDN, works everywhere even in China + cdn: //cdn.jsdelivr.net/npm/mathjax@2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML + # For newMathJax CDN (cdnjs.cloudflare.com) with fallback to oldMathJax (cdn.mathjax.org). + #cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML + # For direct link to MathJax.js with CloudFlare CDN (cdnjs.cloudflare.com). + #cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML + # For automatic detect latest version link to MathJax.js and get from Bootcss. + #cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML + + # hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin) + # needed to full Katex support. + katex: + # Use 0.7.1 as default, jsdelivr as default CDN, works everywhere even in China + cdn: //cdn.jsdelivr.net/npm/katex@0.7.1/dist/katex.min.css + # CDNJS, provided by cloudflare, maybe the best CDN, but not works in China + #cdn: //cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css + # Bootcss, works great in China, but not so well in other region + #cdn: //cdn.bootcss.com/KaTeX/0.7.1/katex.min.css + +# Han Support +# Dependencies: https://github.com/theme-next/theme-next-han +han: false + +# Pangu Support +# Dependencies: https://github.com/theme-next/theme-next-pangu +# For more information: https://github.com/vinta/pangu.js +pangu: false + +# Swiftype Search API Key +#swiftype_key: + +# Baidu Analytics ID +#baidu_analytics: + +# Disqus +disqus: + enable: false + shortname: + count: true + lazyload: false + +# Hypercomments +#hypercomments_id: + +# changyan +changyan: + enable: false + appid: + appkey: + + +# Valine. +# You can get your appid and appkey from https://leancloud.cn +# more info please open https://valine.js.org +valine: + enable: false + appid: # your leancloud application appid + appkey: # your leancloud application appkey + notify: false # mail notifier , https://github.com/xCss/Valine/wiki + verify: false # Verification code + placeholder: Just go go # comment box placeholder + avatar: mm # gravatar style + guest_info: nick,mail,link # custom comment header + pageSize: 10 # pagination size + + +# Support for youyan comments system. +# You can get your uid from http://www.uyan.cc +#youyan_uid: your uid + +# Support for LiveRe comments system. +# You can get your uid from https://livere.com/insight/myCode (General web site) +#livere_uid: your uid + +# Gitment +# Introduction: https://imsun.net/posts/gitment-introduction/ +gitment: + enable: false + mint: true # RECOMMEND, A mint on Gitment, to support count, language and proxy_gateway + count: true # Show comments count in post meta area + lazy: false # Comments lazy loading with a button + cleanly: false # Hide 'Powered by ...' on footer, and more + language: # Force language, or auto switch by theme + github_user: # MUST HAVE, Your Github Username + github_repo: # MUST HAVE, The name of the repo you use to store Gitment comments + client_id: # MUST HAVE, Github client id for the Gitment + client_secret: # EITHER this or proxy_gateway, Github access secret token for the Gitment + proxy_gateway: # Address of api proxy, See: https://github.com/aimingoo/intersect + redirect_protocol: # Protocol of redirect_uri with force_redirect_protocol when mint enabled + +# Baidu Share +# Available value: +# button | slide +# Warning: Baidu Share does not support https. +#baidushare: +## type: button + +# Share +# This plugin is more useful in China, make sure you known how to use it. +# And you can find the use guide at official webiste: http://www.jiathis.com/. +# Warning: JiaThis does not support https. +#jiathis: + ##uid: Get this uid from http://www.jiathis.com/ + +#add_this_id: + +# NeedMoreShare2 +# Dependencies: https://github.com/theme-next/theme-next-needmoreshare2 +# See: https://github.com/revir/need-more-share2 +# Also see: https://github.com/DzmVasileusky/needShareButton +# iconStyle: default | box +# boxForm: horizontal | vertical +# position: top / middle / bottom + Left / Center / Right +# networks: Weibo,Wechat,Douban,QQZone,Twitter,Linkedin,Mailto,Reddit, +# Delicious,StumbleUpon,Pinterest,Facebook,GooglePlus,Slashdot, +# Technorati,Posterous,Tumblr,GoogleBookmarks,Newsvine, +# Evernote,Friendfeed,Vkontakte,Odnoklassniki,Mailru +needmoreshare2: + enable: false + postbottom: + enable: false + options: + iconStyle: box + boxForm: horizontal + position: bottomCenter + networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook + float: + enable: false + options: + iconStyle: box + boxForm: horizontal + position: middleRight + networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook + +# Google Webmaster tools verification setting +# See: https://www.google.com/webmasters/ +#google_site_verification: + +# Google Analytics +#google_analytics: + +# Bing Webmaster tools verification setting +# See: https://www.bing.com/webmaster/ +#bing_site_verification: + +# Yandex Webmaster tools verification setting +# See: https://webmaster.yandex.ru/ +#yandex_site_verification: + +# CNZZ count +#cnzz_siteid: + +# Application Insights +# See https://azure.microsoft.com/en-us/services/application-insights/ +# application_insights: + +# Post widgets & FB/VK comments settings. +# --------------------------------------------------------------- +# Facebook SDK Support. +# https://github.com/iissnan/hexo-theme-next/pull/410 +facebook_sdk: + enable: false + app_id: # + fb_admin: # + like_button: #true + webmaster: #true + +# Facebook comments plugin +# This plugin depends on Facebook SDK. +# If facebook_sdk.enable is false, Facebook comments plugin is unavailable. +facebook_comments_plugin: + enable: false + num_of_posts: 10 # min posts num is 1 + width: 100% # default width is 550px + scheme: light # default scheme is light (light or dark) + +# VKontakte API Support. +# To get your AppID visit https://vk.com/editapp?act=create +vkontakte_api: + enable: false + app_id: # + like: true + comments: true + num_of_posts: 10 + +# Star rating support to each article. +# To get your ID visit https://widgetpack.com +rating: + enable: false + id: # + color: fc6423 +# --------------------------------------------------------------- + +# Show number of visitors to each article. +# You can visit https://leancloud.cn get AppID and AppKey. +leancloud_visitors: + enable: false + app_id: # + app_key: # + # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security + # If you don't care about security in lc counter and just want to use it directly + # (without hexo-leancloud-counter-security plugin), set the `security` to `false`. + security: true + betterPerformance: false + +# Another tool to show number of visitors to each article. +# visit https://console.firebase.google.com/u/0/ to get apiKey and projectId +# visit https://firebase.google.com/docs/firestore/ to get more information about firestore +firestore: + enable: false + collection: articles #required, a string collection name to access firestore database + apiKey: #required + projectId: #required + bluebird: false #enable this if you want to include bluebird 3.5.1(core version) Promise polyfill + +# Show Views/Visitors of the website/page with busuanzi. +# Get more information on http://ibruce.info/2015/04/04/busuanzi/ +busuanzi_count: + enable: false + total_visitors: true + total_visitors_icon: user + total_views: true + total_views_icon: eye + post_views: true + post_views_icon: eye + + +# Tencent analytics ID +# tencent_analytics: + +# Tencent MTA ID +# tencent_mta: + + +# Enable baidu push so that the blog will push the url to baidu automatically which is very helpful for SEO +baidu_push: false + +# Google Calendar +# Share your recent schedule to others via calendar page +# +# API Documentation: +# https://developers.google.com/google-apps/calendar/v3/reference/events/list +calendar: + enable: false + calendar_id: + api_key: + orderBy: startTime + offsetMax: 24 + offsetMin: 4 + timeZone: + showDeleted: false + singleEvents: true + maxResults: 250 + +# Algolia Search +# See: https://github.com/theme-next/hexo-theme-next/blob/master/docs/ALGOLIA-SEARCH.md +# Dependencies: https://github.com/theme-next/theme-next-algolia-instant-search +algolia_search: + enable: false + hits: + per_page: 10 + labels: + input_placeholder: Search for Posts + hits_empty: "We didn't find any results for the search: ${query}" + hits_stats: "${hits} results found in ${time} ms" + +# Local search +# Dependencies: https://github.com/theme-next/hexo-generator-searchdb +local_search: + enable: false + # if auto, trigger search by changing input + # if manual, trigger search by pressing enter key or search button + trigger: auto + # show top n results per article, show all results by setting to -1 + top_n_per_article: 1 + # unescape html strings to the readable one + unescape: false + +# Bookmark Support +# Dependencies: https://github.com/theme-next/theme-next-bookmark +bookmark: + enable: false + # if auto + # - save the reading position when closing the page + # - or clicking the bookmark-icon + # if manual, only save it by clicking the bookmark-icon + save: auto + + +# --------------------------------------------------------------- +# Tags Settings +# --------------------------------------------------------------- + +# External URL with BASE64 encrypt & decrypt. +# Usage: {% exturl text url "title" %} +# Alias: {% extlink text url "title" %} +exturl: false + +# Note tag (bs-callout). +note: + # Note tag style values: + # - simple bs-callout old alert style. Default. + # - modern bs-callout new (v2-v3) alert style. + # - flat flat callout style with background, like on Mozilla or StackOverflow. + # - disabled disable all CSS styles import of note tag. + style: simple + icons: false + border_radius: 3 + # Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6). + # Offset also applied to label tag variables. This option can work with disabled note tag. + light_bg_offset: 0 + +# Label tag. +label: true + +# Tabs tag. +tabs: + enable: true + transition: + tabs: false + labels: true + border_radius: 0 + +# Reading progress bar +# Dependencies: https://github.com/theme-next/theme-next-reading-progress +reading_progress: + enable: false + color: "#37c6c0" + height: 2px + + +#! --------------------------------------------------------------- +#! DO NOT EDIT THE FOLLOWING SETTINGS +#! UNLESS YOU KNOW WHAT YOU ARE DOING +#! --------------------------------------------------------------- + +# Use velocity to animate everything. +motion: + enable: true + async: false + transition: + # Transition variants: + # fadeIn | fadeOut | flipXIn | flipXOut | flipYIn | flipYOut | flipBounceXIn | flipBounceXOut | flipBounceYIn | flipBounceYOut + # swoopIn | swoopOut | whirlIn | whirlOut | shrinkIn | shrinkOut | expandIn | expandOut + # bounceIn | bounceOut | bounceUpIn | bounceUpOut | bounceDownIn | bounceDownOut | bounceLeftIn | bounceLeftOut | bounceRightIn | bounceRightOut + # slideUpIn | slideUpOut | slideDownIn | slideDownOut | slideLeftIn | slideLeftOut | slideRightIn | slideRightOut + # slideUpBigIn | slideUpBigOut | slideDownBigIn | slideDownBigOut | slideLeftBigIn | slideLeftBigOut | slideRightBigIn | slideRightBigOut + # perspectiveUpIn | perspectiveUpOut | perspectiveDownIn | perspectiveDownOut | perspectiveLeftIn | perspectiveLeftOut | perspectiveRightIn | perspectiveRightOut + post_block: fadeIn + post_header: slideDownIn + post_body: slideDownIn + coll_header: slideLeftIn + # Only for Pisces | Gemini. + sidebar: slideUpIn + +# Fancybox. There is support for old version 2 and new version 3. +# Please, choose only any one variant, do not need to install both. +# For install 2.x: https://github.com/theme-next/theme-next-fancybox +# For install 3.x: https://github.com/theme-next/theme-next-fancybox3 +fancybox: false + +# Added switch option for separated repo in 6.0.0. +# Dependencies: https://github.com/theme-next/theme-next-fastclick +fastclick: false + +# Added switch option for separated repo in 6.0.0. +# Dependencies: https://github.com/theme-next/theme-next-jquery-lazyload +lazyload: false + +# Progress bar in the top during page loading. +# Dependencies: https://github.com/theme-next/theme-next-pace +pace: false +# Themes list: +#pace-theme-big-counter +#pace-theme-bounce +#pace-theme-barber-shop +#pace-theme-center-atom +#pace-theme-center-circle +#pace-theme-center-radar +#pace-theme-center-simple +#pace-theme-corner-indicator +#pace-theme-fill-left +#pace-theme-flash +#pace-theme-loading-bar +#pace-theme-mac-osx +#pace-theme-minimal +# For example +# pace_theme: pace-theme-center-simple +pace_theme: pace-theme-minimal + +# Canvas-nest +# Dependencies: https://github.com/theme-next/theme-next-canvas-nest +canvas_nest: false + +# JavaScript 3D library. +# Dependencies: https://github.com/theme-next/theme-next-three +# three_waves +three_waves: false +# canvas_lines +canvas_lines: false +# canvas_sphere +canvas_sphere: false + +# Only fit scheme Pisces +# Dependencies: https://github.com/theme-next/theme-next-canvas-ribbon +# Canvas-ribbon +# size: The width of the ribbon. +# alpha: The transparency of the ribbon. +# zIndex: The display level of the ribbon. +canvas_ribbon: + enable: false + size: 300 + alpha: 0.6 + zIndex: -1 + +# Script Vendors. +# Set a CDN address for the vendor you want to customize. +# For example +# jquery: https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js +# Be aware that you should use the same version as internal ones to avoid potential problems. +# Please use the https protocol of CDN files when you enable https on your site. +vendors: + # Internal path prefix. Please do not edit it. + _internal: lib + + # Internal version: 2.1.3 + jquery: + + # Internal version: 2.1.5 + # See: http://fancyapps.com/fancybox/ + fancybox: + fancybox_css: + + # Internal version: 1.0.6 + # See: https://github.com/ftlabs/fastclick + fastclick: + + # Internal version: 1.9.7 + # See: https://github.com/tuupola/jquery_lazyload + lazyload: + + # Internal version: 1.2.1 + # See: http://VelocityJS.org + velocity: + + # Internal version: 1.2.1 + # See: http://VelocityJS.org + velocity_ui: + + # Internal version: 0.7.9 + # See: https://faisalman.github.io/ua-parser-js/ + ua_parser: + + # Internal version: 4.6.2 + # See: http://fontawesome.io/ + fontawesome: + + # Internal version: 1 + # https://www.algolia.com + algolia_instant_js: + algolia_instant_css: + + # Internal version: 1.0.2 + # See: https://github.com/HubSpot/pace + # Or use direct links below: + # pace: //cdn.bootcss.com/pace/1.0.2/pace.min.js + # pace_css: //cdn.bootcss.com/pace/1.0.2/themes/blue/pace-theme-flash.min.css + pace: + pace_css: + + # Internal version: 1.0.0 + # https://github.com/hustcc/canvas-nest.js + canvas_nest: + + # three + three: + + # three_waves + # https://github.com/jjandxa/three_waves + three_waves: + + # three_waves + # https://github.com/jjandxa/canvas_lines + canvas_lines: + + # three_waves + # https://github.com/jjandxa/canvas_sphere + canvas_sphere: + + # Internal version: 1.0.0 + # https://github.com/zproo/canvas-ribbon + canvas_ribbon: + + # Internal version: 3.3.0 + # https://github.com/ethantw/Han + Han: + + # Internal version: 3.3.0 + # https://github.com/vinta/pangu.js + pangu: + + # needMoreShare2 + # https://github.com/revir/need-more-share2 + needmoreshare2_js: + needmoreshare2_css: + + # bookmark + # Internal version: 1.0.0 + # https://github.com/theme-next/theme-next-bookmark + bookmark: + + # reading_progress + # Internal version: 1.0 + # https://github.com/theme-next/theme-next-reading-progress + # Example: https://cdn.jsdelivr.net/gh/theme-next/theme-next-reading-progress@1.1/reading_progress.min.js + reading_progress: + + # valine comment + # Example: https://cdn.jsdelivr.net/npm/valine@1.1.8/dist/Valine.min.js + valine: + + +# Assets +css: css +js: js +images: images diff --git a/bower.json b/bower.json new file mode 100644 index 000000000..0354dc066 --- /dev/null +++ b/bower.json @@ -0,0 +1,31 @@ +{ + "name": "theme-next", + "version": "6.3.0", + "homepage": "https://theme-next.org", + "authors": [ + "NexT (https://theme-next.org)" + ], + "description": "Elegant theme for Hexo", + "repository": "https://github.com/theme-next/hexo-theme-next", + "keywords": [ + "hexo", + "theme", + "next" + ], + "license": "AGPL", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "source/lib", + "test", + "tests", + "screenshots" + ], + "dependencies": { + "font-awesome": "fontawesome#*", + "jquery": "http://code.jquery.com/jquery-2.1.3.min.js", + "ua-parser-js": "~0.7.9", + "velocity": "~1.2.1" + } +} diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 000000000..be97306a8 --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,9 @@ +files: + - source: /languages/en.yml + translation: /languages/%two_letters_code%.%file_extension% + languages_mapping: + two_letters_code: + zh-CN: zh-CN + zh-TW: zh-TW + zh-HK: zh-HK + pt-BR: pt-BR diff --git a/docs/AGPL3.md b/docs/AGPL3.md new file mode 100644 index 000000000..2dcf18c88 --- /dev/null +++ b/docs/AGPL3.md @@ -0,0 +1,649 @@ +#
      GNU Affero General Public License
      + +

      Version 3, 19 November 2007 Copyright © 2007 Free Software Foundation, Inc. <http://fsf.org/>

      + +

      Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed.

      + +##
      Preamble
      + +The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +Developers that use our General Public Licenses protect your rights +with two steps: **(1)** assert copyright on the software, and **(2)** offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + +A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + +The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + +An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + +The precise terms and conditions for copying, distribution and +modification follow. + +##
      TERMS AND CONDITIONS
      + +### 0. Definitions + +“This License” refers to version 3 of the GNU Affero General Public License. + +“Copyright” also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + +“The Program” refers to any copyrightable work licensed under this +License. Each licensee is addressed as “you”. “Licensees” and +“recipients” may be individuals or organizations. + +To “modify” a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a “modified version” of the +earlier work or a work “based on” the earlier work. + +A “covered work” means either the unmodified Program or a work based +on the Program. + +To “propagate” a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +To “convey” a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays “Appropriate Legal Notices” +to the extent that it includes a convenient and prominently visible +feature that **(1)** displays an appropriate copyright notice, and **(2)** +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +### 1. Source Code + +The “source code” for a work means the preferred form of the work +for making modifications to it. “Object code” means any non-source +form of a work. + +A “Standard Interface” means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +The “System Libraries” of an executable work include anything, other +than the work as a whole, that **(a)** is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and **(b)** serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +“Major Component”, in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +The “Corresponding Source” for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + +The Corresponding Source for a work in source code form is that +same work. + +### 2. Basic Permissions + +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + +### 3. Protecting Users' Legal Rights From Anti-Circumvention Law + +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + +### 4. Conveying Verbatim Copies + +You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +### 5. Conveying Modified Source Versions + +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + +* **a)** The work must carry prominent notices stating that you modified +it, and giving a relevant date. +* **b)** The work must carry prominent notices stating that it is +released under this License and any conditions added under section 7. +This requirement modifies the requirement in section 4 to +“keep intact all notices”. +* **c)** You must license the entire work, as a whole, under this +License to anyone who comes into possession of a copy. This +License will therefore apply, along with any applicable section 7 +additional terms, to the whole of the work, and all its parts, +regardless of how they are packaged. This License gives no +permission to license the work in any other way, but it does not +invalidate such permission if you have separately received it. +* **d)** If the work has interactive user interfaces, each must display +Appropriate Legal Notices; however, if the Program has interactive +interfaces that do not display Appropriate Legal Notices, your +work need not make them do so. + +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +“aggregate” if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +### 6. Conveying Non-Source Forms + +You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + +* **a)** Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by the +Corresponding Source fixed on a durable physical medium +customarily used for software interchange. +* **b)** Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by a +written offer, valid for at least three years and valid for as +long as you offer spare parts or customer support for that product +model, to give anyone who possesses the object code either **(1)** a +copy of the Corresponding Source for all the software in the +product that is covered by this License, on a durable physical +medium customarily used for software interchange, for a price no +more than your reasonable cost of physically performing this +conveying of source, or **(2)** access to copy the +Corresponding Source from a network server at no charge. +* **c)** Convey individual copies of the object code with a copy of the +written offer to provide the Corresponding Source. This +alternative is allowed only occasionally and noncommercially, and +only if you received the object code with such an offer, in accord +with subsection 6b. +* **d)** Convey the object code by offering access from a designated +place (gratis or for a charge), and offer equivalent access to the +Corresponding Source in the same way through the same place at no +further charge. You need not require recipients to copy the +Corresponding Source along with the object code. If the place to +copy the object code is a network server, the Corresponding Source +may be on a different server (operated by you or a third party) +that supports equivalent copying facilities, provided you maintain +clear directions next to the object code saying where to find the +Corresponding Source. Regardless of what server hosts the +Corresponding Source, you remain obligated to ensure that it is +available for as long as needed to satisfy these requirements. +* **e)** Convey the object code using peer-to-peer transmission, provided +you inform other peers where the object code and Corresponding +Source of the work are being offered to the general public at no +charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +A “User Product” is either **(1)** a “consumer product”, which means any +tangible personal property which is normally used for personal, family, +or household purposes, or **(2)** anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, “normally used” refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + +“Installation Information” for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +### 7. Additional Terms + +“Additional permissions” are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + +* **a)** Disclaiming warranty or limiting liability differently from the +terms of sections 15 and 16 of this License; or +* **b)** Requiring preservation of specified reasonable legal notices or +author attributions in that material or in the Appropriate Legal +Notices displayed by works containing it; or +* **c)** Prohibiting misrepresentation of the origin of that material, or +requiring that modified versions of such material be marked in +reasonable ways as different from the original version; or +* **d)** Limiting the use for publicity purposes of names of licensors or +authors of the material; or +* **e)** Declining to grant rights under trademark law for use of some +trade names, trademarks, or service marks; or +* **f)** Requiring indemnification of licensors and authors of that +material by anyone who conveys the material (or modified versions of +it) with contractual assumptions of liability to the recipient, for +any liability that these contractual assumptions directly impose on +those licensors and authors. + +All other non-permissive additional terms are considered “further +restrictions” within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + +### 8. Termination + +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated **(a)** +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and **(b)** permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +### 9. Acceptance Not Required for Having Copies + +You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +### 10. Automatic Licensing of Downstream Recipients + +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +An “entity transaction” is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +### 11. Patents + +A “contributor” is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's “contributor version”. + +A contributor's “essential patent claims” are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, “control” includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +In the following three paragraphs, a “patent license” is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To “grant” such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either **(1)** cause the Corresponding Source to be so +available, or **(2)** arrange to deprive yourself of the benefit of the +patent license for this particular work, or **(3)** arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. “Knowingly relying” means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +A patent license is “discriminatory” if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license **(a)** in connection with copies of the covered work +conveyed by you (or copies made from those copies), or **(b)** primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +### 12. No Surrender of Others' Freedom + +If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + +### 13. Remote Network Interaction; Use with the GNU General Public License + +Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + +Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + +### 14. Revised Versions of this License + +The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License “or any later version” applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +### 15. Disclaimer of Warranty + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +### 16. Limitation of Liability + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + +### 17. Interpretation of Sections 15 and 16 + +If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + +##
      END OF TERMS AND CONDITIONS
      + +###
      How to Apply These Terms to Your New Programs
      + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the “copyright” line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + +If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a “Source” link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + +You should also get your employer (if you work as a programmer) or school, +if any, to sign a “copyright disclaimer” for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +<>. \ No newline at end of file diff --git a/docs/ALGOLIA-SEARCH.md b/docs/ALGOLIA-SEARCH.md new file mode 100644 index 000000000..46d1a3997 --- /dev/null +++ b/docs/ALGOLIA-SEARCH.md @@ -0,0 +1,87 @@ +

      Algolia Search

      + + +NexT provides Algolia search plugin for index your hexo website content. To use this feature, make sure that the version of NexT you are using is after the v5.1.0 release. What you should note here is that only turn on `enable` of `algolia_search` in `next/_config.yml` cannot let you use the algolia search correctly, you need to install corresponding [Hexo Algolia](https://github.com/oncletom/hexo-algolia) plugin to seach your website with Algolia. Follow the steps described below to complete the installation of Algolia search. + +1. Register at [Algolia](https://www.algolia.com/), you can log in directly using GitHub or Google Account. Upon Customer’s initial sign-up for an Account, Customer will have a free, fourteen (14) day evaluation period (the “Evaluation Period”) for the Algolia Services commencing on the Effective Date, subject to the limitations on Algolia’s website. After that, Algolia offers a free, branded version for up to 10k records and 100k operations per month. + +1. If a tutorial pops up, you can skip it. Go straight to create an `Index` which will be used later. + + ![](http://theme-next.iissnan.com/uploads/algolia/algolia-step-2.png) + +1. Algolia requires users to upload their search index data either manually or via provided APIs. Install and configure [Hexo Algolia](https://github.com/oncletom/hexo-algolia) in your Hexo directory. This plugin will index your site and upload selected data to Algolia. + + ``` + $ cd hexo + $ npm install --save hexo-algolia + ``` + +1. Go to the `API Keys` page and find your credentials. You will need the `Application ID` and the `Search-only API key` in the following sections. The `Admin API key` need to keep confidential. Never store your Admin API Key as apiKey in the` _config.yml` file: it would give full control of your Algolia index to others and you don't want to face the consequences. + + ![](https://user-images.githubusercontent.com/8521181/35479066-64e35aec-0428-11e8-91f9-1ec3afa45c5c.png) + +1. In the `API Keys` page, click the `ALL API KEYS` and the `edit` option in the created APIKEY to activate a pop-up box where you can setup authorizations and restrictions with a great level of precision. Check `Add records`, `Delete records`, `List indices`, `Delete index` features in ACL permissions that will be allowed for the given API key. And then click the `Update` button. + + ![](https://user-images.githubusercontent.com/8521181/35479064-611aa0b4-0428-11e8-85a1-cfb449b486ec.png) + ![](https://user-images.githubusercontent.com/8521181/35479084-d4f7ac02-0428-11e8-95a6-c4e3b1bef47b.png) + +1. In your site's `_config.yml`, add the following configuration and replace the `applicationID` & `apiKey` & `indexName` with corresponding fields obtained at Algolia. + + ```yml + algolia: + applicationID: 'Application ID' + apiKey: 'Search-only API key' + indexName: 'indexName' + chunkSize: 5000 + ``` + +1. Run the following command to upload index data, keep a weather eye out the output of the command. + + ``` + $ export HEXO_ALGOLIA_INDEXING_KEY=Search-Only API key # Use Git Bash + # set HEXO_ALGOLIA_INDEXING_KEY=Search-Only API key # Use Windows command line + $ hexo clean + $ hexo algolia + ``` + + ![](http://theme-next.iissnan.com/uploads/algolia/algolia-step-4.png) + +1. Change dir to NexT directory, and install module to `source/lib` directory. + + ``` + $ cd themes/next + $ git clone https://github.com/theme-next/theme-next-algolia-instant-search source/lib/algolia-instant-search + ``` + + If you want to use the CDN instead of clone this repo, then need to **set vendors** in NexT `_config.yml` file: + ```yml + vendors: + ... + # Internal version: 1 + # https://www.algolia.com + algolia_instant_js: https://cdn.jsdelivr.net/npm/instantsearch.js@2.4.1/dist/instantsearch.js + algolia_instant_css: https://cdn.jsdelivr.net/npm/instantsearch.js@2.4.1/dist/instantsearch.min.css + ... + ``` + +1. In `next/_config.yml`, turn on `enable` of `algolia_search`. At the same time, you need to **turn off other search plugins** like Local Search. You can also adjust the text in `labels` according to your needs. + + ```yml + # Algolia Search + algolia_search: + enable: true + hits: + per_page: 10 + labels: + input_placeholder: Search for Posts + hits_empty: "We didn't find any results for the search: ${query}" + hits_stats: "${hits} results found in ${time} ms" + ``` + +

      Known Issues

      + +1. The latest version of the [Hexo-Algolia](https://github.com/oncletom/hexo-algolia) plugin removes the content indexing feature, given Algolia's free account limitation. + +1. The [Hexo-Algoliasearch](https://github.com/LouisBarranqueiro/hexo-algoliasearch) plugin provides content indexing functionality, but requires the replacement of keywords in the NEXT theme. The same problem exists with `Record Too Big` for Algolia's free account. + - Replace all `applicationID` in `source/js/src/algolia-search.js` with `appId` + - Replace all `applicationID` in `layout/_partials/head/head.swig` with `appId` diff --git a/docs/AUTHORS.md b/docs/AUTHORS.md new file mode 100644 index 000000000..f54eef7bb --- /dev/null +++ b/docs/AUTHORS.md @@ -0,0 +1,87 @@ +#
      «NexT» Authors
      + +NexT theme was initially developed by: + +- **IIssNaN**: [NexT](https://github.com/iissnan/hexo-theme-next) (2014 - 2017) + +With collaborators from initially repository: + +- **Ivan.Nginx**: [DIFF highlight](https://github.com/iissnan/hexo-theme-next/pull/1079), + [HyperComments](https://github.com/iissnan/hexo-theme-next/pull/1155), + [`{% note %}` tag](https://github.com/iissnan/hexo-theme-next/pull/1160), + [`seo` option](https://github.com/iissnan/hexo-theme-next/pull/1311), + [`{% button %}` tag](https://github.com/iissnan/hexo-theme-next/pull/1328), + [VK API](https://github.com/iissnan/hexo-theme-next/pull/1381), + [WordCount plugin support](https://github.com/iissnan/hexo-theme-next/pull/1381), + [Yandex verification option](https://github.com/iissnan/hexo-theme-next/pull/1381), + [`{% exturl %}` tag](https://github.com/iissnan/hexo-theme-next/pull/1438), + [`b2t` option](https://github.com/iissnan/hexo-theme-next/pull/1438), + [`scrollpercent` option](https://github.com/iissnan/hexo-theme-next/pull/1438), + [`save_scroll` option](https://github.com/iissnan/hexo-theme-next/pull/1574), + [Star rating](https://github.com/iissnan/hexo-theme-next/pull/1649), + [`mobile_layout_economy` option](https://github.com/iissnan/hexo-theme-next/pull/1697), + [`{% tabs %}` tag](https://github.com/iissnan/hexo-theme-next/pull/1697), + [`{% label %}` tag](https://github.com/iissnan/hexo-theme-next/pull/1697), + [**`Gemini`** scheme](https://github.com/iissnan/hexo-theme-next/pull/1697), + [Menu & Sidebar icons in 1 line](https://github.com/iissnan/hexo-theme-next/pull/1830), + [Sidebar scrollable](https://github.com/iissnan/hexo-theme-next/pull/1898), + [Responsive favicons](https://github.com/iissnan/hexo-theme-next/pull/1898) + and many other [PR's with fixes and enhancements](https://github.com/iissnan/hexo-theme-next/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aivan-nginx) +- **Acris**: [Many PR's with fixes and updates](https://github.com/iissnan/hexo-theme-next/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3AAcris) + +And best contributors from initially repository: + +- **Rainy**: [Gentie comments](https://github.com/iissnan/hexo-theme-next/pull/1301), + [Han](https://github.com/iissnan/hexo-theme-next/pull/1598) + and many [PR's with fixes and optimizations](https://github.com/iissnan/hexo-theme-next/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Ageekrainy) +- **Jeff**: [Local search](https://github.com/iissnan/hexo-theme-next/pull/694) + and many [PR's with fixes and improvements](https://github.com/iissnan/hexo-theme-next/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aflashlab) +- **Haocen**: [Footer enhancements](https://github.com/iissnan/hexo-theme-next/pull/1886) + and some other [PR's with improvements](https://github.com/iissnan/hexo-theme-next/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3AHaocen) +- **uchuhimo**: [Greatest enhancements for local search](https://github.com/iissnan/hexo-theme-next/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Auchuhimo) +- **Kei**: [Change static file setting to support subdirectory](https://github.com/iissnan/hexo-theme-next/pull/4) +- **Jolyon**: [Swiftype](https://github.com/iissnan/hexo-theme-next/pull/84) +- **xirong**: [404 page](https://github.com/iissnan/hexo-theme-next/pull/126) +- **PinkyJie**: [Fix Swiftype](https://github.com/iissnan/hexo-theme-next/pull/132) +- **Tim Kuijsten**: [Split javascript into separate files](https://github.com/iissnan/hexo-theme-next/pull/152) +- **iamwent**: [Friendly links](https://github.com/iissnan/hexo-theme-next/pull/250) +- **arao lin**: [Option to lazyload images](https://github.com/iissnan/hexo-theme-next/pull/269) +- **Konstantin Pavlov**: [Microdata, opengraph and other semantic features](https://github.com/iissnan/hexo-theme-next/pull/276) +- **Gary**: [FastClick](https://github.com/iissnan/hexo-theme-next/pull/324) +- **Octavian**: [Baidu site vertification](https://github.com/iissnan/hexo-theme-next/pull/367) +- **Henry Chang**: [Facebook SDK](https://github.com/iissnan/hexo-theme-next/pull/410) +- **XiaMo**: [LeanCloud visitors](https://github.com/iissnan/hexo-theme-next/pull/439) +- **iblogc**: [Fix UA in Duoshuo](https://github.com/iissnan/hexo-theme-next/pull/489) +- **Vincent**: [Automatic headline ID's](https://github.com/iissnan/hexo-theme-next/pull/588) +- **cissoid**: [Tencent analytics](https://github.com/iissnan/hexo-theme-next/pull/603) +- **CosmoX**: [AddThis](https://github.com/iissnan/hexo-theme-next/pull/660) +- **Jason Guo**: [Reward for post](https://github.com/iissnan/hexo-theme-next/pull/687) +- **Jerry Bendy**: [CNZZ counter](https://github.com/iissnan/hexo-theme-next/pull/712) +- **Hui Wang**: [Wechat subscriber](https://github.com/iissnan/hexo-theme-next/pull/788) +- **PoonChiTim**: [Busuanzi counter](https://github.com/iissnan/hexo-theme-next/pull/809) +- **hydai**: [Facebook comments](https://github.com/iissnan/hexo-theme-next/pull/925) +- **OAwan**: [`canonical` option](https://github.com/iissnan/hexo-theme-next/pull/931) +- **Jim Zenn**: [Google Calendar](https://github.com/iissnan/hexo-theme-next/pull/1167) +- **Abner Chou**: [Disqus improvements](https://github.com/iissnan/hexo-theme-next/pull/1173) +- **Igor Fesenko**: [Application Insights](https://github.com/iissnan/hexo-theme-next/pull/1257) +- **jinfang**: [Youyan comments](https://github.com/iissnan/hexo-theme-next/pull/1324) +- **AlynxZhou**: [`canvas_nest` option](https://github.com/iissnan/hexo-theme-next/pull/1327) +- **aleon**: [Tencent MTA](https://github.com/iissnan/hexo-theme-next/pull/1408) +- **asmoker**: [LiveRe comments](https://github.com/iissnan/hexo-theme-next/pull/1415) +- **Jacksgong**: [Copyright on posts](https://github.com/iissnan/hexo-theme-next/pull/1497) +- **zhaiqianfeng**: [Changyan comments](https://github.com/iissnan/hexo-theme-next/pull/1514) +- **zproo**: [`canvas_ribbon` option](https://github.com/iissnan/hexo-theme-next/pull/1565) +- **jjandxa**: [`three_waves`](https://github.com/iissnan/hexo-theme-next/pull/1534), + [`canvas_lines` and `canvas_sphere`](https://github.com/iissnan/hexo-theme-next/pull/1595) options +- **shenzekun**: [Load bar at the top](https://github.com/iissnan/hexo-theme-next/pull/1689) +- **elkan1788**: [Upgrade jiathis share](https://github.com/iissnan/hexo-theme-next/pull/1796) +- **xCss**: [Valine comment system support](https://github.com/iissnan/hexo-theme-next/pull/1811) +- **Julian Xhokaxhiu**: [`override` option](https://github.com/iissnan/hexo-theme-next/pull/1861) +- **LEAFERx**: [NeedMoreShare2](https://github.com/iissnan/hexo-theme-next/pull/1913) +- **aimingoo & LEAFERx**: [Gitment supported with Mint](https://github.com/iissnan/hexo-theme-next/pull/1919) +- **LeviDing**: [Fix the bug of Gitment](https://github.com/iissnan/hexo-theme-next/pull/1944) +- **maple3142**: [Firestore visitor counter](https://github.com/iissnan/hexo-theme-next/pull/1978) + +It lives on as an open source project with many contributors, a self updating list is [here](https://github.com/theme-next/hexo-theme-next/graphs/contributors). + +P.S. If you was do some useful pulls/commits in original repository and you are not in list, let me know and you will be added here. diff --git a/docs/DATA-FILES.md b/docs/DATA-FILES.md new file mode 100644 index 000000000..bdf8ab002 --- /dev/null +++ b/docs/DATA-FILES.md @@ -0,0 +1,61 @@ +

      Data Files

      + +Currently, it is not smooth to update NexT theme from pulling or downloading new releases. It is quite often running into conflict status when updating NexT theme via `git pull`, or need to merge configurations manually when upgrading to new releases. + + At present, NexT encourages users to store some options in site's `_config.yml` and other options in theme's `_config.yml`. This approach is applicable, but has some drawbacks: +1. Configurations are splitted into two pieces +2. Users may be confused which place should be for options + +In order to resolve this issue, NexT will take advantage of Hexo [Data files](https://hexo.io/docs/data-files.html). Because Data files is introduced in Hexo 3, so you need upgrade Hexo to 3.0 (or above) to use this feature. + +If you prefer Hexo 2.x, you can still use the old approach for configurations. NexT is still compatible with Hexo 2.x (but errors are possible). + +

      Option 1: Hexo-Way

      + +With this way, all your configurations locate in main hexo config file (`hexo/_config.yml`), you don't need to touch `next/_config.yml` or create any new files. But you must preserve double spaces indents within `theme_config` option. + +If there are any new options in new releases, you just need to copy those options from `next/_config.yml`, paste into `hexo/_config.yml` and set their values to whatever you want. + +### Usage + +1. Check for no exists `hexo/source/_data/next.yml` file (delete it if exists). +2. Copy needed NexT theme options from theme's `next/_config.yml` into `hexo/_config.yml`, then\ + 2.1. Move all this settings to the right with two spaces (in Visual Studio Code: select all strings, CTRL + ]).\ + 2.2. Add `theme_config:` parameter above all this settings. + +### Useful links + +* [Hexo Configuration](https://hexo.io/docs/configuration.html) +* [Hexo Pull #757](https://github.com/hexojs/hexo/pull/757) + +

      Option 2: NexT-Way

      + +With this way, you can put all your configurations into one place (`source/_data/next.yml`), you don't need to touch `next/_config.yml`. +But option may not accurately procces all hexo external libraries with their additional options (for example, `hexo-server` module options may be readed only in default hexo config). + +If there are any new options in new releases, you just need to copy those options from `next/_config.yml`, paste into `_data/next.yml` and set their values to whatever you want. + +### Usage + +1. Please ensure you are using Hexo 3 (or above). +2. Create an file named `next.yml` in site's `hexo/source/_data` directory (create `_data` directory if it did not exists). + +

      And after that steps there are 2 variants, need to choose only one of them and resume next steps.

      + +* **Variant 1: `override: false` (default)**: + + 1. Check your `override` option in default NexT config, it must set on `false`.\ + In `next.yml` it must not be defined or set on `false` too. + 2. Copy needed options from both site's `_config.yml` and theme's `_config.yml` into `hexo/source/_data/next.yml`. + +* **Variant 2: `override: true`**: + + 1. In `next.yml` set `override` option on `true`. + 2. Copy **all** NexT theme options from theme's `next/_config.yml` into `hexo/source/_data/next.yml`. + +3. Then, in main site's `hexo/_config.yml` need to define `theme: next` option (and if needed, `source_dir: source`). +4. Use standart parameters to start server, generate or deploy (`hexo clean && hexo g -d && hexo s`). + +### Useful links + +* [NexT Issue #328](https://github.com/iissnan/hexo-theme-next/issues/328) diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md new file mode 100644 index 000000000..3f229994d --- /dev/null +++ b/docs/INSTALLATION.md @@ -0,0 +1,120 @@ +

      Installation

      + +

      Step 1 → Go to Hexo dir

      + +Change dir to **hexo root** directory. There must be `node_modules`, `source`, `themes` and other directories: + ```sh + $ cd hexo + $ ls + _config.yml node_modules package.json public scaffolds source themes + ``` + +

      Step 2 → Get NexT

      + +

      Download theme from GitHub.
      +There are 3 options to do it, need to choose only one of them.

      + +### Option 1: Download [latest release version][releases-latest-url] + + At most cases **stable**. Recommended for beginners. + + * Install with [curl & tar & wget][curl-tar-wget-url]: + + ```sh + $ mkdir themes/next + $ curl -s https://api.github.com/repos/theme-next/hexo-theme-next/releases/latest | grep tarball_url | cut -d '"' -f 4 | wget -i - -O- | tar -zx -C themes/next --strip-components=1 + ``` + This variant will give to you **only latest release version** (without `.git` directory inside).\ + So, there is impossible to update this version with `git` later.\ + Instead you always can use separate configuration (e.g. [data-files][docs-data-files-url]) and download new version inside old directory (or create new directory and redefine `theme` in Hexo config), without losing your old configuration. + +### Option 2: Download [tagged release version][releases-url] + + In rare cases useful, but not recommended.\ + You must define version. Replace `v6.0.0` with any version from [tags list][tags-url]. + + * Variant 1: Install with [curl & tar][curl-tar-url]: + + ```sh + $ mkdir themes/next + $ curl -L https://api.github.com/repos/theme-next/hexo-theme-next/tarball/v6.0.0 | tar -zxv -C themes/next --strip-components=1 + ``` + Same as above under `curl & tar & wget` variant, but will download **only concrete version**. + + * Variant 2: Install with [git][git-url]: + + ```sh + $ git clone --branch v6.0.0 https://github.com/theme-next/hexo-theme-next themes/next + ``` + This variant will give to you the **defined release version** (with `.git` directory inside).\ + And in any time you can switch to any tagged release, but with limit to defined version. + +### Option 3: Download [latest master branch][download-latest-url] + + May be **unstable**, but includes latest features. Recommended for advanced users and for developers. + + * Variant 1: Install with [curl & tar][curl-tar-url]: + + ```sh + $ mkdir themes/next + $ curl -L https://api.github.com/repos/theme-next/hexo-theme-next/tarball | tar -zxv -C themes/next --strip-components=1 + ``` + Same as above under `curl & tar & wget` variant, but will download **only latest master branch version**.\ + At some cases useful for developers. + + * Variant 2: Install with [git][git-url]: + + ```sh + $ git clone https://github.com/theme-next/hexo-theme-next themes/next + ``` + + This variant will give to you the **whole repository** (with `.git` directory inside).\ + And in any time you can [update current version with git][update-with-git-url] and switch to any tagged release or on latest master or any other branch.\ + At most cases useful as for users and for developers. + + Get tags list: + + ```sh + $ cd themes/next + $ git tag -l + … + v6.0.0 + v6.0.1 + v6.0.2 + ``` + + For example, you want to switch on `v6.0.1` [tagged release version][tags-url]. Input the following command: + + ```sh + $ git checkout tags/v6.0.1 + Note: checking out 'tags/v6.0.1'. + … + HEAD is now at da9cdd2... Release v6.0.1 + ``` + + And if you want to switch back on [master branch][commits-url], input this command: + + ```sh + $ git checkout master + ``` + +

      Step 3 → Set it up

      + +Set theme in main **hexo root config** `_config.yml` file: + +```yml +theme: next +``` + +[download-latest-url]: https://github.com/theme-next/hexo-theme-next/archive/master.zip +[releases-latest-url]: https://github.com/theme-next/hexo-theme-next/releases/latest +[releases-url]: https://github.com/theme-next/hexo-theme-next/releases +[tags-url]: https://github.com/theme-next/hexo-theme-next/tags +[commits-url]: https://github.com/theme-next/hexo-theme-next/commits/master + +[git-url]: http://lmgtfy.com/?q=linux+git+install +[curl-tar-url]: http://lmgtfy.com/?q=linux+curl+tar+install +[curl-tar-wget-url]: http://lmgtfy.com/?q=linux+curl+tar+wget+install + +[update-with-git-url]: https://github.com/theme-next/hexo-theme-next/blob/master/README.md#update +[docs-data-files-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/DATA-FILES.md diff --git a/docs/LEANCLOUD-COUNTER-SECURITY.md b/docs/LEANCLOUD-COUNTER-SECURITY.md new file mode 100644 index 000000000..8b260fea6 --- /dev/null +++ b/docs/LEANCLOUD-COUNTER-SECURITY.md @@ -0,0 +1,174 @@ +Before you make the config, please upgrade your NexT version to v6.0.6 or greater. + +Please note the difference between **site config file** and **theme config file** + +--- + +# Sign up to Leancloud and create an app +- Go to Leancloud website [leancloud.cn](leancloud.cn) and sign up to Leancloud. Then login. +- Click `1` to enter the console: + + ![1](https://lc-cqha0xyi.cn-n1.lcfile.com/fc0c048a1e25dc3d10aa.jpg) + +- Then click `1` to create an app: + + ![2](https://lc-cqha0xyi.cn-n1.lcfile.com/33a56b754753a5d34b01.jpg) + +- Type your app name in `1` in the pop up window(eg. "test"), then choose `2`, which means developer's plan, and then click `3` to create the app: + + ![3](https://lc-cqha0xyi.cn-n1.lcfile.com/649ccfc6f12015d1eefb.jpg) + +# Create Counter class and enable plugin in NexT +- Click `1`(app name) to enter the app manage page: + + ![4](https://lc-cqha0xyi.cn-n1.lcfile.com/d0889df29841661e0b9e.jpg) + +- then click `1` to create a class for counter: + + ![5](https://lc-cqha0xyi.cn-n1.lcfile.com/b0fbc81bd6c19fa09a46.jpg) + +- Type `Counter` in the pop up window in `1`, check `2`, then click `3`: + + ![6](https://lc-cqha0xyi.cn-n1.lcfile.com/ae6154d6a55f02f11ebf.jpg) + +- Click `1` to enter the app setting, then click `2`: + + ![8](https://lc-cqha0xyi.cn-n1.lcfile.com/9501a6372918dd9a8a92.jpg) + +- Paste `App ID` and `App Key` to **theme config file**`_config.yml` like this: + ```yml + leancloud_visitors: + enable: true + app_id: <> + app_key: <> + # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security + security: true + betterPerformance: false + ``` + +- Set domain whitelist: Click`1`, then type your domain into `2`(**protocol, domain and port should be exactly the same**): + + ![9](https://lc-cqha0xyi.cn-n1.lcfile.com/0e537cc4bec2e185201d.jpg) + +# Deploy web engine to avoid your data being changed illegally +- Click `1 -> 2 -> 3` by order + + ![10](https://lc-cqha0xyi.cn-n1.lcfile.com/d7056dfeeef7c5d66318.jpg) + +- Click`1`: + + ![11](https://lc-cqha0xyi.cn-n1.lcfile.com/2737841bbc2bdd572ae0.jpg) + +- In the pop up window, click `1` to choose type `Hook`, then choose`beforeUpdate` in `2`, choose `Counter` in `3`. Paste code below into `4`, then click `5` to save it: + ```javascript + var query = new AV.Query("Counter"); + if (request.object.updatedKeys.indexOf('time') !== -1) { + return query.get(request.object.id).then(function (obj) { + if (obj.get("time") + 1 !== request.object.get("time")) { + throw new AV.Cloud.Error('Invalid update!'); + } + }) + } + ``` + + ![12](https://lc-cqha0xyi.cn-n1.lcfile.com/a8e13418ed1d9405315b.jpg) + +- Click `1` to deploy after the message in the red rect shows up: + + ![13](https://lc-cqha0xyi.cn-n1.lcfile.com/ca56bf2e5fc2a1343565.jpg) + +- Click `1` in the pop up: + + ![14](https://lc-cqha0xyi.cn-n1.lcfile.com/17548c13b3b23c71d845.jpg) + +- Click `1` to close the pop up window after the message in the red rect shows up: + + ![15](https://lc-cqha0xyi.cn-n1.lcfile.com/d2f50de6cefea9fd0ed3.jpg) + +# Set access control for your database +- Open **theme config file**`_config.yml`, set `leancloud_visitors: security` to `true`: + ```yml + leancloud_visitors: + enable: true + app_id: <> + app_key: <> + # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security + security: true + betterPerformance: false + ``` + + **Explaination for `betterPerformance`:** + Because the Leancloud developer's plan has limits in requst thread amount and running time, counter number may be very slow to load in some times. If set `betterPerformance` to true, counter number will be displayed quickly by assuming the request is accepted normally. + +- Open cmd then switch to **root path of site**, type commands to install `hexo-leancloud-counter-security` plugin: + ``` + npm install hexo-leancloud-counter-security --save + ``` + +- Open **site config file**`_config.yml`, add those config: + ```yml + leancloud_counter_security: + enable_sync: true + app_id: <> + app_key: < + username: + password: + ``` + +- Type command: + ``` + hexo lc-counter register <> <> + ``` + or + ``` + hexo lc-counter r <> <> + ``` + + Change `<>` and `<>` to your own username and password (no need to be the same as leancloud account). They will be used in the hexo deploying. + + - Open **site config file**`_config.yml`, change `<>` and `<>`to those you set above: + ```yml + leancloud_counter_security: + enable_sync: true + app_id: <> + app_key: < + username: <> # will be asked while deploying if be left blank + password: <> # recommend to leave it blank for security, will be asked while deploying if be left blank + ``` + +- Add the deployer in the `deploy` of **site config file**`_config.yml`: + ```yml + deploy: + # other deployer + - type: leancloud_counter_security_sync + ``` + +- Return to the Leancloud console. Click `1 -> 2`, check if there is a record added in the _User (the img below is using username "admin" for example): + + ![16](https://lc-cqha0xyi.cn-n1.lcfile.com/99faa5a0e7160e66d506.jpg) + +- Click `1 -> 2 -> 3` by order: + + ![17](https://lc-cqha0xyi.cn-n1.lcfile.com/b72a9e64579f5b71749d.jpg) + +- Click `1`(add_fields), then choose `2`:Do as below "create" setting(choose the user you create): + + ![18](https://lc-cqha0xyi.cn-n1.lcfile.com/14a8cb37062693d768ad.jpg) + +- click `1`(create), then choose `2`, type the username in `3`, then click `4 -> 5`: + + ![19](https://lc-cqha0xyi.cn-n1.lcfile.com/d91714cfd703ef42b94c.jpg) + + Now your page should be similar to this img after finishing the step. + + ![20](https://lc-cqha0xyi.cn-n1.lcfile.com/c05e7ec9218820baf412.jpg) + +- Click `1`(delete), then choose `2`: + + ![21](https://lc-cqha0xyi.cn-n1.lcfile.com/c37b6e20726cfb1d3197.jpg) + +Now the bug is fixed. + +--- + +See detailed version here: https://leaferx.online/2018/03/16/lc-security-en/ diff --git a/docs/LICENSE b/docs/LICENSE new file mode 100644 index 000000000..11571dd27 --- /dev/null +++ b/docs/LICENSE @@ -0,0 +1,56 @@ + «NexT» — Elegant and powerful theme for Hexo. + + Copyright © 2017 «NexT» (github.com/theme-next/hexo-theme-next). + + Detail attribution information for «NexT» + is contained in the 'docs/AUTHORS.md' file. + + This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License version 3 +as published by the Free Software Foundation with the addition of the +following permission added to Section 15 as permitted in Section 7(a): +FOR ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY «NEXT», +«NEXT» DISCLAIMS THE WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. + + This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Affero General Public License for more details. +You should have received a copy of the GNU Affero General Public License +along with this program; if not, see: https://www.gnu.org/licenses/agpl.txt + + In accordance with Section 7(b) of the GNU Affero General Public License: + + a) It is not necessary to specify copyright in each source file of + this program because GitHub fully save commits of all modified files + with their authors and provides to see for this changes publicly. + + b) For any part of the covered work in which the copyright not specified, + except of third party libraries ('source/lib/*') and '*custom.*' files, + will mean this part owned by «NexT» in accord with terms in this file. + + c) A covered work must retain theme info link to the «NexT» repository + (https://github.com/theme-next/hexo-theme-next) in footer section + of every website created, modified or manipulated by using «NexT». + «NexT» theme configuration must be: + ``` + footer: + theme: + enable: true + ``` + Collaborators, best contributors and all authors specified in the + 'docs/AUTHORS.md' file of «NexT» repository under the + 'https://github.com/theme-next' organization can ignore theme info link + requirements. + + Anyone can be released from the requirements of the license by purchasing +a commercial license. Buying such a license is mandatory as soon as you +develop commercial activities involving the «NexT» software without +disclosing the source code of your own applications. +These activities include: + 1. Access to private repository with various premium features. + 2. Priority support for resolve all possible issues with «NexT». + 3. Priority support for implement all possible features to «NexT». + + For more information, please contact «NexT» Organization at this +address: sales@theme-next.org diff --git a/docs/MATH.md b/docs/MATH.md new file mode 100644 index 000000000..0a757dbd5 --- /dev/null +++ b/docs/MATH.md @@ -0,0 +1,290 @@ +

      Math Equations

      + +NexT provides two render engines for displaying Math Equations. + +If you choose to use this feature, you don't need to manually import any JS or CSS. You just need to turn on `enable` of `math` and choose a render `engine` for it (located in `next/_config.yml`): + +```yml +math: + enable: true + ... + engine: mathjax +``` + +Notice: only turning on `enable` of `math` **cannot let you see the displayed equations correctly**, you need to install the **corresponding Hexo Renderer** to fully support the display of Math Equations. The corresponding Hexo Renderer per engine will be provided below. + +

      Provided Render Engine

      + +For now, NexT provides two Render Engines: [MathJax](https://www.mathjax.org/) and [Katex](https://khan.github.io/KaTeX/) (default is MathJax). + +### MathJax (default) + +If you use MathJax to render Math Equations, you need to use **only one of them**: [hexo-renderer-pandoc](https://github.com/wzpan/hexo-renderer-pandoc) or [hexo-renderer-kramed](https://github.com/sun11/hexo-renderer-kramed). + +Firstly, you need to uninstall the original renderer `hexo-renderer-marked`, and install one of the renderer above: + +```sh +npm un hexo-renderer-marked --save +npm i hexo-renderer-pandoc --save # or hexo-renderer-kramed +``` + +Secondly, in `next/_config.yml`, turn on `enable` of `math` and choose `mathjax` as `engine`. + +```yml +math: + enable: true + ... + engine: mathjax + #engine: katex +``` + +Finally, run standard Hexo generate, deploy process or start the server: + +```sh +hexo clean && hexo g -d +# or hexo clean && hexo s +``` + +#### Numbering and referring equations in MathJax + +In the new version of NexT, we have added feature to automatically number equations and to refer to equations. We briefly describe how to use this feature below. + +In general, to make the automatic equation numbering work, you have to wrap your LaTeX equations in `equation` environment. Using the plain old style (i.e., wrap an equation with two dollar signs in each side) will not work. How to refer to an equation? Just give a `\label{}` tag and then in your later text, use `\ref{}` or `\eqref{}` to refer it. Using `\eqref{}` is preferred since if you use `\ref{}`, there are no parentheses around the equation number. Below are some of the common scenarios for equation numbering. + +For simple equations, use the following form to give a tag, + +```latex +$$\begin{equation} +e=mc^2 +\end{equation}\label{eq1}$$ +``` + +Then, you can refer to this equation in your text easily by using something like + +``` +the famous matter-energy equation $\eqref{eq1}$ proposed by Einstein ... +``` + +For multi-line equations, inside the `equation` environment, you can use the `aligned` environment to split it into multiple lines: + +```latex +$$\begin{equation} +\begin{aligned} +a &= b + c \\ + &= d + e + f + g \\ + &= h + i +\end{aligned} +\end{equation}\label{eq2}$$ +``` + +We can use `align` environment to align multiple equations. Each of these equations will get its own numbers. + +``` +$$\begin{align} +a &= b + c \label{eq3} \\ +x &= yz \label{eq4}\\ +l &= m - n \label{eq5} +\end{align}$$ +``` + +In the `align` environment, if you do not want to number one or some equations, just [use `\nonumber`](https://tex.stackexchange.com/questions/17528/show-equation-number-only-once-in-align-environment) right behind these equations. Like the following: + +```latex +$$\begin{align} +-4 + 5x &= 2+y \nonumber \\ + w+2 &= -1+w \\ + ab &= cb +\end{align}$$ +``` + +Sometimes, you want to use more “exotic” style to refer your equation. You can use `\tag{}` to achieve this. For example: + +```latex +$$x+1\over\sqrt{1-x^2} \tag{i}\label{eq_tag}$$ +``` + +For more information, you can visit the [official MathJax documentation on equation numbering](http://docs.mathjax.org/en/latest/tex.html#automatic-equation-numbering). You can also visit this [post](https://jdhao.github.io/2018/01/25/hexo-mathjax-equation-number/) for more details. + +### Katex + +The Katex engine is a **much faster** math render engine compared to MathJax. And it could survive without JavaScript. + +But, what Katex supports is not as full as MathJax. You could check it from the Useful Links below. + +If you use Katex to render Math Equations, you need to use **only one of those renderer**: [hexo-renderer-markdown-it-plus](https://github.com/CHENXCHEN/hexo-renderer-markdown-it-plus) or [hexo-renderer-markdown-it](https://github.com/hexojs/hexo-renderer-markdown-it). + +Firstly, you need to uninstall the original renderer `hexo-renderer-marked`, and **install one of selected above**. + +```sh +npm un hexo-renderer-marked --save +npm i hexo-renderer-markdown-it-plus --save +# or hexo-renderer-markdown-it +``` + +Secondly, in `next/_config.yml`, turn on `enable` option of `math` and choose `katex` as render `engine`. + +```yml +math: + enable: true + ... + #engine: mathjax + engine: katex +``` + +Finally, run the standard Hexo generate, deploy process or start the server: + +```sh +hexo clean && hexo g -d +# or hexo clean && hexo s +``` + +#### If you use hexo-renderer-markdown-it + +If you use `hexo-renderer-markdown-it`,you also need to add `markdown-it-katex` as its plugin: + +``` +npm i markdown-it-katex --save +``` + +And then in `hexo/_config.yml` you need to add `markdown-it-katex` as a plugin for `hexo-renderer-markdown-it`: + +```yml +# config of hexo-renderer-markdown-it +markdown: + render: + html: true + xhtmlOut: false + breaks: true + linkify: true + typographer: true + quotes: '“”‘’' + plugins: + - markdown-it-katex +``` + +#### Known Bugs + +1. Firstly, please check [Common Issues](https://github.com/Khan/KaTeX#common-issues) of Katex. +2. Displayed Math (i.e. `$$...$$`) needs to started with new clear line.\ + In other words: you must not have any characters (except of whitespaces) **before the opening `$$` and after the ending `$$`** ([comment #32](https://github.com/theme-next/hexo-theme-next/pull/32#issuecomment-357489509)). +3. Don't support Unicode ([comment #32](https://github.com/theme-next/hexo-theme-next/pull/32#issuecomment-357489509)). +4. Inline Math (..`$...$`) must not have white spaces **after the opening `$` and before the ending `$`** ([comment #32](https://github.com/theme-next/hexo-theme-next/pull/32#issuecomment-357489509)). +5. If you use math in Heading (i.e. `## Heading`).\ + Then in corresponding TOC item it will show the related LaTex code 3 times ([comment #32](https://github.com/theme-next/hexo-theme-next/pull/32#issuecomment-359018694)). +6. If you use math in your post's title, it will not be rendered ([comment #32](https://github.com/theme-next/hexo-theme-next/pull/32#issuecomment-359142879)). + +We currently use Katex 0.7.1, some of those bugs might be caused by the outdated version of Katex we use. + +But, as what is described in the beginning, the render of Math Equations relies on Hexo Renderer. Currently, Katex-related renderers only support Katex version until 0.7.1. + +We will continuously monitor the updates of corresponding renderers, if there is a renderer which supports newer version of Katex, we will update the Katex we use. + +### Useful Links + +* [Speed test between Katex and MathJax](https://www.intmath.com/cg5/katex-mathjax-comparison.php) +* [Function support by Katex](https://khan.github.io/KaTeX/function-support.html) + +

      Configuration Specifications

      + +ATTENTION! When you edit those configs, **don't change indentation!** + +Currently, all NexT config use **2 spaces indents**. + +If your content of config is put just directly after the config name, then a space is needed between the colon and the config content (i.e. `enable: true`) + +```yml +# Math Equations Render Support +math: + enable: false + + # Default(true) will load mathjax/katex script on demand + # That is it only render those page who has 'mathjax: true' in Front Matter. + # If you set it to false, it will load mathjax/katex srcipt EVERY PAGE. + per_page: true + + engine: mathjax + #engine: katex + + # hexo-rendering-pandoc (or hexo-renderer-kramed) needed to full MathJax support. + mathjax: + # For newMathJax CDN (cdnjs.cloudflare.com) with fallback to oldMathJax (cdn.mathjax.org). + cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML + # For direct link to MathJax.js with CloudFlare CDN (cdnjs.cloudflare.com). + #cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML + # For automatic detect latest version link to MathJax.js and get from Bootcdn. + #cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML + + # hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin) + # needed to full Katex support. + katex: + # Use Katex 0.7.1 as default + cdn: //cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css + # For whose visitors are mostly in China + #cdn: //cdn.bootcss.com/KaTeX/0.7.1/katex.min.css + # If you want to try the latest version of Katex, use one below instead + #cdn: //cdn.jsdelivr.net/katex/latest/katex.min.css +``` + +### enable + +`true` or `false`, default is `false`. + +`true` to turn on render of Math Equations, `false` to turn off it. + +### per_page + +`true` or `false`, default is `true`. + +This option is to control whether to render Math Equations every page. + +The behavior of default (`true`) is to render Math Equations **on demand**. + +It will only render those posts which have `mathjax: true` in their Front Matter. + +For example: + +```md + +--- +title: 'Will Render Math' +mathjax: true +--- +.... +``` + +```md + +--- +title: 'Not Render Math' +mathjax: false +--- +.... +``` + +```md + +--- +title: 'Not Render Math Either' +--- +.... +``` + +When you set it to `false`, the math will be rendered on **EVERY PAGE**. + +### cdn + +Both MathJax and Katex provide a config `cdn`, if you don't know what is `cdn`, **do not touch it**. + +Firstly, both MathJax and Katex use the [jsDelivr](https://www.jsdelivr.com/) as the default CDN. + +The reason that jsDelivr is chosen is because it is fast everywhere, and jsDelivr has the valid ICP license issued by the Chinese government, it can be accessed in China pretty well. + +And we also provide other optional CDNs, including the famous [CDNJS](https://cdnjs.com/) and the [Bootcss](http://www.bootcdn.cn/) which has the quite high access speed in China. + +For MathJax, we are currently using version 2.7.1. + +For Katex, due to the problem described above, we are now using version 0.7.1. + +If you want to try the other CDNs not included in the optional list, you must use the corresponding version. + +Particularly, if you are a Chinese blogger or most of your visits come from China, please note that **the CDNJS is blocked in some parts of China**, don't use it as your CDN. diff --git a/docs/UPDATE-FROM-5.1.X.md b/docs/UPDATE-FROM-5.1.X.md new file mode 100644 index 000000000..93ae14ec0 --- /dev/null +++ b/docs/UPDATE-FROM-5.1.X.md @@ -0,0 +1,19 @@ +

      Update from NexT v5.1.x

      + +There are no hard breaking changes between 5.1.x and 6.0.x versions. It's change major version to 6 because: + +1. Main repo was rebased from [iissnan's](https://github.com/iissnan/hexo-theme-next) profile to [theme-next](https://github.com/theme-next) organization. +2. Most libraries under the `next/source/lib` directory was moved out to [external repos under NexT organization](https://github.com/theme-next). +3. 3rd-party plugin [`hexo-wordcount`](https://github.com/willin/hexo-wordcount) was replaced by [`hexo-symbols-count-time`](https://github.com/theme-next/hexo-symbols-count-time) because `hexo-symbols-count-time` no have any external nodejs dependencies, no have [language filter](https://github.com/willin/hexo-wordcount/issues/7) which causes better performance on speed at site generation. + +So, i suggest to update from version 5 to version 6 in this way: + +1. You don't touch old `next` dir and just do some copies of NexT files:\ + 1.1. `config.yml` or `next.yml` (if you used [data-files](DATA-FILES.md)).\ + 1.2. Custom CSS styles what placed in `next/source/css/_custom/*` and `next/source/css/_variables/*` directories.\ + 1.3. Custom layout styles what placed in `next/layout/_custom/*`.\ + 1.4. Any another possible custom additions which can be finded by compare tools between repos. +2. Clone new v6.x repo to any another directory instead of `next`. For example, in `next-reloaded` directory: `git clone https://github.com/theme-next/hexo-theme-next themes/next-reloaded`. So, you don't touch your old NexT 5.1.x directory and can work with new `next-reloaded` dir. +3. Go to Hexo main config and set theme parameter: `theme: next-reloaded`. So, your `next-reloaded` directory must loading with your generation. If you may see any bugs or you simply not like this version, you anytime can switch for 5.1.x version back. + +And how to enable 3rd-party libraries see [here](https://github.com/theme-next/hexo-theme-next/blob/master/docs/INSTALLATION.md#plugins). diff --git a/docs/ru/DATA-FILES.md b/docs/ru/DATA-FILES.md new file mode 100644 index 000000000..a1788d74a --- /dev/null +++ b/docs/ru/DATA-FILES.md @@ -0,0 +1,61 @@ +

      Дата Файлы

      + +Обновление темы NexT через пулы проходит не слишком гладко. Часто происходит конфликтная ситуация при обновлении по команде `git pull`, хотя её и можно обойти, если смерджить настройки в файле конфигурации вручную. + + На данный момент, пользователи хранят одни настройки в корневом `_config.yml` (Hexo), а другие настройки в конфиге темы `_config.yml` (NexT). И всё вроде бы ничего, но имеются некоторые недостатки: +1. Конфигурация разделяется на две части. +2. Пользователи могут запутаться, в каком файле какие должны быть настройки. + +Во избежании проблемы, NexT использует преимущество Hexo [дата-файлов](https://hexo.io/docs/data-files.html). И т.к. дата-файлы были представлены в Hexo 3, необходимо обновиться до Hexo 3.0 (или выше) для использования этой возможности. + +Если же Вы предпочитаете Hexo 2.x, то можно использовать старый способ для конфигураций. NexT всё ещё совместим с Hexo 2.x (но возможны ошибки). + +

      Способ 1: Hexo-Путь

      + +Используя этот способ, вся конфигурация будет раположена в корневом конфиге hexo (`hexo/_config.yml`), благодаря чему нет необходимости изменять оригинальный конфиг темы (`next/_config.yml`) или создавать какие-либо новые файлы. Но в этом случае необходимо сохранять двойные отступы внутри `theme_config` параметра. + +Если в новых версиях появятся какие-то новые настройки, нужно просто скопировать эти настройки из оригинального `next/_config.yml` в редактируемый `hexo/_config.yml` и настроить по своему усмотрению. + +### Использование + +1. Проверяем на существование `hexo/source/_data/next.yml` файл (удаляем, если существует). +2. Копируем необходимые опции из конфига темы NexT `next/_config.yml` в `hexo/_config.yml`, затем\ + 2.1. Сдвигаем все опции вправо на 2 пробела (в Visual Studio Code: выделяем все строки, CTRL + ]).\ + 2.2. Добавляем `theme_config:` параметр перед всеми этими настройками. + +### Полезные ссылки + +* [Конфигурация Hexo](https://hexo.io/ru/docs/configuration.html) +* [Hexo Pull #757](https://github.com/hexojs/hexo/pull/757) + +

      Способ 2: NexT-Путь

      + +Используя этот способ, вся конфигурация будет храниться в одном файле (`source/_data/next.yml`), благодаря чему нет необходимости изменять оригинальный конфиг темы (`next/_config.yml`). +Но с этим способом могут не корректно обрабатываться все внешние библиотеки hexo при использовании их дополнительных опций (например, опции модуля `hexo-server` могут быть считаны только из стандартного конфига hexo). + +Если в новых версиях появятся какие-то новые настройки, нужно просто скопировать эти настройки из оригинального `next/_config.yml` во внешний `_data/next.yml` и настроить по своему усмотрению. + +### Использование + +1. Убеждаемся, что Hexo версии 3 (или выше). +2. Создаём файл под именем `next.yml` в корневой директории сайта — `hexo/source/_data` (создаём директорию `_data`, если отсутствует). + +

      И после этих шагов есть 2 варианта, нужно выбрать только 1 из них и продолжить следующие шаги.

      + +* **Вариант 1: `override: false` (по-умолчанию)**: + + 1. Проверяем опцию `override` в стандартном конфиге NexT'а, должно быть установлено в `false`.\ + В файле `next.yml` эта опция не должна быть вписана вовсе или вписана и установлена в `false`. + 2. Копируем настройки из конфига темы NexT (`_config.yml`) и из корневого конфига сайта (`_config.yml`) в файл `hexo/source/_data/next.yml`. + +* **Вариант 2: `override: true`**: + + 1. В файле `next.yml` ставим опцию `override` в `true`. + 2. Копируем **все** опции из оригинального конфига NexT'а `next/_config.yml` в `hexo/source/_data/next.yml`. + +3. Затем, в корневом конфиге сайта `hexo/_config.yml` необходимо установить опцию `theme: next` (и если требуется, `source_dir: source`). +4. Используем станадартные параметры для запускаь генерации или развёртывания (`hexo clean && hexo g -d && hexo s`). + +### Полезные ссылки + +* [NexT Issue #328](https://github.com/iissnan/hexo-theme-next/issues/328) diff --git a/docs/ru/INSTALLATION.md b/docs/ru/INSTALLATION.md new file mode 100644 index 000000000..5cf98afd8 --- /dev/null +++ b/docs/ru/INSTALLATION.md @@ -0,0 +1,120 @@ +

      Установка

      + +

      Шаг 1 → Идём в директорию Hexo

      + +Меняем каталог на **корневой hexo**. Там должны находиться `node_modules`, `source`, `themes` и другие папки: + ```sh + $ cd hexo + $ ls + _config.yml node_modules package.json public scaffolds source themes + ``` + +

      Шаг 2 → Скачиваем NexT

      + +

      Скачиваем тему с GitHub.
      +Имеются 3 способа как зделать это, нужно выбрать только 1 из них.

      + +### Способ 1: Скачиваем [последнюю версию релиза][releases-latest-url] + + В большинстве случаев **стабильна**. Рекомендуется для начинающих пользователей. + + * Установка с помощью [curl & tar & wget][curl-tar-wget-url]: + + ```sh + $ mkdir themes/next + $ curl -s https://api.github.com/repos/theme-next/hexo-theme-next/releases/latest | grep tarball_url | cut -d '"' -f 4 | wget -i - -O- | tar -zx -C themes/next --strip-components=1 + ``` + Этим способом Вы скачаете **только последнюю версию релиза** (без директории `.git` внутри).\ + Поэтому, в дальнейшем будет невозможно обновить эту версию через `git`.\ + Зато всегда можно использовать отдельную конфигурацию (т.е. [дата-файлы][docs-data-files-url]) и скачивать новую версию перезаписывая старую (или создать новый каталог и переопределить параметр `theme` в конфиге Hexo), без потери старой конфигурации. + +### Способ 2: Скачиваем [указанную версию релиза][releases-url] + + В редких случаях полезно, но не рекомендуется.\ + Необходимо указать версию. Замените `v6.0.0` на любую версию из [списка тэгов][tags-url]. + + * Вариант 1: Установка с помощью [curl & tar][curl-tar-url]: + + ```sh + $ mkdir themes/next + $ curl -L https://api.github.com/repos/theme-next/hexo-theme-next/tarball/v6.0.0 | tar -zxv -C themes/next --strip-components=1 + ``` + То же, что и описано выше в способе `curl & tar & wget`, но скачает **только конкретную версию**. + + * Вариант 2: Установка с помощью [git][git-url]: + + ```sh + $ git clone --branch v6.0.0 https://github.com/theme-next/hexo-theme-next themes/next + ``` + Этот вариант скачает **указанную версию релиза** (включая директорию `.git` внутри).\ + И в любой момент Вы можете переключиться на любую весию тэга, но с лимитом до указанной версии. + +### Способ 3: Скачиваем [последнюю мастер-ветку][download-latest-url] + + Иногда может быть **нестабильна**, но включает самые последние нововведения. Рекомендуется для продвинутых пользователей и для разработчиков. + + * Вариант 1: Установка с помощью [curl & tar][curl-tar-url]: + + ```sh + $ mkdir themes/next + $ curl -L https://api.github.com/repos/theme-next/hexo-theme-next/tarball | tar -zxv -C themes/next --strip-components=1 + ``` + То же, что и описано выше в варианте `curl & tar & wget`, но скачает **только последнюю мастер-ветку**.\ + В некоторых случаях полезно для разработчиков. + + * Вариант 2: Установка с помощью [git][git-url]: + + ```sh + $ git clone https://github.com/theme-next/hexo-theme-next themes/next + ``` + + Этот вариант скачает **весь репозиторий** (включая директорию `.git` внутри).\ + И в любой момент Вы можете [обновить текущую версию через git][update-with-git-url] и переключиться на любую версию тэга или на последнюю мастер или любую другую ветку.\ + В большинстве случаев полезно как для пользователей, так и для разработчиков. + + Смотрим список тэгов: + + ```sh + $ cd themes/next + $ git tag -l + … + v6.0.0 + v6.0.1 + v6.0.2 + ``` + + Например, Вы хотите переключиться на [версию релиза][tags-url] `v6.0.1`. Вводим следующую команду: + + ```sh + $ git checkout tags/v6.0.1 + Note: checking out 'tags/v6.0.1'. + … + HEAD is now at da9cdd2... Release v6.0.1 + ``` + + И если вы хотите переключиться обратно на [мастер-ветку][commits-url], вводим следующее: + + ```sh + $ git checkout master + ``` + +

      Шаг 3 → Конфигурируем

      + +Устанавливаем параметр темы в конфиге `_config.yml` **корневой директории hexo**: + +```yml +theme: next +``` + +[download-latest-url]: https://github.com/theme-next/hexo-theme-next/archive/master.zip +[releases-latest-url]: https://github.com/theme-next/hexo-theme-next/releases/latest +[releases-url]: https://github.com/theme-next/hexo-theme-next/releases +[tags-url]: https://github.com/theme-next/hexo-theme-next/tags +[commits-url]: https://github.com/theme-next/hexo-theme-next/commits/master + +[git-url]: http://lmgtfy.com/?q=linux+git+install +[curl-tar-url]: http://lmgtfy.com/?q=linux+curl+tar+install +[curl-tar-wget-url]: http://lmgtfy.com/?q=linux+curl+tar+wget+install + +[update-with-git-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/ru/README.md#%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0 +[docs-data-files-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/ru/DATA-FILES.md diff --git a/docs/ru/README.md b/docs/ru/README.md new file mode 100644 index 000000000..9b11d9628 --- /dev/null +++ b/docs/ru/README.md @@ -0,0 +1,121 @@ +
      Язык: :us: +:cn: +:ru:
      + +#
      e x T
      + +

      «NexT» — элегантная высококачественная тема под Hexo. Сделана с нуля, с любовью.

      + +[![gitter-image]][gitter-url] +[![riot-image]][riot-url] +[![t-chat-image]][t-chat-url] +[![t-news-image]][t-news-url] +[![lang-image]][lang-url] +[![travis-image]][travis-url] +[![rel-image]][releases-url] +[![hexo-image]][hexo-url] +[![lic-image]][lic-url] + +## Демо + +* :heart_decoration: Muse тема: [LEAFERx](https://leaferx.online) | [XiaMo](https://notes.wanghao.work) | [OAwan](https://oawan.me) +* :six_pointed_star: Mist тема: [Jeff](https://blog.zzbd.org) | [uchuhimo](http://uchuhimo.me) | [xirong](http://www.ixirong.com) +* :pisces: Pisces тема: [Vi](http://notes.iissnan.com) | [Acris](https://acris.me) | [Rainy](https://rainylog.com) +* :gemini: Gemini тема: [Ivan.Nginx](https://almostover.ru) | [Raincal](https://raincal.com) | [Dandy](https://dandyxu.me) + +Больше примеров «NexT» [здесь](https://github.com/iissnan/hexo-theme-next/issues/119). + +## Установка + +Простейший вариант установки — склонировать весь репозиторий: + + ```sh + $ cd hexo + $ git clone https://github.com/theme-next/hexo-theme-next themes/next + ``` + +Или предлагаю почитать [детальные инструкции по установке][docs-installation-url], если вариант выше не устраивает. + +## Плагины + +В конфиге NexT'а теперь можно найти зависимости на каждый модуль, который был вынесен во внешние репозитории, которые могут быть найдены по [ссылке основной организации](https://github.com/theme-next). + +Например, Вы хотите использовать `fancybox` для своего сайта. Открываем конфиг NexT'а и находим: + +```yml +# Fancybox +# Dependencies: https://github.com/theme-next/theme-next-fancybox +fancybox: false +``` + +Затем включаем параметр `fancybox` и переходим по ссылке «Dependencies» с дальнейшеми инструкциями по установке этого модуля. + +## Обновление + +Можно обновить до последней мастер-ветки следующей командой: + +```sh +$ cd themes/next +$ git pull +``` + +А если всплывают ошибки во время обновления (что-то наподобии **«Commit your changes or stash them before you can merge»**), рекомендуется ознакомиться с особенностью хранения [дата-файлов в Hexo][docs-data-files-url].\ +Как бы то ни было, можно обойти ошибки при обновлении если «Закомитить», «Стэшнуть» или «Откатить» локальные изменения. Смотрим [здесь](https://stackoverflow.com/a/15745424/5861495) как это сделать. + +**Если нужно обновиться с версии v5.1.x на v6.0.x, читаем [здесь][docs-update-5-1-x-url].** + +## Известные баги + +Для тех, кто столкнулся с ошибкой **«[Error: Cannot find module 'hexo-util'](https://github.com/iissnan/hexo-theme-next/issues/1490)»**, следует проверить версию NPM. + +* `> 3`: Всё равно не работает? Удалите директорию `node_modules` и переустановите с помощью `npm install`. +* `< 3`: Добавьте `hexo-util` принудительно командой `npm install --save-dev hexo-util` к основным пакетам с Hexo. + +## Содействие + +Приветсвуется любое содействие, не стесняйтесь сообщать «Баги», брать «Форки» и вливать «Пулы». + +## Сторонние приложения + +* :triangular_flag_on_post: HexoEditor + +[browser-image]: https://img.shields.io/badge/browser-%20chrome%20%7C%20firefox%20%7C%20opera%20%7C%20safari%20%7C%20ie%20%3E%3D%209-lightgrey.svg +[browser-url]: https://www.browserstack.com + +[lang-image]: https://d322cqt584bo4o.cloudfront.net/theme-next/localized.svg "Добавить или улучшить перевод за несколько секунд!" +[lang-url]: https://crwd.in/theme-next + +[gitter-image]: https://img.shields.io/badge/gitter-chat-orange.svg "Вступить в нашу комнату Gitter'а" +[gitter-url]: https://gitter.im/theme-next + +[riot-image]: https://img.shields.io/badge/riot-chat-DCAB08.svg "Вступить в нашу комнату Riot'а" +[riot-url]: https://riot.im/app/#/room/#NexT:matrix.org + +[t-chat-image]: https://img.shields.io/badge/telegram-chat-BAB210.svg "Вступить в нашу группу Telegram'а" +[t-chat-url]: https://t.me/theme_next + +[t-news-image]: https://img.shields.io/badge/telegram-news-98B919.svg "Подписаться на канал Telegram'а с новостями" +[t-news-url]: https://t.me/theme_next_news + +[travis-image]: https://travis-ci.org/theme-next/hexo-theme-next.svg?branch=master +[travis-url]: https://travis-ci.org/theme-next/hexo-theme-next?branch=master "Travis CI [Linux]" + +[hexo-image]: https://img.shields.io/badge/hexo-%3E%3D%203.5.0-blue.svg +[hexo-url]: http://hexo.io + +[lic-image]: https://img.shields.io/badge/license-%20AGPL-blue.svg +[lic-url]: https://github.com/theme-next/hexo-theme-next/blob/master/LICENSE.md + + +[rel-image]: https://badge.fury.io/gh/theme-next%2Fhexo-theme-next.svg + + +[download-latest-url]: https://github.com/theme-next/hexo-theme-next/archive/master.zip +[releases-latest-url]: https://github.com/theme-next/hexo-theme-next/releases/latest +[releases-url]: https://github.com/theme-next/hexo-theme-next/releases +[tags-url]: https://github.com/theme-next/hexo-theme-next/tags +[commits-url]: https://github.com/theme-next/hexo-theme-next/commits/master + +[docs-installation-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/ru/INSTALLATION.md +[docs-data-files-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/ru/DATA-FILES.md +[docs-update-5-1-x-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/ru/UPDATE-FROM-5.1.X.md diff --git a/docs/ru/UPDATE-FROM-5.1.X.md b/docs/ru/UPDATE-FROM-5.1.X.md new file mode 100644 index 000000000..499302651 --- /dev/null +++ b/docs/ru/UPDATE-FROM-5.1.X.md @@ -0,0 +1,19 @@ +

      Обновление из-под NexT v5.1.x

      + +Между версиями 5.1.x и 6.0.x нет жёстких изменений. Версия сменилась на мажорную 6 по следующим причинам: + +1. Основной репозиторий перебазировался из профиля [iissnan'а](https://github.com/iissnan/hexo-theme-next) в [theme-next](https://github.com/theme-next) организацию. +2. Большинство библиотек в `next/source/lib` директории были вынесены в [отдельные репозитории под организацией NexT](https://github.com/theme-next). +3. 3rd-party плагин [`hexo-wordcount`](https://github.com/willin/hexo-wordcount) был заменён на [`hexo-symbols-count-time`](https://github.com/theme-next/hexo-symbols-count-time) т.к. `hexo-symbols-count-time` не имеет никаких сторонних nodejs зависимостей, не имеет [языкового фильтра](https://github.com/willin/hexo-wordcount/issues/7) что обеспечивает улучшенную производительность при генерации сайта. + +Поэтому, я предлагаю обновиться с версии 5 на версию 6 следующим способом: + +1. Вы не трогаете старую директорию `next`, а всего-лишь делаете резервные копии файлов NexT:\ + 1.1. `config.yml` или `next.yml` (если Вы использовали [дата-файлы](DATA-FILES.md)).\ + 1.2. Пользовательских CSS-стилей, которые расположены в `next/source/css/_custom/*` и `next/source/css/_variables/*` директориях.\ + 1.3. Пользовательских layout-стилей, которые расположены в `next/layout/_custom/*`.\ + 1.4. Любые другие всевозможные пользовательские изменения, которые могут быть найдены любым инструментом для сравнения файлов. +2. Склонировать новый v6.x репозиторий в любую другую директорию, отличную от `next`. Например, в директорию `next-reloaded`: `git clone https://github.com/theme-next/hexo-theme-next themes/next-reloaded`. Итак, нет необходимости трогать старую NexT 5.1.x директорию и можно работать с новой `next-reloaded`. +3. Открываем главную Hexo-конфигурацию и устанавливаем параметр темы: `theme: next-reloaded`. Так Ваша директория `next-reloaded` должна грузиться при генерации. Если Вы будете наблюдать какие-либо баги или Вам попросту не нравится эта новая версия, в любой момент Вы можете использовать старую 5.1.x. + +А как активировать 3rd-party библиотеки, смотрим здесь [здесь](https://github.com/theme-next/hexo-theme-next/blob/master/docs/ru/INSTALLATION.md#%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D1%8B). diff --git a/docs/zh-CN/ALGOLIA-SEARCH.md b/docs/zh-CN/ALGOLIA-SEARCH.md new file mode 100644 index 000000000..e32ec4c47 --- /dev/null +++ b/docs/zh-CN/ALGOLIA-SEARCH.md @@ -0,0 +1,84 @@ +

      Algolia 搜索

      + +NexT 内部提供 Algolia 的搜索功能,要使用此功能请确保所使用的 NexT 版本在 `v5.1.0` 之后。需要注意的是,仅仅将 `next/_config.yml` 中 `algolia_search` 的 `enable` 打开**并不能让你使用 Algolia 搜索**,你还需要**使用对应的 Hexo-Algolia 插件** 才能真正在博客页面中使用 Algolia 搜索。按照下面介绍的步骤操作即可完成 Algolia 搜索的安装。 + +1. 前往 [Algolia 注册页面](https://www.algolia.com/),注册一个新账户。 可以使用 GitHub 或者 Google 账户直接登录,注册后的 14 天内拥有所有功能(包括收费类别的)。之后若未续费会自动降级为免费账户,免费账户 总共有 10,000 条记录,每月有 100,000 的可以操作数。注册完成后,创建一个新的 Index,这个 Index 将在后面使用。 + + ![](http://theme-next.iissnan.com/uploads/algolia/algolia-step-2.png) + +1. Index 创建完成后,此时这个 Index 里未包含任何数据。接下来需要安装 [Hexo Algolia](https://github.com/oncletom/hexo-algolia) 扩展,这个扩展的功能是搜集站点的内容并通过 API 发送给 Algolia。前往站点根目录,执行命令安装: + + ``` + $ cd hexo + $ npm install --save hexo-algolia + ``` + +1. 在 `API Keys` 页面找到需要使用的一些配置的值,包括 `ApplicationID` 和 `Search-Only API Key`。注意,`Admin API Key` 需要保密保存,不要外泄。 + + ![](https://user-images.githubusercontent.com/8521181/35479066-64e35aec-0428-11e8-91f9-1ec3afa45c5c.png) + +1. 在 `API Keys` 页面,点击 `ALL API KEYS` 找到新建 INDEX 对应的 key,**编辑权限**,在弹出框中找到 ACL ,**勾选 Add records、 Delete records、List indices、Delete index 权限**,点击 `update` 更新。 + + ![](https://user-images.githubusercontent.com/8521181/35479064-611aa0b4-0428-11e8-85a1-cfb449b486ec.png) + ![](https://user-images.githubusercontent.com/8521181/35479084-d4f7ac02-0428-11e8-95a6-c4e3b1bef47b.png) + +1. 编辑 `站点配置文件`,新增以下配置,除了 `chunkSize` 字段,替换成在 Algolia 获取到的值: + + ```yml + algolia: + applicationID: 'applicationID' + apiKey: 'apiKey' + indexName: 'indexName' + chunkSize: 5000 + ``` + +1. 当配置完成,在站点根目录下执行一下命令来更新上传 Index。请注意观察命令的输出。 + + ``` + $ export HEXO_ALGOLIA_INDEXING_KEY=Search-Only API key # 使用 Git Bash + # set HEXO_ALGOLIA_INDEXING_KEY=Search-Only API key # 使用 Windows CMD 命令行 + $ hexo clean + $ hexo algolia + ``` + + ![](http://theme-next.iissnan.com/uploads/algolia/algolia-step-4.png) + +1. 切换到 NexT 目录,并安装 algolia-instant-search 到 `source/lib` 目录。 + + ``` + $ cd themes/next + $ git clone https://github.com/theme-next/theme-next-algolia-instant-search source/lib/algolia-instant-search + ``` + + 如果你想直接使用 CDN 设置 Algolia Search,则需要在`主题配置文件`中添加 vendors 字段: + + ```yml + vendors: + ... + # Internal version: 1 + # https://www.algolia.com + algolia_instant_js: https://cdn.jsdelivr.net/npm/instantsearch.js@2.4.1/dist/instantsearch.js + algolia_instant_css: https://cdn.jsdelivr.net/npm/instantsearch.js@2.4.1/dist/instantsearch.min.css + ... + ``` + +1. 更改`主题配置文件`,找到 Algolia Search 配置部分,将 `enable` 改为 `true`。同时你需要**关闭**其他搜索插件,如 Local Search 等。你也可以根据需要调整 `labels` 中的文本: + + ```yml + # Algolia Search + algolia_search: + enable: true + hits: + per_page: 10 + labels: + input_placeholder: Search for Posts + hits_empty: "We didn't find any results for the search: ${query}" + hits_stats: "${hits} results found in ${time} ms" + ``` + +

      已知的问题

      + +1. 考虑到 Algolia 免费账户的限制,目前 [Hexo-Algolia](https://github.com/oncletom/hexo-algolia) 插件最新版本去掉了正文索引功能。 +1. [Hexo-Algoliasearch](https://github.com/LouisBarranqueiro/hexo-algoliasearch) 插件提供了正文索引功能,不过需要替换 NEXT 主题中的关键字。对于免费账户,`Record Too Big` 的问题同样存在。 + - 替换 `source/js/src/algolia-search.js` 中所有的 `applicationID` 为 `appId` + - 替换 `layout/_partials/head/head.swig` 中所有的 `applicationID` 为 `appId` diff --git a/docs/zh-CN/CODE_OF_CONDUCT.md b/docs/zh-CN/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..a3518b6ce --- /dev/null +++ b/docs/zh-CN/CODE_OF_CONDUCT.md @@ -0,0 +1,99 @@ +
      Language: :us: +:cn: +:ru:
      + +#
      e x T
      + +[NexT](https://github.com/theme-next/hexo-theme-next) 是一个优雅而强大的 [Hexo](https://hexo.io/)主题。在这里,您可以构建一个托管在 [GitHub Pages](https://pages.github.com/) 上的静态博客,分享您的生活,并与新朋友进行交流。 + +参与者公约用来约束在 [NexT](https://github.com/theme-next/hexo-theme-next) 社区中代码更新、问题交流、请求合并等行为。我们期望所有用户相互尊重,礼貌待人。任何违反这些规则的人都将不会被审核,并会在发现后立即被阻止和驱逐。 + +## 目录 + +- [我们的保证](#our-pledge) +- [我们的责任](#our-responsibilities) +- [我们的标准](#our-standards) +- [使用范围](#scope) +- [强制执行](#enforcement) +- [联系项目维护者](#contacting-maintainers) +- [来源](#attribution) + + +## 我们的保证 + +作为此项目的贡献者和维护者,我们承诺尊重所有做出贡献的用户,这些贡献包括了报告问题、发布功能请求、更新文档、提交合并请求以及其他活动。 + +为了促进一个开放透明且友好的环境,我们作为贡献者和维护者保证:无论年龄、种族、民族、性别认同和表达(方式)、体型、身体健全与否、经验水平、国籍、个人表现、宗教或性别取向,参与者在我们项目和社区中都免于骚扰。 + + +## 我们的责任 + +项目维护者有责任为「可接受的行为」标准做出诠释,有权利及责任去删除、编辑、拒绝与本行为标准有所违背的评论(comments)、提交(commits)、代码、wiki 编辑、问题(issues)和其他贡献,以及项目维护者可暂时或永久性的禁止任何他们认为有不适当、威胁、冒犯、有害行为的贡献者。 + + +## 我们的标准 + +作为 GitHub 上的一个项目,本项目受到 [GitHub 社区准则](https://help.github.com/articles/github-community-guidelines/)的约束。 此外,作为 npm 托管的项目,[npm 公司的行为准则](https://www.npmjs.com/policies/conduct)也涵盖了本项目。 + +有助于创造正面环境的行为包括但不限于: + +* 使用友好和包容性语言 +* 尊重不同的观点和经历 +* 耐心地接受建设性批评 +* 关注对社区最有利的事情 +* 友善对待其他社区成员 + +身为参与者不能接受的行为包括但不限于: + +* 使用与性有关的言语或是图像,以及不受欢迎的性骚扰 +* 捣乱/煽动/造谣的行为或进行侮辱/贬损的评论,人身攻击及政治攻击 +* 公开或私下的骚扰 +* 未经许可地发布他人的个人资料,例如住址或是电子地址 +* 其他可以被合理地认定为不恰当或者违反职业操守的行为 + + +## 使用范围 + +当一个人代表该项目或是其社区时,本行为标准适用于其项目社区和公共社区。 + +根据某人在本社区范围以外发生的违规情况,项目维护者可以认为其不受欢迎,并采取适当措施来保证所有成员的安全性和舒适性。 + + +## 强制执行 + +如果您看到违反行为准则的行为,请按以下步骤操作: + +1. 让这个人知道他所做的并不合适,并要求他停止或编辑他们的提交信息。该人应立即停止行为并纠正问题。 +2. 如果该人没有纠正其行为,或者您不方便与其沟通,请[联系项目维护者](#contacting-maintainers)。上报时,请尽可能多的提供详细信息,链接,截图,上下文或可用于更好地理解和解决情况的其他信息。 +3. 收到上报信息后,项目维护者会查看问题,并采取进一步的措施。 + +一旦项目维护者参与其中,他们将遵循以下一系列步骤,并尽力保护项目成员的利益。任何维护团队认为有必要且适合的所有投诉都将进行审查及调查,并做出相对应的回应。项目小组有对事件回报者有保密的义务。具体执行的方针近一步细节可能会单独公布。 + +以下是项目维护者根据需要采取的进一步执法步骤: + +1. 再次要求停止违规行为。 +2. 如果违规者还是没有回应,将会受到正式的警告,并收到项目维护者的移除或修改消息。同时,相关的问题或合并请求将会被锁定。 +3. 如果警告后违规行为继续出现,违规者将会被禁言 24 小时。 +4. 如果禁言后违规行为继续出现,违规者将会被处罚长期(6-12个月)禁言。 + +除此之外,项目维护者可以根据需要删除任何违规的消息,图片,贡献等。如果违规行为被认为是对社区成员的严重或直接威胁,包括任何置社区成员于风险的威胁、身体或言语攻击,项目维护者有充分权利自行决定跳过上述任何步骤。 + +没有切实地遵守或是执行本行为标准的项目维护人员,可能会因项目领导人或是其他成员的决定,暂时或是永久地取消其参与资格。 + + +## 联系项目维护者 + +您可以通过以下任何方法与维护人员联系 + +* 电子邮件: + * [support@theme-next.org](mailto:support@theme-next.org) + +* 即时通信: + * [Gitter](https://gitter.im/theme-next) + * [Riot](https://riot.im/app/#/room/#NexT:matrix.org) + * [Telegram](https://t.me/joinchat/GUNHXA-vZkgSMuimL1VmMw) + + +## 来源 + +本行为标准改编自[Contributor Covenant](https://www.contributor-covenant.org/) 和 [WeAllJS Code of Conduct](https://wealljs.org/code-of-conduct)。 diff --git a/docs/zh-CN/CONTRIBUTING.md b/docs/zh-CN/CONTRIBUTING.md new file mode 100644 index 000000000..4025fea89 --- /dev/null +++ b/docs/zh-CN/CONTRIBUTING.md @@ -0,0 +1,144 @@ +
      语言::us: +:cn: +:ru:
      + +#
      e x T
      + +首先,非常感谢大家抽出宝贵时间来让我们的 NexT 主题越变越好。在这里,我们介绍一下 [NexT 主题及其子模块](https://github.com/theme-next)的开源贡献指南。不过,我们希望大家不要局限于此,更欢迎大家随时进行补充。 + +## 目录 + +[如何为 Next 做贡献](#how-can-i-contribute) + + * [你需要了解的](#before-submitting-an-issue) + * [反馈 Bug](#reporting-bugs) + * [提交功能需求](#suggesting-enhancements) + * [提交合并请求](#submitting-a-pull-request) + * [发布版本](#creating-releases) + +[规范](#guides) + + * [行为规范](#coding-rules) + * [编码规范](#coding-standards) + * [提交信息规范](#commit-messages-rules) + + +## 如何为 Next 做贡献 + +目前 Next 主题已经从 [iissnan](https://github.com/iissnan/hexo-theme-next) 的个人仓库移动到了 [Theme-Next](https://github.com/theme-next) 组织仓库中,并升级到 V6 版本。在 V6+ 版本中,`next/source/lib` 目录下的第三方依赖库将独立放置在 [Theme-Next](https://github.com/theme-next) 组织仓库中。在大多数情况下,NexT V5 版本仍然能够正常运行,但是如果你想获得更多的功能和帮助,还是建议您[升级到 NexT V6+ 版本](https://github.com/theme-next/hexo-theme-next/blob/master/docs/UPDATE-FROM-5.1.X.md),并移步 [Theme-Next](https://github.com/theme-next/hexo-theme-next) 仓库。 + + +### 你需要了解的 + +如果你在使用过程中遇到了问题,你可以查阅 FAQs(建设中) 或者 [NexT 帮助文档](https://theme-next.org/docs/)(建设中)。另外,你也可以通过[这里](https://github.com/theme-next/hexo-theme-next/search?q=&type=Issues&utf8=%E2%9C%93)进行大致检索,有些问题已经得到解答,你可以自行解决。对于没有解决的 Issue,你也可以继续提问。 + +如果你在使用过程中发现了 Bug,请再次确认 Bug 在[最新发布版本](https://github.com/theme-next/hexo-theme-next/releases/latest)中是否重现。如果 Bug 重现,欢迎你到我们的 [Theme-NexT 仓库](https://github.com/theme-next/hexo-theme-next)中[反馈 Bug ](#reporting-bugs) 和[提交功能需求](#suggesting-enhancements),也更期待您[提交合并请求](#submitting-a-pull-request) + + +### 反馈 Bug + +反馈 Bug 前,请再次确认您已经查看了[你需要了解的](#before-submitting-an-issue)内容,避免提交重复的 Issue。确定相关仓库后,创建 Issue 并按照[模板](../../.github/ISSUE_TEMPLATE.md)尽可能的详细填写相关信息。 + +请认真遵守如下指南,这样我们才能更好地理解问题,重现问题和解决问题。 + +* 在标题中清晰准确地描述你的问题。 +* 参照如下问题尽可能多的提供信息: + * Bug 是否能够重现?是一直出现还是偶尔出现? + * Bug 是从什么时候开始发生的? + * 如果 Bug 突然发生,使用[旧版本主题](https://github.com/theme-next/hexo-theme-next/releases)是否能够重现 Bug?又是从哪个版本开始出现 Bug? + * 你所使用 Node,Hexo 以及 Next 的版本号多少?你可以运行 `node -v` 和 `hexo version` 获取版本号,或者查看文件 `package.json` 的内容。 + * 你使用了哪些插件包?查看文件 `package.json` 的内容即可获取。 +* 一步步详细你是如何重现 Bug 的,做了什么,使用了哪些功能等等。如果你需要展示代码段,请使用 [Markdown 代码块](https://help.github.com/articles/creating-and-highlighting-code-blocks/) 或 [Github 预览链接](https://help.github.com/articles/creating-a-permanent-link-to-a-code-snippet/) 或 [Gist 链接](https://gist.github.com/)。 +* 提供 Bug 的样例,如图像文件、在线演示网址等等。 +* 详细描述通过上述重现过程出现的问题。 +* 详细描述你期待的结果。 + + +### 提交功能需求 + +提交功能需求前,请再次确认您已经查看了[你需要了解的](#before-submitting-an-issue)内容,避免提交重复的 Issue。确定相关仓库后,创建 Issue 并按照[模板](../../.github/ISSUE_TEMPLATE.md)尽可能的详细填写相关信息。 + +请认真遵守如下指南,这样我们才能更好地理解和开发功能需求:pencil:: + +* 在标题中清晰准确地描述你的功能需求。 +* 详细描述目前所具有的功能和你所期待的功能,并解释为什么需要该功能。 +* 提供功能需求的样例,如图像文件、在线演示网址等等。 + + +### 提交合并请求 + +提交合并请求前,请再次确认您已经查看了[你需要了解的](#before-submitting-an-issue)内容,避免提交重复的合并请求。确定相关仓库后,创建合并请求。更多详细操作过程可以查看[帮助文档](https://help.github.com/articles/creating-a-pull-request/)。 + +1. 进入 [hexo-theme-next](https://github.com/theme-next/hexo-theme-next) 源仓库,点击`Fork`。 +2. 进入到已经`Fork`的个人仓库(`https://github.com/username/hexo-theme-next`),点击 **Clone or download** 并复制该仓库地址。选择本地文件夹,并打开 Git Bash ,输入如下命令并回车,即可完成仓库克隆。 + ```bash + $ git clone git@github.com:username/hexo-theme-next.git + ``` +3. 进入 `hexo-theme-next` 本地文件夹,并创建分支。 + ```bash + $ cd hexo-theme-next + $ git checkout -b patchname + ``` +4. 本地修改并测试,推送分支。 + ```bash + $ git add . + $ git commit -m "add commit messamge" + $ git push origin patchname + ``` +5. 进入 `fork` 后的仓库,切换到新提交的 `patchname` 分支,点击 `patchname` 分支右侧的 **New pull request** 。在 PR 对比页面,正确选择你需要发起合并请求的分支,然后点击 **Create pull request** ,建立一个新的合并申请并描述变动。 + +请认真遵守如下指南,这样我们才能更好地理解你的合并请求: + +* 创建合并请求时,请遵守[编码规范](#coding-rules)和[提交信息规范](#commit-messages-rules)。 +* 在标题中清晰准确地描述你的合并请求,不要加入 Issue 编号。 +* 按照[模板](../../.github/PULL_REQUEST_TEMPLATE.md)尽可能的详细填写相关信息。 +* 合并请求需要在所有主题样式中测试通过,并提供所表现功能的样例,如图像文件、在线演示网址等等。 + + +### 发布版本 + +版本发布是将项目发布给用户的一种很好的方式。 + +1. 进入 GitHub 项目主页,点击 **Releases** 和 **Draft a new release**。 +2. 输入你需要发布的版本号。版本控制是基于 [Git tags](https://git-scm.com/book/en/Git-Basics-Tagging) 工作的,建议按照 [About Major and Minor NexT versions](https://github.com/theme-next/hexo-theme-next/issues/187) 确定版本号。 +3. 确定你需要发布的分支。除非发布测试版本,通常情况下选择 `master` 分支。 +4. 输入发布版本的标题和说明。 + - 标题为版本号。 + - 所有内容更改的类型包括了 **Breaking Changes**, **Updates**, **Features** 和 **Bugfixes**。在描述 Breaking Changes 时,使用二级标题分别陈述,描述其他类型时,使用项目列表陈述。 + - 使用被动语态,省略主语。 + - 所有的变化都需要记录在版本说明中。对于没有使用 PR 的更改,需要添加相应的 commit 编号。如果使用了 PR 进行合并修改,则直接添加相应的 PR 编号即可。 +5. 如果您希望随版本一起发布二进制文件(如编译的程序),请在上传二进制文件对话框中手动拖放或选择文件。 +6. 如果版本不稳定,请选择 **This is a pre-release**,以通知用户它尚未完全准备好。如果您准备公布您的版本,请点击 **Publish release**。否则,请单击 **Save draft** 以稍后处理。 + + +## 规范 + + +### 行为规范 + +为了保证本项目的顺利运作,所有参与人都需要遵守[行为规范](CODE_OF_CONDUCT.md)。 + + +### 编码规范 + +未完待续。 + + +### 提交信息规范 + +我们对项目的 git 提交信息格式进行统一格式约定,每条提交信息由 `type`+`subject` 组成,这将提升项目日志的可读性。 + +- `type` 用于表述此次提交信息的意义,首写字母大写,包括但不局限于如下类型: + * `Build`:基础构建系统或依赖库的变化 + * `Ci`:CI 构建系统及其脚本变化 + * `Docs`:文档内容变化 + * `Feat`:新功能 + * `Fix`:Bug 修复 + * `Perf`:性能优化 + * `Refactor`:重构(即不是新增功能,也不是修改 Bug 的代码变动) + * `Style`:格式(不影响代码运行的变动) + * `Revert`:代码回滚 + * `Release`:版本发布 +- `subject` 用于简要描述修改变更的内容,如 `Update code highlighting in readme.md`。 + * 句尾不要使用符号。 + * 使用现在时、祈使句语气。 diff --git a/docs/zh-CN/DATA-FILES.md b/docs/zh-CN/DATA-FILES.md new file mode 100644 index 000000000..624931bb6 --- /dev/null +++ b/docs/zh-CN/DATA-FILES.md @@ -0,0 +1,61 @@ +

      数据文件

      + +目前,通过 pull 或下载新的 release 版本来更新 NexT 主题的体验并不平滑。当用户使用 `git pull` 更新 NexT 主题时经常需要解决冲突问题,而在手动下载 release 版本时也经常需要手动合并配置。 + +现在来说,NexT 推荐用户存储部分配置在站点的 `_config.yml` 中,而另一部分在主题的 `_config.yml` 中。这一方式固然可用,但也有一些缺点: +1. 配置项被分裂为两部分; +2. 用户难以弄清何处存放配置选项。 + +为了解决这一问题,NexT 将利用 Hexo 的[数据文件](https://hexo.io/docs/data-files.html)特性。因为数据文件是在 Hexo 3 中被引入,所以你需要更新至 Hexo 3.0 以后的版本来使用这一特性。 + +如果你仍然希望使用 Hexo 2.x,你依旧可以按老的方式进行配置。NexT 仍然兼容 Hexo 2.x(但可能会出现错误)。 + +

      选择 1:Hexo 方式

      + +使用这一方式,你的全部配置都将置于 hexo 主要配置文件中(`hexo/_config.yml`),并且不需要修改 `next/_config.yml`,或者创建什么其他的文件。但是所有的主题选项必须放置在 `theme_config` 后,并全部增加两个空格的缩进。 + +如果在新的 release 中出现了任何新的选项,那么你只需要从 `next/_config.yml` 中将他们复制到 `hexo/_config.yml` 中并设置它们的值为你想要的选项。 + +### 用法 + +1. 请确认不存在 `hexo/source/_data/next.yml` 文件(如果已存在,请删除) +2. 从主题的 `next/_config.yml` 文件中复制你需要的 NexT 配置项到 `hexo/_config.yml` 中,然后\ + 2.1. 所有这些配置项右移两个空格(在 Visual Studio Code 中:选中这些文字,CTRL + ])。\ + 2.2. 在这些参数最上方添加一行 `theme_config:`。 + +### 相关链接 + +* [Hexo 配置](https://hexo.io/zh-cn/docs/configuration.html) +* [Hexo Pull #757](https://github.com/hexojs/hexo/pull/757) + +

      选择 2: NexT 方式

      + +使用这一方式,你现在可以将你的全部配置置于同一位置(`source/_data/next.yml`),并且不需要修改 `next/_config.yml`。 +但是可能无法让所有 Hexo 外部库都准确处理它们的附加选项(举个例子,`hexo-server` 模块只会从 Hexo 默认配置文件中读取选项)。 + +如果在新的 release 中出现了任何新的选项,那么你只需要从 `next/_config.yml` 中将他们复制到 `source/_data/next.yml` 中并设置它们的值为你想要的选项。 + +### 用法 + +1. 请确认你的 Hexo 版本为 3.0 或更高。 +2. 在你站点的 `hexo/source/_data` 目录创建一个 `next.yml` 文件(如果 `_data` 目录不存在,请创建之)。 + +

      以上步骤之后有 两种选择,请任选其一然后继续后面的步骤

      + +* **选择 1:`override: false`(默认)**: + + 1. 检查默认 NexT 配置中的 `override` 选项,必须设置为 `false`。\ + 在 `next.yml` 文件中,也要设置为 `false`,或者不定义此选项。 + 2. 从站点的 `_config.yml` 与主题的 `_config.yml` 中复制你需要的选项到 `hexo/source/_data/next.yml` 中。 + +* **选择 2:`override: true`**: + + 1. 在 `next.yml` 中设置 `override` 选项为 `true`。 + 2. 从 `next/_config.yml` 配置文件中复制**所有**的 NexT 主题选项到 `hexo/source/_data/next.yml` 中。 + +3. 然后,在站点的 `hexo/_config.yml`中需要定义 `theme: next` 选项(如果需要的话,`source_dir: source`)。 +4. 使用标准参数来启动服务器,生成或部署(`hexo clean && hexo g -d && hexo s`)。 + +### 相关链接 + +* [NexT Issue #328](https://github.com/iissnan/hexo-theme-next/issues/328) diff --git a/docs/zh-CN/INSTALLATION.md b/docs/zh-CN/INSTALLATION.md new file mode 100644 index 000000000..7ea4b8808 --- /dev/null +++ b/docs/zh-CN/INSTALLATION.md @@ -0,0 +1,120 @@ +

      安装

      + +

      步骤 1 → 进入 Hexo 目录

      + +进入 **hexo 根**目录。这一目录中应当有 `node_modules`、`source`、`themes` 等若干子目录: + ```sh + $ cd hexo + $ ls + _config.yml node_modules package.json public scaffolds source themes + ``` + +

      步骤 2 → 获取 NexT

      + +

      从 GitHub 下载主题。
      +为了下载这一主题,共有 3 种选项可选。你需要选择其中唯一一个方式

      + +### 选项 1:下载[最新 release 版本][releases-latest-url] + + 通常情况下请选择 **stable** 版本。推荐不熟悉的用户按此方式进行。 + + * 使用 [curl、tar 和 wget][curl-tar-wget-url] 安装: + + ```sh + $ mkdir themes/next + $ curl -s https://api.github.com/repos/theme-next/hexo-theme-next/releases/latest | grep tarball_url | cut -d '"' -f 4 | wget -i - -O- | tar -zx -C themes/next --strip-components=1 + ``` + 这种方式将**仅提供最新的 release 版本**(其中不附带 `.git` 目录)。\ + 因此,将来你将不可能通过 `git` 更新这一方式安装的主题。\ + 取而代之的,为了能不丢失你的自定义配置,你可以使用独立的配置文件(例如 [数据文件][docs-data-files-url])并下载最新版本到旧版本的目录中(或者下载到新的主题目录中并修改 Hexo 配置中的主题名)。 + +### 选项 2:下载 [tag 指向的 release 版本][releases-url] + + 在少数情况下将有所帮助,但这并非推荐方式。\ + 你必须指定一个版本:使用 [tags 列表][tags-url]中的任意 tag 替换 `v6.0.0`。 + + * 方式 1:使用 [curl 和 tar][curl-tar-url] 安装: + + ```sh + $ mkdir themes/next + $ curl -L https://api.github.com/repos/theme-next/hexo-theme-next/tarball/v6.0.0 | tar -zxv -C themes/next --strip-components=1 + ``` + 和上述的 `curl、tar 和 wget` 方法相同,但只会下载**指定的 release 版本**。 + + * 方式 2:使用 [git][git-url] 安装: + + ```sh + $ git clone --branch v6.0.0 https://github.com/theme-next/hexo-theme-next themes/next + ``` + 这一方式将为你下载**指定的 release 版本**(其中包含 `.git` 目录)。\ + 并且,你可以随时切换到任何已定义的版本号所对应的 tag 的版本。 + +### 选项 3:下载[最新 master 分支][download-latest-url] + + 可能**不稳定**,但包含最新的特性。推荐进阶用户和开发者按此方式进行。 + + * 方式 1:使用 [curl 和 tar][curl-tar-url] 安装: + + ```sh + $ mkdir themes/next + $ curl -L https://api.github.com/repos/theme-next/hexo-theme-next/tarball | tar -zxv -C themes/next --strip-components=1 + ``` + 和上述的 `curl、tar 和 wget` 方法相同,但只会下载**最新 master 分支版本**。\ + 在有些情况对开发者有所帮助。 + + * 方式 2:使用 [git][git-url] 安装: + + ```sh + $ git clone https://github.com/theme-next/hexo-theme-next themes/next + ``` + + 这一方式将为你下载**完整仓库**(其中包含 `.git` 目录)。\ + 你可以随时[使用 git 更新至最新版本][update-with-git-url]并切换至任何有 tag 标记的 release 版本、最新的 master 分支版本、甚至其他分支。\ + 在绝大多数情况下对用户和开发者友好。 + + 获取 tags 列表: + + ```sh + $ cd themes/next + $ git tag -l + … + v6.0.0 + v6.0.1 + v6.0.2 + ``` + + 例如,假设你想要切换到 `v6.0.1` 这一 [tag 指向的 release 版本][tags-url]。输入如下指令: + + ```sh + $ git checkout tags/v6.0.1 + Note: checking out 'tags/v6.0.1'. + … + HEAD is now at da9cdd2... Release v6.0.1 + ``` + + 然后,假设你想要切换回 [master 分支][commits-url],输入如下指令即可: + + ```sh + $ git checkout master + ``` + +

      步骤 3 → 完成配置

      + +在 **hexo 根配置**文件 `_config.yml` 中设置你的主题: + +```yml +theme: next +``` + +[download-latest-url]: https://github.com/theme-next/hexo-theme-next/archive/master.zip +[releases-latest-url]: https://github.com/theme-next/hexo-theme-next/releases/latest +[releases-url]: https://github.com/theme-next/hexo-theme-next/releases +[tags-url]: https://github.com/theme-next/hexo-theme-next/tags +[commits-url]: https://github.com/theme-next/hexo-theme-next/commits/master + +[git-url]: http://lmgtfy.com/?q=linux+git+install +[curl-tar-url]: http://lmgtfy.com/?q=linux+curl+tar+install +[curl-tar-wget-url]: http://lmgtfy.com/?q=linux+curl+tar+wget+install + +[update-with-git-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/zh-CN/README.md#update +[docs-data-files-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/zh-CN/DATA-FILES.md diff --git a/docs/zh-CN/LEANCLOUD-COUNTER-SECURITY.md b/docs/zh-CN/LEANCLOUD-COUNTER-SECURITY.md new file mode 100644 index 000000000..a13d4c0b5 --- /dev/null +++ b/docs/zh-CN/LEANCLOUD-COUNTER-SECURITY.md @@ -0,0 +1,185 @@ +在配置前,请升级NexT至**v6.0.6**以上。 + +在配置过程中请注意**博客配置文件**和**主题配置文件**的区别。 + +--- + +# 注册Leancloud并创建应用 +- 首先,前往Leancloud官网[leancloud.cn](leancloud.cn)进行注册,并登陆。 +- 然后点击图示`1`处,进入控制台: + + ![1](https://lc-cqha0xyi.cn-n1.lcfile.com/fc0c048a1e25dc3d10aa.jpg) + +- 接着,点击图示`1`处,创建应用: + + ![2](https://lc-cqha0xyi.cn-n1.lcfile.com/33a56b754753a5d34b01.jpg) + +- 在弹出窗口`1`处输入应用名称(可随意输入,可更改,为演示方便取名为test),并选择`2`处“开发版”,然后点击`3`处创建: + + ![3](https://lc-cqha0xyi.cn-n1.lcfile.com/649ccfc6f12015d1eefb.jpg) + +到这里应用创建完成。 + +# 建立Counter类并在NexT中启用插件 +- 点击`1`处应用名称进入应用管理界面: + + ![4](https://lc-cqha0xyi.cn-n1.lcfile.com/d0889df29841661e0b9e.jpg) + +- 如图,点击侧边栏`1`处创建Class: + + ![5](https://lc-cqha0xyi.cn-n1.lcfile.com/b0fbc81bd6c19fa09a46.jpg) + +- 在弹出窗口`1`处填入`Counter`,勾选`2`处无限制,并点击`3`处创建Class: + + ![6](https://lc-cqha0xyi.cn-n1.lcfile.com/ae6154d6a55f02f11ebf.jpg) + +- 此时类已创建完成。接下来点击图示`1`处进入设置,然后点击`2`处进入应用Key: + + ![8](https://lc-cqha0xyi.cn-n1.lcfile.com/9501a6372918dd9a8a92.jpg) + +- 粘贴`App ID`和`App Key`到**NexT主题配置文件**`_config.yml`对应位置。此时配置文件应如下: +```yml +leancloud_visitors: + enable: true + security: true + app_id: <> + app_key: <> +``` + +- 设置Web安全域名确保域名调用安全。点击`1`处进入安全中心,然后在`2`处填写自己博客对应的域名(**注意协议、域名和端口号需严格一致**): + + ![9](https://lc-cqha0xyi.cn-n1.lcfile.com/0e537cc4bec2e185201d.jpg) + +到这里内容均与Doublemine的[为NexT主题添加文章阅读量统计功能](https://notes.wanghao.work/2015-10-21-%E4%B8%BANexT%E4%B8%BB%E9%A2%98%E6%B7%BB%E5%8A%A0%E6%96%87%E7%AB%A0%E9%98%85%E8%AF%BB%E9%87%8F%E7%BB%9F%E8%AE%A1%E5%8A%9F%E8%83%BD.html#%E9%85%8D%E7%BD%AELeanCloud)这篇文章相同,只不过截图为新版的Leancloud的界面。 + +# 部署云引擎以保证访客数量不被随意篡改 +- 点击左侧`1`处云引擎,然后点击`2`处部署,再点击`3`处在线编辑: + + ![10](https://lc-cqha0xyi.cn-n1.lcfile.com/d7056dfeeef7c5d66318.jpg) + +- 点击`1`处创建函数: + + ![11](https://lc-cqha0xyi.cn-n1.lcfile.com/2737841bbc2bdd572ae0.jpg) + +- 在弹出窗口选择`1`处`Hook`类型,然后`2`处选择`beforeUpdate`,`3`处选择刚才建立的`Counter`类。在`4`中粘贴下方代码后,点`5`处保存。 + ```javascript + var query = new AV.Query("Counter"); + if (request.object.updatedKeys.indexOf('time') !== -1) { + return query.get(request.object.id).then(function (obj) { + if (obj.get("time") + 1 !== request.object.get("time")) { + throw new AV.Cloud.Error('Invalid update!'); + } + }) + } + ``` + + 如图所示: + + ![12](https://lc-cqha0xyi.cn-n1.lcfile.com/a8e13418ed1d9405315b.jpg) + +- 点击保存后应出现类似红框处函数。此时点击`1`处部署: + + ![13](https://lc-cqha0xyi.cn-n1.lcfile.com/ca56bf2e5fc2a1343565.jpg) + +- 在弹出窗口点击`1`处部署: + + ![14](https://lc-cqha0xyi.cn-n1.lcfile.com/17548c13b3b23c71d845.jpg) + +- 等待出现红框处的成功部署信息后,点击`1`处关闭: + + ![15](https://lc-cqha0xyi.cn-n1.lcfile.com/d2f50de6cefea9fd0ed3.jpg) + + +至此云引擎已成功部署,任何非法的访客数量更改请求都将失败。 + +# 进一步设置权限 +- 打开**NexT主题配置文件**`_config.yml`,将leancloud_visitors下的security设置为true(如没有则新增): + ```yml + leancloud_visitors: + enable: true + app_id: <> + app_key: <> + # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security + security: true + betterPerformance: false + ``` + + **对`betterPerformance`选项的说明:** + 由于Leancloud免费版的云引擎存在请求线程数和运行时间限制以及休眠机制,很多时候访客数量加载会很慢。如果设置`betterPerformance`为`true`,则网页则会在提交请求之前直接显示访客人数为查询到的人数+1,以增加用户体验。 + +- 打开cmd并切换至**博客根目录**,键入以下命令以安装`hexo-leancloud-counter-security`插件: + ``` + npm install hexo-leancloud-counter-security --save + ``` + +- 打开**博客配置文件**`_config.yml`,新增以下配置: + ```yml + leancloud_counter_security: + enable_sync: true + app_id: <> + app_key: < + username: + password: + ``` + +- 在相同目录键入以下命令: + ``` + hexo lc-counter register <> <> + ``` + 或 + ``` + hexo lc-counter r <> <> + ``` + + 将`<>`和`<>`替换为你自己的用户名和密码(不必与leancloud的账号相同)。此用户名和密码将在hexo部署时使用。 + + - 打开**博客配置文件**`_config.yml`,将`<>`和`<>`替换为你刚刚设置的用户名和密码: + ```yml + leancloud_counter_security: + enable_sync: true + app_id: <> + app_key: < + username: <> #如留空则将在部署时询问 + password: <> #建议留空以保证安全性,如留空则将在部署时询问 + ``` + +- 在**博客配置文件**`_config.yml`的`deploy`下添加项: + ```yml + deploy: + # other deployer + - type: leancloud_counter_security_sync + ``` + +- 返回Leancloud控制台的应用内。依次点击`1` `2`,检查_User表中是否出现一条记录(图示以用户名为admin为例): + + ![16](https://lc-cqha0xyi.cn-n1.lcfile.com/99faa5a0e7160e66d506.jpg) + +- 点击`1`处进入Counter表,依次点击`2` `3`,打开权限设置: + + ![17](https://lc-cqha0xyi.cn-n1.lcfile.com/b72a9e64579f5b71749d.jpg) + +- 点击`1`add_fields后选择`2`指定用户, 并将下两栏留空:此处应与下条create设置相同(选择你所创建的用户): + + ![18](https://lc-cqha0xyi.cn-n1.lcfile.com/14a8cb37062693d768ad.jpg) + +- 点击`1`create后选择`2`指定用户, 在`3`处键入用户名,点击`4`处后点击`5`处添加: + + ![19](https://lc-cqha0xyi.cn-n1.lcfile.com/d91714cfd703ef42b94c.jpg) + + 完成此步操作后,界面应与图示类似: + + ![20](https://lc-cqha0xyi.cn-n1.lcfile.com/c05e7ec9218820baf412.jpg) + +- 点击`1`delete后选择`2`指定用户, 并将下两栏留空: + + ![21](https://lc-cqha0xyi.cn-n1.lcfile.com/c37b6e20726cfb1d3197.jpg) + +至此权限已设置完成,数据库记录只能在本地增删。 + +每次运行`hexo d`部署的时候,插件都会扫描本地`source/_posts`下的文章并与数据库对比,然后在数据库创建没有录入数据库的文章记录。 + +如果在**博客配置文件**中留空username或password,则在部署过程中程序会要求输入。 + +--- + +原文链接:https://leaferx.online/2018/02/11/lc-security/ diff --git a/docs/zh-CN/MATH.md b/docs/zh-CN/MATH.md new file mode 100644 index 000000000..fcb096e72 --- /dev/null +++ b/docs/zh-CN/MATH.md @@ -0,0 +1,297 @@ +

      数学公式

      + +NexT 内部提供数学公式渲染的引擎,这样你就不需要自己手动在模板中引入 JS 或者 CSS; +只需要将 `next/_config.yml` 中 `math` 的 `enable` 选项改为 `true`,并选择对应的渲染引擎即可: + + +```yml +math: + enable: true + ... + engine: mathjax +``` + + +需要注意的是,仅仅将 `math` 的 `enable` 打开**并不能让你看到数学公式**,你还需要**使用对应的 Hexo 渲染器(Renderer)** 才能真正在博客页面中显示出数学公式。引擎对应使用的 Hexo 渲染器会在引擎相关的部分介绍。 + +

      提供的渲染引擎

      + +目前,NexT 提供两种数学公式渲染引擎,分别为 [MathJax](https://www.mathjax.org/) 和 [Katex](https://khan.github.io/KaTeX/),默认为 MathJax。 + +### MathJax(默认) + +如果你选择使用 MathJax 进行数学公式渲染,你需要使用 [hexo-renderer-pandoc](https://github.com/wzpan/hexo-renderer-pandoc) 或者 [hexo-renderer-kramed](https://github.com/sun11/hexo-renderer-kramed) 这两个渲染器的其中一个。 + +首先,卸载原有的渲染器 `hexo-renderer-marked`,并安装这两种渲染器的**其中一个**: + +```sh +npm un hexo-renderer-marked --save +npm i hexo-renderer-pandoc --save # 或者 hexo-renderer-kramed +``` + + +然后在 `next/_config.yml` 中将 `math` 的 `enable` 打开,并选择 `mathjax` 作为渲染引擎。 + +```yml +math: + enable: true + ... + engine: mathjax + #engine: katex +``` + +执行 Hexo 生成,部署,或者启动服务器: + +```sh +hexo clean && hexo g -d +# 或者 hexo clean && hexo s +``` + +#### 使用 MathJax 给公式编号并引用公式 + +在新版本的 NexT 主题中,我们加入了公式自动编号和引用功能。下面简要介绍一下如何使用这项功能。 + +为了使用这项功能,一般来说,你必须把所使用的 LaTeX 公式放在 `equation` 环境里面,采用旧的方法(也就是说,仅仅把公式的每一边用两个 $ 符号包含起来)是无效的。如何引用公式?你只需要在书写公式的时候给公式一个 `\ +label{}` 标记(tag),然后在正文中,可以使用 `\ref{}` 或者 `\eqref{}` 命令来引用对应的公式。使用 `\eqref{}` 是推荐的方式,因为如果你使用 `\ref{}`,公式在文中的引用编号将没有圆括号包围。下面介绍几种常见的公式编号例子。 + +对于简单的公式,使用下面的方式给公式一个标记, + +```latex +$$\begin{equation} +e=mc^2 +\end{equation}\label{eq1}$$ +``` + +然后,在正文中,你可以轻松引用上述公式,一个简单的例子如下: + +``` +著名的质能方程 $\eqref{eq1}$ 由爱因斯坦提出 ... +``` + +对于多行公式,在 `equation` 环境中,你可以使用 `aligned` 环境把公式分成多行, + +```latex +$$\begin{equation} +\begin{aligned} +a &= b + c \\ + &= d + e + f + g \\ + &= h + i +\end{aligned} +\end{equation}\label{eq2}$$ +``` + +要对齐多个公式,我们需要使用 `align` 环境。align 环境中的每个公式都有自己的编号: + +``` +$$\begin{align} +a &= b + c \label{eq3} \\ +x &= yz \label{eq4}\\ +l &= m - n \label{eq5} +\end{align}$$ +``` + +在 `align` 环境中,如果你不想给某个或某几个公式编号,那么在这些公式后面使用 [`\nonumber`](https://tex.stackexchange.com/questions/17528/show-equation-number-only-once-in-align-environment) 命令即可。例如: + +```latex +$$\begin{align} +-4 + 5x &= 2+y \nonumber \\ + w+2 &= -1+w \\ + ab &= cb +\end{align}$$ +``` + +有时,你可能会希望采用更加奇特的方式来标记和引用你的公式,你可以通过使用 `\tag{}` 命令来实现,例如: + +```latex +$$x+1\over\sqrt{1-x^2} \tag{i}\label{eq_tag}$$ +``` + +如果你想要了解更多信息,请访问 [MathJax 关于公式编号的官方文档](http://docs.mathjax.org/en/latest/tex.html#automatic-equation-numbering)。同时,你也可以访问[这篇博客](https://jdhao.github.io/2018/01/25/hexo-mathjax-equation-number/) 来获取更多细节信息。 + +### Katex + +Katex 渲染引擎相对于 MathJax 来说**大大提高了速度**,而且在关掉 JavaScript 时也能渲染数学公式。 + +但是 Katex 所支持的东西没有 MathJax 全面,你可以从下面的相关链接中获取更多的信息。 + +如果你选择使用 Katex 进行数学公式渲染,你需要使用 [hexo-renderer-markdown-it-plus](https://github.com/CHENXCHEN/hexo-renderer-markdown-it-plus) 或者 [hexo-renderer-markdown-it](https://github.com/hexojs/hexo-renderer-markdown-it) 这两种渲染器的其中一个。 + +首先,卸载原有的渲染器 `hexo-renderer-marked`,并安装这两种渲染器的**其中一个**: + +```sh +npm un hexo-renderer-marked --save +npm i hexo-renderer-markdown-it-plus --save +# 或者 hexo-renderer-markdown-it +``` + + +然后在 `next/_config.yml` 中将 `math` 的 `enable` 打开,并选择 `katex` 作为渲染引擎。 + +```yml +math: + enable: true + ... + #engine: mathjax + engine: katex +``` + +执行 Hexo 生成,部署,或者启动服务器: + +```sh +hexo clean && hexo g -d +# 或者 hexo clean && hexo s +``` + +#### 如果你使用 hexo-renderer-markdown-it + +如果你使用 `hexo-renderer-markdown-it`,你还需要为其加上 `markdown-it-katex` 作为插件: + +``` +npm i markdown-it-katex --save +``` + +然后在 `hexo/_config.yml` 中将 `markdown-it-katex` 作为插件写入 `hexo-renderer-markdown-it` 的配置中: + +```yml +markdown: + render: + html: true + xhtmlOut: false + breaks: true + linkify: true + typographer: true + quotes: '“”‘’' + plugins: + - markdown-it-katex +``` + +#### 已知的问题 + +1. 首先请查阅 Katex 的 [Common Issue](https://github.com/Khan/KaTeX#common-issues) +2. 块级公式(例如 `$$...$$`)必须位于空行。\ + 即在开头的 `$$` 前和在结尾的 `$$` 后不能有除了空白字符以外的其他字符。([#32comment](https://github.com/theme-next/hexo-theme-next/pull/32#issuecomment-357489509)) +3. 不支持 Unicode。([#32comment](https://github.com/theme-next/hexo-theme-next/pull/32#issuecomment-357489509)) +4. 行内公式(例如 `$...$`)在开头的 `$` 后面和结尾的 `$` 前面**不能含有空格**。([#32comment](https://github.com/theme-next/hexo-theme-next/pull/32#issuecomment-357489509)) +5. 如果你在文章的各级标题中(例如 `## 标题`)使用公式。\ + 那么文章目录中的这个标题会出现 3 次未渲染的公式代码([#32comment](https://github.com/theme-next/hexo-theme-next/pull/32#issuecomment-359018694)) +6. 如果你在文章 Title 中使用公式,那么公式将不会被渲染。([#32comment](https://github.com/theme-next/hexo-theme-next/pull/32#issuecomment-359142879)) + + +我们目前使用的 Katex 版本为 0.7.1,这里面可能有某些问题是因为 Katex 版本老旧导致的; + +但是,就像上面所说的,数学公式的渲染必须依靠渲染器来支持,目前的 Katex 相关的渲染器仅支持到 Katex 0.7.1; + +我们会持续关注相关渲染器的更新,如果有渲染器支持更高版本的 Katex,我们会及时更新我们的 Katex 版本。 + +### 相关链接 + +* [Katex 与 MathJax 渲染速度对比](https://www.intmath.com/cg5/katex-mathjax-comparison.php) +* [Katex 支持的功能列表](https://khan.github.io/KaTeX/function-support.html) + +

      相关配置说明

      + +注意,在修改配置选项时,**不要更改配置的缩进**; + +目前,NexT 的所有配置都采用**2 空格的缩进**; + +如果配置的内容接在冒号后面,那么内容和冒号之间必须有一个空格(例如`enable: true`) + +```yml + +# Math Equations Render Support +math: + enable: false + + # Default(true) will load mathjax/katex script on demand + # That is it only render those page who has 'mathjax: true' in Front Matter. + # If you set it to false, it will load mathjax/katex srcipt EVERY PAGE. + per_page: true + + engine: mathjax + #engine: katex + + # hexo-rendering-pandoc (or hexo-renderer-kramed) needed to full MathJax support. + mathjax: + # Use 2.7.1 as default, jsdelivr as default CDN, works everywhere even in China + cdn: //cdn.jsdelivr.net/npm/mathjax@2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML + # For newMathJax CDN (cdnjs.cloudflare.com) with fallback to oldMathJax (cdn.mathjax.org). + #cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML + # For direct link to MathJax.js with CloudFlare CDN (cdnjs.cloudflare.com). + #cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML + # For automatic detect latest version link to MathJax.js and get from Bootcss. + #cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML + + # hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin) + # needed to full Katex support. + katex: + # Use 0.7.1 as default, jsdelivr as default CDN, works everywhere even in China + cdn: //cdn.jsdelivr.net/npm/katex@0.7.1/dist/katex.min.css + # CDNJS, provided by cloudflare, maybe the best CDN, but not works in China + #cdn: //cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css + # Bootcss, works great in China, but not so well in other region + #cdn: //cdn.bootcss.com/KaTeX/0.7.1/katex.min.css +``` + +### enable + +`true` 或者 `false`,默认为 `false`。 + +`true` 是打开数学公式渲染,`false` 则是关闭。 + +### per_page + +`true` 或者 `false`,默认为 `true`。 + +这个选项是控制是否在每篇文章都渲染数学公式; + +默认(`true`) 的行为是**只对 Front Matter 中含有 `mathjax: true` 的文章进行数学公式渲染**。 + +如果 Front Matter 中不含有 `mathjax: true`,或者 `mathjax: false`,那么 NexT 将不会对这些文章进行数学公式渲染。 + +例如: + +```md + +--- +title: 'Will Render Math' +mathjax: true +--- +.... +``` + +```md + +--- +title: 'Not Render Math' +mathjax: false +--- +.... +``` + +```md + +--- +title: 'Not Render Math Either' +--- +.... +``` + +当你将它设置为 `false` 时,它就会在每个页面都加载 MathJax 或者 Katex 来进行数学公式渲染。 + +### cdn + +MathJax 和 Katex 都提供了 `cdn` 的配置,如果你不知道什么是 `cdn` ,**请不要修改这个配置**。 + +首先,MathJax 和 Katex 都使用了 [jsDelivr](https://www.jsdelivr.com/) 作为默认 CDN; + +之所以选择 jsDelivr 是因为它在全球各地都有比较不错的速度,而且具有中国官方颁布的 ICP 证书,在中国也能比较好地访问。 + +同时,我们也提供了其他的 CDN 备选方案,包括著名的 [CDNJS](https://cdnjs.com/) 和在中国地区具有不错访问效果的 [Bootcss](http://www.bootcdn.cn/)。 + +对于 MathJax 来说,我们目前采用的版本为 2.7.1。 + +对于 Katex,由于上面提到的版本问题,我们目前采用的版本为 0.7.1。 + +如果你想尝试我们提供的备选方案以外的 CDN,请注意使用对应的版本。 + +特别的,对于中国的博客主,或者您的博客访问大部分来源于中国,由于 CDNJS 在部分中国地区被墙,请不要使用 CDNJS 作为 CDN。 diff --git a/docs/zh-CN/README.md b/docs/zh-CN/README.md new file mode 100644 index 000000000..be209f975 --- /dev/null +++ b/docs/zh-CN/README.md @@ -0,0 +1,138 @@ +
      语言: :us: +:cn: +:ru:
      + +#
      e x T
      + +

      «NexT» 是一款风格优雅的高质量 Hexo 主题,自点点滴滴中用爱雕琢而成。

      + +[![gitter-image]][gitter-url] +[![riot-image]][riot-url] +[![t-chat-image]][t-chat-url] +[![t-news-image]][t-news-url] +[![lang-image]][lang-url] +[![travis-image]][travis-url] +[![rel-image]][releases-url] +[![hexo-image]][hexo-url] +[![lic-image]][lic-url] + +## 即时预览 + +* :heart_decoration: Muse 主题: [LEAFERx](https://leaferx.online) | [XiaMo](https://notes.wanghao.work) | [OAwan](https://oawan.me) +* :six_pointed_star: Mist 主题: [Jeff](https://blog.zzbd.org) | [uchuhimo](http://uchuhimo.me) | [xirong](http://www.ixirong.com) +* :pisces: Pisces 主题: [Vi](http://notes.iissnan.com) | [Acris](https://acris.me) | [Rainy](https://rainylog.com) +* :gemini: Gemini 主题: [Ivan.Nginx](https://almostover.ru) | [Raincal](https://raincal.com) | [Dandy](https://dandyxu.me) + +更多 «NexT» 的例子参见[这里](https://github.com/iissnan/hexo-theme-next/issues/119)。 + +## 安装 + +最简单的安装方式是直接克隆整个仓库: + + ```sh + $ cd hexo + $ git clone https://github.com/theme-next/hexo-theme-next themes/next + ``` + +此外,如果你想要使用其他方式,你也可以参见[详细安装步骤][docs-installation-url]。 + +## 插件 + +在 NexT 配置中你现在可以找到已经被移至外部仓库的依赖项。你可以在[组织主页](https://github.com/theme-next)中找到它们。 + +例如,假设你想要在你的站点中使用 `fancybox` 插件,请进入 NexT 配置文件,你会看到如下内容: + +```yml +# Fancybox +# Dependencies: https://github.com/theme-next/theme-next-fancybox +fancybox: false +``` + +将 `fancybox` 配置项打开,进入它上面的 «Dependencies» 链接以查看它的安装步骤。 + +### 例外 + +如果你使用的插件脚本依赖 CDN,那么需要替换你的 CDN 链接: + +例如,假如你使用了 `fancybox` 插件并且配置了 CDN 加载链接,进入 Next 配置文件,你会看到如下内容: + +```yml +vendors: + # ... + # Some contents... + # ... + fancybox: # Set or update fancybox cdn url. + fancybox_css: # Set or update fancybox cdn url. +``` + +通过替换 CDN 链接来替换 [插件列表](https://github.com/theme-next) 项目来升级。 + +## 更新 + +你可以通过如下命令更新到最新的 master 分支: + +```sh +$ cd themes/next +$ git pull +``` + +如果你在此过程中收到了任何错误报告 (例如 **«Commit your changes or stash them before you can merge»**),我们推荐你使用 [Hexo 数据文件][docs-data-files-url]特性。\ +然而你也可以通过提交(`Commit`)、贮藏(`Stash`)或忽视(`Discard`)本地更改以绕过这种更新错误。具体方法请参考[这里](https://stackoverflow.com/a/15745424/5861495)。 + +**如果你想要从 v5.1.x 更新到 v6.0.x,阅读[这篇文档][docs-update-5-1-x-url]。** + +## 已知问题 + +对于仍然遇到 **«[Error: Cannot find module 'hexo-util'](https://github.com/iissnan/hexo-theme-next/issues/1490)»** 这一错误的用户,请检查你的 NPM 版本。 + +* `> 3`:仍然出现错误吗?请删除 `node_modules` 目录并通过 `npm install` 重新安装。 +* `< 3`:请通过 `npm install --save-dev hexo-util` 将 `hexo-util` 依赖手动添加至你的站点依赖包中。 + +## 贡献你的代码 + +我们欢迎你贡献出你的一份力量,你可以随时提交 issue 或 fork 本仓库。静候你的 pull request。 + +## 第三方應用程序 + +* :triangular_flag_on_post: HexoEditor + +[browser-image]: https://img.shields.io/badge/browser-%20chrome%20%7C%20firefox%20%7C%20opera%20%7C%20safari%20%7C%20ie%20%3E%3D%209-lightgrey.svg +[browser-url]: https://www.browserstack.com + +[lang-image]: https://d322cqt584bo4o.cloudfront.net/theme-next/localized.svg "请花几秒钟来添加或修正翻译!" +[lang-url]: https://crwd.in/theme-next + +[gitter-image]: https://img.shields.io/badge/gitter-chat-orange.svg "Join to our Gitter room" +[gitter-url]: https://gitter.im/theme-next + +[riot-image]: https://img.shields.io/badge/riot-chat-DCAB08.svg "Join to our Riot room" +[riot-url]: https://riot.im/app/#/room/#NexT:matrix.org + +[t-chat-image]: https://img.shields.io/badge/telegram-chat-BAB210.svg "Join to our Telegram group" +[t-chat-url]: https://t.me/theme_next + +[t-news-image]: https://img.shields.io/badge/telegram-news-98B919.svg "Join to our Telegram news channel" +[t-news-url]: https://t.me/theme_next_news + +[travis-image]: https://travis-ci.org/theme-next/hexo-theme-next.svg?branch=master +[travis-url]: https://travis-ci.org/theme-next/hexo-theme-next?branch=master "Travis CI [Linux]" + +[hexo-image]: https://img.shields.io/badge/hexo-%3E%3D%203.5.0-blue.svg +[hexo-url]: http://hexo.io + +[lic-image]: https://img.shields.io/badge/license-%20AGPL-blue.svg +[lic-url]: https://github.com/theme-next/hexo-theme-next/blob/master/LICENSE.md + + +[rel-image]: https://badge.fury.io/gh/theme-next%2Fhexo-theme-next.svg + + +[download-latest-url]: https://github.com/theme-next/hexo-theme-next/archive/master.zip +[releases-latest-url]: https://github.com/theme-next/hexo-theme-next/releases/latest +[releases-url]: https://github.com/theme-next/hexo-theme-next/releases +[tags-url]: https://github.com/theme-next/hexo-theme-next/tags +[commits-url]: https://github.com/theme-next/hexo-theme-next/commits/master + +[docs-installation-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/zh-CN/INSTALLATION.md +[docs-data-files-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/zh-CN/DATA-FILES.md +[docs-update-5-1-x-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/zh-CN/UPDATE-FROM-5.1.X.md diff --git a/docs/zh-CN/UPDATE-FROM-5.1.X.md b/docs/zh-CN/UPDATE-FROM-5.1.X.md new file mode 100644 index 000000000..9a1547aad --- /dev/null +++ b/docs/zh-CN/UPDATE-FROM-5.1.X.md @@ -0,0 +1,29 @@ +

      从 NexT v5.1.x 更新

      + +在 5.1.x 版本和 6.0.x 版本之间没有很大的革命性改进。主版本号变更至 6 主要是因为: + +1. 主仓库已从 [iissnan 名下](https://github.com/iissnan/hexo-theme-next) 迁移至 [theme-next](https://github.com/theme-next) 组织。 +2. `next/source/lib` 目录下的绝大多数库被移出到了 [NexT 组织的外部仓库](https://github.com/theme-next)中。 +3. 第三方插件 [`hexo-wordcount`](https://github.com/willin/hexo-wordcount) 被 [`hexo-symbols-count-time`](https://github.com/theme-next/hexo-symbols-count-time) 所取代,因为 `hexo-symbols-count-time` 没有任何外部 nodejs 依赖、也没有会导致生成站点时的性能问题 [language filter](https://github.com/willin/hexo-wordcount/issues/7)。 + +推荐通过如下步骤从 v5 升级到 v6: + +1. 并不修改原有的 `next` 目录,而只是复制部分 NexT 文件: + 1. `config.yml` 或 `next.yml`(如果你使用了[数据文件](DATA-FILES.md))。 + 2. 自定义的 CSS 配置,它们应在 `next/source/css/_custom/*` 和 `next/source/css/_variables/*` 中。 + 3. 自定义的排布配置,它们应在 `next/layout/_custom/*` 中。 + 4. 任何其它可能的附加自定义内容;为了定位它们,你可以通过某些工具在仓库间比较。 +2. 克隆新的 v6.x 仓库到任一异于 `next` 的目录(如 `next-reloaded`): + ```sh + $ git clone https://github.com/theme-next/hexo-theme-next themes/next-reloaded + ``` + 如此,你可以在不修改原有的 NexT v5.1.x 目录的同时使用 `next-reloaded` 目录中的新版本主题。 +3. 在 Hexo 的主配置文件中设置主题: + ```yml + ... + theme: next-reloaded + ... + ``` + 如此,你的 `next-reloaded` 主题将在生成站点时被加载。如果你遇到了任何错误、或只是不喜欢这一新版本,你可以随时切换回旧的 v5.1.x 版本。 + +关于第三方库的启用,参见[这里](https://github.com/theme-next/hexo-theme-next/blob/master/docs/zh-CN/INSTALLATION.md#插件)。 diff --git a/gulpfile.coffee b/gulpfile.coffee new file mode 100644 index 000000000..77970d3be --- /dev/null +++ b/gulpfile.coffee @@ -0,0 +1,53 @@ +fs = require('fs') +path = require('path') +gulp = require('gulp') +jshint = require('gulp-jshint') +stylish = require('jshint-stylish') +shell = require('gulp-shell') +yaml = require('js-yaml') + +gulp.task 'lint', -> + return gulp.src([ + './source/js/src/utils.js', + './source/js/src/motion.js', + './source/js/src/algolia-search.js', + './source/js/src/bootstrap.js', + './source/js/src/post-details.js', + './source/js/src/schemes/pisces.js' + ]).pipe jshint() + .pipe jshint.reporter(stylish) + +gulp.task 'lint:stylus', shell.task [ + '"./node_modules/.bin/stylint" ./source/css/' +] + +gulp.task 'validate:config', (cb) -> + themeConfig = fs.readFileSync path.join(__dirname, '_config.yml') + + try + yaml.safeLoad(themeConfig) + cb() + catch error + cb new Error(error) + +gulp.task 'validate:languages', (cb) -> + languagesPath = path.join __dirname, 'languages' + languages = fs.readdirSync languagesPath + errors = [] + + for lang in languages + languagePath = path.join languagesPath, lang + try + yaml.safeLoad fs.readFileSync(languagePath), { + filename: path.relative(__dirname, languagePath) + } + catch error + errors.push error + + if errors.length == 0 + cb() + else + cb(errors) + + +gulp.task 'default', ['lint', 'validate:config', 'validate:languages'] diff --git a/languages/de.yml b/languages/de.yml new file mode 100644 index 000000000..5305d66e0 --- /dev/null +++ b/languages/de.yml @@ -0,0 +1,98 @@ +--- +title: + archive: Archiv + category: Kategorie + tag: Tag + schedule: Schedule +menu: + home: Startseite + archives: Archiv + categories: Kategorien + tags: Tags + about: Über + search: Suche + schedule: Schedule + sitemap: Sitemap + commonweal: Commonweal 404 +sidebar: + overview: Übersicht + toc: Inhaltsverzeichnis +post: + posted: Veröffentlicht am + edited: Edited on + created: Post created + modified: Updated at + edit: Edit this post + in: in + more: more + read_more: Weiterlesen + untitled: Unbenannt + sticky: Sticky + toc_empty: Dieser Artikel hat kein Inhaltsverzeichnis + views: Views + comments_count: Comments + related_posts: Related Posts + copy_button: Copy + copy_success: Copied + copy_failure: Copy failed + copyright: + author: Post author + link: Post link + license_title: Copyright Notice + license_content: "All articles in this blog are licensed under %s unless stating additionally." +page: + totally: Gesamt + tags: tags +footer: + powered: "Erstellt mit %s" + theme: Theme + total_views: Total Views + total_visitors: Total Visitors +counter: + tag_cloud: + zero: Keine Tags + one: Insgesamt ein Tag + other: "Insgesamt %d Tags" + categories: + zero: Keine Kategorien + one: Insgesamt eine Kategorie + other: "Insgesamt %d Kategorien" + archive_posts: + zero: Keine Artikel vorhanden. + one: Ein Artikel. + other: "Insgesamt %d Artikel." +state: + posts: Artikel + pages: Seiten + tags: Tags + categories: Kategorien +search: + placeholder: Searching... +cheers: + um: Öhm.. + ok: OK + nice: Schön + good: Gut + great: Wunderbar + excellent: Exzellent +keep_on: Bleib dran. +symbol: + comma: ". " + period: ", " + colon: ": " +reward: + donate: Donate + wechatpay: WeChat Pay + alipay: Alipay + bitcoin: Bitcoin +gitmentbutton: Show comments from Gitment +accessibility: + nav_toggle: Toggle navigation bar + prev_page: Previous page + next_page: Next page +symbols_count_time: + count: Symbols count in article + count_total: Symbols count total + time: Reading time + time_total: Reading time total + time_minutes: mins. diff --git a/languages/default.yml b/languages/default.yml new file mode 120000 index 000000000..7fcfc3b3a --- /dev/null +++ b/languages/default.yml @@ -0,0 +1 @@ +en.yml \ No newline at end of file diff --git a/languages/en.yml b/languages/en.yml new file mode 100644 index 000000000..ed2555172 --- /dev/null +++ b/languages/en.yml @@ -0,0 +1,114 @@ +title: + archive: Archive + category: Category + tag: Tag + schedule: Schedule + +menu: + home: Home + archives: Archives + categories: Categories + tags: Tags + about: About + search: Search + schedule: Schedule + sitemap: Sitemap + commonweal: Commonweal 404 + +sidebar: + overview: Overview + toc: Table of Contents + +post: + posted: Posted on + edited: Edited on + created: Created + modified: Modified + edit: Edit this post + in: In + more: more + read_more: Read more + untitled: Untitled + sticky: Sticky + toc_empty: This post does not have a Table of Contents + views: Views + comments_count: Comments + related_posts: Related Posts + copy_button: Copy + copy_success: Copied + copy_failure: Copy failed + copyright: + author: Post author + link: Post link + license_title: Copyright Notice + license_content: "All articles in this blog are licensed under %s unless stating additionally." + +page: + totally: Totally + tags: tags + +footer: + powered: "Powered by %s" + theme: Theme + total_views: Total Views + total_visitors: Total Visitors + +counter: + tag_cloud: + zero: No tags + one: 1 tag in total + other: "%d tags in total" + + categories: + zero: No categories + one: 1 category in total + other: "%d categories in total" + + archive_posts: + zero: No posts. + one: 1 post. + other: "%d posts in total." + +state: + posts: posts + pages: pages + tags: tags + categories: categories + +search: + placeholder: Searching... + +cheers: + um: Um.. + ok: OK + nice: Nice + good: Good + great: Great + excellent: Excellent + +keep_on: Keep on posting. + +symbol: + comma: ", " + period: ". " + colon: ": " + +reward: + donate: Donate + wechatpay: WeChat Pay + alipay: Alipay + bitcoin: Bitcoin + +gitmentbutton: Show comments from Gitment + +accessibility: + nav_toggle: Toggle navigation bar + prev_page: Previous page + next_page: Next page + +symbols_count_time: + count: Symbols count in article + count_total: Symbols count total + time: Reading time + time_total: Reading time total + time_minutes: mins. diff --git a/languages/fr.yml b/languages/fr.yml new file mode 100644 index 000000000..896e2049d --- /dev/null +++ b/languages/fr.yml @@ -0,0 +1,98 @@ +--- +title: + archive: Archive + category: Catégorie + tag: Tag + schedule: Schedule +menu: + home: Accueil + archives: Archives + categories: Categories + tags: Tags + about: A propos + search: recherche + schedule: Schedule + sitemap: Sitemap + commonweal: Commonweal 404 +sidebar: + overview: Ensemble + toc: Table Des Matières +post: + posted: Posté le + edited: Edited on + created: Post created + modified: Updated at + edit: Edit this post + in: In + more: more + read_more: Lire la suite + untitled: Non titré + sticky: Sticky + toc_empty: This post does not have a Table of Contents + views: Views + comments_count: Comments + related_posts: Related Posts + copy_button: Copy + copy_success: Copied + copy_failure: Copy failed + copyright: + author: Post author + link: Post link + license_title: Copyright Notice + license_content: "All articles in this blog are licensed under %s unless stating additionally." +page: + totally: Total + tags: tags +footer: + powered: "Powered by %s" + theme: Thème + total_views: Total Views + total_visitors: Total Visitors +counter: + tag_cloud: + zero: Aucun tags + one: 1 tag au total + other: "%d tags au total" + categories: + zero: Aucun categories + one: 1 category au total + other: "%d categories au total" + archive_posts: + zero: Aucun article. + one: 1 article. + other: "%d articles au total." +state: + posts: articles + pages: pages + tags: tags + categories: categories +search: + placeholder: Searching... +cheers: + um: Um.. + ok: OK + nice: Jolie + good: Bien + great: Super + excellent: Excellent +keep_on: Et ca ne fait que commencer. +symbol: + comma: ", " + period: ". " + colon: ": " +reward: + donate: Donate + wechatpay: WeChat Pay + alipay: Alipay + bitcoin: Bitcoin +gitmentbutton: Show comments from Gitment +accessibility: + nav_toggle: Toggle navigation bar + prev_page: Previous page + next_page: Next page +symbols_count_time: + count: Symbols count in article + count_total: Symbols count total + time: Reading time + time_total: Reading time total + time_minutes: mins. diff --git a/languages/id.yml b/languages/id.yml new file mode 100644 index 000000000..3eb191310 --- /dev/null +++ b/languages/id.yml @@ -0,0 +1,98 @@ +--- +title: + archive: Arsip + category: Kategori + tag: Tag + schedule: Schedule +menu: + home: Beranda + archives: Arsip + categories: Kategori + tags: Tags + about: Tentang + search: Pencarian + schedule: Schedule + sitemap: Sitemap + commonweal: Commonweal 404 +sidebar: + overview: Ikhtisar + toc: Daftar Isi +post: + posted: Diposting di + edited: Edited on + created: Post created + modified: Updated at + edit: Edit this post + in: Di + more: more + read_more: Baca lebih + untitled: Tidak ada title + sticky: Sticky + toc_empty: Posting ini tidak memiliki Daftar Isi + views: Views + comments_count: Comments + related_posts: Related Posts + copy_button: Copy + copy_success: Copied + copy_failure: Copy failed + copyright: + author: Post author + link: Post link + license_title: Copyright Notice + license_content: "All articles in this blog are licensed under %s unless stating additionally." +page: + totally: Total + tags: tags +footer: + powered: "Powered by %s" + theme: Tema + total_views: Total Views + total_visitors: Total Visitors +counter: + tag_cloud: + zero: Tidak ada tags + one: 1 total tag + other: "%d total tags" + categories: + zero: Tidak ada kategori + one: 1 total categori + other: "%d total kategori" + archive_posts: + zero: Tidak ada posting. + one: 1 posting. + other: "%d total posting." +state: + posts: posting + pages: halaman + tags: tags + categories: kategori +search: + placeholder: Searching... +cheers: + um: Um.. + ok: OK + nice: Bagus + good: Bagus + great: Besar + excellent: Baik +keep_on: Terus Posting. +symbol: + comma: ", " + period: ". " + colon: ": " +reward: + donate: Donate + wechatpay: WeChat Pay + alipay: Alipay + bitcoin: Bitcoin +gitmentbutton: Show comments from Gitment +accessibility: + nav_toggle: Toggle navigation bar + prev_page: Previous page + next_page: Next page +symbols_count_time: + count: Symbols count in article + count_total: Symbols count total + time: Reading time + time_total: Reading time total + time_minutes: mins. diff --git a/languages/it.yml b/languages/it.yml new file mode 100644 index 000000000..45da05f2c --- /dev/null +++ b/languages/it.yml @@ -0,0 +1,98 @@ +--- +title: + archive: Archivio + category: Categoria + tag: Tag + schedule: Programma +menu: + home: Home + archives: Archivi + categories: Categorie + tags: Tags + about: Informazioni su + search: Cerca + schedule: Programma + sitemap: Sitemap + commonweal: Commonweal 404 +sidebar: + overview: Panoramica + toc: Indice +post: + posted: Scritto il + edited: Edited on + created: Post creato + modified: Post modificato + edit: Edit this post + in: In + more: espandi + read_more: Leggi di più + untitled: Senza titolo + sticky: Sticky + toc_empty: Questo post non ha un indice + views: Views + comments_count: Comments + related_posts: Related Posts + copy_button: Copy + copy_success: Copied + copy_failure: Copy failed + copyright: + author: Autore + link: Link + license_title: Copyright + license_content: "Tutti gli articoli in questo sito sono sotto licenza %s salvo disposizione contraria." +page: + totally: Totale + tags: tags +footer: + powered: "Powered by %s" + theme: Tema + total_views: Total Views + total_visitors: Total Visitors +counter: + tag_cloud: + zero: Nessun tag + one: 1 tag in totale + other: "%d tags in totale." + categories: + zero: Nessuna categoria + one: 1 categoria in totale + other: "%d categorie in totale." + archive_posts: + zero: Nessun post. + one: 1 post. + other: "%d posts in totale." +state: + posts: posts + pages: pagine + tags: tags + categories: categorie +search: + placeholder: Cerca... +cheers: + um: Mh.. + ok: OK + nice: Bello + good: Buono + great: Ottimo + excellent: Eccellente +keep_on: Continua così. +symbol: + comma: ", " + period: ". " + colon: ": " +reward: + donate: Dona + wechatpay: WeChat Pay + alipay: Alipay + bitcoin: Bitcoin +gitmentbutton: Show comments from Gitment +accessibility: + nav_toggle: Toggle navigation bar + prev_page: Previous page + next_page: Next page +symbols_count_time: + count: Symbols count in article + count_total: Symbols count total + time: Reading time + time_total: Reading time total + time_minutes: mins. diff --git a/languages/ja.yml b/languages/ja.yml new file mode 100644 index 000000000..7935e8ba0 --- /dev/null +++ b/languages/ja.yml @@ -0,0 +1,98 @@ +--- +title: + archive: アーカイブ + category: カテゴリ + tag: タグ + schedule: スケジュール +menu: + home: ホーム + archives: アーカイブ + categories: カテゴリ + tags: タグ + about: About + search: 検索 + schedule: スケジュール + sitemap: サイトマップ + commonweal: Commonweal 404 +sidebar: + overview: 概要 + toc: 見出し +post: + posted: 投稿日 + edited: Edited on + created: 作成された時間 + modified: Updated at + edit: Edit this post + in: In + more: more + read_more: 続きを読む + untitled: 無題 + sticky: 固定 + toc_empty: 見出しがありません + views: Views + comments_count: コメント + related_posts: Related Posts + copy_button: Copy + copy_success: Copied + copy_failure: Copy failed + copyright: + author: 著者 + link: Post link + license_title: 著作権表示 + license_content: "All articles in this blog are licensed under %s unless stating additionally." +page: + totally: 全ページ + tags: タグ +footer: + powered: "Powered by %s" + theme: テーマ + total_views: Total Views + total_visitors: Total Visitors +counter: + tag_cloud: + zero: タグなし + one: 全 1 タグ + other: "全 %d タグ" + categories: + zero: カテゴリなし + one: 全 1 カテゴリ + other: "全 %d カテゴリ" + archive_posts: + zero: ポストなし + one: 全 1 ポスト + other: "全 %d ポスト" +state: + posts: ポスト + pages: ページ + tags: タグ + categories: カテゴリ +search: + placeholder: 検索… +cheers: + um: うーん + ok: はい + nice: まあまあ + good: いいね + great: すごい + excellent: 最高 +keep_on: もっと書こう! +symbol: + comma: "、" + period: "。" + colon: ":" +reward: + donate: Donate + wechatpay: WeChat 支払う + alipay: Alipay + bitcoin: Bitcoin +gitmentbutton: Gitment からのコメントを表示 +accessibility: + nav_toggle: Toggle navigation bar + prev_page: Previous page + next_page: Next page +symbols_count_time: + count: Symbols count in article + count_total: Symbols count total + time: Reading time + time_total: Reading time total + time_minutes: mins. diff --git a/languages/ko.yml b/languages/ko.yml new file mode 100644 index 000000000..7c2fcd8eb --- /dev/null +++ b/languages/ko.yml @@ -0,0 +1,98 @@ +--- +title: + archive: 아카이브 + category: 카테고리 + tag: 태그 + schedule: Schedule +menu: + home: 홈 + archives: 아카이브 + categories: 카테고리 + tags: 태그 + about: About + search: 검색 + schedule: Schedule + sitemap: Sitemap + commonweal: Commonweal 404 +sidebar: + overview: 흝어보기 + toc: 목차 +post: + posted: 작성일 + edited: Edited on + created: Post created + modified: Updated at + edit: Edit this post + in: In + more: more + read_more: 더 읽어보기 + untitled: 제목 없음 + sticky: 고정 + toc_empty: 목차 없음 + views: Views + comments_count: 댓글 + related_posts: Related Posts + copy_button: Copy + copy_success: Copied + copy_failure: Copy failed + copyright: + author: Post author + link: Post link + license_title: Copyright Notice + license_content: "All articles in this blog are licensed under %s unless stating additionally." +page: + totally: 모두 + tags: 태그 +footer: + powered: "Powered by %s" + theme: Theme + total_views: Total Views + total_visitors: Total Visitors +counter: + tag_cloud: + zero: 태그 없음 + one: 1개의 태그 + other: "총 %d개의 태그" + categories: + zero: 카테고리 없음 + one: 1개의 카테고리 + other: "총 %d개의 카테고리" + archive_posts: + zero: 포스트 없음 + one: 1개의 포스트 + other: "총 %d개의 포스트" +state: + posts: 포스트 + pages: 페이지 + tags: 태그 + categories: 카테고리 +search: + placeholder: Searching... +cheers: + um: 음.. + ok: OK + nice: 잘했어요 + good: 좋아요 + great: 훌륭해요 + excellent: 완벽해요 +keep_on: 포스트를 마저 작성하세요 +symbol: + comma: ", " + period: ". " + colon: ": " +reward: + donate: Donate + wechatpay: WeChat Pay + alipay: Alipay + bitcoin: Bitcoin +gitmentbutton: Show comments from Gitment +accessibility: + nav_toggle: Toggle navigation bar + prev_page: Previous page + next_page: Next page +symbols_count_time: + count: Symbols count in article + count_total: Symbols count total + time: Reading time + time_total: Reading time total + time_minutes: mins. diff --git a/languages/nl.yml b/languages/nl.yml new file mode 100644 index 000000000..fa42cc7b5 --- /dev/null +++ b/languages/nl.yml @@ -0,0 +1,98 @@ +--- +title: + archive: Archief + category: Categorie + tag: Label + schedule: Rooster +menu: + home: Home + archives: Archieven + categories: Categorieën + tags: Labels + about: Over + search: Zoeken + schedule: Rooster + sitemap: Sitemap + commonweal: Gezond verstand 404 +sidebar: + overview: Overzicht + toc: Inhoudsopgave +post: + posted: Geplaatst op + edited: Edited on + created: Post aangemaakt + modified: Post aangepast + edit: Edit this post + in: In + more: meer + read_more: Lees meer + untitled: Naamloos + sticky: Sticky + toc_empty: Deze post heeft geen inhoudsopgave + views: Views + comments_count: Comments + related_posts: Related Posts + copy_button: Copy + copy_success: Copied + copy_failure: Copy failed + copyright: + author: Post auteur + link: Post link + license_title: Copyright melding + license_content: "Alle artikelen op deze blog zijn gelicenseerd onder %s, mits niet anders aangegeven." +page: + totally: Totaal + tags: labels +footer: + powered: "Mede mogelijk gemaakt door %s" + theme: Thema + total_views: Total Views + total_visitors: Total Visitors +counter: + tag_cloud: + zero: Geen labels + one: 1 label in totaal + other: "%d labels in totaal" + categories: + zero: Geen categorieën + one: 1 categorie in totaal + other: "%d categorieën in totaal" + archive_posts: + zero: Geen posts. + one: 1 post. + other: "%d posts in totaal." +state: + posts: posts + pages: pagina's + tags: labels + categories: categorieën +search: + placeholder: Zoeken... +cheers: + um: Um.. + ok: Oké + nice: Leuk + good: Goed + great: Geweldig + excellent: Uitstekend +keep_on: Blijf posten. +symbol: + comma: ", " + period: ". " + colon: ": " +reward: + donate: Doneer + wechatpay: WeChat Pay + alipay: Alipay + bitcoin: Bitcoin +gitmentbutton: Show comments from Gitment +accessibility: + nav_toggle: Toggle navigation bar + prev_page: Previous page + next_page: Next page +symbols_count_time: + count: Symbols count in article + count_total: Symbols count total + time: Reading time + time_total: Reading time total + time_minutes: mins. diff --git a/languages/pt-BR.yml b/languages/pt-BR.yml new file mode 100644 index 000000000..69457f008 --- /dev/null +++ b/languages/pt-BR.yml @@ -0,0 +1,98 @@ +--- +title: + archive: Arquivo + category: Categoria + tag: Tag + schedule: Schedule +menu: + home: Home + archives: Arquivos + categories: Categorias + tags: Tags + about: Sobre + search: Pesquisar + schedule: Schedule + sitemap: Sitemap + commonweal: Commonweal 404 +sidebar: + overview: Visão geral + toc: Tabela de conteúdo +post: + posted: Postado em + edited: Edited on + created: Post created + modified: Updated at + edit: Edit this post + in: Em + more: more + read_more: Leia mais + untitled: Sem título + sticky: Sticky + toc_empty: Este post não possui tabela de conteúdo + views: Views + comments_count: Comments + related_posts: Related Posts + copy_button: Copy + copy_success: Copied + copy_failure: Copy failed + copyright: + author: Post author + link: Post link + license_title: Copyright Notice + license_content: "All articles in this blog are licensed under %s unless stating additionally." +page: + totally: Totalmente + tags: tags +footer: + powered: "Feito com %s" + theme: Tema + total_views: Total Views + total_visitors: Total Visitors +counter: + tag_cloud: + zero: Sem tags + one: 1 tag no total de + other: "%d tags no total de" + categories: + zero: Sem categoria + one: 1 categoria no total de + other: "%d categoria no total de" + archive_posts: + zero: Sem posts. + one: 1 post. + other: "%d posts no total." +state: + posts: Posts + pages: Páginas + tags: Tags + categories: Categorias +search: + placeholder: Searching... +cheers: + um: Uhmmmm... + ok: OK + nice: Bom + good: Muito Bom + great: Ótimo + excellent: Excelente +keep_on: Continuar no post. +symbol: + comma: ", " + period: ". " + colon: ": " +reward: + donate: Donate + wechatpay: WeChat Pay + alipay: Alipay + bitcoin: Bitcoin +gitmentbutton: Show comments from Gitment +accessibility: + nav_toggle: Toggle navigation bar + prev_page: Previous page + next_page: Next page +symbols_count_time: + count: Symbols count in article + count_total: Symbols count total + time: Reading time + time_total: Reading time total + time_minutes: mins. diff --git a/languages/pt.yml b/languages/pt.yml new file mode 100644 index 000000000..2a980431d --- /dev/null +++ b/languages/pt.yml @@ -0,0 +1,98 @@ +--- +title: + archive: Arquivo + category: Categoria + tag: Tag + schedule: Schedule +menu: + home: Home + archives: Arquivos + categories: Categorias + tags: Tags + about: Sobre + search: Pesquisa + schedule: Schedule + sitemap: Sitemap + commonweal: Commonweal 404 +sidebar: + overview: Visão Geral + toc: Tabela de Conteúdo +post: + posted: Postado em + edited: Edited on + created: Post created + modified: Updated at + edit: Edit this post + in: Em + more: more + read_more: Ler mais + untitled: Sem título + sticky: Sticky + toc_empty: Esta publicação não possui uma tabela de conteúdo + views: Views + comments_count: Comments + related_posts: Related Posts + copy_button: Copy + copy_success: Copied + copy_failure: Copy failed + copyright: + author: Post author + link: Post link + license_title: Copyright Notice + license_content: "All articles in this blog are licensed under %s unless stating additionally." +page: + totally: Totalmente + tags: tags +footer: + powered: "Desenvolvido com amor com %s" + theme: Tema + total_views: Total Views + total_visitors: Total Visitors +counter: + tag_cloud: + zero: Sem tags + one: 1 tag no total + other: "%d tags no total" + categories: + zero: Sem categorias + one: 1 categoria no total + other: "%d categorias no total" + archive_posts: + zero: Sem publicações. + one: 1 post. + other: "%d publicações no total." +state: + posts: publicações + pages: páginas + tags: tags + categories: categorias +search: + placeholder: Searching... +cheers: + um: Um.. + ok: OK + nice: Legal + good: Bom + great: Grandioso + excellent: Excelente +keep_on: Mantenha-se publicando! +symbol: + comma: ", " + period: ". " + colon: ": " +reward: + donate: Donate + wechatpay: WeChat Pay + alipay: Alipay + bitcoin: Bitcoin +gitmentbutton: Show comments from Gitment +accessibility: + nav_toggle: Toggle navigation bar + prev_page: Previous page + next_page: Next page +symbols_count_time: + count: Symbols count in article + count_total: Symbols count total + time: Reading time + time_total: Reading time total + time_minutes: mins. diff --git a/languages/ru.yml b/languages/ru.yml new file mode 100644 index 000000000..c7d8c7988 --- /dev/null +++ b/languages/ru.yml @@ -0,0 +1,98 @@ +--- +title: + archive: Архив + category: Категория + tag: Тэг + schedule: Календарь +menu: + home: Главная + archives: Архив + categories: Категории + tags: Тэги + about: О сайте + search: Поиск + schedule: Календарь + sitemap: Карта сайта + commonweal: Страница 404 +sidebar: + overview: Обзор + toc: Содержание +post: + posted: Размещено + edited: Изменено + created: Создано + modified: Изменено + edit: Редактировать запись + in: в категории + more: more + read_more: Читать полностью + untitled: Без имени + sticky: Ссылка + toc_empty: Эта запись без оглавления + views: Просмотров + comments_count: Комментариев + related_posts: Похожие записи + copy_button: Скопировать + copy_success: Скопировано! + copy_failure: Ошибка копирования! + copyright: + author: Автор записи + link: Ссылка на запись + license_title: Информация об авторских правах + license_content: "Все записи на этом сайте защищены лицензией %s, если не указано дополнительно." +page: + totally: Всего + tags: тэги +footer: + powered: "Генератор — %s" + theme: Тема + total_views: Всего просмотров + total_visitors: Всего посетителей +counter: + tag_cloud: + zero: Нет тэгов. + one: 1 тэг. + other: "%d тэгов всего." + categories: + zero: Нет категорий. + one: 1 категория. + other: "%d категорий всего." + archive_posts: + zero: Нет записей. + one: 1 запись. + other: "%d записей всего." +state: + posts: Архив + pages: Страницы + tags: Тэги + categories: Категории +search: + placeholder: Поиск... +cheers: + um: Эм.. + ok: OK + nice: Неплохо + good: Хорошо + great: Замечательно + excellent: Великолепно +keep_on: Продолжаю писать. +symbol: + comma: ", " + period: ". " + colon: ": " +reward: + donate: Донат + wechatpay: WeChat Pay + alipay: Alipay + bitcoin: Bitcoin +gitmentbutton: Открыть Gitment комментарии +accessibility: + nav_toggle: Показать/скрыть меню + prev_page: Предыдущая страница + next_page: Следующая страница +symbols_count_time: + count: Кол-во символов в статье + count_total: Общее кол-во символов + time: Время чтения + time_total: Общее время чтения + time_minutes: мин. diff --git a/languages/tr.yml b/languages/tr.yml new file mode 100644 index 000000000..899a6d809 --- /dev/null +++ b/languages/tr.yml @@ -0,0 +1,98 @@ +--- +title: + archive: Arşiv + category: Kategori + tag: Etiket + schedule: Program +menu: + home: Ana Sayfa + archives: Arşivler + categories: Kategoriler + tags: Etiketler + about: Hakkımda + search: Ara + schedule: Program + sitemap: Site Haritası + commonweal: Hata 404 +sidebar: + overview: Genel Bakış + toc: İçindekiler +post: + posted: Yayınlandı + edited: Düzenlendi + created: Oluşturuldu + modified: Değiştirildi + edit: Bu gönderiyi düzenle + in: İçinde + more: daha fazla + read_more: Daha fazla oku + untitled: Başlıksız + sticky: Sabit + toc_empty: Bu gönderinin içindekiler kısmı yok + views: Görünümler + comments_count: Yorumlar + related_posts: İlgili Gönderiler + copy_button: Kopyala + copy_success: Kopyalandı + copy_failure: Kopyalanamadı + copyright: + author: Gönderiyi yazan + link: Gönderi bağlantısı + license_title: Telif Hakkı Bildirimi + license_content: "Bu blogdaki tüm makaleler aksi belirtilmediği sürece %s altında lisanslıdır." +page: + totally: Toplamda + tags: etiketler +footer: + powered: "%s tarafından desteklenmektedir" + theme: Tema + total_views: Toplam görüntülenme + total_visitors: Toplam Ziyaretçi +counter: + tag_cloud: + zero: Etiket yok + one: Toplam 1 etiket + other: "Toplamda %d etiket" + categories: + zero: Kategori yok + one: Toplamda 1 kategori + other: "Toplamda %d kategori" + archive_posts: + zero: Gönderi yok. + one: 1 gönderi. + other: "Toplamda %d gönderi." +state: + posts: gönderiler + pages: sayfalar + tags: etiketler + categories: kategoriler +search: + placeholder: Aranıyor... +cheers: + um: Um.. + ok: Tamam + nice: Güzel + good: İyi + great: Müthiş + excellent: Mükemmel +keep_on: Gönderiye devam. +symbol: + comma: ", " + period: ". " + colon: ": " +reward: + donate: Bağış + wechatpay: WeChat Pay + alipay: Alipay + bitcoin: Bitcoin +gitmentbutton: Gitment'ın yorumlarını göster +accessibility: + nav_toggle: Gezinti çubuğunu değiştir + prev_page: Önceki sayfa + next_page: Sonraki sayfa +symbols_count_time: + count: Makalede sayılan semboller + count_total: Sayılan toplan semboller + time: Okuma Süresi + time_total: Toplmada Okuma Süresi + time_minutes: dk. diff --git a/languages/vi.yml b/languages/vi.yml new file mode 100644 index 000000000..9bb900b3b --- /dev/null +++ b/languages/vi.yml @@ -0,0 +1,98 @@ +--- +title: + archive: Lưu Trữ + category: Phân Loại + tag: Thẻ + schedule: Danh Mục +menu: + home: Trang Chủ + archives: Lưu Trữ + categories: Đầu Mục + tags: Thẻ + about: Giới Thiệu + search: Tìm Kiếm + schedule: Danh Mục + sitemap: Bản đồ trang + commonweal: Commonweal 404 +sidebar: + overview: Tổng Quan + toc: Mục Lục +post: + posted: Tạo lúc + edited: Edited on + created: Được tạo + modified: Được thay đổi + edit: Edit this post + in: Trong + more: thêm + read_more: Đọc tiếp + untitled: Không có tiêu đề + sticky: Đính + toc_empty: Bài viết này không có mục lục + views: Views + comments_count: Comments + related_posts: Related Posts + copy_button: Copy + copy_success: Copied + copy_failure: Copy failed + copyright: + author: Người viết + link: Liên kết bài viết + license_title: Chú ý bản quyền + license_content: "Tất cả bài viết trong blog này được đăng ký bởi %s trừ khi có thông báo bổ sung." +page: + totally: Toàn bộ + tags: thẻ +footer: + powered: "Cung cấp bởi %s" + theme: Giao Diện + total_views: Total Views + total_visitors: Total Visitors +counter: + tag_cloud: + zero: Không có thẻ nào + one: có 1 thẻ tất cả + other: "có %d thẻ tất cả" + categories: + zero: Không có trong mục nào + one: có 1 mục tất cả + other: "có %d mục tất cả" + archive_posts: + zero: Không có bài viết. + one: 1 bài viết. + other: "tổng số %d bài viết." +state: + posts: bài viết + pages: trang + tags: thẻ + categories: mục +search: + placeholder: Đang tìm... +cheers: + um: Um.. + ok: Đồng Ý + nice: Hay + good: Tốt + great: Tuyệt vời + excellent: Tuyệt cú mèo +keep_on: Giữ tiến độ nha. +symbol: + comma: ", " + period: ". " + colon: ": " +reward: + donate: Tài trợ + wechatpay: WeChat Pay + alipay: Alipay + bitcoin: Bitcoin +gitmentbutton: Hiển thị bình luận từ Gitment +accessibility: + nav_toggle: Toggle navigation bar + prev_page: Previous page + next_page: Next page +symbols_count_time: + count: Symbols count in article + count_total: Symbols count total + time: Reading time + time_total: Reading time total + time_minutes: mins. diff --git a/languages/zh-CN.yml b/languages/zh-CN.yml new file mode 100644 index 000000000..0d828c89c --- /dev/null +++ b/languages/zh-CN.yml @@ -0,0 +1,98 @@ +--- +title: + archive: 归档 + category: 分类 + tag: 标签 + schedule: 日程表 +menu: + home: 首页 + archives: 归档 + categories: 分类 + tags: 标签 + about: 关于 + search: 搜索 + schedule: 日程表 + sitemap: 站点地图 + commonweal: 公益 404 +sidebar: + overview: 站点概览 + toc: 文章目录 +post: + posted: 发表于 + edited: 更新于 + created: 创建时间 + modified: 修改时间 + edit: 编辑 + in: 分类于 + more: 更多 + read_more: 阅读全文 + untitled: 未命名 + sticky: 置顶 + toc_empty: 此文章未包含目录 + views: 阅读次数 + comments_count: 评论数 + related_posts: 相关文章 + copy_button: 复制 + copy_success: 复制成功 + copy_failure: 复制失败 + copyright: + author: 本文作者 + link: 本文链接 + license_title: 版权声明 + license_content: "本博客所有文章除特别声明外,均采用 %s 许可协议。转载请注明出处!" +page: + totally: 共有 + tags: 标签 +footer: + powered: "由 %s 强力驱动" + theme: 主题 + total_views: 总访问量 + total_visitors: 总访客量 +counter: + tag_cloud: + zero: 暂无标签 + one: 目前共计 1 个标签 + other: "目前共计 %d 个标签" + categories: + zero: 暂无分类 + one: 目前共计 1 个分类 + other: "目前共计 %d 个分类" + archive_posts: + zero: 暂无日志。 + one: 目前共计 1 篇日志。 + other: "目前共计 %d 篇日志。" +state: + posts: 日志 + pages: 页面 + tags: 标签 + categories: 分类 +search: + placeholder: 搜索... +cheers: + um: 嗯.. + ok: 还行 + nice: 不错 + good: 很好 + great: 非常好 + excellent: 太棒了 +keep_on: 继续努力。 +symbol: + comma: "," + period: "。" + colon: ":" +reward: + donate: 打赏 + wechatpay: 微信支付 + alipay: 支付宝 + bitcoin: 比特币 +gitmentbutton: 显示 Gitment 评论 +accessibility: + nav_toggle: 切换导航栏 + prev_page: 上一页 + next_page: 下一页 +symbols_count_time: + count: 本文字数 + count_total: 站点总字数 + time: 阅读时长 + time_total: 站点阅读时长 + time_minutes: 分钟 diff --git a/languages/zh-HK.yml b/languages/zh-HK.yml new file mode 100644 index 000000000..0ef571eb0 --- /dev/null +++ b/languages/zh-HK.yml @@ -0,0 +1,98 @@ +--- +title: + archive: 歸檔 + category: 分類 + tag: 標籤 + schedule: 日程表 +menu: + home: 首頁 + archives: 歸檔 + categories: 分類 + tags: 標籤 + about: 關於 + search: 檢索 + schedule: 日程表 + sitemap: 站點地圖 + commonweal: 公益 404 +sidebar: + overview: 本站概覽 + toc: 文章目錄 +post: + posted: 發表於 + edited: 更新於 + created: 創建時間 + modified: 修改時間 + edit: 編輯 + in: 分類於 + more: 更多 + read_more: 閱讀全文 + untitled: 未命名 + sticky: 置頂 + toc_empty: 此文章未包含目錄 + views: 閱讀次數 + comments_count: 評論數 + related_posts: 相關文章 + copy_button: 複製 + copy_success: 複製成功 + copy_failure: 複製失敗 + copyright: + author: 博主 + link: 文章連結 + license_title: 版權聲明 + license_content: "本網誌所有文章除特別聲明外,均採用 %s 許可協議。轉載請註明出處!" +page: + totally: 共有 + tags: 標籤 +footer: + powered: "由 %s 強力驅動" + theme: 主題 + total_views: 總瀏覽次數 + total_visitors: 訪客總數 +counter: + tag_cloud: + zero: 暫無標籤 + one: 目前共有 1 個標籤 + other: "目前共有 %d 個標籤" + categories: + zero: 暫無分類 + one: 目前共有 1 個分類 + other: "目前共有 %d 個分類" + archive_posts: + zero: 暫無文章。 + one: 目前共有 1 篇文章。 + other: "目前共有 %d 篇文章。" +state: + posts: 文章 + pages: 頁面 + tags: 標籤 + categories: 分類 +search: + placeholder: 搜索... +cheers: + um: 嗯.. + ok: 還行 + nice: 好 + good: 很好 + great: 非常好 + excellent: 太棒了 +keep_on: 繼續努力。 +symbol: + comma: "," + period: "。" + colon: ":" +reward: + donate: 打賞 + wechatpay: 微信支付 + alipay: 支付寶 + bitcoin: 比特幣 +gitmentbutton: 顯示 Gitment 評論 +accessibility: + nav_toggle: 切換導航欄 + prev_page: 上一頁 + next_page: 下一頁 +symbols_count_time: + count: 本文字數 + count_total: 站點總字數 + time: 閱讀時長 + time_total: 站點閱讀時長 + time_minutes: 分鍾 diff --git a/languages/zh-TW.yml b/languages/zh-TW.yml new file mode 100644 index 000000000..a26e882ee --- /dev/null +++ b/languages/zh-TW.yml @@ -0,0 +1,98 @@ +--- +title: + archive: 歸檔 + category: 分類 + tag: 標籤 + schedule: 時間表 +menu: + home: 首頁 + archives: 歸檔 + categories: 分類 + tags: 標籤 + about: 關於 + search: 搜尋 + schedule: 時間表 + sitemap: 網站地圖 + commonweal: 公益 404 +sidebar: + overview: 本站概要 + toc: 文章目錄 +post: + posted: 發表於 + edited: 更新於 + created: 創建時間 + modified: 修改時間 + edit: 編輯 + in: 分類於 + more: 更多 + read_more: 閱讀全文 + untitled: 未命名 + sticky: 置頂 + toc_empty: 此文章沒有目錄 + views: 閱讀次數 + comments_count: 評論數 + related_posts: 相關文章 + copy_button: 複製 + copy_success: 複製成功 + copy_failure: 複製失敗 + copyright: + author: 作者 + link: 文章連結 + license_title: 版權聲明 + license_content: "本網誌所有文章除特別聲明外,均採用 %s 許可協議。轉載請註明出處!" +page: + totally: 共有 + tags: 標籤 +footer: + powered: "由 %s 強力驅動" + theme: 主題 + total_views: 總瀏覽次數 + total_visitors: 訪客總數 +counter: + tag_cloud: + zero: 沒有標籤 + one: 目前共有 1 個標籤 + other: "目前共有 %d 個標籤" + categories: + zero: 沒有分類 + one: 目前共有 1 個分類 + other: "目前共有 %d 個分類" + archive_posts: + zero: 沒有文章。 + one: 目前共有 1 篇文章。 + other: "目前共有 %d 篇文章。" +state: + posts: 文章 + pages: 頁面 + tags: 標籤 + categories: 分類 +search: + placeholder: 搜尋... +cheers: + um: 嗯.. + ok: 還行 + nice: 好 + good: 很好 + great: 非常好 + excellent: 太棒了 +keep_on: 繼續努力。 +symbol: + comma: "," + period: "。" + colon: ":" +reward: + donate: 捐贈 + wechatpay: 微信支付 + alipay: 支付寶 + bitcoin: 比特幣 +gitmentbutton: 顯示 Gitment 評論 +accessibility: + nav_toggle: 切換導航欄 + prev_page: 上一頁 + next_page: 下一頁 +symbols_count_time: + count: 文章字數 + count_total: 總字數 + time: 所需閱讀時間 + time_total: 所需總閱讀時間 + time_minutes: 分鐘 diff --git a/layout/_custom/head.swig b/layout/_custom/head.swig new file mode 100644 index 000000000..6aed40d5e --- /dev/null +++ b/layout/_custom/head.swig @@ -0,0 +1,3 @@ +{# +Custom head. +#} diff --git a/layout/_custom/header.swig b/layout/_custom/header.swig new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/layout/_custom/header.swig @@ -0,0 +1 @@ + diff --git a/layout/_custom/sidebar.swig b/layout/_custom/sidebar.swig new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/layout/_custom/sidebar.swig @@ -0,0 +1 @@ + diff --git a/layout/_layout.swig b/layout/_layout.swig new file mode 100644 index 000000000..23019f2fa --- /dev/null +++ b/layout/_layout.swig @@ -0,0 +1,110 @@ + + +{# NexT version #} +{% set version = next_env('version') %} + +{# Language & Config #} +{% set title = __('title') !== 'title' && __('title') || config.title %} +{% set subtitle = __('subtitle') !== 'subtitle' && __('subtitle') || config.subtitle %} +{% set author = __('author') !== 'author' && __('author') || config.author %} +{% set description = __('description') !== 'description' && __('description') || config.description %} + +{% set html_class = 'theme-next ' + theme.scheme %} +{% if theme.motion.enable %} + {% set html_class = html_class + ' use-motion' %} +{% endif %} + + + + {{ partial('_partials/head/head.swig', {}, {cache: theme.cache.enable}) }} + {% include '_partials/head/head-unique.swig' %} + {% block title %}{% endblock %} + {% include '_third-party/analytics/index.swig' %} + {{ partial('_scripts/noscript.swig', {}, {cache: theme.cache.enable}) }} + + + + + {% set container_class = "container " %} + {% if theme.sidebar.position %} + {% set container_class = container_class + 'sidebar-position-' + theme.sidebar.position %} + {% endif %} + +
      +
      + + + + {{ partial('_third-party/github-banner.swig', {}, {cache: theme.cache.enable}) }} + +
      +
      +
      + {% if theme.scheme === 'Pisces' || theme.scheme === 'Gemini' %} + {% include '_partials/header/sub-menu.swig' %} + {% endif %} +
      + {% block content %}{% endblock %} +
      + {% include '_partials/comments.swig' %} +
      + {% if theme.sidebar.display !== 'remove' %} + {% block sidebar %}{% endblock %} + {% endif %} +
      +
      + +
      + +
      + + {% if not theme.sidebar.b2t %} +
      + + {% if theme.sidebar.scrollpercent %} + 0% + {% endif %} +
      + {% endif %} + + {% if theme.needmoreshare2.enable and theme.needmoreshare2.float.enable %} +
      + + + +
      + {% endif %} + +
      + + {% include '_scripts/vendors.swig' %} + {% include '_scripts/commons.swig' %} + + {% set scheme_script = '_scripts/schemes/' + theme.scheme | lower + '.swig' %} + {% include scheme_script %} + + {% block script_extra %}{% endblock %} + + {% include '_scripts/boostrap.swig' %} + + {% include '_third-party/comments/index.swig' %} + {% include '_third-party/search/index.swig' %} + {% include '_third-party/analytics/lean-analytics.swig' %} + {% include '_third-party/analytics/firestore.swig' %} + {% include '_third-party/seo/baidu-push.swig' %} + {% include '_third-party/math/index.swig' %} + {% include '_third-party/needsharebutton.swig' %} + {% include '_third-party/rating.swig' %} + {% include '_third-party/pangu.swig' %} + {% include '_third-party/scroll-cookie.swig' %} + {% include '_third-party/exturl.swig' %} + {% include '_third-party/bookmark.swig' %} + {% include '_third-party/copy-code.swig' %} + + diff --git a/layout/_macro/menu/menu-badge.swig b/layout/_macro/menu/menu-badge.swig new file mode 100644 index 000000000..b2dcce135 --- /dev/null +++ b/layout/_macro/menu/menu-badge.swig @@ -0,0 +1,14 @@ +{% macro render(name) %} + + {% set badges = { + archives: site.posts.length, + categories: site.categories.length, + tags: site.tags.length } + %} + {% for menu, count in badges %} + {% if name == menu %} + {{ count }} + {% endif %} + {% endfor %} + +{% endmacro %} diff --git a/layout/_macro/menu/menu-item.swig b/layout/_macro/menu/menu-item.swig new file mode 100644 index 000000000..89879bdfb --- /dev/null +++ b/layout/_macro/menu/menu-item.swig @@ -0,0 +1,20 @@ +{% macro render(name, value) %} +{% import 'menu-badge.swig' as menu_badge %} + + {% set itemURL = value.split('||')[0] | replace('//', '/', 'g') | trim %} + + +{% endmacro %} diff --git a/layout/_macro/post-collapse.swig b/layout/_macro/post-collapse.swig new file mode 100644 index 000000000..1894d2466 --- /dev/null +++ b/layout/_macro/post-collapse.swig @@ -0,0 +1,34 @@ +{% macro render(post) %} + + + +{% endmacro %} diff --git a/layout/_macro/post-copyright.swig b/layout/_macro/post-copyright.swig new file mode 100644 index 000000000..fd3d9c09a --- /dev/null +++ b/layout/_macro/post-copyright.swig @@ -0,0 +1,14 @@ +
        +
      • + {{ __('post.copyright.author') + __('symbol.colon') }} {# + #}{{ post.author | default(author) }}{# +#}
      • +
      • + {{ __('post.copyright.link') + __('symbol.colon') }} + {{ post.url | default(post.permalink) }} +
      • +
      • + {{ __('post.copyright.license_title') + __('symbol.colon') }} {# + #}{{ post.copyright | default(__('post.copyright.license_content', theme.post_copyright.license)) }}{# +#}
      • +
      diff --git a/layout/_macro/post-related.swig b/layout/_macro/post-related.swig new file mode 100644 index 000000000..2853b45ac --- /dev/null +++ b/layout/_macro/post-related.swig @@ -0,0 +1,20 @@ +{% set popular_posts = popular_posts_json(theme.related_posts.params, post) %} +{% if popular_posts.json and popular_posts.json.length > 0 %} + + +{% endif %} diff --git a/layout/_macro/post.swig b/layout/_macro/post.swig new file mode 100644 index 000000000..880a76c21 --- /dev/null +++ b/layout/_macro/post.swig @@ -0,0 +1,469 @@ +{% macro render(post, is_index, post_extra_class) %} + + {% set headlessPost = Array.prototype.indexOf.call(['quote', 'picture'], post.type) > -1 %} + + {% set post_class = 'post post-type-' + post.type | default('normal') %} + {% if post_extra_class > 0 %} + {% set post_class = post_class + ' ' + post_extra_class | default('') %} + {% endif %} + {% if post.sticky > 0 %} + {% set post_class = post_class + ' ' + 'post-sticky' %} + {% endif %} + + {% if theme.reading_progress.enable && not is_index %} +
      + {% endif %} + +
      + {##################} + {### POST BLOCK ###} + {##################} +
      + + + + + + + {% if not headlessPost %} +
      + + {# Not to show title for quote posts that do not have a title #} + {% if not (is_index and post.type === 'quote' and not post.title) %} + <{% if theme.seo %}h2{% else %}h1{% endif %} class="post-title{% if post.direction && post.direction.toLowerCase() === 'rtl' %} rtl{% endif %}" itemprop="name headline">{# + #}{# Link posts #}{# + #}{% if post.link %} + {% if post.sticky > 0 %} + {{ post.sticky }} + + + + {% endif %} + + {% else %}{# + #}{% if is_index %} + {% if post.sticky > 0 %} + + + + {% endif %} + + {% else -%} + {{- post.title -}} + {% if theme.post_edit.enable -%} + + + + {%- endif %} + {% endif %} + {% endif %} + + {% endif %} + + +
      + {% endif %} + + {#################} + {### POST BODY ###} + {#################} +
      + + {# Gallery support #} + {% if post.photos and post.photos.length %} +
      + {% set COLUMN_NUMBER = 3 %} + {% for photo in post.photos %} + {% if loop.index0 % COLUMN_NUMBER === 0 %}
      {% endif %} + + {% if loop.index0 % COLUMN_NUMBER === 2 %}
      {% endif %} + {% endfor %} + + {# Append end tag for `post-gallery-row` when (photos size mod COLUMN_NUMBER) is less than COLUMN_NUMBER #} + {% if post.photos.length % COLUMN_NUMBER > 0 %}
      {% endif %} +
      + {% endif %} + + {% if is_index %} + {% if post.description and theme.excerpt_description %} + {{ post.description }} + +
      + + {{ __('post.read_more') }} » + +
      + + {% elif post.excerpt %} + {{ post.excerpt }} + +
      + + {{ __('post.read_more') }} » + +
      + + {% elif theme.auto_excerpt.enable %} + {% set content = post.content | striptags %} + {{ content.substring(0, theme.auto_excerpt.length) }} + {% if content.length > theme.auto_excerpt.length %}...{% endif %} + +
      + + {{ __('post.read_more') }} » + +
      + + {% else %} + {% if post.type === 'picture' %} + {{ post.content }} + {% else %} + {{ post.content }} + {% endif %} + {% endif %} + {% else %} + {{ post.content }} + {% endif %} +
      + + {% if theme.related_posts.enable and (theme.related_posts.display_in_home or not is_index) %} + {% include 'post-related.swig' with { post: post } %} + {% endif %} + + {#####################} + {### END POST BODY ###} + {#####################} + + {% if theme.wechat_subscriber.enabled and not is_index %} +
      + {% include 'wechat-subscriber.swig' %} +
      + {% endif %} + + {% if (theme.alipay or theme.wechatpay or theme.bitcoin) and not is_index %} +
      + {% include 'reward.swig' %} +
      + {% endif %} + + {% if theme.post_copyright.enable and not is_index %} +
      + {% include 'post-copyright.swig' with { post: post } %} +
      + {% endif %} + +
      + {% if post.tags and post.tags.length and not is_index %} + + {% endif %} + + {% if not is_index %} + {% if theme.rating.enable or (theme.vkontakte_api.enable and theme.vkontakte_api.like) or (theme.facebook_sdk.enable and theme.facebook_sdk.like_button) or (theme.needmoreshare2.enable and theme.needmoreshare2.postbottom.enable) %} +
      + {% if theme.rating.enable %} +
      +
      +
      + {% endif %} + + {% if (theme.vkontakte_api.enable and theme.vkontakte_api.like) or (theme.facebook_sdk.enable and theme.facebook_sdk.like_button) %} + + {% endif %} + + {% if theme.needmoreshare2.enable and theme.needmoreshare2.postbottom.enable %} + {% if (theme.vkontakte_api.enable and theme.vkontakte_api.like) or (theme.facebook_sdk.enable and theme.facebook_sdk.like_button) %} + + {% endif %} +
      + + + +
      + {% endif %} +
      + {% endif %} + {% endif %} + + {% if not is_index and (post.prev or post.next) %} +
      +
      + {% if post.next %} + + {% endif %} +
      + + + +
      + {% if post.prev %} + + {% endif %} +
      +
      + {% endif %} + + {% set isLast = loop.index % page.per_page === 0 %} + {% if is_index and not isLast %} +
      + {% endif %} +
      +
      + {######################} + {### END POST BLOCK ###} + {######################} + + +{% endmacro %} diff --git a/layout/_macro/reward.swig b/layout/_macro/reward.swig new file mode 100644 index 000000000..04c75e250 --- /dev/null +++ b/layout/_macro/reward.swig @@ -0,0 +1,30 @@ +
      +
      {{ theme.reward_comment }}
      + + +
      diff --git a/layout/_macro/sidebar.swig b/layout/_macro/sidebar.swig new file mode 100644 index 000000000..b71be435a --- /dev/null +++ b/layout/_macro/sidebar.swig @@ -0,0 +1,192 @@ +{% macro render(is_post) %} + + + +{% endmacro %} diff --git a/layout/_macro/wechat-subscriber.swig b/layout/_macro/wechat-subscriber.swig new file mode 100644 index 000000000..aa0fdbc84 --- /dev/null +++ b/layout/_macro/wechat-subscriber.swig @@ -0,0 +1,4 @@ +
      + {{ author }} wechat +
      {{ theme.wechat_subscriber.description }}
      +
      diff --git a/layout/_partials/breadcrumb.swig b/layout/_partials/breadcrumb.swig new file mode 100644 index 000000000..998c50b72 --- /dev/null +++ b/layout/_partials/breadcrumb.swig @@ -0,0 +1,23 @@ +{% set paths = page.path.split('/') %} +{% set count = paths.length %} +{% if count > 2 %} + {% set current = 0 %} + {% set link = '' %} + +{% endif %} diff --git a/layout/_partials/comments.swig b/layout/_partials/comments.swig new file mode 100644 index 000000000..4124b9a86 --- /dev/null +++ b/layout/_partials/comments.swig @@ -0,0 +1,63 @@ +{% if page.comments %} + + {% if theme.facebook_sdk.enable and theme.facebook_comments_plugin.enable %} +
      +
      +
      +
      + + {% elseif theme.vkontakte_api.enable and theme.vkontakte_api.comments %} +
      +
      +
      + + {% elseif theme.disqus.enable %} +
      +
      + +
      +
      + + {% elseif theme.hypercomments_id %} +
      +
      +
      + + {% elseif theme.youyan_uid %} +
      +
      +
      + + {% elseif theme.livere_uid %} +
      +
      +
      + + {% elseif theme.changyan.enable and theme.changyan.appid and theme.changyan.appkey %} +
      +
      +
      + + {% elseif theme.gitment.enable %} +
      + {% if theme.gitment.lazy %} +
      {{ __('gitmentbutton') }}
      + + {% else %} +
      + {% endif %} +
      + + {% elseif theme.valine.enable and theme.valine.appid and theme.valine.appkey %} +
      +
      + {% endif %} + +{% endif %} diff --git a/layout/_partials/footer.swig b/layout/_partials/footer.swig new file mode 100644 index 000000000..a0ec48ea9 --- /dev/null +++ b/layout/_partials/footer.swig @@ -0,0 +1,64 @@ + + +{% if theme.seo %} + {% set nofollow = ' rel="external nofollow"' %} +{% endif %} + +{% if theme.footer.powered.enable %} +
      {# + #}{{ __('footer.powered', 'Hexo') }}{% if theme.footer.powered.version %} v{{ hexo_env('version') }}{% endif %}{# +#}
      +{% endif %} + +{% if theme.footer.powered.enable and theme.footer.theme.enable %} + +{% endif %} + +{% if theme.footer.theme.enable %} +
      {# + #}{{ __('footer.theme') }} — {# + #}{# + #}NexT.{{ theme.scheme }}{# + #}{% if theme.footer.theme.version %} v{{ version }}{% endif %}{# +#}
      +{% endif %} + +{% if theme.footer.custom_text %} + +{% endif %} diff --git a/layout/_partials/head/external-fonts.swig b/layout/_partials/head/external-fonts.swig new file mode 100644 index 000000000..876e12e7b --- /dev/null +++ b/layout/_partials/head/external-fonts.swig @@ -0,0 +1,51 @@ +{% if theme.font.enable %} + + {% set font_config = theme.font %} + {% set font_families = '' %} + {% set font_styles = ':300,300italic,400,400italic,700,700italic' %} + {% set font_found = false %} + + {% if font_config.global.family and font_config.global.external %} + {% set font_families += font_config.global.family + font_styles %} + {% set font_found = true %} + {% endif %} + + {% if font_config.headings.family and font_config.headings.external %} + {% if font_found %} + {% set font_families += '|' %} + {% endif %} + + {% set font_families += font_config.headings.family + font_styles %} + {% endif %} + + {% if font_config.posts.family and font_config.posts.external %} + {% if font_found %} + {% set font_families += '|' %} + {% endif %} + + {% set font_families += font_config.posts.family + font_styles %} + {% endif %} + + {% if font_config.logo.family and font_config.logo.external %} + {% if font_found %} + {% set font_families += '|' %} + {% endif %} + + {% set font_families += font_config.logo.family + font_styles %} + {% endif %} + + {% if font_config.codes.family and font_config.codes.external %} + {% if font_found %} + {% set font_families += '|' %} + {% endif %} + + {% set font_families += font_config.codes.family + font_styles %} + {% endif %} + + {% if font_families !== '' %} + {% set font_families += '&subset=latin,latin-ext' %} + {% set font_host = font_config.host | default('//fonts.googleapis.com') %} + + {% endif %} + +{% endif %} diff --git a/layout/_partials/head/head-unique.swig b/layout/_partials/head/head-unique.swig new file mode 100644 index 000000000..9c1a14828 --- /dev/null +++ b/layout/_partials/head/head-unique.swig @@ -0,0 +1,27 @@ +{{ + open_graph({ + twitter_id: theme.twitter, + google_plus: theme.google_plus, + fb_admins: theme.fb_admins, + fb_app_id: theme.fb_app_id + }) +}} + +{% if theme.rss === '' and config.feed and config.feed.path %} + {% set theme.rss = config.feed.path %} +{% endif %} +{% if theme.rss %} + +{% endif %} + +{# Canonical, good for google search engine (SEO) : https://support.google.com/webmasters/answer/139066 #} +{% if theme.canonical %} + +{% endif %} + +{# Exports some front-matter variables to Front-End #} + diff --git a/layout/_partials/head/head.swig b/layout/_partials/head/head.swig new file mode 100644 index 000000000..17782fd1c --- /dev/null +++ b/layout/_partials/head/head.swig @@ -0,0 +1,139 @@ + + + + + + +{% if theme.needmoreshare2.enable %} + {% set needmoreshare2_css = url_for(theme.vendors._internal + '/needsharebutton/needsharebutton.css') %} + {% if theme.vendors.needmoreshare2_css %} + {% set needmoreshare2_css = theme.vendors.needmoreshare2_css %} + {% endif %} + +{% endif %} + + +{% if theme.pace %} + {% set pace_css_uri = url_for(theme.vendors._internal + '/pace/'+ theme.pace_theme +'.min.css?v=1.0.2') %} + {% set pace_js_uri = url_for(theme.vendors._internal + '/pace/pace.min.js?v=1.0.2') %} + {% if theme.vendors.pace %} + {% set pace_js_uri = theme.vendors.pace %} + {% endif %} + {% if theme.vendors.pace_css %} + {% set pace_css_uri = theme.vendors.pace_css %} + {% endif %} + + +{% endif %} + + +{% if theme.han %} + {% set Han_uri = url_for(theme.vendors._internal + '/Han/dist/han.min.css?v=3.3') %} + {% if theme.vendors.Han %} + {% set Han_uri = theme.vendors.Han %} + {% endif %} + +{% endif %} + + +{# #238, Disable Baidu tranformation #} + + + + +{% if theme.google_site_verification %} + +{% endif %} + +{% if theme.bing_site_verification %} + +{% endif %} + +{% if theme.yandex_site_verification %} + +{% endif %} + + +{% if theme.baidu_site_verification %} + +{% endif %} + + +{% if theme.qihu_site_verification %} + +{% endif %} + + +{% if theme.fancybox %} + {% set fancybox_css_uri = url_for(theme.vendors._internal + '/fancybox/source/jquery.fancybox.css?v=2.1.5') %} + {% if theme.vendors.fancybox_css %} + {% set fancybox_css_uri = theme.vendors.fancybox_css %} + {% endif %} + +{% endif %} + +{% include "./external-fonts.swig" %} + +{% set font_awesome_uri = url_for(theme.vendors._internal + '/font-awesome/css/font-awesome.min.css?v=4.6.2') %} +{% if theme.vendors.fontawesome %} + {% set font_awesome_uri = theme.vendors.fontawesome %} +{% endif %} + + + + +{% if theme.favicon.apple_touch_icon %} + +{% endif %} +{% if theme.favicon.medium %} + +{% endif %} +{% if theme.favicon.small %} + +{% endif %} +{% if theme.favicon.safari_pinned_tab %} + +{% endif %} +{% if theme.favicon.android_manifest %} + +{% endif %} +{% if theme.favicon.ms_browserconfig %} + +{% endif %} + + +{% if theme.facebook_sdk.enable and theme.facebook_sdk.webmaster %} + + +{% endif %} + + +{# Export some HEXO Configurations to Front-End #} + + +{% if theme.custom_file_path.head %} + {% set custom_head = '../../../../../' + theme.custom_file_path.head %} +{% else %} + {% set custom_head = '../../_custom/head.swig' %} +{% endif %} +{% include custom_head %} diff --git a/layout/_partials/header/brand.swig b/layout/_partials/header/brand.swig new file mode 100644 index 000000000..3b81f16de --- /dev/null +++ b/layout/_partials/header/brand.swig @@ -0,0 +1,35 @@ +
      +
      + {% if theme.custom_logo.image and theme.scheme === 'Muse' %} +
      + + {{ title }} + +
      + {% endif %} + + + {% if subtitle %} + {% if theme.seo %} +

      {{ subtitle }}

      + {% else %} +

      {{ subtitle }}

      + {% endif %} + {% endif %} +
      + + +
      diff --git a/layout/_partials/header/index.swig b/layout/_partials/header/index.swig new file mode 100644 index 000000000..42a90de29 --- /dev/null +++ b/layout/_partials/header/index.swig @@ -0,0 +1,9 @@ +{{ partial('_partials/header/brand.swig', {}, {cache: theme.cache.enable}) }} +{% include 'menu.swig' %} + +{% if theme.custom_file_path.header %} + {% set custom_header = '../../../../../' + theme.custom_file_path.header %} +{% else %} + {% set custom_header = '../../_custom/header.swig' %} +{% endif %} +{% include custom_header %} diff --git a/layout/_partials/header/menu.swig b/layout/_partials/header/menu.swig new file mode 100644 index 000000000..6562fdaeb --- /dev/null +++ b/layout/_partials/header/menu.swig @@ -0,0 +1,52 @@ +{% import '../../_macro/menu/menu-item.swig' as menu_item %} + + diff --git a/layout/_partials/header/sub-menu.swig b/layout/_partials/header/sub-menu.swig new file mode 100644 index 000000000..cd9bce4ae --- /dev/null +++ b/layout/_partials/header/sub-menu.swig @@ -0,0 +1,92 @@ +{% if not is_home() && not is_post() %} + {% if theme.menu %} + + {% import '../../_macro/menu/menu-item.swig' as menu_item %} + + {# Submenu & Submenu-2 #} + {% for name, value in theme.menu %} + {% set respath = value %} + {% if value == '[object Object]' %} + + {# If current URL is value of parent submenu 'default' path #} + {% set currentParentUrl = page.path.split('/')[0] | trim %} + {% if currentParentUrl == value.default.split('||')[0] | trim | replace('/', '', 'g') %} + + {# Submenu items #} + + {# End Submenu items #} + + {# Submenu-2 #} + {% for name, value in theme.menu %} + {% set respath = value %} + {% if value == '[object Object]' %} + + {% for subname, subvalue in value %} + {% set itemName = subname.toLowerCase() %} + {% if itemName == 'default' %} + {% set parentValue = subvalue.split('||')[0] | trim %} + {% endif %} + {% if subvalue == '[object Object]' %} + + {# If current URL is value of parent submenu 'default' path #} + {% set paths = page.path.split('/') %} + {% for currentSubParentUrl in paths %} + {% if currentSubParentUrl == subvalue.default.split('||')[0] | trim | replace('/', '', 'g') %} + + {# Submenu-2 items #} + + {# End Submenu-2 items #} + + {% endif %} + {% endfor %} + {# End URL & path comparing #} + + {% endif %} + {% endfor %} + + {% endif %} + {% endfor %} + {# End Submenu-2 #} + + {% endif %} + {# End URL & path comparing #} + + {% endif %} + {% endfor %} + {# End Submenu & Submenu-2 #} + + {% endif %} +{% endif %} diff --git a/layout/_partials/page-header.swig b/layout/_partials/page-header.swig new file mode 100644 index 000000000..8fb71c6b8 --- /dev/null +++ b/layout/_partials/page-header.swig @@ -0,0 +1,12 @@ +
      + +<{% if theme.seo %}h2{% else %}h1{% endif %} class="post-title" itemprop="name headline">{{ page.title }} + + + +
      diff --git a/layout/_partials/pagination.swig b/layout/_partials/pagination.swig new file mode 100644 index 000000000..1038580b2 --- /dev/null +++ b/layout/_partials/pagination.swig @@ -0,0 +1,11 @@ +{% if page.prev or page.next %} + +{% endif %} diff --git a/layout/_partials/search/index.swig b/layout/_partials/search/index.swig new file mode 100644 index 000000000..9f2bc8b50 --- /dev/null +++ b/layout/_partials/search/index.swig @@ -0,0 +1,9 @@ +{% if theme.algolia_search.enable %} + {% include '../../_third-party/search/algolia-search/dom.swig' %} +{% elseif theme.swiftype_key %} + {% include 'swiftype.swig' %} +{% elseif theme.tinysou_Key %} + {% include 'tinysou.swig' %} +{% elseif theme.local_search.enable %} + {% include 'localsearch.swig' %} +{% endif %} diff --git a/layout/_partials/search/localsearch.swig b/layout/_partials/search/localsearch.swig new file mode 100644 index 000000000..f106aa06a --- /dev/null +++ b/layout/_partials/search/localsearch.swig @@ -0,0 +1,16 @@ + diff --git a/layout/_partials/search/swiftype.swig b/layout/_partials/search/swiftype.swig new file mode 100644 index 000000000..732e0c14b --- /dev/null +++ b/layout/_partials/search/swiftype.swig @@ -0,0 +1,12 @@ +
      + +
      + + diff --git a/layout/_partials/search/tinysou.swig b/layout/_partials/search/tinysou.swig new file mode 100644 index 000000000..2dfa3e317 --- /dev/null +++ b/layout/_partials/search/tinysou.swig @@ -0,0 +1,3 @@ +
      + +
      diff --git a/layout/_partials/share/add-this.swig b/layout/_partials/share/add-this.swig new file mode 100644 index 000000000..ae0a6b4f5 --- /dev/null +++ b/layout/_partials/share/add-this.swig @@ -0,0 +1,4 @@ + +
      + +
      diff --git a/layout/_partials/share/baidushare.swig b/layout/_partials/share/baidushare.swig new file mode 100644 index 000000000..6be489844 --- /dev/null +++ b/layout/_partials/share/baidushare.swig @@ -0,0 +1,57 @@ +{% if theme.baidushare.type === "button" %} +
      + + + + + + + + + + +
      + +{% elseif theme.baidushare.type === "slide" %} + +{% endif %} + diff --git a/layout/_partials/share/duoshuo_share.swig b/layout/_partials/share/duoshuo_share.swig new file mode 100644 index 000000000..bfa26f465 --- /dev/null +++ b/layout/_partials/share/duoshuo_share.swig @@ -0,0 +1,18 @@ +
      +
      + +
      +
      +
      +
      \ No newline at end of file diff --git a/layout/_partials/share/jiathis.swig b/layout/_partials/share/jiathis.swig new file mode 100644 index 000000000..325135220 --- /dev/null +++ b/layout/_partials/share/jiathis.swig @@ -0,0 +1,25 @@ + + + + + \ No newline at end of file diff --git a/layout/_scripts/boostrap.swig b/layout/_scripts/boostrap.swig new file mode 100644 index 000000000..1bf5ab5b0 --- /dev/null +++ b/layout/_scripts/boostrap.swig @@ -0,0 +1,9 @@ +{% + set boot_scripts = [ + 'src/bootstrap.js' + ] +%} + +{% for bs in boot_scripts %} + +{% endfor %} diff --git a/layout/_scripts/commons.swig b/layout/_scripts/commons.swig new file mode 100644 index 000000000..c99e72766 --- /dev/null +++ b/layout/_scripts/commons.swig @@ -0,0 +1,10 @@ +{% + set js_commons = [ + 'src/utils.js', + 'src/motion.js' + ] +%} + +{% for common in js_commons %} + +{% endfor %} diff --git a/layout/_scripts/noscript.swig b/layout/_scripts/noscript.swig new file mode 100644 index 000000000..6f9140898 --- /dev/null +++ b/layout/_scripts/noscript.swig @@ -0,0 +1,26 @@ + diff --git a/layout/_scripts/pages/post-details.swig b/layout/_scripts/pages/post-details.swig new file mode 100644 index 000000000..c9f7634fb --- /dev/null +++ b/layout/_scripts/pages/post-details.swig @@ -0,0 +1,2 @@ + + diff --git a/layout/_scripts/schemes/gemini.swig b/layout/_scripts/schemes/gemini.swig new file mode 100644 index 000000000..676db4e12 --- /dev/null +++ b/layout/_scripts/schemes/gemini.swig @@ -0,0 +1,10 @@ +{% + set scripts = [ + 'src/affix.js', + 'src/schemes/pisces.js' + ] +%} + +{% for script in scripts %} + +{% endfor %} diff --git a/layout/_scripts/schemes/mist.swig b/layout/_scripts/schemes/mist.swig new file mode 100644 index 000000000..e69de29bb diff --git a/layout/_scripts/schemes/muse.swig b/layout/_scripts/schemes/muse.swig new file mode 100644 index 000000000..e69de29bb diff --git a/layout/_scripts/schemes/pisces.swig b/layout/_scripts/schemes/pisces.swig new file mode 100644 index 000000000..676db4e12 --- /dev/null +++ b/layout/_scripts/schemes/pisces.swig @@ -0,0 +1,10 @@ +{% + set scripts = [ + 'src/affix.js', + 'src/schemes/pisces.js' + ] +%} + +{% for script in scripts %} + +{% endfor %} diff --git a/layout/_scripts/vendors.swig b/layout/_scripts/vendors.swig new file mode 100644 index 000000000..5e8bf01e4 --- /dev/null +++ b/layout/_scripts/vendors.swig @@ -0,0 +1,61 @@ +{# Reset `window.Promise` when it was not a function. #} +{# IE refers the element whose id is `Promise` as `window.Promise`, this causes Velocity throwing an exception #} + + +{% set js_vendors = {} %} +{% set js_vendors.jquery = 'jquery/index.js?v=2.1.3' %} + +{% if theme.fastclick %} + {% set js_vendors.fastclick = 'fastclick/lib/fastclick.min.js?v=1.0.6' %} +{% endif %} + +{% if theme.lazyload %} + {% set js_vendors.lazyload = 'jquery_lazyload/jquery.lazyload.js?v=1.9.7' %} +{% endif %} + +{% set js_vendors.velocity = 'velocity/velocity.min.js?v=1.2.1' %} +{% set js_vendors.velocity_ui = 'velocity/velocity.ui.min.js?v=1.2.1' %} + +{% if theme.fancybox %} + {% set js_vendors.fancybox = 'fancybox/source/jquery.fancybox.pack.js?v=2.1.5' %} +{% endif %} + +{% if theme.canvas_nest %} + {% set js_vendors.canvas_nest = 'canvas-nest/canvas-nest.min.js' %} +{% endif %} + +{% if theme.three_waves %} + {% set js_vendors.three = 'three/three.min.js' %} + {% set js_vendors.three_waves = 'three/three-waves.min.js' %} +{% endif %} + +{% if theme.canvas_lines %} + {% set js_vendors.three = 'three/three.min.js' %} + {% set js_vendors.canvas_lines = 'three/canvas_lines.min.js' %} +{% endif %} + +{% if theme.canvas_sphere %} + {% set js_vendors.three = 'three/three.min.js' %} + {% set js_vendors.canvas_sphere = 'three/canvas_sphere.min.js' %} +{% endif %} + +{% if theme.canvas_ribbon.enable and theme.scheme === 'Pisces'%} + {% set js_vendors.canvas_ribbon = 'canvas-ribbon/canvas-ribbon.js' %} +{% endif %} + +{% if theme.reading_progress.enable %} + {% set js_vendors.reading_progress = 'reading_progress/reading_progress.js' %} +{% endif %} + +{% for name, internal in js_vendors %} + {% set internal_script = url_for(theme.vendors._internal) + '/' + internal %} + {% if name == 'canvas_ribbon' %} + + {% else %} + + {% endif %} +{% endfor %} diff --git a/layout/_third-party/analytics/analytics-with-widget.swig b/layout/_third-party/analytics/analytics-with-widget.swig new file mode 100644 index 000000000..f2a40490d --- /dev/null +++ b/layout/_third-party/analytics/analytics-with-widget.swig @@ -0,0 +1,4 @@ +{% include 'busuanzi-counter.swig' %} +{% include 'tencent-mta.swig' %} +{% include 'tencent-analytics.swig' %} +{% include 'cnzz-analytics.swig' %} \ No newline at end of file diff --git a/layout/_third-party/analytics/application-insights.swig b/layout/_third-party/analytics/application-insights.swig new file mode 100644 index 000000000..c0af16fad --- /dev/null +++ b/layout/_third-party/analytics/application-insights.swig @@ -0,0 +1,11 @@ +{% if theme.application_insights %} + +{% endif %} \ No newline at end of file diff --git a/layout/_third-party/analytics/baidu-analytics.swig b/layout/_third-party/analytics/baidu-analytics.swig new file mode 100644 index 000000000..9ae1d8349 --- /dev/null +++ b/layout/_third-party/analytics/baidu-analytics.swig @@ -0,0 +1,11 @@ +{% if theme.baidu_analytics %} + +{% endif %} diff --git a/layout/_third-party/analytics/busuanzi-counter.swig b/layout/_third-party/analytics/busuanzi-counter.swig new file mode 100644 index 000000000..880e986cf --- /dev/null +++ b/layout/_third-party/analytics/busuanzi-counter.swig @@ -0,0 +1,20 @@ +{% if theme.busuanzi_count.enable %} +
      + + + {% if theme.busuanzi_count.total_visitors %} + + + + + {% endif %} + + {% if theme.busuanzi_count.total_views %} + + + + + {% endif %} +
      +{% endif %} + diff --git a/layout/_third-party/analytics/cnzz-analytics.swig b/layout/_third-party/analytics/cnzz-analytics.swig new file mode 100644 index 000000000..bffb73cdc --- /dev/null +++ b/layout/_third-party/analytics/cnzz-analytics.swig @@ -0,0 +1,7 @@ +{% if theme.cnzz_siteid %} + +
      + +
      + +{% endif %} diff --git a/layout/_third-party/analytics/facebook-sdk.swig b/layout/_third-party/analytics/facebook-sdk.swig new file mode 100644 index 000000000..7b5a29187 --- /dev/null +++ b/layout/_third-party/analytics/facebook-sdk.swig @@ -0,0 +1,19 @@ +{% if theme.facebook_sdk.enable %} + +{% endif %} diff --git a/layout/_third-party/analytics/firestore.swig b/layout/_third-party/analytics/firestore.swig new file mode 100644 index 000000000..9e5cb7637 --- /dev/null +++ b/layout/_third-party/analytics/firestore.swig @@ -0,0 +1,99 @@ +{% if theme.firestore.enable %} + + + {% if theme.firestore.bluebird %} + + {% endif %} + +{% endif %} diff --git a/layout/_third-party/analytics/google-analytics.swig b/layout/_third-party/analytics/google-analytics.swig new file mode 100644 index 000000000..1190babc9 --- /dev/null +++ b/layout/_third-party/analytics/google-analytics.swig @@ -0,0 +1,10 @@ +{% if theme.google_analytics %} + + +{% endif %} diff --git a/layout/_third-party/analytics/index.swig b/layout/_third-party/analytics/index.swig new file mode 100644 index 000000000..78ae38eec --- /dev/null +++ b/layout/_third-party/analytics/index.swig @@ -0,0 +1,5 @@ +{% include 'facebook-sdk.swig' %} +{% include 'vkontakte-api.swig' %} +{% include 'google-analytics.swig' %} +{% include 'baidu-analytics.swig' %} +{% include 'application-insights.swig' %} diff --git a/layout/_third-party/analytics/lean-analytics.swig b/layout/_third-party/analytics/lean-analytics.swig new file mode 100644 index 000000000..46496471d --- /dev/null +++ b/layout/_third-party/analytics/lean-analytics.swig @@ -0,0 +1,120 @@ +{% if theme.leancloud_visitors.enable %} + + {# custom analytics part create by xiamo; edited by LEAFERx #} + + + + +{% endif %} diff --git a/layout/_third-party/analytics/tencent-analytics.swig b/layout/_third-party/analytics/tencent-analytics.swig new file mode 100644 index 000000000..c2fab35ec --- /dev/null +++ b/layout/_third-party/analytics/tencent-analytics.swig @@ -0,0 +1,10 @@ +{% if theme.tencent_analytics %} + +{% endif %} diff --git a/layout/_third-party/analytics/tencent-mta.swig b/layout/_third-party/analytics/tencent-mta.swig new file mode 100644 index 000000000..f4b647015 --- /dev/null +++ b/layout/_third-party/analytics/tencent-mta.swig @@ -0,0 +1,14 @@ +{% if theme.tencent_mta %} + +{% endif %} diff --git a/layout/_third-party/analytics/vkontakte-api.swig b/layout/_third-party/analytics/vkontakte-api.swig new file mode 100644 index 000000000..913a8fc90 --- /dev/null +++ b/layout/_third-party/analytics/vkontakte-api.swig @@ -0,0 +1,27 @@ +{% if theme.vkontakte_api.enable %} + +
      + + +{% endif %} diff --git a/layout/_third-party/bookmark.swig b/layout/_third-party/bookmark.swig new file mode 100644 index 000000000..f28c12e28 --- /dev/null +++ b/layout/_third-party/bookmark.swig @@ -0,0 +1,14 @@ +{% if theme.bookmark and theme.bookmark.enable %} + {% set bookmark_uri = url_for(theme.vendors._internal + '/bookmark/bookmark.min.js?v=1.0')%} + {% if theme.vendors.bookmark %} + {% set bookmark_uri = theme.vendors.bookmark %} + {% endif %} + + +{% endif %} diff --git a/layout/_third-party/comments/changyan.swig b/layout/_third-party/comments/changyan.swig new file mode 100644 index 000000000..d816b2cba --- /dev/null +++ b/layout/_third-party/comments/changyan.swig @@ -0,0 +1,18 @@ +{% if theme.changyan.enable and theme.changyan.appid and theme.changyan.appkey %} + {% if is_home() %} + + {% else %} + + + {% endif %} +{% endif %} diff --git a/layout/_third-party/comments/disqus.swig b/layout/_third-party/comments/disqus.swig new file mode 100644 index 000000000..7ff74d056 --- /dev/null +++ b/layout/_third-party/comments/disqus.swig @@ -0,0 +1,45 @@ +{% if theme.disqus.enable %} + + {% if theme.disqus.count %} + + {% endif %} + + {% if page.comments %} + + {% endif %} + +{% endif %} diff --git a/layout/_third-party/comments/gitment.swig b/layout/_third-party/comments/gitment.swig new file mode 100644 index 000000000..edf415f7e --- /dev/null +++ b/layout/_third-party/comments/gitment.swig @@ -0,0 +1,57 @@ +{% if theme.gitment.enable and theme.gitment.client_id %} + + {% if theme.gitment.mint %} + {% set CommentsClass = "Gitmint" %} + + + {% else %} + {% set CommentsClass = "Gitment" %} + + + {% endif %} + + + {% if theme.gitment.cleanly %} + + {% endif %} + + {% if page.comments %} + + {% endif %} + +{% endif %} diff --git a/layout/_third-party/comments/hypercomments.swig b/layout/_third-party/comments/hypercomments.swig new file mode 100644 index 000000000..c90ee1c63 --- /dev/null +++ b/layout/_third-party/comments/hypercomments.swig @@ -0,0 +1,27 @@ +{% if not theme.disqus_shortname %} + + {% if theme.hypercomments_id %} + + + + {% endif %} + +{% endif %} diff --git a/layout/_third-party/comments/index.swig b/layout/_third-party/comments/index.swig new file mode 100644 index 000000000..f9db12d3f --- /dev/null +++ b/layout/_third-party/comments/index.swig @@ -0,0 +1,7 @@ +{% include 'disqus.swig' %} +{% include 'hypercomments.swig' %} +{% include 'youyan.swig' %} +{% include 'livere.swig' %} +{% include 'changyan.swig' %} +{% include 'gitment.swig' %} +{% include 'valine.swig' %} diff --git a/layout/_third-party/comments/livere.swig b/layout/_third-party/comments/livere.swig new file mode 100644 index 000000000..99f9b4ed8 --- /dev/null +++ b/layout/_third-party/comments/livere.swig @@ -0,0 +1,16 @@ +{% if not (theme.disqus.enable and theme.disqus.shortname) and not theme.hypercomments_id %} + + {% if page.comments and theme.livere_uid %} + + {% endif %} + +{% endif %} diff --git a/layout/_third-party/comments/valine.swig b/layout/_third-party/comments/valine.swig new file mode 100644 index 000000000..a5d09eec8 --- /dev/null +++ b/layout/_third-party/comments/valine.swig @@ -0,0 +1,27 @@ +{% if theme.valine.enable and theme.valine.appid and theme.valine.appkey %} + + {% set valine_uri = '//unpkg.com/valine/dist/Valine.min.js' %} + {% if theme.vendors.valine %} + {% set valine_uri = theme.vendors.valine %} + {% endif %} + + + +{% endif %} diff --git a/layout/_third-party/comments/youyan.swig b/layout/_third-party/comments/youyan.swig new file mode 100644 index 000000000..68dae72f1 --- /dev/null +++ b/layout/_third-party/comments/youyan.swig @@ -0,0 +1,14 @@ +{% if not theme.disqus_shortname + and not theme.hypercomments_id %} + + {% if theme.youyan_uid %} + {% set uid = theme.youyan_uid %} + + {% if page.comments %} + + + + {% endif %} + {% endif %} + +{% endif %} diff --git a/layout/_third-party/copy-code.swig b/layout/_third-party/copy-code.swig new file mode 100644 index 000000000..f9831907a --- /dev/null +++ b/layout/_third-party/copy-code.swig @@ -0,0 +1,70 @@ +{% if theme.codeblock.copy_button.enable %} + + +{% endif %} diff --git a/layout/_third-party/exturl.swig b/layout/_third-party/exturl.swig new file mode 100644 index 000000000..0a416c36d --- /dev/null +++ b/layout/_third-party/exturl.swig @@ -0,0 +1,3 @@ +{% if theme.exturl %} + +{% endif %} diff --git a/layout/_third-party/github-banner.swig b/layout/_third-party/github-banner.swig new file mode 100644 index 000000000..3a305a218 --- /dev/null +++ b/layout/_third-party/github-banner.swig @@ -0,0 +1,16 @@ +{% if theme.github_banner %} + {% set github_banner_bg_color = theme.android_chrome_color %} + {% set github_banner_fg_color = "#fff" %} + {% set github_title = theme.github_banner.split('||')[1] | trim %} + {% if theme.exturl && theme.social_icons.exturl %} + {% set github_url = ' + {% if theme.exturl && theme.social_icons.exturl %} + + {% else %} + + {% endif %} +{% endif %} diff --git a/layout/_third-party/math/index.swig b/layout/_third-party/math/index.swig new file mode 100644 index 000000000..7ef5e3c6b --- /dev/null +++ b/layout/_third-party/math/index.swig @@ -0,0 +1,20 @@ +{% if theme.math.enable %} + {% set is_index_has_math = false %} + + {# At home, check if there has `mathjax: true` post #} + {% if is_home() %} + {% for post in page.posts %} + {% if post.mathjax and not is_index_has_math %} + {% set is_index_has_math = true %} + {% endif %} + {% endfor %} + {% endif %} + + {% if not theme.math.per_page or (is_index_has_math or page.mathjax) %} + {% if theme.math.engine == 'mathjax' %} + {% include 'mathjax.swig' %} + {% elif theme.math.engine == 'katex' %} + {% include 'katex.swig' %} + {% endif %} + {% endif %} +{% endif %} diff --git a/layout/_third-party/math/katex.swig b/layout/_third-party/math/katex.swig new file mode 100644 index 000000000..9f5c0d5c0 --- /dev/null +++ b/layout/_third-party/math/katex.swig @@ -0,0 +1 @@ + diff --git a/layout/_third-party/math/mathjax.swig b/layout/_third-party/math/mathjax.swig new file mode 100644 index 000000000..2fce8f2be --- /dev/null +++ b/layout/_third-party/math/mathjax.swig @@ -0,0 +1,20 @@ + + + + diff --git a/layout/_third-party/needsharebutton.swig b/layout/_third-party/needsharebutton.swig new file mode 100644 index 000000000..9120520c6 --- /dev/null +++ b/layout/_third-party/needsharebutton.swig @@ -0,0 +1,24 @@ +{% if theme.needmoreshare2.enable %} + {% set needmoreshare2_js = url_for(theme.vendors._internal + '/needsharebutton/needsharebutton.js') %} + {% if theme.vendors.needmoreshare2_js %} + {% set needmoreshare2_js = theme.vendors.needmoreshare2_js %} + {% endif %} + + + +{% endif %} \ No newline at end of file diff --git a/layout/_third-party/pangu.swig b/layout/_third-party/pangu.swig new file mode 100644 index 000000000..cedb9c369 --- /dev/null +++ b/layout/_third-party/pangu.swig @@ -0,0 +1,8 @@ +{% if theme.pangu %} + {% set pangu_uri = url_for(theme.vendors._internal + '/pangu/dist/pangu.min.js?v=3.3')%} + {% if theme.vendors.pangu %} + {% set pangu_uri = theme.vendors.pangu %} + {% endif %} + + +{% endif %} diff --git a/layout/_third-party/rating.swig b/layout/_third-party/rating.swig new file mode 100644 index 000000000..3b376ce31 --- /dev/null +++ b/layout/_third-party/rating.swig @@ -0,0 +1,18 @@ +{% if theme.rating.enable and (not is_home() and is_post()) %} + +{% endif %} diff --git a/layout/_third-party/schedule.swig b/layout/_third-party/schedule.swig new file mode 100644 index 000000000..6db3a3c46 --- /dev/null +++ b/layout/_third-party/schedule.swig @@ -0,0 +1,185 @@ +{% if theme.calendar.enable %} +{% if page.type == 'schedule' %} + + + +{% endif %} +{% endif %} diff --git a/layout/_third-party/scroll-cookie.swig b/layout/_third-party/scroll-cookie.swig new file mode 100644 index 000000000..b4d9d07bf --- /dev/null +++ b/layout/_third-party/scroll-cookie.swig @@ -0,0 +1,4 @@ +{% if theme.save_scroll %} + + +{% endif %} diff --git a/layout/_third-party/search/algolia-search/assets.swig b/layout/_third-party/search/algolia-search/assets.swig new file mode 100644 index 000000000..07e322217 --- /dev/null +++ b/layout/_third-party/search/algolia-search/assets.swig @@ -0,0 +1,18 @@ +{% if theme.algolia_search.enable %} + + {# S: Include Algolia instantsearch.js library #} + {% set algolia_instant_css = url_for(theme.vendors._internal + '/algolia-instant-search/instantsearch.min.css') %} + {% if theme.vendors.algolia_instant_css %} + {% set algolia_instant_css = theme.vendors.algolia_instant_css %} + {% endif %} + + + {% set algolia_instant_js = url_for(theme.vendors._internal + '/algolia-instant-search/instantsearch.min.js') %} + {% if theme.vendors.algolia_instant_js %} + {% set algolia_instant_js = theme.vendors.algolia_instant_js %} + {% endif %} + + {# E: Include Algolia instantsearch.js library #} + + +{% endif %} diff --git a/layout/_third-party/search/algolia-search/dom.swig b/layout/_third-party/search/algolia-search/dom.swig new file mode 100644 index 000000000..a733bb179 --- /dev/null +++ b/layout/_third-party/search/algolia-search/dom.swig @@ -0,0 +1,20 @@ +{% if theme.algolia_search.enable %} + +{% endif %} diff --git a/layout/_third-party/search/index.swig b/layout/_third-party/search/index.swig new file mode 100644 index 000000000..0a352bcc8 --- /dev/null +++ b/layout/_third-party/search/index.swig @@ -0,0 +1,3 @@ +{% include 'tinysou.swig' %} +{% include 'localsearch.swig' %} +{% include 'algolia-search/assets.swig' %} diff --git a/layout/_third-party/search/localsearch.swig b/layout/_third-party/search/localsearch.swig new file mode 100644 index 000000000..7ec22de46 --- /dev/null +++ b/layout/_third-party/search/localsearch.swig @@ -0,0 +1,336 @@ +{% if theme.local_search.enable %} + +{% endif %} diff --git a/layout/_third-party/search/tinysou.swig b/layout/_third-party/search/tinysou.swig new file mode 100644 index 000000000..6e186847a --- /dev/null +++ b/layout/_third-party/search/tinysou.swig @@ -0,0 +1,23 @@ +{% if config.tinysou_Key %} + +{% endif %} \ No newline at end of file diff --git a/layout/_third-party/seo/baidu-push.swig b/layout/_third-party/seo/baidu-push.swig new file mode 100644 index 000000000..ee6838f3a --- /dev/null +++ b/layout/_third-party/seo/baidu-push.swig @@ -0,0 +1,16 @@ +{% if theme.baidu_push %} + +{% endif %} diff --git a/layout/archive.swig b/layout/archive.swig new file mode 100644 index 000000000..fc146b6bf --- /dev/null +++ b/layout/archive.swig @@ -0,0 +1,64 @@ +{% extends '_layout.swig' %} +{% import '_macro/post-collapse.swig' as post_template %} +{% import '_macro/sidebar.swig' as sidebar_template %} + +{% block title %}{{ __('title.archive') }} | {{ title }}{% endblock %} + +{% block page_class %}page-archive{% endblock %} + +{% block content %} + + {#####################} + {### ARCHIVE BLOCK ###} + {#####################} +
      +
      + + + {% if theme.cheers_enabled %} + + {% set cheers %} + {% set posts_length = site.posts.length %} + {% if posts_length > 210 %} {% set cheers = 'excellent' %} + {% elif posts_length > 130 %} {% set cheers = 'great' %} + {% elif posts_length > 80 %} {% set cheers = 'good' %} + {% elif posts_length > 50 %} {% set cheers = 'nice' %} + {% elif posts_length > 30 %} {% set cheers = 'ok' %} + {% else %} + {% set cheers = 'um' %} + {% endif %} + {{ __('cheers.' + cheers) }}! {{ _p("counter.archive_posts", site.posts.length) }} {{ __('keep_on') }} + + {% endif %} + + {% for post in page.posts %} + + {# Show year #} + {% set year %} + {% set post.year = date(post.date, 'YYYY') %} + + {% if post.year !== year %} + {% set year = post.year %} +
      + <{% if theme.seo %}h2{% else %}h1{% endif %} class="archive-year" id="archive-year-{{ year }}">{{ year }} +
      + {% endif %} + {# endshow #} + + {{ post_template.render(post) }} + + {% endfor %} + +
      +
      + {#########################} + {### END ARCHIVE BLOCK ###} + {#########################} + + {% include '_partials/pagination.swig' %} + +{% endblock %} + +{% block sidebar %} + {{ sidebar_template.render(false) }} +{% endblock %} diff --git a/layout/category.swig b/layout/category.swig new file mode 100644 index 000000000..e28bdbce5 --- /dev/null +++ b/layout/category.swig @@ -0,0 +1,38 @@ +{% extends '_layout.swig' %} +{% import '_macro/post-collapse.swig' as post_template %} +{% import '_macro/sidebar.swig' as sidebar_template %} + +{% block title %}{{ __('title.category') }}: {{ page.category }} | {{ title }}{% endblock %} + +{% block content %} + + {######################} + {### CATEGORY BLOCK ###} + {######################} +
      + +
      +
      + <{% if theme.seo %}h2{% else %}h1{% endif %}>{# + #}{{ page.category }}{# + #}{{ __('title.category') }} + +
      + + {% for post in page.posts %} + {{ post_template.render(post) }} + {% endfor %} +
      + +
      + {##########################} + {### END CATEGORY BLOCK ###} + {##########################} + + {% include '_partials/pagination.swig' %} + +{% endblock %} + +{% block sidebar %} + {{ sidebar_template.render(false) }} +{% endblock %} diff --git a/layout/index.swig b/layout/index.swig new file mode 100644 index 000000000..26ecd8f34 --- /dev/null +++ b/layout/index.swig @@ -0,0 +1,23 @@ +{% extends '_layout.swig' %} +{% import '_macro/post.swig' as post_template %} +{% import '_macro/sidebar.swig' as sidebar_template %} + +{% block title %}{{ title }}{% if theme.index_with_subtitle and subtitle %} — {{ subtitle }}{% endif %}{% endblock %} + +{% block page_class %} + {% if is_home() %}page-home{% endif -%} +{% endblock %} + +{% block content %} +
      + {% for post in page.posts %} + {{ post_template.render(post, true) }} + {% endfor %} +
      + + {% include '_partials/pagination.swig' %} +{% endblock %} + +{% block sidebar %} + {{ sidebar_template.render(false) }} +{% endblock %} diff --git a/layout/page.swig b/layout/page.swig new file mode 100644 index 000000000..be968fd18 --- /dev/null +++ b/layout/page.swig @@ -0,0 +1,83 @@ +{% extends '_layout.swig' %} +{% import '_macro/sidebar.swig' as sidebar_template %} + + {% block title %}{# + #}{% set page_title_suffix = ' | ' + title %}{# + + #}{% if page.type === "categories" and not page.title %}{# + #}{{ __('title.category') + page_title_suffix }}{# + #}{% elif page.type === "tags" and not page.title %}{# + #}{{ __('title.tag') + page_title_suffix }}{# + #}{% else %}{# + #}{{ page.title + page_title_suffix }}{# + #}{% endif %}{# +#}{% endblock %} + +{% block page_class %}page-post-detail{% endblock %} + +{% block content %} + +
      + {##################} + {### PAGE BLOCK ###} + {##################} +
      + {% include '_partials/page-header.swig' %} + {#################} + {### PAGE BODY ###} + {#################} +
      + {# tagcloud page support #} + {% if page.type === "tags" %} +
      +
      + {% set visibleTags = 0 %} + {% for tag in site.tags %} + {% if tag.length %} + {% set visibleTags += 1 %} + {% endif %} + {% endfor %} + {{ _p('counter.tag_cloud', visibleTags) }} +
      +
      + {{ tagcloud({min_font: 12, max_font: 30, amount: 300, color: true, start_color: '#ccc', end_color: '#111'}) }} +
      +
      + {% elif page.type === 'categories' %} +
      +
      + {% set visibleCategories = 0 %} + {% for cat in site.categories %} + {% if cat.length %} + {% set visibleCategories += 1 %} + {% endif %} + {% endfor %} + {{ _p('counter.categories', visibleCategories) }} +
      +
      + {{ list_categories() }} +
      +
      + {% else %} + {{ page.content }} + {% endif %} +
      + {#####################} + {### END PAGE BODY ###} + {#####################} +
      + {% include '_partials/breadcrumb.swig' %} + {######################} + {### END PAGE BLOCK ###} + {######################} +
      + +{% endblock %} + +{% block sidebar %} + {{ sidebar_template.render(false) }} +{% endblock %} + +{% block script_extra %} + {% include '_scripts/pages/post-details.swig' %} +{% endblock %} diff --git a/layout/post.swig b/layout/post.swig new file mode 100644 index 000000000..ddfdddeab --- /dev/null +++ b/layout/post.swig @@ -0,0 +1,35 @@ +{% extends '_layout.swig' %} +{% import '_macro/post.swig' as post_template %} +{% import '_macro/sidebar.swig' as sidebar_template %} + + +{% block title %}{{ page.title }} | {{ title }}{% endblock %} + +{% block page_class %}page-post-detail{% endblock %} + + +{% block content %} + +
      + {{ post_template.render(page) }} + +
      + {% if theme.jiathis %} + {% include '_partials/share/jiathis.swig' %} + {% elseif theme.baidushare %} + {% include '_partials/share/baidushare.swig' %} + {% elseif theme.add_this_id %} + {% include '_partials/share/add-this.swig' %} + {% endif %} +
      +
      + +{% endblock %} + +{% block sidebar %} + {{ sidebar_template.render(true) }} +{% endblock %} + +{% block script_extra %} + {% include '_scripts/pages/post-details.swig' %} +{% endblock %} diff --git a/layout/schedule.swig b/layout/schedule.swig new file mode 100644 index 000000000..e1d3c04ee --- /dev/null +++ b/layout/schedule.swig @@ -0,0 +1,25 @@ +{% extends '_layout.swig' %} +{% import '_macro/sidebar.swig' as sidebar_template %} + +{% block title %}{{ __('title.schedule') }} | {{ title }}{% endblock %} + +{% block page_class %}page-post-detail page-calendar{% endblock %} + +{% block content %} + {######################} + {### SCHEDULE BLOCK ###} + {######################} +
      +
      +
        +
      +
      +
      + {##########################} + {### END SCHEDULE BLOCK ###} + {##########################} +{% endblock %} + +{% block sidebar %} + {{ sidebar_template.render(false) }} +{% endblock %} diff --git a/layout/tag.swig b/layout/tag.swig new file mode 100644 index 000000000..7af5a77c7 --- /dev/null +++ b/layout/tag.swig @@ -0,0 +1,37 @@ +{% extends '_layout.swig' %} +{% import '_macro/post-collapse.swig' as post_template %} +{% import '_macro/sidebar.swig' as sidebar_template %} + +{% block title %}{{ __('title.tag') }}: {{ page.tag }} | {{ title }}{% endblock %} + +{% block content %} + + {#################} + {### TAG BLOCK ###} + {#################} +
      + +
      +
      + <{% if theme.seo %}h2{% else %}h1{% endif %}>{# + #}{{ page.tag }}{# + #}{{ __('title.tag') }} + +
      + + {% for post in page.posts %} + {{ post_template.render(post) }} + {% endfor %} +
      + +
      + {#####################} + {### END TAG BLOCK ###} + {#####################} + + {% include '_partials/pagination.swig' %} +{% endblock %} + +{% block sidebar %} + {{ sidebar_template.render(false) }} +{% endblock %} diff --git a/package.json b/package.json new file mode 100644 index 000000000..dcd68887a --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "hexo-theme-next", + "version": "6.3.0", + "description": "Elegant and powerful theme for Hexo", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "gulp" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/theme-next/hexo-theme-next.git" + }, + "keywords": [ + "hexo", + "theme", + "next" + ], + "author": "NexT (https://theme-next.org)", + "license": "AGPL", + "bugs": { + "url": "https://github.com/theme-next/hexo-theme-next/issues" + }, + "homepage": "https://theme-next.org", + "devDependencies": { + "coffee-script": "^1.10.0", + "gulp": "^3.9.0", + "gulp-jshint": "^1.12.0", + "gulp-shell": "^0.6.1", + "js-yaml": "^3.8.1", + "jshint-stylish": "^2.1.0", + "stylint": "^1.5.9" + } +} diff --git a/scripts/helpers.js b/scripts/helpers.js new file mode 100644 index 000000000..03144cd73 --- /dev/null +++ b/scripts/helpers.js @@ -0,0 +1,23 @@ +'use strict'; + +hexo.extend.helper.register('hexo_env', function(type) { + return this.env[type]; +}); + +hexo.extend.helper.register('next_env', function(type) { + var env = require('../package.json'); + return env[type]; +}); + +hexo.extend.helper.register('item_active', function(path, className) { + var canonical = this.page.canonical_path; + var current = this.url_for(canonical).replace('index.html', '', 'g'); + var result = ''; + + if (current.indexOf(path) !== -1) { + if (path !== '/' || path === current) { + result = ' ' + className; + } + } + return result; +}); diff --git a/scripts/merge-configs.js b/scripts/merge-configs.js new file mode 100644 index 000000000..2c36f24cc --- /dev/null +++ b/scripts/merge-configs.js @@ -0,0 +1,45 @@ +/* global hexo */ + +'use strict'; + +var merge = require('./merge'); + +hexo.on('generateBefore', function() { + if (hexo.locals.get) { + var data = hexo.locals.get('data'); + + /** + * Merge configs from _data/next.yml into hexo.theme.config. + * If `override`, configs in next.yml will rewrite configs in hexo.theme.config. + * If next.yml not exists, merge all `theme_config.*` into hexo.theme.config. + */ + if (data && data.next) { + if (data.next.override) { + hexo.theme.config = data.next; + } else { + merge(hexo.config, data.next); + merge(hexo.theme.config, data.next); + } + } else { + merge(hexo.theme.config, hexo.config.theme_config); + } + + // Custom languages support. Introduced in NexT v6.3.0. + if (data && data.languages) { + var lang = this.config.language; + var i18n = this.theme.i18n; + + var mergeLang = function(lang) { + i18n.set(lang, merge(i18n.get([lang]), data.languages[lang])); + }; + + if (Array.isArray(lang)) { + for (var i = 0; i < lang.length; i++) { + mergeLang(lang[i]); + } + } else { + mergeLang(lang); + } + } + } +}); diff --git a/scripts/merge.js b/scripts/merge.js new file mode 100644 index 000000000..f964663d5 --- /dev/null +++ b/scripts/merge.js @@ -0,0 +1,2225 @@ +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to match `RegExp` flags from their coerced string values. */ +var reFlags = /\w*$/; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = + typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = + typedArrayTags[errorTag] = typedArrayTags[funcTag] = + typedArrayTags[mapTag] = typedArrayTags[numberTag] = + typedArrayTags[objectTag] = typedArrayTags[regexpTag] = + typedArrayTags[setTag] = typedArrayTags[stringTag] = + typedArrayTags[weakMapTag] = false; + +/** Used to identify `toStringTag` values supported by `_.clone`. */ +var cloneableTags = {}; +cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = + cloneableTags[boolTag] = cloneableTags[dateTag] = + cloneableTags[float32Tag] = cloneableTags[float64Tag] = + cloneableTags[int8Tag] = cloneableTags[int16Tag] = + cloneableTags[int32Tag] = cloneableTags[mapTag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[setTag] = + cloneableTags[stringTag] = cloneableTags[symbolTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; +cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[weakMapTag] = false; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; + +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function () { + try { + return freeProcess && freeProcess.binding('util'); + } catch (e) { + } +}()); + +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + +/** + * Adds the key-value `pair` to `map`. + * + * @private + * @param {Object} map The map to modify. + * @param {Array} pair The key-value pair to add. + * @returns {Object} Returns `map`. + */ +function addMapEntry(map, pair) { + // Don't return `map.set` because it's not chainable in IE 11. + map.set(pair[0], pair[1]); + return map; +} + +/** + * Adds `value` to `set`. + * + * @private + * @param {Object} set The set to modify. + * @param {*} value The value to add. + * @returns {Object} Returns `set`. + */ +function addSetEntry(set, value) { + // Don't return `set.add` because it's not chainable in IE 11. + set.add(value); + return set; +} + +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: + return func.call(thisArg); + case 1: + return func.call(thisArg, args[0]); + case 2: + return func.call(thisArg, args[0], args[1]); + case 3: + return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} + +/** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ +function arrayEach(array, iteratee) { + var index = -1, + length = array ? array.length : 0; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; +} + +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} + +/** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ +function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array ? array.length : 0; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; +} + +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function (value) { + return func(value); + }; +} + +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +/** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) { + } + } + return result; +} + +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function (value, key) { + result[++index] = [key, value]; + }); + return result; +} + +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function (arg) { + return func(transform(arg)); + }; +} + +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function (value) { + result[++index] = value; + }); + return result; +} + +/** Used for built-in method references. */ +var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function () { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to infer the `Object` constructor. */ +var objectCtorString = funcToString.call(Object); + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined, + Symbol = root.Symbol, + Uint8Array = root.Uint8Array, + getPrototype = overArg(Object.getPrototypeOf, Object), + objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols, + nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeKeys = overArg(Object.keys, Object), + nativeMax = Math.max; + +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'), + Map = getNative(root, 'Map'), + Promise = getNative(root, 'Promise'), + Set = getNative(root, 'Set'), + WeakMap = getNative(root, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); + +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; +} + +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; +} + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); +} + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; +} + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; +} + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); +} + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + this.__data__ = new ListCache(entries); +} + +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; +} + +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + return this.__data__['delete'](key); +} + +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} + +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} + +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var cache = this.__data__; + if (cache instanceof ListCache) { + var pairs = cache.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + return this; + } + cache = this.__data__ = new MapCache(pairs); + } + cache.set(key, value); + return this; +} + +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; + +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + // Safari 9 makes `arguments.length` enumerable in strict mode. + var result = (isArray(value) || isArguments(value)) + ? baseTimes(value.length, String) + : []; + + var length = result.length, + skipIndexes = !!length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } + } + return result; +} + +/** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (typeof key == 'number' && value === undefined && !(key in object))) { + object[key] = value; + } +} + +/** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + object[key] = value; + } +} + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +/** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); +} + +/** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @param {boolean} [isFull] Specify a clone including symbols. + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ +function baseClone(value, isDeep, isFull, customizer, key, object, stack) { + var result; + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + if (isHostObject(value)) { + return object ? value : {}; + } + result = initCloneObject(isFunc ? {} : value); + if (!isDeep) { + return copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, baseClone, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (!isArr) { + var props = isFull ? getAllKeys(value) : keys(value); + } + arrayEach(props || value, function (subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack)); + }); + return result; +} + +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} prototype The object to inherit from. + * @returns {Object} Returns the new object. + */ +function baseCreate(proto) { + return isObject(proto) ? objectCreate(proto) : {}; +} + +/** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ +function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); +} + +/** + * The base implementation of `getTag`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + return objectToString.call(value); +} + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[objectToString.call(value)]; +} + +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} + +/** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; +} + +/** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + if (!(isArray(source) || isTypedArray(source))) { + var props = baseKeysIn(source); + } + arrayEach(props || source, function (srcValue, key) { + if (props) { + key = srcValue; + srcValue = source[key]; + } + if (isObject(srcValue)) { + stack || (stack = new Stack); + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(object[key], srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }); +} + +/** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = object[key], + srcValue = source[key], + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + newValue = srcValue; + if (isArray(srcValue) || isTypedArray(srcValue)) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else { + isCommon = false; + newValue = baseClone(srcValue, true); + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) { + isCommon = false; + newValue = baseClone(srcValue, true); + } + else { + newValue = objValue; + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); +} + +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function () { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = array; + return apply(func, this, otherArgs); + }; +} + +/** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ +function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var result = new buffer.constructor(buffer.length); + buffer.copy(result); + return result; +} + +/** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ +function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; +} + +/** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ +function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); +} + +/** + * Creates a clone of `map`. + * + * @private + * @param {Object} map The map to clone. + * @param {Function} cloneFunc The function to clone values. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned map. + */ +function cloneMap(map, isDeep, cloneFunc) { + var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map); + return arrayReduce(array, addMapEntry, new map.constructor); +} + +/** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ +function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; +} + +/** + * Creates a clone of `set`. + * + * @private + * @param {Object} set The set to clone. + * @param {Function} cloneFunc The function to clone values. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned set. + */ +function cloneSet(set, isDeep, cloneFunc) { + var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set); + return arrayReduce(array, addSetEntry, new set.constructor); +} + +/** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ +function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; +} + +/** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ +function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); +} + +/** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ +function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; +} + +/** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ +function copyObject(source, props, object, customizer) { + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + assignValue(object, key, newValue === undefined ? source[key] : newValue); + } + return object; +} + +/** + * Copies own symbol properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); +} + +/** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ +function createAssigner(assigner) { + return baseRest(function (object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); +} + +/** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); +} + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +/** + * Creates an array of the own enumerable symbol properties of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray; + +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; + +// Fallback for data views, maps, sets, and weak maps in IE 11, +// for data views in Edge < 14, and promises in Node.js. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function (value) { + var result = objectToString.call(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : undefined; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: + return dataViewTag; + case mapCtorString: + return mapTag; + case promiseCtorString: + return promiseTag; + case setCtorString: + return setTag; + case weakMapCtorString: + return weakMapTag; + } + } + return result; + }; +} + +/** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ +function initCloneArray(array) { + var length = array.length, + result = array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; +} + +/** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; +} + +/** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {Function} cloneFunc The function to clone values. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneByTag(object, tag, cloneFunc, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: + case float64Tag: + case int8Tag: + case int16Tag: + case int32Tag: + case uint8Tag: + case uint8ClampedTag: + case uint16Tag: + case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return cloneMap(object, isDeep, cloneFunc); + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return cloneSet(object, isDeep, cloneFunc); + + case symbolTag: + return cloneSymbol(object); + } +} + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); +} + +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; +} + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +/** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; +} + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) { + } + try { + return (func + ''); + } catch (e) { + } + } + return ''; +} + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +function isArguments(value) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); +} + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ +var isBuffer = nativeIsBuffer || stubFalse; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +function isPlainObject(value) { + if (!isObjectLike(value) || + objectToString.call(value) != objectTag || isHostObject(value)) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return (typeof Ctor == 'function' && + Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString); +} + +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + +/** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ +function toPlainObject(value) { + return copyObject(value, keysIn(value)); +} + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} + +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ +function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); +} + +/** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ +var merge = createAssigner(function (object, source, srcIndex) { + baseMerge(object, source, srcIndex); +}); + +/** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ +function stubArray() { + return []; +} + +/** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ +function stubFalse() { + return false; +} + +module.exports = merge; diff --git a/scripts/tags/button.js b/scripts/tags/button.js new file mode 100644 index 000000000..19821cfe7 --- /dev/null +++ b/scripts/tags/button.js @@ -0,0 +1,38 @@ +/** + * button.js | global hexo script. + * + * Usage: + * + * {% button /path/to/url/, text, icon [class], title %} + * {% btn /path/to/url/, text, icon [class], title %} + */ + +'use strict'; + +function postButton(args) { + args = args.join(' ').split(','); + var url = args[0]; + var text = args[1] || ''; + var icon = args[2] || ''; + var title = args[3] || ''; + + if (!url) { + hexo.log.warn('URL can NOT be empty'); + } + + text = text.trim(); + icon = icon.trim(); + title = title.trim(); + + var result = [' 0 && result.push(' title="' + title + '"'); + result.push('>'); + icon.length > 0 && result.push(''); + text.length > 0 && result.push(text); + result.push(''); + + return result.join(''); +} + +hexo.extend.tag.register('button', postButton, { ends: false }); +hexo.extend.tag.register('btn', postButton, { ends: false }); diff --git a/scripts/tags/center-quote.js b/scripts/tags/center-quote.js new file mode 100644 index 000000000..f673c6e77 --- /dev/null +++ b/scripts/tags/center-quote.js @@ -0,0 +1,19 @@ +/** + * center-quote.js | global hexo script. + * + * Usage: + * + * {% centerquote %}Something{% endcenterquote %} + * {% cq %}Something{% endcq %} + */ + +'use strict'; + +function centerQuote (args, content) { + return '
      ' + + hexo.render.renderSync({text: content, engine: 'markdown'}) + + '
      '; +} + +hexo.extend.tag.register('centerquote', centerQuote, {ends: true}); +hexo.extend.tag.register('cq', centerQuote, {ends: true}); diff --git a/scripts/tags/exturl.js b/scripts/tags/exturl.js new file mode 100644 index 000000000..a65385e0c --- /dev/null +++ b/scripts/tags/exturl.js @@ -0,0 +1,67 @@ +/** + * exturl.js | global hexo script. + * + * Usage: + * + * {% exturl text url "title" %} + * {% extlink text url "title" %} + * + * If title not defined, url will be used as title. + */ + +'use strict'; + +/*jshint camelcase: false */ +var util = require('hexo-util'); +/*jshint camelcase: true */ +var htmlTag = util.htmlTag; + +var rUrl = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[.\!\/\\w]*))?)/; + +// Create Base64 Object +var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9+/=]/g,"");while(f>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/rn/g,"n");var t="";for(var n=0;n127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}}; + +function extURL(args, content) { + var exturl = 'exturl'; + var url = ''; + var text = ['']; + var title = ''; + var item = ''; + var i = 0; + var len = args.length; + + // Find link URL and text + for (; i < len; i++) { + item = args[i]; + + if (rUrl.test(item)) { + url = Base64.encode(item); + break; + } else { + text.push(item); + } + } + + // Delete link URL and text from arguments + args = args.slice(i + 1); + + // If any arguments exists, collect the last text as the link title, + // if not, set title as url. + if (args.length) { + var shift = args[0]; + title = args.join(' '); + } else { + title = item; + } + + var attrs = { + class: exturl, + 'data-url': url, + title: title + }; + + return htmlTag('span', attrs, text.join(' ')); +} + +hexo.extend.tag.register('exturl', extURL, {ends: false}); +hexo.extend.tag.register('extlink', extURL, {ends: false}); diff --git a/scripts/tags/full-image.js b/scripts/tags/full-image.js new file mode 100644 index 000000000..028da9295 --- /dev/null +++ b/scripts/tags/full-image.js @@ -0,0 +1,33 @@ +/** + * full-image.js | global hexo script. + * + * Usage: + * + * {% fullimage /path/to/image, alt, title %} + * {% fi /path/to/image, alt, title %} + */ + +'use strict'; + +function fullImage(args) { + args = args.join(' ').split(','); + var src = args[0]; + var alt = args[1] || ''; + var title = args[2] || ''; + + if (!src) { + hexo.log.warn('Image src can NOT be empty'); + } + alt = alt.trim(); + title = title.trim(); + + var image = [' 0 && image.push('alt="' + alt + '"'); + title.length > 0 && image.push('title="' + title + '"'); + image.push('/>'); + + return image.join(' '); +} + +hexo.extend.tag.register('fullimage', fullImage, { ends: false }); +hexo.extend.tag.register('fi', fullImage, { ends: false }); diff --git a/scripts/tags/group-pictures.js b/scripts/tags/group-pictures.js new file mode 100644 index 000000000..8b511ecef --- /dev/null +++ b/scripts/tags/group-pictures.js @@ -0,0 +1,843 @@ +/** + * group-pictures.js | global hexo script. + * + * Usage: + * + * {% grouppicture [group]-[layout] %}{% endgrouppicture %} + * {% gp [group]-[layout] %}{% endgp %} + * + * [group] : Total number of pictures to add in the group. + * [layout] : Default picture under the group to show. + */ + +'use strict'; + +function groupPicture(args, content) { + args = args[0].split('-'); + var group = parseInt(args[0]); + var layout = parseInt(args[1]); + + content = hexo.render.renderSync({text: content, engine: 'markdown'}); + + var pictures = content.match(//g); + + return '
      ' + + templates.dispatch(pictures, group, layout) + + '
      '; +} + +var templates = { + + dispatch: function (pictures, group, layout) { + var fn = 'group' + group + 'Layout' + layout; + fn = templates[fn] || templates.defaults; + return fn.call(templates, pictures); + }, + + /** + * 2-1 + * + * □ + * □ + * + * @param pictures + * @returns {string} + */ + group2Layout1: function (pictures) { + return this.getHTML([ + pictures.slice(0, 1), + pictures.slice(1) + ]); + }, + + /** + * 2-2 + * + * □ □ + * + * @param pictures + */ + group2Layout2: function (pictures) { + return this.getHTML(pictures); + }, + + /** + * 3-1 + * + * □ □ □ + * + * @param pictures + */ + group3Layout1: function (pictures) { + return this.getHTML(pictures); + }, + + /** + * 3-2 + * + * □ + * □ □ + * + * @param pictures + */ + group3Layout2: function (pictures) { + return this.getHTML([ + pictures.slice(0, 1), + pictures.slice(1) + ]); + }, + + /** + * 3-3 + * + * □ □ + * □ + * + * @param pictures + */ + group3Layout3: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2) + ]); + }, + + /** + * 4-1 + * + * □ + * □ □ + * □ + * + * @param pictures + */ + group4Layout1: function (pictures) { + return this.getHTML([ + pictures.slice(0, 1), + pictures.slice(1, 3), + pictures.slice(3) + ]); + }, + + /** + * 4-2 + * + * □ + * □ □ □ + * + * @param pictures + */ + group4Layout2: function (pictures) { + return this.getHTML([ + pictures.slice(0, 1), + pictures.slice(1) + ]); + }, + + /** + * 4-3 + * + * □ □ + * □ □ + * + * @param pictures + */ + group4Layout3: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2) + ]); + }, + + /** + * 4-4 + * + * □ □ □ + * □ + * + * @param pictures + */ + group4Layout4: function (pictures) { + return this.getHTML([ + pictures.slice(0, 3), + pictures.slice(3) + ]); + }, + + /** + * 5-1 + * + * □ + * □ □ + * □ □ + * + * @param pictures + */ + group5Layout1: function (pictures) { + return this.getHTML([ + pictures.slice(0, 1), + pictures.slice(1, 3), + pictures.slice(3) + ]); + }, + + /** + * 5-2 + * + * □ □ + * □ + * □ □ + * + * @param pictures + */ + group5Layout2: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2, 3), + pictures.slice(3) + ]); + }, + + /** + * 5-3 + * + * □ □ + * □ □ □ + * + * @param pictures + */ + group5Layout3: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2) + ]); + }, + + /** + * 5-4 + * + * □ □ □ + * □ □ + * + * @param pictures + */ + group5Layout4: function (pictures) { + return this.getHTML([ + pictures.slice(0, 3), + pictures.slice(3) + ]); + }, + + /** + * 6-1 + * + * □ + * □ □ + * □ □ □ + * + * @param pictures + */ + group6Layout1: function (pictures) { + return this.getHTML([ + pictures.slice(0, 1), + pictures.slice(1, 3), + pictures.slice(3) + ]); + }, + + /** + * 6-2 + * + * □ + * □ □ □ + * □ □ + * + * @param pictures + */ + group6Layout2: function (pictures) { + return this.getHTML([ + pictures.slice(0, 1), + pictures.slice(1, 4), + pictures.slice(4) + ]); + }, + + /** + * 6-3 + * + * □ □ + * □ + * □ □ □ + * + * @param pictures + */ + group6Layout3: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2, 3), + pictures.slice(3) + ]); + }, + + /** + * 6-4 + * + * □ □ + * □ □ + * □ □ + * + * @param pictures + */ + group6Layout4: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2, 4), + pictures.slice(4) + ]); + }, + + /** + * 6-5 + * + * □ □ □ + * □ □ □ + * + * @param pictures + */ + group6Layout5: function (pictures) { + return this.getHTML([ + pictures.slice(0, 3), + pictures.slice(3) + ]); + }, + + /** + * 7-1 + * + * □ + * □ □ + * □ □ + * □ □ + * + * @param pictures + */ + group7Layout1: function (pictures) { + return this.getHTML([ + pictures.slice(0, 1), + pictures.slice(1, 3), + pictures.slice(3, 5), + pictures.slice(5) + ]); + }, + + /** + * 7-2 + * + * □ + * □ □ □ + * □ □ □ + * + * @param pictures + */ + group7Layout2: function (pictures) { + return this.getHTML([ + pictures.slice(0, 1), + pictures.slice(1, 4), + pictures.slice(4) + ]); + }, + + /** + * 7-3 + * + * □ □ + * □ □ + * □ □ □ + * + * @param pictures + */ + group7Layout3: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2, 4), + pictures.slice(4) + ]); + }, + + /** + * 7-4 + * + * □ □ + * □ □ □ + * □ □ + * + * @param pictures + */ + group7Layout4: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2, 5), + pictures.slice(5) + ]); + }, + + /** + * 7-5 + * + * □ □ □ + * □ □ + * □ □ + * + * @param pictures + */ + group7Layout5: function (pictures) { + return this.getHTML([ + pictures.slice(0, 3), + pictures.slice(3, 5), + pictures.slice(5) + ]); + }, + + /** + * 8-1 + * + * □ + * □ □ + * □ □ + * □ □ □ + * + * @param pictures + */ + group8Layout1: function (pictures) { + return this.getHTML([ + pictures.slice(0, 1), + pictures.slice(1, 3), + pictures.slice(3, 5), + pictures.slice(5) + ]); + }, + + /** + * 8-2 + * + * □ + * □ □ + * □ □ □ + * □ □ + * + * @param pictures + */ + group8Layout2: function (pictures) { + return this.getHTML([ + pictures.slice(0, 1), + pictures.slice(1, 3), + pictures.slice(3, 6), + pictures.slice(6) + ]); + }, + + /** + * 8-3 + * + * □ + * □ □ □ + * □ □ + * □ □ + * @param pictures + */ + group8Layout3: function (pictures) { + return this.getHTML([ + pictures.slice(0, 1), + pictures.slice(1, 4), + pictures.slice(4, 6), + pictures.slice(6) + ]); + }, + + /** + * 8-4 + * + * □ □ + * □ □ + * □ □ + * □ □ + * + * @param pictures + */ + group8Layout4: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2, 4), + pictures.slice(4, 6), + pictures.slice(6) + ]); + }, + + /** + * 8-5 + * + * □ □ + * □ □ □ + * □ □ □ + * + * @param pictures + */ + group8Layout5: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2, 5), + pictures.slice(5) + ]); + }, + + /** + * 8-6 + * + * □ □ □ + * □ □ + * □ □ □ + * + * @param pictures + */ + group8Layout6: function (pictures) { + return this.getHTML([ + pictures.slice(0, 3), + pictures.slice(3, 5), + pictures.slice(5) + ]); + }, + + /** + * 8-7 + * + * □ □ □ + * □ □ □ + * □ □ + * + * @param pictures + */ + group8Layout7: function (pictures) { + return this.getHTML([ + pictures.slice(0, 3), + pictures.slice(3, 6), + pictures.slice(6) + ]); + }, + + /** + * 9-1 + * + * □ + * □ □ + * □ □ □ + * □ □ □ + * + * @param pictures + */ + group9Layout1: function (pictures) { + return this.getHTML([ + pictures.slice(0, 1), + pictures.slice(1, 3), + pictures.slice(3, 6), + pictures.slice(6) + ]); + }, + + /** + * 9-2 + * + * □ + * □ □ □ + * □ □ + * □ □ □ + * + * @param pictures + */ + group9Layout2: function (pictures) { + return this.getHTML([ + pictures.slice(0, 1), + pictures.slice(1, 4), + pictures.slice(4, 6), + pictures.slice(6) + ]); + }, + + /** + * 9-3 + * + * □ □ + * □ □ + * □ □ + * □ □ □ + * + * @param pictures + */ + group9Layout3: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2, 4), + pictures.slice(4, 6), + pictures.slice(6) + ]); + }, + + /** + * 9-4 + * + * □ □ + * □ □ + * □ □ □ + * □ □ + * + * @param pictures + */ + group9Layout4: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2, 4), + pictures.slice(4, 7), + pictures.slice(7) + ]); + }, + + /** + * 9-5 + * + * □ □ + * □ □ □ + * □ □ + * □ □ + * + * @param pictures + */ + group9Layout5: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2, 5), + pictures.slice(5, 7), + pictures.slice(7) + ]); + }, + + /** + * 9-6 + * + * □ □ □ + * □ □ + * □ □ + * □ □ + * + * @param pictures + */ + group9Layout6: function (pictures) { + return this.getHTML([ + pictures.slice(0, 3), + pictures.slice(3, 5), + pictures.slice(5, 7), + pictures.slice(7) + ]); + }, + + /** + * 9-7 + * + * □ □ □ + * □ □ □ + * □ □ □ + * + * @param pictures + */ + group9Layout7: function (pictures) { + return this.getHTML([ + pictures.slice(0, 3), + pictures.slice(3, 6), + pictures.slice(6) + ]); + }, + + /** + * 10-1 + * + * □ + * □ □ □ + * □ □ □ + * □ □ □ + * + * @param pictures + */ + group10Layout1: function (pictures) { + return this.getHTML([ + pictures.slice(0, 1), + pictures.slice(1, 4), + pictures.slice(4, 7), + pictures.slice(7) + ]); + }, + + /** + * 10-2 + * + * □ □ + * □ □ + * □ □ □ + * □ □ □ + * + * @param pictures + */ + group10Layout2: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2, 4), + pictures.slice(4, 7), + pictures.slice(7) + ]); + }, + + /** + * 10-3 + * + * □ □ + * □ □ □ + * □ □ + * □ □ □ + * + * @param pictures + */ + group10Layout3: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2, 5), + pictures.slice(5, 7), + pictures.slice(7) + ]); + }, + + /** + * 10-4 + * + * □ □ + * □ □ □ + * □ □ □ + * □ □ + * + * @param pictures + */ + group10Layout4: function (pictures) { + return this.getHTML([ + pictures.slice(0, 2), + pictures.slice(2, 5), + pictures.slice(5, 8), + pictures.slice(8) + ]); + }, + + /** + * 10-5 + * + * □ □ □ + * □ □ + * □ □ + * □ □ □ + * + * @param pictures + */ + group10Layout5: function (pictures) { + return this.getHTML([ + pictures.slice(0, 3), + pictures.slice(3, 5), + pictures.slice(5, 7), + pictures.slice(7) + ]); + }, + + /** + * 10-6 + * + * □ □ □ + * □ □ + * □ □ □ + * □ □ + * + * @param pictures + */ + group10Layout6: function (pictures) { + return this.getHTML([ + pictures.slice(0, 3), + pictures.slice(3, 5), + pictures.slice(5, 8), + pictures.slice(8) + ]); + }, + + /** + * 10-7 + * + * □ □ □ + * □ □ □ + * □ □ + * □ □ + * + * @param pictures + */ + group10Layout7: function (pictures) { + return this.getHTML([ + pictures.slice(0, 3), + pictures.slice(3, 6), + pictures.slice(6, 8), + pictures.slice(8) + ]); + }, + + /** + * Defaults Layout + * + * □ □ □ + * □ □ □ + * ... + * + * @param pictures + */ + defaults: function (pictures) { + var ROW_SIZE = 3; + var rows = pictures.length / ROW_SIZE + 1; + var pictureArr = []; + + for (var i = 0; i < rows; i++) { + pictureArr.push(pictures.slice(i * ROW_SIZE, (i + 1) * ROW_SIZE)); + } + + return this.getHTML(pictureArr); + }, + + getHTML: function (rows) { + var rowHTML = ''; + + for (var i = 0; i < rows.length; i++) { + rowHTML += this.getRowHTML(rows[i]); + } + + return '
      ' + rowHTML + '
      '; + }, + + getRowHTML: function (pictures) { + return ( + '
      ' + + this.getColumnHTML(pictures) + + '
      ' + ); + }, + + getColumnHTML: function (pictures) { + var columns = []; + var columnWidth = 100 / pictures.length; + var columnStyle = ' style="width: ' + columnWidth + '%;"'; + + for (var i = 0; i < pictures.length; i++) { + columns.push('
      ' + pictures[i] + '
      '); + } + return columns.join(''); + } +}; + +hexo.extend.tag.register('grouppicture', groupPicture, {ends: true}); +hexo.extend.tag.register('gp', groupPicture, {ends: true}); diff --git a/scripts/tags/include-raw.js b/scripts/tags/include-raw.js new file mode 100644 index 000000000..d1a495c2d --- /dev/null +++ b/scripts/tags/include-raw.js @@ -0,0 +1,36 @@ +/** + * include.js | global hexo script. + * + * Usage: + * + * {% include_raw '_data/path/to/file.html' %} + * + * Path is relative to your site source directory. + */ + +'use strict'; + +var pathFn = require('path'); +/*jshint camelcase: false */ +var fs = require('hexo-fs'); +/*jshint camelcase: true */ + +function include_raw (args) { + var path = pathFn.join(hexo.source_dir, args[0]); + + return fs.exists(path).then(function(exist) { + if (!exist) { + hexo.log.error('Include file not found!'); + return; + } + return fs.readFile(path).then(function(contents) { + if (!contents) { + hexo.log.warn('Include file empty.'); + return; + } + return contents; + }); + }); +}; + +hexo.extend.tag.register('include_raw', include_raw, {ends: false, async: true}); diff --git a/scripts/tags/label.js b/scripts/tags/label.js new file mode 100644 index 000000000..867096d32 --- /dev/null +++ b/scripts/tags/label.js @@ -0,0 +1,25 @@ +/** + * label.js | global hexo script. + * + * Usage: + * + * {% label [class]@Text %} + * + * [class] : default | primary | success | info | warning | danger. + * If not defined, default class will be selected. + */ + +'use strict'; + +function postLabel (args) { + args = args.join(' ').split('@'); + var classes = args[0] || 'default'; + var text = args[1] || ''; + + classes = classes.trim(); + !text && hexo.log.warn('Label text must be defined!'); + + return '' + text + ''; +} + +hexo.extend.tag.register('label', postLabel, { ends: false }); diff --git a/scripts/tags/lazy-image.js b/scripts/tags/lazy-image.js new file mode 100644 index 000000000..e0fbafe9e --- /dev/null +++ b/scripts/tags/lazy-image.js @@ -0,0 +1,33 @@ +/** + * lazy-image.js | global hexo script. + * + * Usage: + * + * {% lazyimage /path/to/image, alt, title %} + * {% li /path/to/image, alt, title %} + */ + +'use strict'; + +function lazyImage(args) { + args = args.join(' ').split(','); + var src = args[0]; + var alt = args[1] || ''; + var title = args[2] || ''; + + if (!src) { + hexo.log.warn('Image src can NOT be empty'); + } + alt = alt.trim(); + title = title.trim(); + + var image = [' 0 && image.push('alt="' + alt + '"'); + title.length > 0 && image.push('title="' + title + '"'); + image.push('/>'); + + return image.join(' '); +} + +hexo.extend.tag.register('lazyimage', lazyImage, { ends: false }); +hexo.extend.tag.register('li', lazyImage, { ends: false }); diff --git a/scripts/tags/note.js b/scripts/tags/note.js new file mode 100644 index 000000000..542de347f --- /dev/null +++ b/scripts/tags/note.js @@ -0,0 +1,22 @@ +/** + * note.js | global hexo script. + * + * ATTENTION! No need to write this tag in 1 line if u don't want see probally bugs. + * + * Usage: + * + * {% note [class] %} + * Any content (support inline tags too). + * {% endnote %} + * + * [class] : default | primary | success | info | warning | danger. + * May be not defined. + */ + +'use strict'; + +function bscallOut (args, content) { + return '
      ' + hexo.render.renderSync({text: content, engine: 'markdown'}).trim() + '
      '; +} + +hexo.extend.tag.register('note', bscallOut, {ends: true}); diff --git a/scripts/tags/tabs.js b/scripts/tags/tabs.js new file mode 100644 index 000000000..9af8f6828 --- /dev/null +++ b/scripts/tags/tabs.js @@ -0,0 +1,78 @@ +/** + * tabs.js | global hexo script. + * + * Usage: + * + * {% tabs [Unique name], [index] %} + * + * Any content (support inline tags too). + * + * {% endtabs %} + * + * [Unique name] : Unique name of tabs block tag without comma. + * Will be used in #id's as prefix for each tab with their index numbers. + * If there are whitespaces in name, for generate #id all whitespaces will replaced by dashes. + * Only for current url of post/page must be unique! + * [index] : Index number of active tab. + * If not defined, first tab (1) will be selected. + * If index is -1, no tab will be selected. It's will be something like spoiler. + * May be not defined. + * [Tab caption] : Caption of current tab. + * If not caption specified, unique name with tab index suffix will be used as caption of tab. + * If not caption specified, but specified icon, caption will empty. + * May be not defined. + * [icon] : Font awesome icon. + * May be not defined. + */ + +'use strict'; + + function postTabs (args, content) { + var tabBlock = /\n([\w\W\s\S]*?)/g; + + var args = args.join(' ').split(','); + var tabName = args[0]; + var tabActive = args[1] || ''; + + var matches = []; + var match; + var tabId = 0; + var tabNav = ''; + var tabContent = ''; + + !tabName && hexo.log.warn('Tabs block must have unique name!'); + + while (match = tabBlock.exec(content)) { + matches.push(match[1]); + matches.push(match[2]); + } + + for (var i = 0; i < matches.length; i += 2) { + var tabParameters = matches[i].split('@'); + var postContent = matches[i + 1]; + var tabCaption = tabParameters[0] || ''; + var tabIcon = tabParameters[1] || ''; + var tabHref = ''; + + postContent = hexo.render.renderSync({text: postContent, engine: 'markdown'}); + + tabId += 1; + tabHref = (tabName + ' ' + tabId).toLowerCase().split(' ').join('-'); + + ((tabCaption.length === 0) && (tabIcon.length === 0)) && (tabCaption = tabName + ' ' + tabId); + + var isOnlyicon = (tabIcon.length > 0 && tabCaption.length === 0) ? 'style="text-align: center;' : ''; + tabIcon.length > 0 && (tabIcon = ''); + + var isActive = ((tabActive.length > 0 && tabActive == tabId) || (tabActive.length === 0 && tabId == 1)) ? ' active' : ''; + tabNav += '
    • ' + tabIcon + tabCaption + '
    • '; + tabContent += '
      ' + postContent + '
      '; + } + + tabNav = ''; + tabContent = '
      ' + tabContent + '
      '; + + return '
      ' + tabNav + tabContent + '
      '; + } + + hexo.extend.tag.register('tabs', postTabs, {ends: true}); diff --git a/source/css/_common/components/back-to-top-sidebar.styl b/source/css/_common/components/back-to-top-sidebar.styl new file mode 100644 index 000000000..d23d35d57 --- /dev/null +++ b/source/css/_common/components/back-to-top-sidebar.styl @@ -0,0 +1,25 @@ +.back-to-top { + display: none; + margin: 20px -10px -20px; + background: $body-bg-color; + font-size: $b2t-font-size; + opacity: $b2t-opacity; + cursor: pointer; + text-align: center; + -webkit-transform: translateZ(0); + the-transition(); + &:hover { opacity: 0.8; } + + +tablet() { + fixbutton() if hexo-config('sidebar.onmobile'); + hide() if not hexo-config('sidebar.onmobile'); + } + +mobile() { + fixbutton() if hexo-config('sidebar.onmobile'); + hide() if not hexo-config('sidebar.onmobile'); + } + + &.back-to-top-on { + display: block; + } +} diff --git a/source/css/_common/components/back-to-top.styl b/source/css/_common/components/back-to-top.styl new file mode 100644 index 000000000..1ae463a7d --- /dev/null +++ b/source/css/_common/components/back-to-top.styl @@ -0,0 +1,31 @@ +.back-to-top { + box-sizing: border-box; + position: fixed; + bottom: $b2t-position-bottom; + right: $b2t-position-right; + z-index: $zindex-5; + padding: 0 6px; + width: hexo-config('sidebar.scrollpercent') ? initial : 24px; + background: $b2t-bg-color; + font-size: $b2t-font-size; + opacity: $b2t-opacity; + color: $b2t-color; + cursor: pointer; + text-align: center; + -webkit-transform: translateZ(0); + transition-property: bottom; + the-transition(); + + +tablet() { + fixbutton() if hexo-config('sidebar.onmobile'); + hide() if not hexo-config('sidebar.onmobile'); + } + +mobile() { + fixbutton() if hexo-config('sidebar.onmobile'); + hide() if not hexo-config('sidebar.onmobile'); + } + + &.back-to-top-on { + bottom: $b2t-position-bottom-on; + } +} diff --git a/source/css/_common/components/buttons.styl b/source/css/_common/components/buttons.styl new file mode 100644 index 000000000..771264651 --- /dev/null +++ b/source/css/_common/components/buttons.styl @@ -0,0 +1,38 @@ +.btn { + display: inline-block; + padding: 0 20px; + font-size: $btn-default-font-size; + color: $btn-default-color; + background: $btn-default-bg; + border: $btn-default-border-width solid $btn-default-border-color; + text-decoration: none; + border-radius: $btn-default-radius; + transition-property: background-color; + the-transition(); + line-height: 2; + + &:hover { + border-color: $btn-default-hover-border-color; + color: $btn-default-hover-color; + background: $btn-default-hover-bg; + } + + +.btn { + margin: 0 0 8px 8px; + } + + .fa-fw { + width: (18em / 14); + text-align: left; + } +} + +.btn-bar { + display: block; + width: 22px; + height: 2px; + background: $text-color; + border-radius: 1px; + + &+.btn-bar { margin-top: 4px; } +} diff --git a/source/css/_common/components/comments.styl b/source/css/_common/components/comments.styl new file mode 100644 index 000000000..bf3edb945 --- /dev/null +++ b/source/css/_common/components/comments.styl @@ -0,0 +1 @@ +.comments { margin: 60px 20px 0; } diff --git a/source/css/_common/components/components.styl b/source/css/_common/components/components.styl new file mode 100644 index 000000000..fe4a160d9 --- /dev/null +++ b/source/css/_common/components/components.styl @@ -0,0 +1,16 @@ +@import "highlight"; +@import "tags"; + +@import "buttons"; +@import "pagination"; +@import "comments"; +@import "tag-cloud"; +@import hexo-config('sidebar.b2t') ? "back-to-top-sidebar" : "back-to-top"; + +@import "header"; +@import "post"; +@import "sidebar"; +@import "footer"; +@import "third-party"; + +@import "pages"; diff --git a/source/css/_common/components/footer/footer.styl b/source/css/_common/components/footer/footer.styl new file mode 100644 index 000000000..4c4038800 --- /dev/null +++ b/source/css/_common/components/footer/footer.styl @@ -0,0 +1,44 @@ +.footer { + font-size: 14px; + color: $grey-dark; + + img { border: none; } +} + +.footer-inner { text-align: center; } + +@keyframes iconAnimate { + 0%,100%{transform:scale(1);} + 10%,30%{transform:scale(0.9);} + 20%,40%,60%,80%{transform:scale(1.1);} + 50%,70%{transform:scale(1.1);} +} + +if hexo-config('footer.icon.animated') { + #animate { + animation: iconAnimate 1.33s ease-in-out infinite; + } +} + +.with-love { + display: inline-block; + margin: 0 5px; + color: unquote(hexo-config('footer.icon.color')); +} + +.powered-by, +.theme-info { display: inline-block; } + +.cc-license { + margin-top: 10px; + text-align: center; + + .cc-opacity { + opacity: 0.7; + border-bottom: none; + + &:hover { opacity: 0.9; } + } + + img { display: inline-block; } +} diff --git a/source/css/_common/components/header/github-banner.styl b/source/css/_common/components/header/github-banner.styl new file mode 100644 index 000000000..3698413e6 --- /dev/null +++ b/source/css/_common/components/header/github-banner.styl @@ -0,0 +1,48 @@ +.github-corner { + scheme = hexo-config('scheme'); + bg_color = unquote(hexo-config('android_chrome_color')); + mobile_layout_economy = hexo-config('mobile_layout_economy'); + + :hover .octo-arm { + animation:octocat-wave 560ms ease-in-out; + } + @keyframes octocat-wave { + 0%,100% { + transform:rotate(0); + } + 20%,60% { + transform:rotate(-25deg); + } + 40%,80% { + transform:rotate(10deg); + } + } + +tablet-mobile() { + >svg { + if (scheme == 'Pisces') || (scheme == 'Gemini') { + fill: #fff !important; + color: bg_color !important; + } + } + .github-corner:hover .octo-arm { + animation:none; + } + .github-corner .octo-arm { + animation:octocat-wave 560ms ease-in-out; + } + } + +mobile() { + >svg { + if (scheme == 'Mist') { + top: inherit !important; + margin-top: -50px; + if mobile_layout_economy { + +mobile-small() { + margin-top: initial; + } + } + } + } + } + +} diff --git a/source/css/_common/components/header/header.styl b/source/css/_common/components/header/header.styl new file mode 100644 index 000000000..0240caadf --- /dev/null +++ b/source/css/_common/components/header/header.styl @@ -0,0 +1,9 @@ +.header { background: $head-bg; } + +.header-inner { position: relative; } + +@import "headerband"; +@import "site-meta"; +@import "site-nav"; +@import "menu"; +@import "github-banner" if hexo-config('github_banner'); diff --git a/source/css/_common/components/header/headerband.styl b/source/css/_common/components/header/headerband.styl new file mode 100644 index 000000000..382dbd9cd --- /dev/null +++ b/source/css/_common/components/header/headerband.styl @@ -0,0 +1,4 @@ +.headband { + height: $headband-height; + background: $headband-bg; +} diff --git a/source/css/_common/components/header/menu.styl b/source/css/_common/components/header/menu.styl new file mode 100644 index 000000000..d2b0f055d --- /dev/null +++ b/source/css/_common/components/header/menu.styl @@ -0,0 +1,32 @@ +// Menu +// -------------------------------------------------- +.menu { + margin-top: 20px; + padding-left: 0; + text-align: center; +} + +.menu .menu-item { + display: inline-block; + margin: 0 10px; + list-style: none; + + @media screen and (max-width: 767px) { + margin-top: 10px; + } + + a { + display: block; + font-size: 13px; + line-height: inherit; + border-bottom: 1px solid $menu-link-border; + transition-property: border-color; + the-transition(); + + &:hover { border-bottom-color: $menu-link-hover-border; } + } + + .fa { margin-right: 5px; } +} + +.use-motion .menu-item { opacity: 0; } diff --git a/source/css/_common/components/header/site-meta.styl b/source/css/_common/components/header/site-meta.styl new file mode 100644 index 000000000..efe31ec26 --- /dev/null +++ b/source/css/_common/components/header/site-meta.styl @@ -0,0 +1,48 @@ +.site-meta { + margin: 0; + text-align: $site-meta-text-align; + + +mobile() { text-align: center; } +} + +.brand { + position: relative; + display: inline-block; + padding: 0 40px; + color: $brand-color; + background: $brand-bg; + border-bottom: none; + &:hover { color: $brand-hover-color; } +} + +.logo { + display: inline-block; + margin-right: 5px; + line-height: 36px; + vertical-align: top; +} + +.site-title { + display: inline-block; + vertical-align: top; + line-height: 36px; + font-size: $logo-font-size; + font-weight: normal; + font-family: $font-family-logo; +} + +.site-subtitle { + margin-top: 10px; + font-size: $subtitle-font-size; + color: $subtitle-color; +} + +.use-motion { + .brand { opacity: 0; } + + .logo, .site-title, .site-subtitle { + opacity: 0; + position: relative; + top: -10px; + } +} diff --git a/source/css/_common/components/header/site-nav.styl b/source/css/_common/components/header/site-nav.styl new file mode 100644 index 000000000..c6446e73f --- /dev/null +++ b/source/css/_common/components/header/site-nav.styl @@ -0,0 +1,28 @@ +.site-nav-toggle { + display: none; + position: absolute; + top: 10px; + left: 10px; + +mobile() { + display: block; + } + + button { + margin-top: 2px; + padding: 9px 10px; + background: transparent; + border: none; + } +} + +.site-nav { + +mobile() { + display: none; + margin: 0 -10px; + padding: 0 10px; + clear: both; + border-top: 1px solid $gray-lighter; + } + +tablet() { display: block !important; } + +desktop() { display: block !important; } +} diff --git a/source/css/_common/components/highlight/diff.styl b/source/css/_common/components/highlight/diff.styl new file mode 100644 index 000000000..f77949909 --- /dev/null +++ b/source/css/_common/components/highlight/diff.styl @@ -0,0 +1,8 @@ +$highlight_theme = hexo-config("highlight_theme") + +if $highlight_theme == "normal" + $highlight-deletion = #fdd + $highlight-addition = #dfd +else + $highlight-deletion = #008000 + $highlight-addition = #800000 diff --git a/source/css/_common/components/highlight/highlight.styl b/source/css/_common/components/highlight/highlight.styl new file mode 100644 index 000000000..9b52eb9f5 --- /dev/null +++ b/source/css/_common/components/highlight/highlight.styl @@ -0,0 +1,182 @@ +// https://github.com/chriskempson/tomorrow-theme + +@require "theme" +@require "diff" + +// Placeholder: $code-block +$code-block { + overflow: auto; + margin: 20px 0; + padding: 0; + font-size $code-font-size; + color: $highlight-foreground; + background: $highlight-background; + line-height: $line-height-code-block; +} + +pre, code { font-family: $code-font-family; } + +code { + padding: 2px 4px; + word-wrap: break-word; + color: $code-foreground; + background: $code-background; + border-radius: $code-border-radius; + font-size: $code-font-size; +} + +pre { + @extend $code-block; + padding: 10px; + code { + padding: 0; + color: $highlight-foreground; + background: none; + text-shadow: none; + } +} + +.highlight { + @extend $code-block; + // Read values from NexT config and set they as local variables to use as string variables (in any CSS section). + hexo-config('codeblock.border_radius') is a 'unit' ? (cbradius = unit(hexo-config('codeblock.border_radius'), px)) : (cbradius = 1px) + border-radius: cbradius; + + pre { + border: none; + margin: 0; + padding: 10px 0; + } + + table { + margin: 0; + width: auto; + border: none; + } + + td { + border: none; + padding: 0; + } + + figcaption { + clearfix(); + font-size: 1em; + color: $highlight-foreground; + line-height: 1em; + margin-bottom: 1em; + margin: 0em; + padding: 0.5em; + background: $code-background; + border-bottom: 1px solid #e9e9e9; + + a { + float: right; + color: $highlight-foreground; + + &:hover { border-bottom-color: $highlight-foreground; } + } + } + + .gutter pre { + padding-left: 10px + padding-right: 10px + color: $highlight-gutter.color + text-align: right + background-color: $highlight-gutter.bg-color + } + + .code pre { + width: 100% + padding-left: 10px + padding-right: 10px + background-color: $highlight-background + } + + .line { height: 20px; } +} + + +.gutter { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.gist table { + width: auto; + + td { border: none; } +} + +// For diff highlight +pre .deletion { background: $highlight-deletion; } +pre .addition { background: $highlight-addition; } +pre .meta { color: $highlight-purple; } + +pre { + + .comment { color: $highlight-comment; } + + .variable + .attribute + .tag + .regexp + .ruby .constant + .xml .tag .title + .xml .pi + .xml .doctype + .html .doctype + .css .id + .css .class + .css .pseudo { + color: $highlight-red; + } + + .number + .preprocessor + .built_in + .literal + .params + .constant + .command { + color: $highlight-orange; + } + + .ruby .class .title + .css .rules .attribute + .string + .value + .inheritance + .header + .ruby .symbol + .xml .cdata + .special + .number + .formula { + color: $highlight-green; + } + + .title + .css .hexcolor { + color: $highlight-aqua; + } + + .function + .python .decorator + .python .title + .ruby .function .title + .ruby .title .keyword + .perl .sub + .javascript .title + .coffeescript .title { + color: $highlight-blue; + } + + .keyword + .javascript .function { + color: $highlight-purple; + } + +} diff --git a/source/css/_common/components/highlight/theme.styl b/source/css/_common/components/highlight/theme.styl new file mode 100644 index 000000000..ff1f4be00 --- /dev/null +++ b/source/css/_common/components/highlight/theme.styl @@ -0,0 +1,92 @@ +$highlight_theme = hexo-config("highlight_theme") + + +if $highlight_theme == "normal" + $highlight-background = #f7f7f7 + $highlight-current-line = #efefef + $highlight-selection = #d6d6d6 + $highlight-foreground = #4d4d4c + $highlight-comment = #8e908c + $highlight-red = #c82829 + $highlight-orange = #f5871f + $highlight-yellow = #eab700 + $highlight-green = #718c00 + $highlight-aqua = #3e999f + $highlight-blue = #4271ae + $highlight-purple = #8959a8 + $highlight-gutter = { + color: #869194, + bg-color: #eff2f3 + } + +if $highlight_theme == "night" + $highlight-background = #1d1f21 + $highlight-current-line = #282a2e + $highlight-selection = #373b41 + $highlight-foreground = #c5c8c6 + $highlight-comment = #969896 + $highlight-red = #cc6666 + $highlight-orange = #de935f + $highlight-yellow = #f0c674 + $highlight-green = #b5bd68 + $highlight-aqua = #8abeb7 + $highlight-blue = #81a2be + $highlight-purple = #b294bb + $highlight-gutter = { + color: lighten($highlight-background, 50%), + bg-color: darken($highlight-background, 100%) + } + +if $highlight_theme == "night eighties" + $highlight-background = #2d2d2d + $highlight-current-line = #393939 + $highlight-selection = #515151 + $highlight-foreground = #cccccc + $highlight-comment = #999999 + $highlight-red = #f2777a + $highlight-orange = #f99157 + $highlight-yellow = #ffcc66 + $highlight-green = #99cc99 + $highlight-aqua = #66cccc + $highlight-blue = #6699cc + $highlight-purple = #cc99cc + $highlight-gutter = { + color: $highlight-comment, + bg-color: darken($highlight-background, 40%) + } + +if $highlight_theme == "night blue" + $highlight-background = #002451 + $highlight-current-line = #00346e + $highlight-selection = #003f8e + $highlight-foreground = #ffffff + $highlight-comment = #7285b7 + $highlight-red = #ff9da4 + $highlight-orange = #ffc58f + $highlight-yellow = #ffeead + $highlight-green = #d1f1a9 + $highlight-aqua = #99ffff + $highlight-blue = #bbdaff + $highlight-purple = #ebbbff + $highlight-gutter = { + color: $highlight-comment, + bg-color: darken($highlight-background, 60%) + } + +if $highlight_theme == "night bright" + $highlight-background = #000000 + $highlight-current-line = #2a2a2a + $highlight-selection = #424242 + $highlight-foreground = #eaeaea + $highlight-comment = #969896 + $highlight-red = #d54e53 + $highlight-orange = #e78c45 + $highlight-yellow = #e7c547 + $highlight-green = #b9ca4a + $highlight-aqua = #70c0b1 + $highlight-blue = #7aa6da + $highlight-purple = #c397d8 + $highlight-gutter = { + color: lighten($highlight-background, 40%), + bg-color: lighten($highlight-background, 16%) + } diff --git a/source/css/_common/components/pages/archive.styl b/source/css/_common/components/pages/archive.styl new file mode 100644 index 000000000..8a1363d68 --- /dev/null +++ b/source/css/_common/components/pages/archive.styl @@ -0,0 +1,29 @@ +.page-archive { + + .archive-page-counter { + position: relative; + top: 3px; + left: 20px; + + +mobile() { + top: 5px; + } + } + + .posts-collapse { + + .archive-move-on { + position: absolute; + top: 11px; + left: 0; + margin-left: -6px; + width: 10px; + height: 10px; + opacity: 0.5; + background: $black-light; + border: 1px solid white; + + circle(); + } + } +} diff --git a/source/css/_common/components/pages/breadcrumb.styl b/source/css/_common/components/pages/breadcrumb.styl new file mode 100644 index 000000000..ea9cd0537 --- /dev/null +++ b/source/css/_common/components/pages/breadcrumb.styl @@ -0,0 +1,22 @@ +ul.breadcrumb { + list-style: none; + margin: 1em 0; + padding: 0 2em; + text-align: center; + font-size: $font-size-small + + & li { + display: inline; + } + + & li+li:before { + padding: 0.5em; + font-weight: normal; + content: "/\00a0"; + } + + & li+li:last-child { + font-weight: bold; + } + +} diff --git a/source/css/_common/components/pages/categories.styl b/source/css/_common/components/pages/categories.styl new file mode 100644 index 000000000..db3bb10a3 --- /dev/null +++ b/source/css/_common/components/pages/categories.styl @@ -0,0 +1,27 @@ +.category-all-page { + .category-all-title { text-align: center; } + + .category-all { margin-top: 20px; } + + .category-list { + margin: 0; + padding: 0; + list-style: none; + } + + .category-list-item { margin: 5px 10px; } + + .category-list-count { + color: $grey; + &:before { + display: inline; + content: " (" + } + &:after { + display: inline; + content: ") " + } + } + + .category-list-child { padding-left: 10px; } +} diff --git a/source/css/_common/components/pages/pages.styl b/source/css/_common/components/pages/pages.styl new file mode 100644 index 000000000..1cffd0721 --- /dev/null +++ b/source/css/_common/components/pages/pages.styl @@ -0,0 +1,7 @@ +// Page specific styles + +@import "archive"; +@import "categories"; +@import "schedule"; +@import "post-detail"; +@import "breadcrumb"; diff --git a/source/css/_common/components/pages/post-detail.styl b/source/css/_common/components/pages/post-detail.styl new file mode 100644 index 000000000..3f26afdb2 --- /dev/null +++ b/source/css/_common/components/pages/post-detail.styl @@ -0,0 +1,6 @@ +.page-post-detail { + + .sidebar-toggle-line { background: $sidebar-highlight; } + + .comments { overflow: hidden; } +} diff --git a/source/css/_common/components/pages/schedule.styl b/source/css/_common/components/pages/schedule.styl new file mode 100644 index 000000000..18ec9334a --- /dev/null +++ b/source/css/_common/components/pages/schedule.styl @@ -0,0 +1,101 @@ +@keyframes dot-flash { + from {opacity: 1; transform:scale(1.1);} + to {opacity: 0; transform:scale(1);} +} + +#schedule { + ul#event-list { + padding-left: 30px + hr { + margin: 20px 0 45px 0!important + background: #222 + &:after { + display: inline-block + content: 'NOW' + background: #222 + color: #FFF + font-weight:bold + text-align: right + padding: 0 5px + } + } + li.event { + margin: 20px 0px + background: #F9F9F9 + padding-left: 10px + min-height: 40px + h2.event-summary { + margin: 0 + padding-bottom: 3px + &:before { + display: inline-block + font-family: FontAwesome + font-size: 8px + content: '\f111' + vertical-align: middle + margin-right: 25px + color: #bbb + } + } + span.event-relative-time { + display: inline-block + font-size: 12px + font-weight: 400 + padding-left: 12px + color: #bbb + } + span.event-details { + display: block + color: #bbb + margin-left: 56px + padding-top: 3px + padding-bottom: 6px + text-indent: -24px + line-height: 18px + &:before { + text-indent: 0 + display: inline-block + width: 14px + font-family: FontAwesome + text-align: center + margin-right: 9px + color: #bbb + } + &.event-location:before { + content: '\f041' + } + &.event-duration:before { + content: '\f017' + } + } + } + li.event-past { + background: #FCFCFC + & > * { + opacity: .6 + } + h2.event-summary { + color: #bbb + &:before { + color: #DFDFDF + } + } + } + li.event-now { + background: #222 + color: #FFF + padding: 15px 0 15px 10px + h2.event-summary { + &:before { + transform: scale(1.2) + color: #FFF + animation: dot-flash 1s alternate infinite ease-in-out; + } + } + * { + color: #FFF!important + } + } + } +} + diff --git a/source/css/_common/components/pagination.styl b/source/css/_common/components/pagination.styl new file mode 100644 index 000000000..a054ef009 --- /dev/null +++ b/source/css/_common/components/pagination.styl @@ -0,0 +1,56 @@ +.pagination { + margin: 120px 0 40px; + text-align: center; + border-top: 1px solid $pagination-border; +} + +.page-number-basic { + display: inline-block; + position: relative; + top: -1px; + margin: 0 10px; + padding: 0 11px; + + +mobile() { margin: 0 5px; } +} + +.pagination { + .prev, .next, .page-number { + @extend .page-number-basic; + border-bottom: 0; + border-top: 1px solid $pagination-link-border; + transition-property: border-color; + the-transition(); + + &:hover { border-top-color: $pagination-link-hover-border; } + } + + .space { + @extend .page-number-basic; + padding: 0; + margin: 0; + } + + .prev { margin-left: 0; } + .next { margin-right: 0; } + + .page-number.current { + color: $pagination-active-color; + background: $pagination-active-bg; + border-top-color: $pagination-active-border; + } +} + +@media (max-width: 767px) + .pagination { border-top: none; } + + .pagination { + .prev, .next, .page-number { + margin-bottom: 10px; + border-top: 0; + border-bottom: 1px solid $pagination-link-border; + padding: 0 10px; + + &:hover { border-bottom-color: $pagination-link-hover-border; } + } + } diff --git a/source/css/_common/components/post/post-button.styl b/source/css/_common/components/post/post-button.styl new file mode 100644 index 000000000..fd0809f81 --- /dev/null +++ b/source/css/_common/components/post/post-button.styl @@ -0,0 +1,3 @@ +.post-button { + margin-top: 40px; +} diff --git a/source/css/_common/components/post/post-collapse.styl b/source/css/_common/components/post/post-collapse.styl new file mode 100644 index 000000000..6633a450d --- /dev/null +++ b/source/css/_common/components/post/post-collapse.styl @@ -0,0 +1,111 @@ +// TODO: Refactor. + +@media (max-width: 767px) { + .posts-collapse { + margin: 0 20px; + + .post-title, .post-meta { + display: block; + width: auto; + text-align: left; + } + } +} + +.posts-collapse { + position: relative; + z-index: $zindex-1; + + &::after { + content: " "; + position: absolute; + top: 20px; + left: 0; + margin-left: -2px; + width: 4px; + height: 100%; + background: $whitesmoke; + z-index: $zindex-bottom; + } + + margin-left: $posts-collapse-left; + +mobile() { margin: 0 20px; } + + .collection-title { + position: relative; + margin: 60px 0; + + h1, h2 { margin-left: 20px; } + + small { color: $grey; margin-left: 5px; } + + &::before { + content: " "; + position: absolute; + left: 0; + top: 50%; + margin-left: -4px; + margin-top: -4px; + width: 8px; + height: 8px; + background: $grey; + circle(); + } + } + + .post { margin: 30px 0; } + + .post-header { + position: relative; + the-transition(); + transition-property: border; + border-bottom: 1px dashed $grey-light; + + &::before { + content: " "; + position: absolute; + left: 0; + top: 12px; + width: 6px; + height: 6px; + margin-left: -4px; + background: $grey; + circle(); + border: 1px solid white; + the-transition(); + transition-property: background; + } + } + + .post-header:hover { + border-bottom-color: $grey-dim; + + &::before { background: $black-deep; } + } + + .post-meta { + position: absolute; + font-size: 12px; + left: 20px; + top: 5px; + } + + .post-comments-count { display: none; } + + .post-title { + margin-left: 60px; + font-size: 16px; + font-weight: normal; + line-height: inherit; + + &::after { + margin-left: 3px; + opacity: 0.6; + } + + a { + color: $grey-dim; + border-bottom: none; + } + } +} diff --git a/source/css/_common/components/post/post-copyright.styl b/source/css/_common/components/post/post-copyright.styl new file mode 100644 index 000000000..f1cc7cbab --- /dev/null +++ b/source/css/_common/components/post/post-copyright.styl @@ -0,0 +1,7 @@ +.post-copyright { + margin: $post-copyright.margin; + padding: $post-copyright.padding; + border-left: $post-copyright.border.width $post-copyright.border.style $post-copyright.border.color; + background-color: $post-copyright.bg; + list-style: none; +} diff --git a/source/css/_common/components/post/post-eof.styl b/source/css/_common/components/post/post-eof.styl new file mode 100644 index 000000000..e4303252e --- /dev/null +++ b/source/css/_common/components/post/post-eof.styl @@ -0,0 +1,17 @@ +.posts-expand { + .post-eof { + display: block; + margin: $post-eof-margin-top auto $post-eof-margin-bottom; + width: 8%; + height: 1px; + background: $grey-light; + text-align: center; + } +} + + +.post:last-child { + .post-eof.post-eof.post-eof { + display: none; + } +} diff --git a/source/css/_common/components/post/post-expand.styl b/source/css/_common/components/post/post-expand.styl new file mode 100644 index 000000000..622540840 --- /dev/null +++ b/source/css/_common/components/post/post-expand.styl @@ -0,0 +1,65 @@ +// TODO: Refactor. + +.posts-expand { + padding-top: 40px; +} + +@media (max-width: 767px) { + .posts-expand { + margin: 0 20px; + } + + .post-body { + pre { + .gutter pre { + padding-right: 10px; + } + } + + .highlight { + margin-left: 0px; + margin-right: 0px; + padding: 0; + .gutter pre { + padding-right: 10px; + } + } + } +} + +.posts-expand .post-body { + +desktop() { text-align: justify; } + + + h2, h3, h4, h5, h6 { + padding-top: 10px; + + .header-anchor{ + float: right; + margin-left: 10px; + color: $grey-light; + border-bottom-style: none; + visibility: hidden; + + &:hover{ + color: inherit; + } + } + + &:hover .header-anchor{ + visibility: visible; + } + } + + ul li { list-style: circle; } + + img { + box-sizing: border-box; + margin: auto; + padding: 3px; + border: 1px solid $gray-lighter; + } +} + +.posts-expand .post-body .fancybox img { margin: 0 auto 25px; } +.posts-expand .post-body img { margin: 0 auto 25px; } \ No newline at end of file diff --git a/source/css/_common/components/post/post-gallery.styl b/source/css/_common/components/post/post-gallery.styl new file mode 100644 index 000000000..b2385ae3f --- /dev/null +++ b/source/css/_common/components/post/post-gallery.styl @@ -0,0 +1,23 @@ +.post-gallery { + display: table; + table-layout: fixed; + width: 100%; + border-collapse: separate; +} + +.post-gallery-row { display: table-row; } + +.post-gallery .post-gallery-img { + display: table-cell; + text-align: center; + vertical-align: middle; + border: none; +} + +.post-gallery .post-gallery-img img { + max-width: 100%; + max-height: 100%; + border: none; +} + +.fancybox-close, .fancybox-close:hover { border: none; } diff --git a/source/css/_common/components/post/post-meta.styl b/source/css/_common/components/post/post-meta.styl new file mode 100644 index 000000000..1dc44a9d5 --- /dev/null +++ b/source/css/_common/components/post/post-meta.styl @@ -0,0 +1,50 @@ +.posts-expand .post-meta { + margin: 3px 0 60px 0; + color: $grey-dark; + font-family: $font-family-posts; + font-size: 12px; + text-align: center; + + .post-category-list { + display: inline-block; + margin: 0; + padding: 3px; + } + .post-category-list-link { color: $grey-dark; } + + .post-description { + font-size: 14px; + margin-top: 2px; + } + + time { + border-bottom: 1px dashed $grey-dark; + cursor: help; + } +} + +.post-symbolscount { + if !hexo-config('symbols_count_time.separated_meta') { display: inline-block; } +} + +.post-meta-divider { + margin: 0 .5em; +} + +.post-meta-item-icon { + margin-right: 3px; + +tablet() { + display: inline-block; + } + +mobile() { + display: inline-block; + } +} +.post-meta-item-text { + +tablet() { + display: none; + } + +mobile() { + display: none; + } +} diff --git a/source/css/_common/components/post/post-nav.styl b/source/css/_common/components/post/post-nav.styl new file mode 100644 index 000000000..fa85838d2 --- /dev/null +++ b/source/css/_common/components/post/post-nav.styl @@ -0,0 +1,57 @@ +.post-nav { + display: table; + margin-top: 15px; + width: 100%; + border-top: 1px solid $gainsboro; +} + +.post-nav-divider { + display: table-cell; + width: 10%; +} + +.post-nav-item { + display: table-cell; + padding: 10px 0 0 0; + width: 45%; + vertical-align: top; + + a { + position: relative; + display: block; + line-height: 25px; + font-size: 14px; + color: $link-color; + border-bottom: none; + + &:hover { + color: $link-hover-color; + border-bottom: none; + } + + &:active { top: 2px; } + } + + .fa { + position: absolute; + top: 8px; + left: 0; + font-size: 12px; + } + +} + +.post-nav-next { + a { padding-left: 15px; } +} + +.post-nav-prev { + text-align: right; + + a { padding-right: 15px; } + + .fa { + right: 0; + left: auto; + } +} diff --git a/source/css/_common/components/post/post-reading_progress.styl b/source/css/_common/components/post/post-reading_progress.styl new file mode 100644 index 000000000..590d96ffc --- /dev/null +++ b/source/css/_common/components/post/post-reading_progress.styl @@ -0,0 +1,10 @@ +.reading-progress-bar { + position: fixed; + top: 0; + left: 0; + z-index: 9999; + display: block; + width: 0; + height: unquote(hexo-config('reading_progress.height')); + background: unquote(hexo-config('reading_progress.color')); +} diff --git a/source/css/_common/components/post/post-reward.styl b/source/css/_common/components/post/post-reward.styl new file mode 100644 index 000000000..450a104ea --- /dev/null +++ b/source/css/_common/components/post/post-reward.styl @@ -0,0 +1,64 @@ +#rewardButton { + cursor: pointer; + border: 0; + outline: 0; + border-radius: 5px; + padding: 0; + margin: 0; + letter-spacing: normal; + text-transform: none; + text-indent: 0px; + text-shadow: none; +} +#rewardButton span { + display: inline-block; + width: 80px; + height: 35px; + border-radius: 5px; + color: #fff; + font-weight: 400; + font-style: normal; + font-variant: normal; + font-stretch: normal; + font-size: 18px; + font-family: "Microsoft Yahei"; + background: #F44336; +} +#rewardButton span:hover{ + background: #F7877F; +} +#QR{ + padding-top:20px; +} +#QR a{ + border:0; +} +#QR img{ + width: 180px; + max-width: 100%; + display: inline-block; + margin: 0.8em 2em 0 2em; +} +#wechat:hover p{ + animation: roll 0.1s infinite linear; + -webkit-animation: roll 0.1s infinite linear; + -moz-animation: roll 0.1s infinite linear; +} +#alipay:hover p{ + animation: roll 0.1s infinite linear; + -webkit-animation: roll 0.1s infinite linear; + -moz-animation: roll 0.1s infinite linear; +} +#bitcoin:hover p { + animation: roll 0.1s infinite linear; + -webkit-animation: roll 0.1s infinite linear; + -moz-animation: roll 0.1s infinite linear; +} +@keyframes roll { + from { + transform(rotateZ(30deg)); + } + to { + transform(rotateZ(-30deg)); + } +} diff --git a/source/css/_common/components/post/post-rtl.styl b/source/css/_common/components/post/post-rtl.styl new file mode 100644 index 000000000..ea048b9f0 --- /dev/null +++ b/source/css/_common/components/post/post-rtl.styl @@ -0,0 +1,11 @@ +.rtl { + &.post-body { + p, a, h1, h2, h3, h4, h5, h6, li, ul, ol { + direction: rtl; + font-family: UKIJ Ekran; + } + } + &.post-title { + font-family: UKIJ Ekran; + } +} diff --git a/source/css/_common/components/post/post-tags.styl b/source/css/_common/components/post/post-tags.styl new file mode 100644 index 000000000..8c04ec7f0 --- /dev/null +++ b/source/css/_common/components/post/post-tags.styl @@ -0,0 +1,10 @@ +.posts-expand .post-tags { + margin-top: 40px; + text-align: center; + + a { + display: inline-block; + margin-right: 10px; + font-size: 13px; + } +} diff --git a/source/css/_common/components/post/post-title.styl b/source/css/_common/components/post/post-title.styl new file mode 100644 index 000000000..80542dc4d --- /dev/null +++ b/source/css/_common/components/post/post-title.styl @@ -0,0 +1,51 @@ +.posts-expand .post-title { + text-align: center; + word-break: break-word; + font-weight: $posts-expand-title-font-weight; + + if hexo-config('post_edit.enable') { + .post-edit-link { + color: #bbb; + display: inline-block; + float: right; + border-bottom: none; + the-transition-ease-in(); + margin-left: -1.2em; + +mobile-small() { + margin-left: initial; + } + &:hover { + color: black; + } + } + } +} + +.posts-expand .post-title-link { + display: inline-block; + position: relative; + color: $black-light; + border-bottom: none; + line-height: 1.2; + vertical-align: top; + + &::before { + content: ""; + position: absolute; + width: 100%; + height: 2px; + bottom: 0; + left: 0; + background-color: #000; + visibility: hidden; + transform: scaleX(0); + the-transition(); + } + + &:hover::before { + visibility: visible; + transform: scaleX(1); + } + + .fa { font-size: 16px; } +} diff --git a/source/css/_common/components/post/post-type.styl b/source/css/_common/components/post/post-type.styl new file mode 100644 index 000000000..c3d2510b9 --- /dev/null +++ b/source/css/_common/components/post/post-type.styl @@ -0,0 +1,14 @@ +// TODO: Refactor. + +.page-home, .page-post-detail { + .post-type-quote { + .post-header, + .post-tags { + display: none; + } + + blockquote { + @extend .blockquote-center + } + } +} diff --git a/source/css/_common/components/post/post-widgets.styl b/source/css/_common/components/post/post-widgets.styl new file mode 100644 index 000000000..4914c5a15 --- /dev/null +++ b/source/css/_common/components/post/post-widgets.styl @@ -0,0 +1,41 @@ +.post-widgets { + border-top: 1px solid #eee; + padding-top: 9px; + margin-top: 45px; + display: flex; + justify-content: center; + flex-wrap: wrap; + align-items: center; + + .post-meta-divider { + height: 28px; + color: $grey-dark; + } +} + +.wp_rating { + height: 20px; + margin-right: 10px; + text-align: center; + line-height: 20px; + padding-top: 6px; +} + +.social-like { + font-size: 14px; + text-align: center; + display: flex; + justify-content: center; +} + +.vk_like { + width: 85px; + height: 21px; + padding-top: 7px; + align-self: center; +} + +.fb_like { + height: 30px; + align-self: center; +} diff --git a/source/css/_common/components/post/post.styl b/source/css/_common/components/post/post.styl new file mode 100644 index 000000000..9ca7c9be2 --- /dev/null +++ b/source/css/_common/components/post/post.styl @@ -0,0 +1,61 @@ +.post-body { + font-family: $font-family-posts; + +mobile() { + word-break: break-word; + } +} + +.post-body .fancybox img { + display: block !important; + margin: 0 auto; + cursor: pointer; + cursor: zoom-in; + cursor: -webkit-zoom-in; +} + +.post-body .image-caption { + margin: -20px auto 15px; + text-align: center; + font-size: $font-size-base; + color: $grey-dark; + font-weight: bold; + line-height: 1; +} + +.post-body .figure .caption { + @extend .post-body .image-caption; +} + +.post-sticky-flag { + display: inline-block; + font-size: 16px; + -ms-transform: rotate(30deg); + transform: rotate(30deg); +} + +.use-motion { + if hexo-config('motion.transition.post_block') { + .post-block, + .pagination, + .comments { opacity: 0; } + } + if hexo-config('motion.transition.post_header') { .post-header { opacity: 0; } } + if hexo-config('motion.transition.post_body') { .post-body { opacity: 0; } } + if hexo-config('motion.transition.coll_header') { .collection-title { opacity: 0; } } +} + +@import "post-expand"; +@import "post-collapse"; +@import "post-type"; +@import "post-title"; +@import "post-meta"; +@import "post-button"; +@import "post-tags"; +@import "post-nav"; +@import "post-eof"; +@import "post-gallery"; +@import "post-reward" if hexo-config('alipay') or hexo-config('wechatpay') or hexo-config('bitcoin'); +@import "post-copyright" if hexo-config('post_copyright.enable'); +@import "post-widgets" if (hexo-config('facebook_sdk.enable') and hexo-config('facebook_sdk.like_button')) or (hexo-config('vkontakte_api.enable') and hexo-config('vkontakte_api.like')) or hexo-config('rating.enable') or (hexo-config('needmoreshare2.enable') and hexo-config('needmoreshare2.postbottom.enable')); +@import "post-rtl"; +@import "post-reading_progress" if hexo-config('reading_progress.enable'); diff --git a/source/css/_common/components/sidebar/sidebar-author-links.styl b/source/css/_common/components/sidebar/sidebar-author-links.styl new file mode 100644 index 000000000..9413de9c9 --- /dev/null +++ b/source/css/_common/components/sidebar/sidebar-author-links.styl @@ -0,0 +1,25 @@ +.links-of-author { + margin-top: 20px; +} + +.links-of-author a, +.links-of-author .exturl { + display: inline-block; + vertical-align: middle; + margin-right: 10px; + margin-bottom: 10px; + border-bottom-color: $black-light; + font-size: 13px; + if hexo-config('social_icons.transition') { the-transition(); } + + &:before { + display: inline-block; + vertical-align: middle; + margin-right: 3px; + content: " "; + width: 4px; + height: 4px; + border-radius: 50%; + background: rgb(random-color(0, 255) - 50%, random-color(0, 255) - 50%, random-color(0, 255) - 50%); + } +} diff --git a/source/css/_common/components/sidebar/sidebar-author.styl b/source/css/_common/components/sidebar/sidebar-author.styl new file mode 100644 index 000000000..2da119c7d --- /dev/null +++ b/source/css/_common/components/sidebar/sidebar-author.styl @@ -0,0 +1,45 @@ +.site-author-image { + display: block; + margin: 0 auto; + padding: $site-author-image-padding; + max-width: $site-author-image-width; + height: $site-author-image-height; + border: $site-author-image-border-width solid $site-author-image-border-color; + opacity: hexo-config('avatar.opacity') is a 'unit' ? hexo-config('avatar.opacity') : 1; +} + +if hexo-config('avatar.rounded') { +.site-author-image { + border-radius: 100%; +} +} + +if hexo-config('avatar.rotated') { +.site-author-image { + -webkit-transition: -webkit-transform 1.0s ease-out; + -moz-transition: -moz-transform 1.0s ease-out; + -ms-transition: -ms-transform 1.0s ease-out; + transition: transform 1.0s ease-out; +} +} + +img:hover { + -webkit-transform: rotateZ(360deg); + -moz-transform: rotateZ(360deg); + -ms-transform: rotate(360deg); + transform: rotateZ(360deg); +} + +.site-author-name { + margin: $site-author-name-margin; + text-align: $site-author-name-align; + color: $site-author-name-color; + font-weight: $site-author-name-weight; +} + +.site-description { + margin-top: $site-description-margin-top; + text-align: $site-description-align; + font-size: $site-description-font-size; + color: $site-description-color; +} diff --git a/source/css/_common/components/sidebar/sidebar-blogroll.styl b/source/css/_common/components/sidebar/sidebar-blogroll.styl new file mode 100644 index 000000000..b677e6868 --- /dev/null +++ b/source/css/_common/components/sidebar/sidebar-blogroll.styl @@ -0,0 +1,25 @@ +.links-of-blogroll { font-size: 13px; } + +.links-of-blogroll-title { + margin-top: 20px; + font-size: 14px; + font-weight: $font-weight-bold; +} +.links-of-blogroll-list { + margin: 0; + padding: 0; + list-style: none; +} + +.links-of-blogroll-item { + padding: 2px 10px; + + a { + max-width: 280px; + box-sizing: border-box; + display: inline-block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } +} diff --git a/source/css/_common/components/sidebar/sidebar-dimmer.styl b/source/css/_common/components/sidebar/sidebar-dimmer.styl new file mode 100644 index 000000000..b2da3cec2 --- /dev/null +++ b/source/css/_common/components/sidebar/sidebar-dimmer.styl @@ -0,0 +1,21 @@ +.sidebar-active #sidebar-dimmer { + opacity: .7; + -webkit-transform: translateX(-150%); + transform: translateX(-150%); + transition: opacity .2s; +} + +#sidebar-dimmer { + display: none; + position: absolute; + top: 0; + left: 100%; + width: 200%; + height: 100%; + background: #000; + opacity: 0; + transition: opacity .2s,transform 0s .2s; + +mobile() { + display: block; + } +} diff --git a/source/css/_common/components/sidebar/sidebar-feed-link.styl b/source/css/_common/components/sidebar/sidebar-feed-link.styl new file mode 100644 index 000000000..b3868a858 --- /dev/null +++ b/source/css/_common/components/sidebar/sidebar-feed-link.styl @@ -0,0 +1,23 @@ +.feed-link { + margin-top: 20px; + + a { + display: inline-block; + padding: 0 15px; + color: rgb(252, 100, 35); + border: 1px solid rgb(252, 100, 35); + border-radius: 4px; + + i { + color: rgb(252, 100, 35); + font-size: 14px; + } + + &:hover { + color:white; + background: rgb(252, 100, 35); + + i { color: white; } + } + } +} diff --git a/source/css/_common/components/sidebar/sidebar-nav.styl b/source/css/_common/components/sidebar/sidebar-nav.styl new file mode 100644 index 000000000..973eda70f --- /dev/null +++ b/source/css/_common/components/sidebar/sidebar-nav.styl @@ -0,0 +1,29 @@ +// Sidebar Navigation + +.sidebar-nav { + margin: 0 0 20px; + padding-left: 0; +} +.sidebar-nav li { + display: inline-block; + cursor: pointer; + border-bottom: 1px solid transparent; + font-size: 14px; + color: $sidebar-nav-color; + + &:hover { color: $sidebar-nav-hover-color; } +} + +.page-post-detail .sidebar-nav-toc { padding: 0 5px; } + +.page-post-detail .sidebar-nav-overview { margin-left: 10px; } + +.sidebar-nav .sidebar-nav-active { + color: $sidebar-highlight; + border-bottom-color: $sidebar-highlight; + + &:hover { color: $sidebar-highlight; } +} + +.sidebar-panel { display: none; } +.sidebar-panel-active { display: block; } diff --git a/source/css/_common/components/sidebar/sidebar-toc.styl b/source/css/_common/components/sidebar/sidebar-toc.styl new file mode 100644 index 000000000..b9f0264db --- /dev/null +++ b/source/css/_common/components/sidebar/sidebar-toc.styl @@ -0,0 +1,60 @@ + +.post-toc-empty { + font-size: 14px; + color: $grey-dim; +} + +.post-toc-wrap { overflow: hidden; } + +.post-toc { overflow: auto; } + +.post-toc ol { + margin: 0; + padding: 0 2px 5px 10px; + text-align: left; + list-style: none; + font-size: 14px; + + & > ol { padding-left: 0; } + + a { + the-transition(); + transition-property: all; + color: $toc-link-color; + border-bottom-color: $toc-link-border-color; + + &:hover { + color: $toc-link-hover-color; + border-bottom-color: $toc-link-hover-border-color; + } + } +} + +.post-toc .nav-item { + overflow: hidden; + text-overflow: ellipsis; + //text-align: justify; + white-space: nowrap if !hexo-config('toc.wrap'); + line-height: 1.8; +} + +.post-toc .nav .nav-child { display: none; } + +.post-toc .nav .active > .nav-child { display: block; } + +.post-toc .nav .active-current > .nav-child { + display: block; + & > .nav-item { display: block; } +} + +.post-toc .nav .active > a { + color: $toc-link-active-color; + border-bottom-color: $toc-link-active-border-color; +} + +.post-toc .nav .active-current > a { + color: $toc-link-active-current-color; + &:hover { + color: $toc-link-active-current-border-color; + } +} diff --git a/source/css/_common/components/sidebar/sidebar-toggle.styl b/source/css/_common/components/sidebar/sidebar-toggle.styl new file mode 100644 index 000000000..c4b6a06b1 --- /dev/null +++ b/source/css/_common/components/sidebar/sidebar-toggle.styl @@ -0,0 +1,36 @@ +.sidebar-toggle { + position: fixed; + right: $b2t-position-right; + bottom: 45px; + width: 14px; + height: 14px; + padding: 5px; + background: $black-deep; + line-height: 0; + z-index: $zindex-5; + cursor: pointer; + -webkit-transform: translateZ(0); + + +tablet() { + fixbutton() if hexo-config('sidebar.onmobile'); + hide() if not hexo-config('sidebar.onmobile'); + } + +mobile() { + fixbutton() if hexo-config('sidebar.onmobile'); + hide() if not hexo-config('sidebar.onmobile'); + } +} + + + +.sidebar-toggle-line { + position: relative; + display: inline-block; + vertical-align: top; + height: 2px; + width: 100%; + background: white; + margin-top: 3px; + + &:first-child { margin-top: 0; } +} diff --git a/source/css/_common/components/sidebar/sidebar.styl b/source/css/_common/components/sidebar/sidebar.styl new file mode 100644 index 000000000..555668ad4 --- /dev/null +++ b/source/css/_common/components/sidebar/sidebar.styl @@ -0,0 +1,52 @@ +.sidebar { + position: fixed; + right: 0; + top: 0; + bottom: 0; + + width: 0; + z-index: $zindex-4; + box-shadow: inset 0 2px 6px black; + background: $black-deep; + -webkit-transform: translateZ(0); // http://stackoverflow.com/questions/17079857/position-fixed-broken-in-chrome-with-flash-behind + + a, .exturl { + color: $grey-dark; + border-bottom-color: $black-light; + &:hover { color: $gainsboro; } + } + + +tablet() { + hide() if not hexo-config('sidebar.onmobile'); + } + +mobile() { + hide() if not hexo-config('sidebar.onmobile'); + } + +} + +.sidebar-inner { + position: relative; + padding: 20px 10px; + color: $grey-dark; + text-align: center; +} + +.site-overview-wrap { + overflow: hidden; +} + +.site-overview { + overflow-y: auto; + overflow-x: hidden; +} + +@import "sidebar-toggle"; +@import "sidebar-author"; +@import "site-state"; +@import "sidebar-feed-link"; +@import "sidebar-author-links"; +@import "sidebar-blogroll"; +@import "sidebar-nav"; +@import "sidebar-toc"; +@import "sidebar-dimmer" if hexo-config('sidebar.onmobile'); diff --git a/source/css/_common/components/sidebar/site-state.styl b/source/css/_common/components/sidebar/site-state.styl new file mode 100644 index 000000000..c05b0ea09 --- /dev/null +++ b/source/css/_common/components/sidebar/site-state.styl @@ -0,0 +1,28 @@ +.site-state { + overflow: hidden; + line-height: 1.4; + white-space: nowrap; + text-align: $site-state-align; +} + +.site-state-item { + display: inline-block; + padding: 0 15px; + border-left: 1px solid $site-state-item-border-color; + + &:first-child { border-left: none; } + + a { border-bottom: none; } +} +.site-state-item-count { + display: block; + text-align: center; + color: $site-state-item-count-color; + font-weight: $font-weight-bold; + font-size: $site-state-item-count-font-size; +} + +.site-state-item-name { + font-size: $site-state-item-name-font-size; + color: $site-state-item-name-color; +} diff --git a/source/css/_common/components/tag-cloud.styl b/source/css/_common/components/tag-cloud.styl new file mode 100644 index 000000000..30b01c642 --- /dev/null +++ b/source/css/_common/components/tag-cloud.styl @@ -0,0 +1,8 @@ +.tag-cloud { + text-align: center; + + a { + display: inline-block; + margin: 10px; + } +} \ No newline at end of file diff --git a/source/css/_common/components/tags/blockquote-center.styl b/source/css/_common/components/tags/blockquote-center.styl new file mode 100644 index 000000000..b0f3bccaa --- /dev/null +++ b/source/css/_common/components/tags/blockquote-center.styl @@ -0,0 +1,33 @@ +// Blockquote with all children centered. +.blockquote-center { + position: relative; + margin: 40px 0; + padding: 0; + border-left: none; + text-align: center; + + &::before, &::after { + position: absolute; + content: ' '; + display: block; + width: 100%; + height: 24px; + opacity: 0.2; + background-repeat: no-repeat; + background-position: 0 -6px; + background-size: 22px 22px; + } + &::before { + top: -20px; + background-image: url($center-quote-left); + border-top: 1px solid $grey-light; + } + &::after { + bottom: -20px; + background-image: url($center-quote-right); + border-bottom: 1px solid $grey-light; + background-position: 100% 8px; + } + + p, div { text-align: center; } +} diff --git a/source/css/_common/components/tags/exturl.styl b/source/css/_common/components/tags/exturl.styl new file mode 100644 index 000000000..49a1684f9 --- /dev/null +++ b/source/css/_common/components/tags/exturl.styl @@ -0,0 +1,18 @@ +.exturl { + // Remove the gray background color from active links in IE 10. + background-color: transparent; + + cursor: pointer; + border-bottom: 1px solid #999; + + .fa { + font-size: 14px; + } +} + +// Improve readability when focused and also mouse hovered in all browsers. +.exturl:active, .exturl:hover { + outline: 0; + color: $black-deep; + border-bottom-color: $black-deep; +} diff --git a/source/css/_common/components/tags/full-image.styl b/source/css/_common/components/tags/full-image.styl new file mode 100644 index 000000000..90426d0e7 --- /dev/null +++ b/source/css/_common/components/tags/full-image.styl @@ -0,0 +1,12 @@ +// Expand image to 126% with nagative margin-left/right on Desktop. +.full-image.full-image.full-image.full-image { + border: none; + max-width: 100%; + width: auto; + margin: 20px auto 25px; +// +desktop() { +// max-width: none; +// width: $full-image-width; +// margin: $full-image-margin-vertical $full-image-margin-horizontal; +// } +} diff --git a/source/css/_common/components/tags/group-pictures.styl b/source/css/_common/components/tags/group-pictures.styl new file mode 100644 index 000000000..ce1461ddf --- /dev/null +++ b/source/css/_common/components/tags/group-pictures.styl @@ -0,0 +1,35 @@ +.post .post-body .group-picture { + img { + box-sizing: border-box; + padding: 0 3px; + border: none; + } +} + +.post .group-picture-row { + overflow: hidden; + margin-top: 6px; + &:first-child { margin-top: 0; } +} + +.post .group-picture-column { float: left; } + +.page-post-detail .post-body .group-picture-column { + float: none; + margin-top: 10px; + width: auto !important; + img { margin: 0 auto; } +} + +.page-archive { + .group-picture-container { overflow: hidden; } + .group-picture-row { + float: left; + &:first-child { margin-top: 6px; } + } + + .group-picture-column { + max-width: 150px; + max-height: 150px; + } +} diff --git a/source/css/_common/components/tags/label.styl b/source/css/_common/components/tags/label.styl new file mode 100644 index 000000000..541dd2dac --- /dev/null +++ b/source/css/_common/components/tags/label.styl @@ -0,0 +1,12 @@ +.post-body .label { + display: inline; + padding: 0 2px; + white-space: nowrap; + + &.default { background-color: $label-default; } + &.primary { background-color: $label-primary; } + &.info { background-color: $label-info; } + &.success { background-color: $label-success; } + &.warning { background-color: $label-warning; } + &.danger { background-color: $label-danger; } +} diff --git a/source/css/_common/components/tags/note-modern.styl b/source/css/_common/components/tags/note-modern.styl new file mode 100644 index 000000000..cf7659e7a --- /dev/null +++ b/source/css/_common/components/tags/note-modern.styl @@ -0,0 +1,183 @@ +.post-body .note { + note_icons = hexo-config('note.icons'); + + position: relative; + padding: 15px; + margin-bottom: 20px; + + border: 1px solid transparent; + background-color: $whitesmoke; + border-radius: unit(hexo-config('note.border_radius'), px) if hexo-config('note.border_radius') is a 'unit'; + + h2, h3, h4, h5, h6 { + if note_icons { + margin-top: 3px; + } else { + margin-top: 0; + } + margin-bottom: 0; + border-bottom: initial; + padding-top: 0 !important; + } + + p, ul, ol, table, pre, blockquote { + &:first-child { + margin-top: 0; + } + &:last-child { + margin-bottom: 0; + } + } + + if note_icons { + &:not(.no-icon) { + padding-left: 45px; + &:before { + position: absolute; + font-family: 'FontAwesome'; + font-size: larger; + top: 13px; + left: 15px; + } + } + } + + &.default { + background-color: $note-modern-default-bg; + border-color: $note-modern-default-border; + color: $note-modern-default-text; + if note_icons { + &:not(.no-icon) { + &:before { + content: $note-default-icon; + } + } + } + a { + &:not(.btn) { + color: $note-modern-default-text; + border-bottom: 1px solid $note-modern-default-text; + &:hover { + color: $note-modern-default-hover; + border-bottom: 1px solid $note-modern-default-hover; + } + } + } + } + + &.primary { + background-color: $note-modern-primary-bg; + border-color: $note-modern-primary-border; + color: $note-modern-primary-text; + if note_icons { + &:not(.no-icon) { + &:before { + content: $note-primary-icon; + } + } + } + a { + &:not(.btn) { + color: $note-modern-primary-text; + border-bottom: 1px solid $note-modern-primary-text; + &:hover { + color: $note-modern-primary-hover; + border-bottom: 1px solid $note-modern-primary-hover; + } + } + } + } + + &.info { + background-color: $note-modern-info-bg; + border-color: $note-modern-info-border; + color: $note-modern-info-text; + if note_icons { + &:not(.no-icon) { + &:before { + content: $note-info-icon; + } + } + } + a { + &:not(.btn) { + color: $note-modern-info-text; + border-bottom: 1px solid $note-modern-info-text; + &:hover { + color: $note-modern-info-hover; + border-bottom: 1px solid $note-modern-info-hover; + } + } + } + } + + &.success { + background-color: $note-modern-success-bg; + border-color: $note-modern-success-border; + color: $note-modern-success-text; + if note_icons { + &:not(.no-icon) { + &:before { + content: $note-success-icon; + } + } + } + a { + &:not(.btn) { + color: $note-modern-success-text; + border-bottom: 1px solid $note-modern-success-text; + &:hover { + color: $note-modern-success-hover; + border-bottom: 1px solid $note-modern-success-hover; + } + } + } + } + + &.warning { + background-color: $note-modern-warning-bg; + border-color: $note-modern-warning-border; + color: $note-modern-warning-text; + if note_icons { + &:not(.no-icon) { + &:before { + content: $note-warning-icon; + } + } + } + a { + &:not(.btn) { + color: $note-modern-warning-text; + border-bottom: 1px solid $note-modern-warning-text; + &:hover { + color: $note-modern-warning-hover; + border-bottom: 1px solid $note-modern-warning-hover; + } + } + } + } + + &.danger { + background-color: $note-modern-danger-bg; + border-color: $note-modern-danger-border; + color: $note-modern-danger-text; + if note_icons { + &:not(.no-icon) { + &:before { + content: $note-danger-icon; + } + } + } + a { + &:not(.btn) { + color: $note-modern-danger-text; + border-bottom: 1px solid $note-modern-danger-text; + &:hover { + color: $note-modern-danger-hover; + border-bottom: 1px solid $note-modern-danger-hover; + } + } + } + } + +} diff --git a/source/css/_common/components/tags/note.styl b/source/css/_common/components/tags/note.styl new file mode 100644 index 000000000..4b234b0d3 --- /dev/null +++ b/source/css/_common/components/tags/note.styl @@ -0,0 +1,161 @@ +.post-body .note { + note_style = hexo-config('note.style'); + note_icons = hexo-config('note.icons'); + + position: relative; + padding: 15px; + margin-bottom: 20px; + + if note_style == 'simple' { + border: 1px solid $gainsboro; + border-left-width: 5px; + } + if note_style == 'flat' { + border: initial; + border-left: 3px solid $gainsboro; + background-color: lighten($gainsboro, 65%); + } + border-radius: unit(hexo-config('note.border_radius'), px) if hexo-config('note.border_radius') is a 'unit'; + + h2, h3, h4, h5, h6 { + if note_icons { + margin-top: 3px; + } else { + margin-top: 0; + } + margin-bottom: 0; + border-bottom: initial; + padding-top: 0 !important; + } + + p, ul, ol, table, pre, blockquote { + &:first-child { + margin-top: 0; + } + &:last-child { + margin-bottom: 0; + } + } + + if note_icons { + &:not(.no-icon) { + padding-left: 45px; + &:before { + position: absolute; + font-family: 'FontAwesome'; + font-size: larger; + top: 13px; + left: 15px; + } + } + } + + &.default { + if note_style == 'flat' { + background-color: $note-default-bg; + } + border-left-color: $note-default-border; + h2, h3, h4, h5, h6 { + color: $note-default-text; + } + if note_icons { + &:not(.no-icon) { + &:before { + content: $note-default-icon; + color : $note-default-text; + } + } + } + } + + &.primary { + if note_style == 'flat' { + background-color: $note-primary-bg; + } + border-left-color: $note-primary-border; + h2, h3, h4, h5, h6 { + color: $note-primary-text; + } + if note_icons { + &:not(.no-icon) { + &:before { + content: $note-primary-icon; + color : $note-primary-text; + } + } + } + } + + &.info { + if note_style == 'flat' { + background-color: $note-info-bg; + } + border-left-color: $note-info-border; + h2, h3, h4, h5, h6 { + color: $note-info-text; + } + if note_icons { + &:not(.no-icon) { + &:before { + content: $note-info-icon; + color : $note-info-text; + } + } + } + } + + &.success { + if note_style == 'flat' { + background-color: $note-success-bg; + } + border-left-color: $note-success-border; + h2, h3, h4, h5, h6 { + color: $note-success-text; + } + if note_icons { + &:not(.no-icon) { + &:before { + content: $note-success-icon; + color : $note-success-text; + } + } + } + } + + &.warning { + if note_style == 'flat' { + background-color: $note-warning-bg; + } + border-left-color: $note-warning-border; + h2, h3, h4, h5, h6 { + color: $note-warning-text; + } + if note_icons { + &:not(.no-icon) { + &:before { + content: $note-warning-icon; + color : $note-warning-text; + } + } + } + } + + &.danger { + if note_style == 'flat' { + background-color: $note-danger-bg; + } + border-left-color: $note-danger-border; + h2, h3, h4, h5, h6 { + color: $note-danger-text; + } + if note_icons { + &:not(.no-icon) { + &:before { + content: $note-danger-icon; + color : $note-danger-text; + } + } + } + } + +} diff --git a/source/css/_common/components/tags/tabs.styl b/source/css/_common/components/tags/tabs.styl new file mode 100644 index 000000000..c3c27c4e9 --- /dev/null +++ b/source/css/_common/components/tags/tabs.styl @@ -0,0 +1,99 @@ +.post-body .tabs { + position: relative; + display: block; + margin-bottom: 20px; + padding-top: 10px; + + // Read tabs border_radius from NexT config and set in "tbr px" to use it as string variable in this CSS section. + hexo-config('tabs.border_radius') is a 'unit' ? (tbr = unit(hexo-config('tabs.border_radius'), px)) : (tbr = 0) + + ul.nav-tabs { + margin: 0; + padding: 0; + display: flex; + margin-bottom: -1px; + + +mobile-smallest() { + display: block; + margin-bottom: 5px; + } + + li.tab { + list-style-type: none !important; + margin: 0 .25em 0 0; + border-top: 3px solid transparent; + border-left: 1px solid transparent; + border-right: 1px solid transparent; + + +mobile-smallest() { + margin: initial; + border-top: 1px solid transparent; + border-left: 3px solid transparent; + border-right: 1px solid transparent; + border-bottom: 1px solid transparent; + } + + if tbr > 0 { + border-radius: tbr tbr 0 0; + +mobile-smallest() { border-radius: tbr; } + } + if hexo-config('tabs.transition.tabs') { the-transition-ease-out(); } + + & a { + outline: 0; + border-bottom: initial; + display: block; + line-height: 1.8em; + padding: .25em .75em; + & i { width: (18em / 14); } + if hexo-config('tabs.transition.labels') { the-transition-ease-out(); } + } + + &.active { + border-top: 3px solid $orange; + border-left: 1px solid $table-border-color; + border-right: 1px solid $table-border-color; + background-color: #fff; + + +mobile-smallest() { + border-top: 1px solid $table-border-color; + border-left: 3px solid $orange; + border-right: 1px solid $table-border-color; + border-bottom: 1px solid $table-border-color; + } + + & a { + cursor: default; + color: $link-color; + } + } + } + + } + + .tab-content { + background-color: #fff; + + .tab-pane { + border: 1px solid $table-border-color; + padding: 20px 20px 0 20px; + if tbr > 0 { border-radius: tbr; } + + &:not(.active) { + hide(); + } + &.active { + show(); + if tbr > 0 { + &:nth-of-type(1) { + border-radius: 0 tbr tbr tbr; + +mobile-smallest() { border-radius: tbr; } + } + } + } + + } + + } + +} diff --git a/source/css/_common/components/tags/tags.styl b/source/css/_common/components/tags/tags.styl new file mode 100644 index 000000000..e7e027ad8 --- /dev/null +++ b/source/css/_common/components/tags/tags.styl @@ -0,0 +1,8 @@ +@import "full-image"; +@import "blockquote-center"; +@import "group-pictures"; +@import "exturl" if hexo-config('exturl'); +@import "note" if hexo-config('note.style') == 'simple' || hexo-config('note.style') == 'flat'; +@import "note-modern" if hexo-config('note.style') == 'modern'; +@import "label" if hexo-config('label'); +@import "tabs" if hexo-config('tabs.enable'); diff --git a/source/css/_common/components/third-party/algolia-search.styl b/source/css/_common/components/third-party/algolia-search.styl new file mode 100644 index 000000000..652ba1ac8 --- /dev/null +++ b/source/css/_common/components/third-party/algolia-search.styl @@ -0,0 +1,135 @@ +// fix bug using algolia search's CDN +.ais-search-box--magnifier svg { + display: none !important; +} +.ais-search-box--reset svg { + display: none !important; +} + +.algolia-pop-overlay + position: fixed + width: 100% + height: 100% + top: 0 + left: 0 + z-index: 2080 + background-color: rgba(0, 0, 0, 0.3) + +mobile() + display: none; + +.algolia-popup + overflow: hidden + padding: 0 + display: none + position: fixed + top: 10% + left: 50% + width: 700px + height: 80% + margin-left: -350px + background: #fff + color: #333 + z-index: 9999 + border-radius: 5px + +mobile() + padding: 0 + top: 0 + left: 0 + margin: 0 + width: 100% + height: 100% + border-radius: 0 + + .popup-btn-close + position: absolute + right: 14px + color: #4EBD79 + font-size: 14px + font-weight: bold + text-transform: uppercase + cursor: pointer + padding-left: 15px + border-left: 1px solid #eee + top: 10px + .fa + color: $grey-dark + font-size: 18px + &:hover .fa + color: $black-deep + +.algolia-search + padding: 10px 15px 5px + max-height: 50px + border-bottom: 1px solid #ccc + background: $whitesmoke + border-top-left-radius: 5px + border-top-right-radius: 5px + +.algolia-search-input-icon + display: inline-block + width: 20px + .fa + font-size: 18px + +.algolia-search-input + display: inline-block + width: calc(90% - 20px) + input + padding: 5px 0 + width: 100% + outline: none + border: none + background: transparent + +.algolia-powered + float: right + img + display: inline-block + height: 18px + vertical-align: middle + +.algolia-results + position: relative + overflow: auto + padding: 10px 30px + height: calc(100% - 50px) + + hr + margin: 10px 0 + + .highlight + font-style: normal + margin: 0 + padding: 0 2px + font-size: inherit + color: red + +.algolia-hits + margin-top: 20px + +.algolia-hit-item + margin: 15px 0 + +.algolia-hit-item-link + display: block + border-bottom: 1px dashed #ccc + the-transition() + +.algolia-pagination + .pagination + margin-top: 40px + border-top: none + padding: 0 + .pagination-item + display: inline-block + .page-number + border-top: none + &:hover + border-bottom: 1px solid $black-deep + + .current .page-number + @extend .pagination .page-number.current + + .disabled-item + visibility: hidden + diff --git a/source/css/_common/components/third-party/baidushare.styl b/source/css/_common/components/third-party/baidushare.styl new file mode 100644 index 000000000..fc42b713d --- /dev/null +++ b/source/css/_common/components/third-party/baidushare.styl @@ -0,0 +1,12 @@ +.post-spread { + margin-top: 20px; + text-align: center; +} + +.bdshare-slide-button-box a { border: none; } + +.bdsharebuttonbox { + display: inline-block; + + a { border: none; } +} diff --git a/source/css/_common/components/third-party/busuanzi-counter.styl b/source/css/_common/components/third-party/busuanzi-counter.styl new file mode 100644 index 000000000..960fef686 --- /dev/null +++ b/source/css/_common/components/third-party/busuanzi-counter.styl @@ -0,0 +1,30 @@ +if hexo-config("scheme") == Pisces + .busuanzi-count { + +tablet() { + width: auto; + } + +mobile() { + width: auto; + } + } + +.site-uv, +.site-pv, +.page-pv { + display: inline-block; + + .busuanzi-value { + margin: 0 5px; + } +} + +if hexo-config("busuanzi_count.site_pv") and hexo-config("busuanzi_count.site_uv") + .site-uv + { + margin-right: 10px; + + &::after { + content: "|"; + padding-left: 10px; + } + } diff --git a/source/css/_common/components/third-party/gitment.styl b/source/css/_common/components/third-party/gitment.styl new file mode 100644 index 000000000..52babf0ba --- /dev/null +++ b/source/css/_common/components/third-party/gitment.styl @@ -0,0 +1,13 @@ +#gitment-display-button{ + display: inline-block; + padding: 0 15px; + color: #0a9caf; + cursor: pointer; + font-size: 14px; + border: 1px solid #0a9caf; + border-radius: 4px; +} +#gitment-display-button:hover{ + color: #fff; + background: #0a9caf; +} \ No newline at end of file diff --git a/source/css/_common/components/third-party/han.styl b/source/css/_common/components/third-party/han.styl new file mode 100644 index 000000000..d02c9697b --- /dev/null +++ b/source/css/_common/components/third-party/han.styl @@ -0,0 +1,3 @@ +.fa { + font-family: FontAwesome!important; +} diff --git a/source/css/_common/components/third-party/jiathis.styl b/source/css/_common/components/third-party/jiathis.styl new file mode 100644 index 000000000..d501fb503 --- /dev/null +++ b/source/css/_common/components/third-party/jiathis.styl @@ -0,0 +1,10 @@ +.post-spread { + margin-top: 20px; + text-align: center; +} + +.jiathis_style { + display: inline-block; + + a { border: none; } +} \ No newline at end of file diff --git a/source/css/_common/components/third-party/localsearch.styl b/source/css/_common/components/third-party/localsearch.styl new file mode 100644 index 000000000..85f43cf9a --- /dev/null +++ b/source/css/_common/components/third-party/localsearch.styl @@ -0,0 +1,102 @@ +.local-search-pop-overlay + position: fixed + width: 100% + height: 100% + top: 0 + left: 0 + z-index: 2080 + background-color: rgba(0, 0, 0, 0.3) + +.local-search-popup + display: none + position: fixed + top: 10% + left: 50% + margin-left: -350px + width: 700px + height: 80% + padding: 0 + background: #fff + color: #333 + z-index: 9999 + border-radius: 5px + +mobile() + padding: 0 + top: 0 + left: 0 + margin: 0 + width: 100% + height: 100% + border-radius: 0 + + ul.search-result-list + padding: 0 + margin: 0 5px + + p.search-result + border-bottom: 1px dashed #ccc + padding: 5px 0 + + a.search-result-title + font-weight: bold + font-size: 16px + + .search-keyword + border-bottom: 1px dashed #f00 + font-weight: bold + color: #f00 + + .local-search-header + padding: 5px + height: 36px + background: #f5f5f5 + border-top-left-radius: 5px + border-top-right-radius: 5px + + #local-search-result + overflow: auto + position: relative + padding: 5px 25px + height: calc(100% - 55px) + + .local-search-input-wrapper + display: inline-block + width: calc(100% - 90px) + height: 36px + line-height: 36px + padding: 0 5px + + .local-search-input-wrapper input + padding: 8px 0 + height: 20px + display: block + width: 100% + outline: none + border: none + background: transparent + vertical-align: middle + + .search-icon, .popup-btn-close + display: inline-block + font-size: 18px + color: #999 + height: 36px + width: 18px + padding-left: 10px + padding-right: 10px + + .search-icon + float: left + + .popup-btn-close + border-left: 1px solid #eee + float: right + cursor: pointer + + #no-result + position: absolute + left: 50% + top: 50% + -webkit-transform: translate(-50%, -50%) + transform: translate(-50%, -50%) + color: #ccc diff --git a/source/css/_common/components/third-party/needsharebutton.styl b/source/css/_common/components/third-party/needsharebutton.styl new file mode 100644 index 000000000..2caae446f --- /dev/null +++ b/source/css/_common/components/third-party/needsharebutton.styl @@ -0,0 +1,27 @@ +#needsharebutton-postbottom { + position: relative; + cursor: pointer; + height: 26px; + + .btn { + display: initial; + padding: 1px 4px; + border: 1px solid $btn-default-border-color; + border-radius: 3px; + } +} + +#needsharebutton-float { + position: fixed; + bottom: 38px; + left: -8px; + z-index: 9999; + cursor: pointer; + + .btn { + //display: initial; + padding: 0 10px 0 14px + border: 1px solid $btn-default-border-color; + border-radius: 4px; + } +} diff --git a/source/css/_common/components/third-party/related-posts.styl b/source/css/_common/components/third-party/related-posts.styl new file mode 100644 index 000000000..7c1e6c4bd --- /dev/null +++ b/source/css/_common/components/third-party/related-posts.styl @@ -0,0 +1,22 @@ +.popular-posts-header { + margin-top: $post-eof-margin-bottom; + margin-bottom: 10px; + font-size: $font-size-headings-base; + border-bottom: 1px solid $gainsboro; + display: block; +} + +ul.popular-posts { + padding: 0; + + .popular-posts-item { + // list-style: none; + margin-left: 2em; + .popular-posts-title { + font-weight: normal; + font-size: $font-size-base; + margin: 0; + line-height: $line-height-base * 1.2; + } + } +} \ No newline at end of file diff --git a/source/css/_common/components/third-party/third-party.styl b/source/css/_common/components/third-party/third-party.styl new file mode 100644 index 000000000..0896976b1 --- /dev/null +++ b/source/css/_common/components/third-party/third-party.styl @@ -0,0 +1,9 @@ +@import "gitment" if hexo-config('gitment.enable'); +@import "jiathis"; +@import "han"; +@import "baidushare"; +@import "localsearch"; +@import "busuanzi-counter"; +@import "algolia-search" if hexo-config('algolia_search.enable'); +@import "needsharebutton" if hexo-config('needmoreshare2.enable'); +@import "related-posts" if hexo-config('related_posts.enable'); diff --git a/source/css/_common/outline/outline.styl b/source/css/_common/outline/outline.styl new file mode 100644 index 000000000..7337e1823 --- /dev/null +++ b/source/css/_common/outline/outline.styl @@ -0,0 +1,58 @@ +// +// Layout +// Note: Must name this file "outline" instead of "layout" +// Or Hexo will use it as template layout. +// ================================================= + + +html, body { height: 100%; } + +.container { + position: relative; + min-height: 100%; +} + + +// Header Section +// -------------------------------------------------- +.header-inner { + margin: 0 auto; + padding: 100px 0 70px; + width: $content-desktop; + + +desktop-large() { + .container & { width: $content-desktop-large; } + } +} + +// Main Section +// -------------------------------------------------- +.main { padding-bottom: $footer-height + $gap-between-main-and-footer; } +.main-inner { + margin: 0 auto; + width: $content-desktop; + + +desktop-large() { + .container & { width: $content-desktop-large; } + } +} + + +// Footer Section +// -------------------------------------------------- +.footer { + position: absolute; + left: 0; + bottom: 0; + width: 100%; + min-height: $footer-height; +} +.footer-inner { + box-sizing: border-box; + margin: 20px auto; + width: $content-desktop; + + +desktop-large() { + .container & { width: $content-desktop-large; } + } +} diff --git a/source/css/_common/scaffolding/base.styl b/source/css/_common/scaffolding/base.styl new file mode 100644 index 000000000..378182618 --- /dev/null +++ b/source/css/_common/scaffolding/base.styl @@ -0,0 +1,111 @@ + +::selection { + background: $selection-bg; + color: $selection-color; +} + +body { + position: relative; // Required by scrollspy + font-family: $font-family-base; + font-size: $font-size-base; + line-height: $line-height-base; + color: $text-color; + background: $body-bg-color; + + +mobile() { padding-right: 0 !important; } + +tablet() { padding-right: 0 !important; } + +desktop-large() { font-size: $font-size-large; } +} + +h1, h2, h3, h4, h5, h6 { + margin: 0; + padding: 0; + font-weight: bold; + line-height: 1.5; + font-family: $font-family-headings; +} + +h1, h2, h3, h4, h5, h6 { margin: 20px 0 15px; } + +for headline in (1..6) { + h{headline} { + font-size: $font-size-headings-base - $font-size-headings-step * headline; + } + + +mobile() { + h{headline} { + font-size: $font-size-headings-base - $font-size-headings-step * headline - 4px; + } + } +} + +p { margin: 0 0 20px 0; } + +a { + color: $link-color; + text-decoration: none; + outline: none; + border-bottom: 1px solid $grey-dark; + word-wrap: break-word; + + &:hover { + color: $link-hover-color; + border-bottom-color: $link-decoration-hover-color; + } +} + +blockquote { + margin: 0; + padding: 0; +} + +img { + display: block; + margin: auto; + max-width: 100%; + height: auto; +} + + +hr { + margin: 40px 0; + height: 3px; + border: none; + background-color: $gray-lighter; + background-image: repeating-linear-gradient( + -45deg, + white, + white 4px, + transparent 4px, + transparent 8px + ); +} + +blockquote { + padding: 0 15px; + color: $grey-dim; + border-left: 4px solid $gray-lighter; + + cite::before { + content: "-"; + padding: 0 5px; + } +} + +dt { font-weight: $font-weight-bolder; } + +dd { + margin: 0; + padding: 0; +} + +kbd { + border: 1px solid $grey-light; + border-radius: 0.2em; + box-shadow: 0.1em 0.1em 0.2em rgba(0,0,0,0.1); + background-color: #f9f9f9; + font-family: inherit; + background-image: -webkit-linear-gradient(top, #eee, white, #eee); + padding: 0.1em 0.3em; + white-space: nowrap; +} diff --git a/source/css/_common/scaffolding/helpers.styl b/source/css/_common/scaffolding/helpers.styl new file mode 100644 index 000000000..a00d0bb4f --- /dev/null +++ b/source/css/_common/scaffolding/helpers.styl @@ -0,0 +1,67 @@ +// +// Helpers +// ================================================= + + + +// Alignment +.text-left { text-align: left; } +.text-center { text-align: center; } +.text-right { text-align: right; } +.text-justify { text-align: justify; } +.text-nowrap { white-space: nowrap; } + + +// Transformation +.text-lowercase { text-transform: lowercase; } +.text-uppercase { text-transform: uppercase; } +.text-capitalize { text-transform: capitalize; } + + +// Center-align a block level element. +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} + + +// Clearfix. http://nicolasgallagher.com/micro-clearfix-hack/ +.clearfix { + clearfix(); +} + +.pullquote { + width: 45%; + + &.left { + float: left; + margin-left: 5px; + margin-right: 10px; + } + + &.right { + float: right; + margin-left: 10px; + margin-right: 5px; + } +} + +.affix.affix.affix { position: fixed; } + +.translation { + margin-top: -20px; + font-size: 14px; + color: $grey-dark; +} + +// https://davidwalsh.name/detect-scrollbar-width +.scrollbar-measure { + width: 100px; + height: 100px; + overflow: scroll; + position: absolute; + top: -9999px; +} + +.use-motion .motion-element { opacity: 0; } diff --git a/source/css/_common/scaffolding/mobile.styl b/source/css/_common/scaffolding/mobile.styl new file mode 100644 index 000000000..191fbfdaa --- /dev/null +++ b/source/css/_common/scaffolding/mobile.styl @@ -0,0 +1,121 @@ +/* +// > 1600px ++desktop-large() { + +} + +// > 992px ++desktop() { + +} + +// > 768px & < 991px ++tablet() { + +} + + +// < 767px ++mobile() { + +} +*/ + +// < 567px ++mobile-small() { + + // For Muse & Mist schemes only vertical economy. + .header-inner { + margin-bottom: initial !important; + } + .main-inner { + margin-top: initial !important; + } + + // For Pisces & Gemini schemes only wider width (remove main blocks in Gemini). + .content-wrap { + padding: initial !important; + } + + // For all schemes wider width. + .posts-expand { + padding-top: $content-mobile-padding !important; + // For Muse & Mist & Pisces schemes only wider width. + margin: initial !important; + + .post-header { + padding: 0 18px; + } + + .post-meta { + margin: 3px 0 10px 0 !important; + } + + } + + .post-block { + // Inside posts blocks content padding (default 40px). + padding: $content-mobile-padding 0 !important; + } + + .post-body { + // For headers narrow width. + h2, h3, h4, h5, h6 { + margin: 10px 18px 8px; + } + // Rewrite paddings & margins inside tags. + .note, .tabs .tab-content .tab-pane { + h2, h3, h4, h5, h6 { + margin: 0 5px; + } + } + + // For paragraphs narrow width. + p { + margin: 0 0 10px 0; + padding: 0 18px; + } + + // Rewrite paddings & margins inside tags. + .note > p, .tabs .tab-content .tab-pane > p { + padding: 0 5px; + } + + .video-container .fluid-vids { + margin-bottom: 10px !important; + } + + .note { + padding: 10px !important; + margin-bottom: 10px !important; + + if hexo-config('note.icons') { + &:not(.no-icon) { + padding-left: 35px !important; + &:before { + top: 8px !important; + left: 12px !important; + } + } + } + } + + .tabs .tab-content .tab-pane { + padding: 10px 10px 0 10px !important; + } + } + + // Need to refactor into flex. + .post-nav { + padding-bottom: 2px; + //padding: 2px 8px; + } + +} + +/* +// < 413px ++mobile-smallest() { + +} +*/ diff --git a/source/css/_common/scaffolding/normalize.styl b/source/css/_common/scaffolding/normalize.styl new file mode 100644 index 000000000..81c6f31ea --- /dev/null +++ b/source/css/_common/scaffolding/normalize.styl @@ -0,0 +1,427 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} \ No newline at end of file diff --git a/source/css/_common/scaffolding/scaffolding.styl b/source/css/_common/scaffolding/scaffolding.styl new file mode 100644 index 000000000..b5d350025 --- /dev/null +++ b/source/css/_common/scaffolding/scaffolding.styl @@ -0,0 +1,9 @@ +// +// Scaffolding +// ================================================= + +@import "normalize"; +@import "base"; +@import "helpers"; +@import "tables"; +@import "mobile" if hexo-config('mobile_layout_economy'); diff --git a/source/css/_common/scaffolding/tables.styl b/source/css/_common/scaffolding/tables.styl new file mode 100644 index 000000000..03fdd6ec2 --- /dev/null +++ b/source/css/_common/scaffolding/tables.styl @@ -0,0 +1,32 @@ +table { + margin: 20px 0; + width: $table-width; + border-collapse: collapse; + border-spacing: 0; + border: 1px solid $table-border-color; + font-size: $table-font-size; + word-wrap: break-all; +} +table>tbody>tr { + &:nth-of-type(odd) { background-color: $table-row-odd-bg-color; } + &:hover { background-color: $table-row-hover-bg-color; } +} + +caption, th, td { + padding: $table-cell-padding; + text-align: $table-content-alignment; + vertical-align: $table-content-vertical; + font-weight: normal; +} + +th, td { + border-bottom: 3px solid $table-cell-border-bottom-color; + border-right: 1px solid $table-cell-border-right-color; +} + +th { + padding-bottom: 10px; + font-weight: $table-th-font-weight; +} + +td { border-bottom-width: 1px; } diff --git a/source/css/_custom/custom.styl b/source/css/_custom/custom.styl new file mode 100644 index 000000000..63937f7cf --- /dev/null +++ b/source/css/_custom/custom.styl @@ -0,0 +1 @@ +// Custom styles. diff --git a/source/css/_mixins/Gemini.styl b/source/css/_mixins/Gemini.styl new file mode 100644 index 000000000..eb4102ee2 --- /dev/null +++ b/source/css/_mixins/Gemini.styl @@ -0,0 +1 @@ +@import "Pisces.styl"; diff --git a/source/css/_mixins/Mist.styl b/source/css/_mixins/Mist.styl new file mode 100644 index 000000000..e69de29bb diff --git a/source/css/_mixins/Muse.styl b/source/css/_mixins/Muse.styl new file mode 100644 index 000000000..e69de29bb diff --git a/source/css/_mixins/Pisces.styl b/source/css/_mixins/Pisces.styl new file mode 100644 index 000000000..f44810c2f --- /dev/null +++ b/source/css/_mixins/Pisces.styl @@ -0,0 +1,16 @@ +sidebar-inline-links-item() { + margin: 5px 0 0; + if !hexo-config('social_icons.icons_only') { width: 50%; } + + & a, .exturl { + max-width: 216px; + box-sizing: border-box; + display: inline-block; + margin-right: 0; + margin-bottom: 0; + padding: 0 5px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } +} diff --git a/source/css/_mixins/base.styl b/source/css/_mixins/base.styl new file mode 100644 index 000000000..bd5131956 --- /dev/null +++ b/source/css/_mixins/base.styl @@ -0,0 +1,98 @@ +the-transition() { + transition-duration: 0.2s; + transition-timing-function: ease-in-out; + transition-delay: 0s; +} + +the-transition-ease-in() { + transition-duration: 0.2s; + transition-timing-function: ease-in; + transition-delay: 0s; +} + +the-transition-ease-out() { + transition-duration: 0.2s; + transition-timing-function: ease-out; + transition-delay: 0s; +} + +mobile-smallest() { + @media (max-width: 413px) { + {block} + } +} + +mobile-small() { + @media (max-width: 567px) { + {block} + } +} + +mobile() { + @media (max-width: 767px) { + {block} + } +} + +tablet-mobile() { + @media (max-width: 991px) { + {block} + } +} + +tablet() { + @media (min-width: 768px) and (max-width: 991px) { + {block} + } +} + +desktop() { + @media (min-width: 992px) { + {block} + } +} + +desktop-large() { + @media (min-width: 1600px) { + {block} + } +} + +circle() { + border-radius: 50%; +} + +transform() { + -webkit-transform: arguments + -moz-transform: arguments + -ms-transform: arguments + -o-transform: arguments + transform: arguments +} + +hide() { + display: none !important; +} + +show() { + display: block !important; +} + +fixbutton() { + right: 20px; + opacity: 0.8; +} + +random-color($min, $max) { + return floor(math(0, 'random') * ($max - $min + 1) + $min); +} + +// Clearfix. http://nicolasgallagher.com/micro-clearfix-hack/ +clearfix() { + &:before, + &:after { + content: " "; + display: table; + } + &:after { clear: both; } +} diff --git a/source/css/_mixins/custom.styl b/source/css/_mixins/custom.styl new file mode 100644 index 000000000..e69de29bb diff --git a/source/css/_schemes/Gemini/index.styl b/source/css/_schemes/Gemini/index.styl new file mode 100644 index 000000000..68e08ace9 --- /dev/null +++ b/source/css/_schemes/Gemini/index.styl @@ -0,0 +1,274 @@ +@import "../Pisces/_layout"; +@import "../Pisces/_brand"; +@import "../Pisces/_menu"; +@import "../Pisces/_sub-menu"; +@import "../Pisces/_sidebar"; +// Import _posts if want to justify text-align on mobile. +//@import "../Pisces/_posts"; + +// ================================================= +// Rewrite _layout.styl +// ================================================= +// Sidebar padding used as main desktop content padding for sidebar padding and post blocks padding too. + +// In main NexT config set `sidebar: offset: 12` option as main padding. +// In `source/css/_variables/Gemini.styl` there are variables for other resolutions: +// $content-tablet-paddin = 10px; +// $content-mobile-padding = 8px; +// P.S. If u want to change this paddings u may set this variables into `source/css/_variables/custom.styl`. + +// So, it will 12px in Desktop, 10px in Tablets and 8px in Mobiles for all possible paddings. +// ================================================= +// Read values from NexT config and set they as local variables to use as string variables (in any CSS section). +hexo-config('sidebar.offset') is a 'unit' ? (sboffset = unit(hexo-config('sidebar.offset'), px)) : (sboffset = 0) +use_seo = hexo-config('seo'); + +// Maximum content width. +// ================================================= +$max-content-width = hexo-config('max_content_width') +if $max-content-width { + .header, + .container .main-inner, + .footer-inner { + max-width: unquote($max-content-width); + } +} + +// ================================================= +// Desktop layout styles. +// ================================================= +// Post blocks. +.content-wrap { + padding: initial; + background: initial; + box-shadow: initial; + border-radius: initial; +} + +// Post & Comments blocks. +.post-block { + padding: $content-desktop-padding; + background: white; + box-shadow: $box-shadow-inner; + border-radius: $border-radius-inner; +} + +// When blocks are siblings (homepage). +#posts > article + article { + .post-block { + margin-top: sboffset; + // Rewrite shadows & borders because all blocks have offsets. + box-shadow: $box-shadow; + border-radius: $border-radius; + } +} + +// Comments blocks. +.comments { + padding: $content-desktop-padding; + margin: initial; + margin-top: sboffset; + background: white; + box-shadow: $box-shadow; + border-radius: $border-radius; +} + +// Top main padding from header to posts (default 40px). +.posts-expand { + padding-top: initial; +} + +// Post navigation items. +.post-nav-divider { + width: 4%; +} +.post-nav-item { + width: 48%; +} + +// Post delimiters. +.post-eof, +.post-spread { + hide(); +} + +// Pagination. +.pagination { + .prev, .next, .page-number { + margin-bottom: initial; + top: initial; + } + margin: sboffset 0 0; + border-top: initial; + background: white; + box-shadow: $box-shadow; + border-radius: $border-radius; + padding: 10px 0 10px; +} + +// Footer alignment. +.main { + padding-bottom: initial; +} +.footer { + bottom: auto; +} + +// Sub-menu(s). +.sub-menu { + border-bottom: initial !important; + box-shadow: $box-shadow-inner; + // Adapt submenu(s) with post-blocks. + &+ #content > #posts { + .post-block { + box-shadow: $box-shadow; + margin-top: sboffset; + +tablet() { + margin-top: $content-tablet-padding; + } + +mobile() { + margin-top: $content-mobile-padding; + } + } + } +} + +// ================================================= +// Headers. +// ================================================= +// No need anymore? +.post-header { + h1, h2 { + margin: initial; + } +} +.posts-expand .post-title-link { + line-height: inherit; +} +.posts-expand .post-title { + font-size: 1.7em; +} +.post-body { + h1 { + font-size: 1.6em; + border-bottom: 1px solid $body-bg-color; + } + h2 { + font-size: 1.45em; + border-bottom: 1px solid $body-bg-color; + } + h3 { + font-size: 1.3em; + if use_seo { + border-bottom: 1px solid $body-bg-color; + } else { + border-bottom: 1px dotted $body-bg-color; + } + } + h4 { + font-size: 1.2em; + if use_seo { + border-bottom: 1px dotted $body-bg-color; + } + } + h5 { + font-size: 1.07em; + } + h6 { + font-size: 1.03em; + } +} + +// ================================================= +// > 768px & < 991px +// ================================================= ++tablet() { + + // Posts in blocks. + .content-wrap { + padding: $content-tablet-padding; + } + .posts-expand { + margin: initial; + + // Components inside Posts. + .post-button { + margin-top: ($content-tablet-padding * 2); + } + } + + .post-block { + // Inside posts blocks content padding (default 40px). + padding: ($content-tablet-padding * 2); + // Rewrite shadows & borders because all blocks have offsets. + box-shadow: $box-shadow; + border-radius: $border-radius; + } + + // Only if blocks are siblings need bottom margin (homepage). + #posts > article + article { + .post-block { + margin-top: $content-tablet-padding; + } + } + + .comments { + margin-top: $content-tablet-padding; + padding: $content-tablet-padding ($content-tablet-padding * 2); + //padding: initial; + //padding-top: $content-tablet-padding; + } + + .pagination { + margin: $content-tablet-padding 0 0; + } + +} +// ================================================= +// < 767px +// ================================================= ++mobile() { + + // Posts in blocks. + .content-wrap { + padding: $content-mobile-padding; + } + .posts-expand { + margin: initial; + + // Components inside Posts. + .post-button { + margin-top: sboffset; + //padding-bottom : 15px; + } + img { + padding: initial !important; + } + } + + .post-block { + // Inside posts blocks content padding (default 40px). + padding: sboffset; + min-height: auto; + // Rewrite shadows & borders because all blocks have offsets. + box-shadow: $box-shadow; + border-radius: $border-radius; + } + + // Only if blocks are siblings need bottom margin (homepage). + #posts > article + article { + .post-block { + margin-top: $content-mobile-padding; + } + } + + .comments { + margin-top: $content-mobile-padding; + padding: 0 sboffset; + } + + .pagination { + margin: $content-mobile-padding 0 0; + } + +} diff --git a/source/css/_schemes/Mist/_base.styl b/source/css/_schemes/Mist/_base.styl new file mode 100644 index 000000000..cf2f438fc --- /dev/null +++ b/source/css/_schemes/Mist/_base.styl @@ -0,0 +1,9 @@ +// Tags +// -------------------------------------------------- + +a { border-bottom-color: $grey-light; } + +hr { + margin: 20px 0; + height: 2px; +} diff --git a/source/css/_schemes/Mist/_header.styl b/source/css/_schemes/Mist/_header.styl new file mode 100644 index 000000000..a19164907 --- /dev/null +++ b/source/css/_schemes/Mist/_header.styl @@ -0,0 +1,63 @@ +// Header +// -------------------------------------------------- +.header { background: $whitesmoke; } +.header-inner { + padding: 25px 0 20px; + clearfix(); + + +mobile() { + width: auto; + margin-bottom: 50px; + padding: 10px; + } +} + +.site-meta { + float: left; + margin-left: -20px; + line-height: normal; + + +mobile() { + margin-left: 10px; + } + + .brand { + padding: 2px 1px; + background: none; + + +mobile() { display: block; } + } + + .logo { display: none; } + + .site-title { + font-size: 22px; + font-weight: bolder; + + +mobile() { line-height: 34px; } + } +} + + +.logo-line-before, +.logo-line-after { + display: block; + overflow: hidden; + margin: 0 auto; + width: 75%; + + +mobile() { display: none; } + + i { + position: relative; + display: block; + height: 2px; + background: $black-deep; + +mobile() { height: 3px; } + } +} + +.use-motion { + .logo-line-before i { left: -100%; } + .logo-line-after i { right: -100%; } +} diff --git a/source/css/_schemes/Mist/_logo.styl b/source/css/_schemes/Mist/_logo.styl new file mode 100644 index 000000000..571b40707 --- /dev/null +++ b/source/css/_schemes/Mist/_logo.styl @@ -0,0 +1 @@ +.site-subtitle { display: none; } diff --git a/source/css/_schemes/Mist/_menu.styl b/source/css/_schemes/Mist/_menu.styl new file mode 100644 index 000000000..bdf27a954 --- /dev/null +++ b/source/css/_schemes/Mist/_menu.styl @@ -0,0 +1,67 @@ +// Menu +// -------------------------------------------------- +.site-nav-toggle { + position: static; + float: right; +} + +.menu { + //float: right; + margin: 8px 0 0 0; + + +mobile() { + margin: 20px 0 0 0; + padding: 0; + } + + br { display: none; } + + .menu-item { + margin: 0; + +mobile() { display: block; } + + .badge { + display: inline-block; + padding: 1px 4px; + margin-left: 5px; + font-weight: 700; + line-height: 1; + color: $black-light; + text-align: center; + white-space: nowrap; + background-color: #fff; + border-radius: 10px; + text-shadow: 1px 1px 0px rgba(0,0,0,0.1); + +mobile() { + float: right; + margin: 0.35em 0 0 0; + } + } + + } + + .menu-item a { + padding: 0 10px; + border: none; + border-radius: 2px; + transition-property: background; + + +mobile() { + text-align: left; + } + + &:hover { background: #e1e1e1; } + } + + a::before { + display: none; + + +mobile() { display: block; } + } + + +mobile() { float: none; } +} + +.menu-item-active a { + @extend .menu .menu-item a:hover; +} diff --git a/source/css/_schemes/Mist/_posts-expanded.styl b/source/css/_schemes/Mist/_posts-expanded.styl new file mode 100644 index 000000000..af35e9631 --- /dev/null +++ b/source/css/_schemes/Mist/_posts-expanded.styl @@ -0,0 +1,67 @@ +// Post Expanded +// -------------------------------------------------- +.posts-expand { + padding-top: 0; + + .post-title, + .post-meta { + text-align: $site-meta-text-align; + +mobile() { text-align: center; } + } + .post-eof { display: none; } + + .post { margin-top: 120px; } + .post:first-child { margin-top: 0; } + + .post-meta { + margin-top: 5px; + margin-bottom: 20px; + } + + .post-title { + position: relative; + font-size: $font-size-headings-base; + font-weight: 400; + +mobile() { font-size: $font-size-headings-small; } + +desktop-large() { font-size: $font-size-headings-large; } + } + .post-title:hover:before { background: $black-deep; } + + .post-body { + +mobile() { font-size: $font-size-base; } + } + + .post-body img { margin: 0; } + + .post-tags { + text-align: left; + a { + padding: 1px 5px; + background: $whitesmoke; + border-bottom: none; + } + a:hover { background: $grey-light; } + } + .post-nav { margin-top: 40px; } +} + +.post-button { + margin-top: 20px; + text-align: left; + + a { + padding: 0; + font-size: $font-size-base; + //color: $grey-dim; + background: none; + border: none; + border-bottom: 2px solid $grey-dim; + transition-property: border; + + +mobile() { font-size: $font-size-small; } + +desktop-large() { font-size: $font-size-large; } + + + &:hover { border-bottom-color: $black-deep; } + } +} diff --git a/source/css/_schemes/Mist/_search.styl b/source/css/_schemes/Mist/_search.styl new file mode 100644 index 000000000..6cd7b2c96 --- /dev/null +++ b/source/css/_schemes/Mist/_search.styl @@ -0,0 +1,5 @@ +// Search +// -------------------------------------------------- +.site-search form { + display: none; +} \ No newline at end of file diff --git a/source/css/_schemes/Mist/index.styl b/source/css/_schemes/Mist/index.styl new file mode 100644 index 000000000..bb2f4c50a --- /dev/null +++ b/source/css/_schemes/Mist/index.styl @@ -0,0 +1,92 @@ +// +// Mist scheme +// ================================================= + +@import "_base"; +@import "outline/outline"; +@import "_header"; +@import "_logo"; +@import "_menu"; +@import "_search.styl"; +@import "_posts-expanded"; +@import "sidebar/sidebar-blogroll"; +// Import _posts if want to justify text-align on mobile. +// @import "../Pisces/_posts"; + +// Components +// -------------------------------------------------- +.btn { + padding: 0 10px; + border-width: 2px; + border-radius: 0; +} + +.headband { display: none; } + + +// Search +// -------------------------------------------------- +.site-search { + position: relative; + float: right; + margin-top: 5px; + padding-top: 3px; + + +mobile() { + float: none; + padding: 0 10px; + } +} + + +// Page - Container +// -------------------------------------------------- +.container .main-inner { + +mobile() { width: auto; } +} + + +// Page - Post details +// -------------------------------------------------- +.page-post-detail { + .post-title, + .post-meta { text-align: center; } + + .post-title:before { display: none; } + + .post-meta { margin-bottom: 60px; } +} + + +// Pagination +// -------------------------------------------------- +.pagination { + margin: 120px 0 0; + text-align: left; + + +mobile() { + margin: 80px 10px 0; + text-align: center; + } +} + +// Footer +// -------------------------------------------------- +.footer { + margin-top: 80px; + padding: 10px 0; + background: $whitesmoke; + color: $grey-dim; +} +.footer-inner { + margin: 0 auto; + text-align: left; + + +mobile() { + width: auto; + text-align: center; + } +} + +// Helpers +// -------------------------------------------------- diff --git a/source/css/_schemes/Mist/outline/outline.styl b/source/css/_schemes/Mist/outline/outline.styl new file mode 100644 index 000000000..12c0bae25 --- /dev/null +++ b/source/css/_schemes/Mist/outline/outline.styl @@ -0,0 +1 @@ +.main-inner { margin-top: 80px; } diff --git a/source/css/_schemes/Mist/sidebar/sidebar-blogroll.styl b/source/css/_schemes/Mist/sidebar/sidebar-blogroll.styl new file mode 100644 index 000000000..6db1ed79b --- /dev/null +++ b/source/css/_schemes/Mist/sidebar/sidebar-blogroll.styl @@ -0,0 +1 @@ +.links-of-blogroll-inline .links-of-blogroll-item { display: inline-block; } diff --git a/source/css/_schemes/Muse/_layout.styl b/source/css/_schemes/Muse/_layout.styl new file mode 100644 index 000000000..010747229 --- /dev/null +++ b/source/css/_schemes/Muse/_layout.styl @@ -0,0 +1,9 @@ +.header-inner, .container .main-inner, .footer-inner { + +mobile() { width: auto; } +} + +// embed tag +embed { + display: block; + margin: 0px auto 25px auto; +} diff --git a/source/css/_schemes/Muse/_logo.styl b/source/css/_schemes/Muse/_logo.styl new file mode 100644 index 000000000..1d0437aef --- /dev/null +++ b/source/css/_schemes/Muse/_logo.styl @@ -0,0 +1,21 @@ +.custom-logo { + .site-meta-headline { text-align: center; } + + .brand { background: none; } + + .site-title { + margin: 10px auto 0; + font-size: 24px; + color: $black-deep; + a { border: none; } + } + + +} + +.custom-logo-image { + margin: 0 auto; + padding: 5px; + max-width: 150px; + background: white; +} diff --git a/source/css/_schemes/Muse/_menu.styl b/source/css/_schemes/Muse/_menu.styl new file mode 100644 index 000000000..16dbee194 --- /dev/null +++ b/source/css/_schemes/Muse/_menu.styl @@ -0,0 +1,60 @@ +.site-nav { + +mobile() { + position: absolute; + left: 0; + top: 52px; + margin: 0; + width: 100%; + padding: 0; + background: white; + border-bottom: 1px solid $gray-lighter; + z-index: $zindex-3; + } +} + +.menu { + +mobile() { text-align: left; } +} +.menu .menu-item { + +mobile() { + display: block; + margin: 0 10px; + vertical-align: top; + } + + .badge { + display: inline-block; + padding: 1px 4px; + margin-left: 5px; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + background-color: $gainsboro; + +mobile() { + float: right; + margin: 0.35em 0 0 0; + } + } + + br { + +mobile() { display: none; } + } + + a { + +mobile() { + padding: 5px 10px; + border-bottom-color: white !important; + } + } + .fa { margin-right: 0; } +} + +.menu-item-active a { + border-bottom-color: $menu-link-hover-border !important; + color: $black-deep; + + +mobile() { + border-bottom-color: white !important; + } +} diff --git a/source/css/_schemes/Muse/_search.styl b/source/css/_schemes/Muse/_search.styl new file mode 100644 index 000000000..6cd7b2c96 --- /dev/null +++ b/source/css/_schemes/Muse/_search.styl @@ -0,0 +1,5 @@ +// Search +// -------------------------------------------------- +.site-search form { + display: none; +} \ No newline at end of file diff --git a/source/css/_schemes/Muse/index.styl b/source/css/_schemes/Muse/index.styl new file mode 100644 index 000000000..292106497 --- /dev/null +++ b/source/css/_schemes/Muse/index.styl @@ -0,0 +1,7 @@ +@import "_layout.styl"; +@import "_logo.styl"; +@import "_menu.styl"; +@import "_search.styl"; +@import "sidebar/sidebar-blogroll"; +// Import _posts if want to justify text-align on mobile. +// @import "../Pisces/_posts"; diff --git a/source/css/_schemes/Muse/sidebar/sidebar-blogroll.styl b/source/css/_schemes/Muse/sidebar/sidebar-blogroll.styl new file mode 100644 index 000000000..6db1ed79b --- /dev/null +++ b/source/css/_schemes/Muse/sidebar/sidebar-blogroll.styl @@ -0,0 +1 @@ +.links-of-blogroll-inline .links-of-blogroll-item { display: inline-block; } diff --git a/source/css/_schemes/Pisces/_brand.styl b/source/css/_schemes/Pisces/_brand.styl new file mode 100644 index 000000000..c85ee8f50 --- /dev/null +++ b/source/css/_schemes/Pisces/_brand.styl @@ -0,0 +1,30 @@ +.site-brand-wrapper { + position: relative; +} + +.site-meta { + padding: 20px 0; + color: white; + background: $black-deep; + + +tablet() { + box-shadow: 0 0 16px rgba(0,0,0,0.5); + } + +mobile() { + box-shadow: 0 0 16px rgba(0,0,0,0.5); + } +} + +.brand { + padding: 0; + background: none; + + &:hover { color: white; } +} + +.site-subtitle { + margin: 10px 10px 0; + font-weight: initial; +} + +.site-search form { display: none; } diff --git a/source/css/_schemes/Pisces/_layout.styl b/source/css/_schemes/Pisces/_layout.styl new file mode 100644 index 000000000..a3a2b5223 --- /dev/null +++ b/source/css/_schemes/Pisces/_layout.styl @@ -0,0 +1,130 @@ +.header { + position: relative; + margin: 0 auto; + width: $main-desktop; + + +tablet() { + width: auto; + } + +mobile() { + width: auto; + } +} + +.header-inner { + position: absolute; + top: 0; + overflow: hidden; + padding: 0; + width: $sidebar-desktop; + background: white; + box-shadow: $box-shadow-inner; + border-radius: $border-radius-inner; + + +desktop-large() { + .container & { width: $sidebar-desktop; } + } + +tablet() { + position: relative; + width: auto; + border-radius: initial; + } + +mobile() { + position: relative; + width: auto; + border-radius: initial; + } +} + +.main { + clearfix(); + +tablet() { + padding-bottom: 100px; + } + +mobile() { + padding-bottom: 100px; + } +} + +.container .main-inner { + width: $main-desktop; + + +tablet() { + width: auto; + } + +mobile() { + width: auto; + } +} + +.content-wrap { + float: right; + box-sizing: border-box; + padding: $content-desktop-padding; + width: $content-desktop; + background: white; + min-height: 700px; + box-shadow: $box-shadow-inner; + border-radius: $border-radius-inner; + + +tablet() { + width: 100%; + padding: 20px; + border-radius: initial; + } + +mobile() { + width: 100%; + padding: 20px; + min-height: auto; + border-radius: initial; + } +} + +.sidebar { + position: static; + float: left; + margin-top: 300px; + width: $sidebar-desktop; + background: $body-bg-color; + box-shadow: none; + + +tablet() { + display: none; + } + +mobile() { + display: none; + } +} + +.sidebar-toggle { display: none; } + + +.footer-inner { + width: $main-desktop; + padding-left: 260px; + + +tablet() { + width: auto; + padding-left: 0 !important; + padding-right: 0 !important; + } + +mobile() { + width: auto; + padding-left: 0 !important; + padding-right: 0 !important; + } +} + + + +.sidebar-position-right { + .header-inner { right: 0; } + .content-wrap { float: left; } + .sidebar { float: right; } + + .footer-inner { + padding-left: 0; + padding-right: 260px; + } +} + diff --git a/source/css/_schemes/Pisces/_menu.styl b/source/css/_schemes/Pisces/_menu.styl new file mode 100644 index 000000000..e740c1c3c --- /dev/null +++ b/source/css/_schemes/Pisces/_menu.styl @@ -0,0 +1,87 @@ +.site-nav { + border-top: none; + + +tablet() { + display: none !important; + } +} + +.site-nav-on { + +tablet() { + display: block !important; + } +} + +.menu .menu-item { + display: block; + margin: 0; + + a { + position: relative; + box-sizing: border-box; + padding: 5px 20px; + text-align: left; + line-height: inherit; + transition-property: background-color; + the-transition(); + + &:hover { + background: #f9f9f9; + border-bottom-color: white; + } + } + + .badge { + display: inline-block; + padding: 2px 5px; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: $grey-light; + border-radius: 10px; + float: right; + margin: 0.35em 0 0 0; + text-shadow: 1px 1px 0px rgba(0,0,0,0.1); + } + + br { display: none; } +} + +.menu-item-active a { + @extend .menu .menu-item a:hover; + + badges = hexo-config('menu_settings.badges'); + if not badges { + &:after { + content: " "; + position: absolute; + top: 50%; + margin-top: -3px; + right: 15px; + width: 6px; + height: 6px; + border-radius: 50%; + background-color: $grey; + } + } + +} + +.btn-bar { + background-color: white; +} + +.site-nav-toggle { + left: 20px; + top: 50%; + + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + + +tablet() { + display: block; + } +} diff --git a/source/css/_schemes/Pisces/_posts.styl b/source/css/_schemes/Pisces/_posts.styl new file mode 100644 index 000000000..498409d9c --- /dev/null +++ b/source/css/_schemes/Pisces/_posts.styl @@ -0,0 +1,5 @@ +.post-body { + +mobile() { + text-align: justify; + } +} diff --git a/source/css/_schemes/Pisces/_sidebar.styl b/source/css/_schemes/Pisces/_sidebar.styl new file mode 100644 index 000000000..9ced48649 --- /dev/null +++ b/source/css/_schemes/Pisces/_sidebar.styl @@ -0,0 +1,129 @@ +.use-motion .sidebar .motion-element { opacity: 1; } + +.sidebar { + margin-left: -100%; + right: auto; + bottom: auto; + + // Do NOT delete this line + // or Affix (position: fixed) will not work in Google Chrome. + -webkit-transform: none; +} + + +.sidebar-inner { +//padding: 20px 10px 0; + box-sizing: border-box; + width: $sidebar-desktop; + color: $text-color; + background: white; + box-shadow: $box-shadow; + border-radius: $border-radius; + if (hexo-config('motion.enable') and hexo-config('motion.transition.sidebar')) { opacity: 0; } + + &.affix { + position: fixed; + top: $sidebar-offset; + } + + &.affix-bottom { + position: absolute; + } + +} + +.site-overview { + //margin: 0 2px; + text-align: left; +} + +.site-author { + clearfix(); +} + +.sidebar a, +.sidebar .exturl { + color: $black-light; + + &:hover { color: $black-deep; } +} + +.site-state-item { + padding: 0 10px; +} + +.links-of-author-item { + a:before, .exturl:before { display: none; } + a, .exturl { + border-bottom: none; + text-decoration: underline; + } +} + +.feed-link { + border-top: 1px dotted $grey-light; + border-bottom: 1px dotted $grey-light; + text-align: center; +} + +.feed-link a { + display: block; + color: $orange; + border: none; + + &:hover { + background: none; + color: darken($orange, 20%); + + i { color: darken($orange, 20%); } + } +} + +.links-of-author { + //clearfix(); + display: flex; + flex-wrap: wrap; + justify-content: center; + + .exturl { + font-size: 13px; + } +} +.links-of-author-item { + sidebar-inline-links-item(); + + a, .exturl { + display: block; + text-decoration: none; + + &:hover { + border-radius: 4px; + background: $gainsboro; + } + } + + .fa { + margin-right: 2px; + font-size: 16px; + } + .fa-globe { font-size: 15px; } +} + + +.links-of-blogroll { + text-align: center; + margin-top: 20px; + padding: 3px 0 0; + border-top: 1px dotted $grey-light; +} +.links-of-blogroll-title { margin-top: 0; } +.links-of-blogroll-item { padding: 0; } +.links-of-blogroll-inline { + clearfix(); + + .links-of-blogroll-item { + sidebar-inline-links-item(); + display: inline-block; + if !hexo-config('social_icons.icons_only') { width: unset; } + } +} diff --git a/source/css/_schemes/Pisces/_sub-menu.styl b/source/css/_schemes/Pisces/_sub-menu.styl new file mode 100644 index 000000000..5d580f36a --- /dev/null +++ b/source/css/_schemes/Pisces/_sub-menu.styl @@ -0,0 +1,38 @@ +.sub-menu { + margin: 0; + padding: 6px 0; + background: #fff !important; + border-bottom: 1px solid $table-border-color; +} + +.sub-menu .menu-item { + display: inline-block !important; + + & a { + padding: initial !important; + margin: 5px 10px; + } + + & a:hover { + background: initial !important; + color: $sidebar-highlight; + } +} + +.sub-menu .menu-item-active a { + background: #fff !important; + color: $sidebar-highlight; + border-bottom-color: $sidebar-highlight; + + &:hover { + background: #fff !important; + border-bottom-color: $sidebar-highlight; + } + + badges = hexo-config('menu_settings.badges'); + if not badges { + &:after { + content: initial; + } + } +} diff --git a/source/css/_schemes/Pisces/index.styl b/source/css/_schemes/Pisces/index.styl new file mode 100644 index 000000000..0e3f37d84 --- /dev/null +++ b/source/css/_schemes/Pisces/index.styl @@ -0,0 +1,6 @@ +@import "_layout"; +@import "_brand"; +@import "_menu"; +@import "_sub-menu"; +@import "_sidebar"; +@import "_posts"; diff --git a/source/css/_variables/Gemini.styl b/source/css/_variables/Gemini.styl new file mode 100644 index 000000000..04e14ef75 --- /dev/null +++ b/source/css/_variables/Gemini.styl @@ -0,0 +1,22 @@ +// Variables of Gemini scheme +// ================================================= + +@import "Pisces.styl"; + +// Settings for some of the most global styles. +// -------------------------------------------------- +$body-bg-color = #eee +$main-desktop = 75% +$sidebar-width = hexo-config('sidebar_width') is a 'unit' ? hexo-config('sidebar_width') : 240 +$sidebar-desktop = unit($sidebar-width, 'px') +$content-desktop = 'calc(100% - %s)' % unit($sidebar-width + 12, 'px') + +// Borders. +// -------------------------------------------------- +$box-shadow-inner = 0 2px 2px 0 rgba(0,0,0,.12), 0 3px 1px -2px rgba(0,0,0,.06), 0 1px 5px 0 rgba(0,0,0,.12) +$box-shadow = 0 2px 2px 0 rgba(0,0,0,.12), 0 3px 1px -2px rgba(0,0,0,.06), 0 1px 5px 0 rgba(0,0,0,.12), 0 -1px .5px 0 rgba(0,0,0,.09) + +$border-radius-inner = initial +$border-radius = initial +//$border-radius-inner = 0 0 3px 3px; +//$border-radius = 3px; diff --git a/source/css/_variables/Mist.styl b/source/css/_variables/Mist.styl new file mode 100644 index 000000000..8ead36ee0 --- /dev/null +++ b/source/css/_variables/Mist.styl @@ -0,0 +1,13 @@ +// Variables of Mist scheme +// ================================================= + +$font-size-headings-base = 26px + +$brand-color = $black-deep +$brand-hover-color = $brand-color + +$site-meta-text-align = left +$posts-collapse-left = 0 + +$btn-default-color = $link-color +$btn-default-bg = transparent diff --git a/source/css/_variables/Muse.styl b/source/css/_variables/Muse.styl new file mode 100644 index 000000000..e69de29bb diff --git a/source/css/_variables/Pisces.styl b/source/css/_variables/Pisces.styl new file mode 100644 index 000000000..3abb40938 --- /dev/null +++ b/source/css/_variables/Pisces.styl @@ -0,0 +1,77 @@ +// Variables of Pisces scheme +// ================================================= + +// Settings for some of the most global styles. +// -------------------------------------------------- +$body-bg-color = #f5f7f9 + + +// Borders +// -------------------------------------------------- +$box-shadow-inner = initial; +$box-shadow = initial; + +$border-radius-inner = initial; +$border-radius = initial; + + +// Header +// -------------------------------------------------- +$subtitle-color = $gray-lighter + +// Sidebar +// -------------------------------------------------- +$sidebar-offset = unit(hexo-config('sidebar.offset'), px) if hexo-config('sidebar.offset') is a 'unit' + +$sidebar-nav-hover-color = $orange +$sidebar-highlight = $orange + +$site-author-image-width = 120px +$site-author-image-border-width = 1px +$site-author-image-border-color = $gainsboro + +$site-author-name-margin = 0 +$site-author-name-color = $black-deep +$site-author-name-align = center +$site-author-name-weight = $font-weight-bold + +$site-description-font-size = 13px +$site-description-color = $grey-dark +$site-description-margin-top = 0 +$site-description-align = center + +$site-state-item-count-font-size = 16px +$site-state-item-name-font-size = 13px +$site-state-item-name-color = $grey-dark +$site-state-item-border-color = $gainsboro + +$toc-link-color = $grey-dim +$toc-link-border-color = $grey-light +$toc-link-hover-color = black +$toc-link-hover-border-color = black +$toc-link-active-color = $sidebar-highlight +$toc-link-active-border-color = $sidebar-highlight +$toc-link-active-current-color = $sidebar-highlight +$toc-link-active-current-border-color = $sidebar-highlight + + +// Components +// -------------------------------------------------- + +// Button +$btn-default-radius = 2px +$btn-default-bg = white +$btn-default-color = $text-color +$btn-default-border-color = $text-color +$btn-default-hover-color = white +$btn-default-hover-bg = $black-deep + +// Full Image Tag +//$full-image-width = 118% +//$full-image-margin-horizontal = -9% +//$full-image-margin-vertical = 0 + +// Back to top +$b2t-opacity = .6 +$b2t-position-bottom = -100px +$b2t-position-bottom-on = 30px diff --git a/source/css/_variables/base.styl b/source/css/_variables/base.styl new file mode 100644 index 000000000..0deda9c28 --- /dev/null +++ b/source/css/_variables/base.styl @@ -0,0 +1,416 @@ +// +// Variables +// ================================================= + + + +// Colors +// colors for use across theme. +// -------------------------------------------------- + +$whitesmoke = #f5f5f5 +$gainsboro = #eee +$gray-lighter = #ddd +$grey-light = #ccc +$grey = #bbb +$grey-dark = #999 +$grey-dim = #666 +$black-light = #555 +$black-dim = #333 +$black-deep = #222 +$red = #ff2a2a +$blue-bright = #87daff +$blue = #0684bd +$blue-deep = #262a30 +$orange = #fc6423 + + + +// Scaffolding +// Settings for some of the most global styles. +// -------------------------------------------------- + +// Global text color on +$text-color = $black-light + +// Global link color. +$link-color = $black-light +$link-hover-color = $black-deep +$link-decoration-color = $grey-light +$link-decoration-hover-color = $black-deep + +// Global border color. +$border-color = $grey-light + +// Background color for +$body-bg-color = white + +// Selection +$selection-bg = $blue-deep +$selection-color = white + + + +// Typography +// Font, line-height, and elements colors. +// -------------------------------------------------- + + +get_font_family(config) { + custom_family = hexo-config('font.' + config + '.family') + return custom_family is a 'string' ? custom_family : null +} + +// Font families. +$font-family-chinese = "PingFang SC", "Microsoft YaHei" + +$font-family-base = $font-family-chinese, sans-serif +$font-family-base = get_font_family('global'), $font-family-chinese, sans-serif if get_font_family('global') + +$font-family-logo = $font-family-base +$font-family-logo = get_font_family('logo'), $font-family-base if get_font_family('logo') + +$font-family-headings = $font-family-base +$font-family-headings = get_font_family('headings'), $font-family-base if get_font_family('headings') + +$font-family-posts = $font-family-base +$font-family-posts = get_font_family('posts'), $font-family-base if get_font_family('posts') + +$font-family-monospace = consolas, Menlo, $font-family-chinese, monospace +$font-family-monospace = get_font_family('codes'), consolas, Menlo, $font-family-chinese, monospace if get_font_family('codes') + +$font-family-icons = 'FontAwesome' + + +// Font Weight +$font-weight-lighter = 200 +$font-weight-light = 300 +$font-weight-normal = 400 +$font-weight-bold = 600 +$font-weight-bolder = 700 + + +// Font size +$font-size-base = 14px +$font-size-base = unit(hexo-config('font.global.size'), px) if hexo-config('font.global.size') is a 'unit' +$font-size-small = $font-size-base - 2px +$font-size-smaller = $font-size-base - 4px +$font-size-large = $font-size-base + 2px +$font-size-larger = $font-size-base + 4px + + +// Headings font size +$font-size-headings-step = 2px +$font-size-headings-base = 24px +$font-size-headings-base = unit(hexo-config('font.headings.size'), px) if hexo-config('font.headings.size') is a 'unit' +$font-size-headings-small = $font-size-headings-base - $font-size-headings-step +$font-size-headings-smaller = $font-size-headings-small - $font-size-headings-step +$font-size-headings-large = $font-size-headings-base + $font-size-headings-step +$font-size-headings-larger = $font-size-headings-large + $font-size-headings-step + +// Global line height +$line-height-base = 2 +$line-height-code-block = 1.6 // Can't be less than 1.3 + + + +// Z-index master list +// -------------------------------------------------- +$zindex-bottom = -1 +$zindex-1 = 1010 +$zindex-2 = 1020 +$zindex-3 = 1030 +$zindex-4 = 1040 +$zindex-5 = 1050 + + + +// Table +// -------------------------------------------------- +$table-width = 100% +$table-border-color = $gray-lighter +$table-font-size = 14px +$table-content-alignment = left +$table-content-vertical = middle +$table-th-font-weight = 700 +$table-cell-padding = 8px +$table-cell-border-right-color = $gainsboro +$table-cell-border-bottom-color = $gray-lighter +$table-row-odd-bg-color = #f9f9f9 +$table-row-hover-bg-color = $whitesmoke + + + +// Code & Code Blocks +// -------------------------------------------------- +$code-font-family = $font-family-monospace +$code-font-size = 14px +$code-font-size = unit(hexo-config('font.codes.size'), px) if hexo-config('font.codes.size') is a 'unit' +$code-border-radius = 3px +$code-foreground = $black-light +$code-background = $gainsboro + + + +// Buttons +// -------------------------------------------------- + +$btn-font-weight = normal + +$btn-default-radius = 0 +$btn-default-bg = $black-deep +$btn-default-color = white +$btn-default-font-size = 14px +$btn-default-border-width = 2px +$btn-default-border-color = $black-deep +$btn-default-hover-bg = white +$btn-default-hover-color = $black-deep +$btn-default-hover-border-color = $black-deep + + + +// Pagination +// -------------------------------------------------- + +$pagination-border = $gainsboro + +$pagination-link-bg = transparent +$pagination-link-color = $link-color +$pagination-link-border = $gainsboro + +$pagination-link-hover-bg = transparent +$pagination-link-hover-color = $link-color +$pagination-link-hover-border = $black-deep + +$pagination-active-bg = $grey-light +$pagination-active-color = white +$pagination-active-border = $grey-light + + + +// Layout sizes +// -------------------------------------------------- + +$main-desktop = 960px +$main-desktop-large = 1200px + +$content-desktop = 700px +$content-desktop-large = 900px + +$content-desktop-padding = 40px +$content-tablet-padding = 10px +$content-mobile-padding = 8px + +$sidebar-desktop = 240px + +$footer-height = 50px + +$gap-between-main-and-footer = 100px + + + +// Headband +// -------------------------------------------------- +$headband-height = 3px +$headband-bg = $black-deep + + + +// Section Header +// Variables for header section elements. +// -------------------------------------------------- + +$head-bg = transparent + +// Site Meta +$site-meta-text-align = center +$brand-color = white +$brand-hover-color = white +$brand-bg = $black-deep + +$logo-font-size = 20px +$logo-font-size = unit(hexo-config('font.logo.size'), px) if hexo-config('font.logo.size') is a 'unit' + +$site-subtitle-color = $grey-dark +$subtitle-font-size = 13px +$subtitle-color = $grey-dark + +// Menu +$menu-link-border = transparent +$menu-link-hover-border = $black-deep + + + +// Posts Expand +// -------------------------------------------------- +$posts-expand-title-font-weight = $font-weight-normal +$post-copyright = { + margin: 2em 0 0, + padding: .5em 1em, + bg: #f9f9f9, + border: { + width: 3px, + style: solid, + color: #ff1700 + } +} + + +// Posts Collpase +// -------------------------------------------------- +$posts-collapse-left = 55px +$posts-collapse-left-mobile = 5px + + +// Sidebar +// Variables for sidebar section elements. +// -------------------------------------------------- +$sidebar-nav-color = $black-light +$sidebar-nav-hover-color = $whitesmoke +$sidebar-highlight = $blue-bright + +$site-author-image-padding = 2px +$site-author-image-width = 96px +$site-author-image-height = auto +$site-author-image-border-width = 2px +$site-author-image-border-color = $black-dim + +$site-author-name-margin = 5px 0 0 +$site-author-name-color = $whitesmoke +$site-author-name-align = center +$site-author-name-weight = normal + +$site-description-font-size = 14px +$site-description-color = $grey-dark +$site-description-margin-top = 5px +$site-description-align = center + +$site-state-align = center +$site-state-item-count-font-size = 18px +$site-state-item-count-color = inherit +$site-state-item-name-font-size = 13px +$site-state-item-name-color = inherit +$site-state-item-border-color = $black-dim + +$toc-link-color = $grey-dark +$toc-link-border-color = $black-light +$toc-link-hover-color = $grey-light +$toc-link-hover-border-color = $grey-light +$toc-link-active-color = $sidebar-highlight +$toc-link-active-border-color = $sidebar-highlight +$toc-link-active-current-color = $sidebar-highlight +$toc-link-active-current-border-color = $sidebar-highlight + + +// Components +// -------------------------------------------------- + +// Back to top +$b2t-opacity = 1 +$b2t-position-bottom = -100px +$b2t-position-bottom-on = 19px +$b2t-position-right = 30px +$b2t-font-size = 12px +$b2t-color = white +$b2t-bg-color = $black-deep + +// full-image +//$full-image-width = 110% +//$full-image-margin-horizontal = -5% +//$full-image-margin-vertical = 25px + +// .post-expand .post-eof +// In Muse scheme, margin above and below the post separator +$post-eof-margin-top = 80px // or 160px for more white space +$post-eof-margin-bottom = 60px // or 120px for less white space + + +// Iconography +// Icons SVG Base64 +// -------------------------------------------------- + +// blockquote-center icon +$center-quote-left = '../images/quote-l.svg' +$center-quote-right = '../images/quote-r.svg' + + +// Note colors +// -------------------------------------------------- +// Read note light_bg_offset from NexT config and set in "lbg%" to use it as string variable. +hexo-config('note.light_bg_offset') is a 'unit' ? (lbg = unit(hexo-config('note.light_bg_offset'),"%")) : (lbg = 0) + +// Default +$note-default-border = #777 +$note-default-bg = lighten(spin($note-default-border, 0), 94% + lbg) +$note-default-text = $note-default-border +$note-default-icon = "\f0a9" + +$note-modern-default-border = #e1e1e1 +$note-modern-default-bg = lighten(spin($note-modern-default-border, 10), 60% + (lbg * 4)) +$note-modern-default-text = $grey-dim +$note-modern-default-hover = darken(spin($note-modern-default-text, -10), 32%) + +// Primary +$note-primary-border = #6f42c1 +$note-primary-bg = lighten(spin($note-primary-border, 10), 92% + lbg) +$note-primary-text = $note-primary-border +$note-primary-icon = "\f055" + +$note-modern-primary-border = #e1c2ff +$note-modern-primary-bg = lighten(spin($note-modern-primary-border, 10), 40% + (lbg * 4)) +$note-modern-primary-text = #6f42c1 +$note-modern-primary-hover = darken(spin($note-modern-primary-text, -10), 22%) + +// Info +$note-info-border = #428bca +$note-info-bg = lighten(spin($note-info-border, -10), 91% + lbg) +$note-info-text = $note-info-border +$note-info-icon = "\f05a" + +$note-modern-info-border = #b3e5ef +$note-modern-info-bg = lighten(spin($note-modern-info-border, 10), 50% + (lbg * 4)) +$note-modern-info-text = #31708f +$note-modern-info-hover = darken(spin($note-modern-info-text, -10), 32%) + +// Success +$note-success-border = #5cb85c +$note-success-bg = lighten(spin($note-success-border, 10), 90% + lbg) +$note-success-text = $note-success-border +$note-success-icon = "\f058" + +$note-modern-success-border = #d0e6be +$note-modern-success-bg = lighten(spin($note-modern-success-border, 10), 40% + (lbg * 4)) +$note-modern-success-text = #3c763d +$note-modern-success-hover = darken(spin($note-modern-success-text, -10), 27%) + +// Warning +$note-warning-border = #f0ad4e +$note-warning-bg = lighten(spin($note-warning-border, 10), 88% + lbg) +$note-warning-text = $note-warning-border +$note-warning-icon = "\f06a" + +$note-modern-warning-border = #fae4cd +$note-modern-warning-bg = lighten(spin($note-modern-warning-border, 10), 43% + (lbg * 4)) +$note-modern-warning-text = #8a6d3b +$note-modern-warning-hover = darken(spin($note-modern-warning-text, -10), 18%) + +// Danger +$note-danger-border = #d9534f +$note-danger-bg = lighten(spin($note-danger-border, -10), 92% + lbg) +$note-danger-text = $note-danger-border +$note-danger-icon = "\f056" + +$note-modern-danger-border = #ebcdd2 +$note-modern-danger-bg = lighten(spin($note-modern-danger-border, 10), 35% + (lbg * 4)) +$note-modern-danger-text = #a94442 +$note-modern-danger-hover = darken(spin($note-modern-danger-text, -10), 22%) + + +// Label colors +// -------------------------------------------------- +$label-default = lighten(spin($note-default-border, 0), 89% + lbg) +$label-primary = lighten(spin($note-primary-border, 10), 87% + lbg) +$label-info = lighten(spin($note-info-border, -10), 86% + lbg) +$label-success = lighten(spin($note-success-border, 10), 85% + lbg) +$label-warning = lighten(spin($note-warning-border, 10), 83% + lbg) +$label-danger = lighten(spin($note-danger-border, -10), 87% + lbg) diff --git a/source/css/_variables/custom.styl b/source/css/_variables/custom.styl new file mode 100644 index 000000000..e69de29bb diff --git a/source/css/main.styl b/source/css/main.styl new file mode 100644 index 000000000..fdb13608d --- /dev/null +++ b/source/css/main.styl @@ -0,0 +1,50 @@ +// CSS Style Guide: http://codeguide.co/#css + + + +$scheme = hexo-config('scheme') ? hexo-config('scheme') : 'Muse'; + +$custom_styles = hexo-config('custom_file_path.styles') ? "../../../../../" + hexo-config('custom_file_path.styles') : custom; +$custom_mixins = hexo-config('custom_file_path.mixins') ? "../../../../../" + hexo-config('custom_file_path.mixins') : custom; +$custom_variables = hexo-config('custom_file_path.variables') ? "../../../../../" + hexo-config('custom_file_path.variables') : custom; + +$variables = base $scheme $custom_variables; +$mixins = base $scheme $custom_mixins; + + + +// Variables Layer +// -------------------------------------------------- +for $variable in $variables + @import "_variables/" + $variable; + + +// Mixins Layer +// -------------------------------------------------- +for $mixin in $mixins + @import "_mixins/" + $mixin; + + + +// Common Layer +// -------------------------------------------------- + +// Scaffolding +@import "_common/scaffolding"; + +// Layout +@import "_common/outline"; + +// Components +@import "_common/components"; + + +// Schemes Layer +// -------------------------------------------------- +@import "_schemes/" + $scheme; + + + +// Custom Layer +// -------------------------------------------------- +@import "_custom/" + $custom_styles; diff --git a/source/fonts/.gitkeep b/source/fonts/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/source/images/algolia_logo.svg b/source/images/algolia_logo.svg new file mode 100644 index 000000000..470242341 --- /dev/null +++ b/source/images/algolia_logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/source/images/apple-touch-icon-next.png b/source/images/apple-touch-icon-next.png new file mode 100644 index 0000000000000000000000000000000000000000..86a0d1d33bc2ae8a0416ebba67d1bbb60aa29c38 GIT binary patch literal 1544 zcmV+j2KV`iP)Px#OHfQyMIs_1FE20E)zv2_C(h2!$jHdT!ovUm|GT@p zWo2de_xJq#{8d#|IyyQ>M@Qx533`J9dBE>4W{r{KFjMLpp4N$2iMRJCGfPM7@le{)BPzVgz zp?ByVdWYVj|4-=tUS5SkR}Te{-Fr#UrxsqJ9+ed6YY9KmoXq6n^B9DRMwF@T2u)qH z!=wh-sAdPH_8fFy0-I1d68Zp);!FTtdweUZc2nr)?5^hh99w*FOU z@NYFT^!v%iPrGly0Q*+sLVtesYh+the|AET4WK8lR^dv1IZ-3FhAuiK5V|-?gf2#j z&_yW`x^K3G&OKl4kP$$ih@p!?B6M+)2(4Rz(6$=G6WT(;6uP)cgkEi(xI(Yi7`D(w zo(Y6r>FyarFV`4e&^@lk@PfWf|DSeM5}?agV`>aDXt-c%3^!*Ij0g0Q8X5*mjbRC$9oB0MOK51O_53LU8p`RzcozW; zx3wC>721@58xhdzx?E$}LW9xpjUu4UhOZO>Z8Us+D+1bR_}&sQXJ}B}yadb|8fraT zV|YUw4WF(>KpPF;mjp}*eTo5XG<+u!&}PFoihwq!uhI`XPYZ1{e1FDs0nqR?Ym5YF zqv0DwK${KUMFjNpqb>9(0vg8Y^d$otmiJc}L#s|8wD~Z~fHtQu8PG6DgwAq-&}PFY z1KMo(WI!7YpAcwxN`zJiV(2pgG_<|npE+y^Z8UsBppAx42(;Po$$&N*J{izP!?y+W zi2YsL=fkK`KXsymhWcmL#_y-S*Y&V_u#us^S9pDvbMSkxv7uidoc36Qa`CQ+5AC^d z=CTJ%0ZkrQ=v?t(E_)>OCL8YaU+nX$$--iAUNb;m^jBG2!5*5enU|exmY3aQcv=O- znjO}ft-yw2|VZs2g-W`Epf@n*5gsJ2LLtC^nFlq8+?%Xc!{Z3_|hFI~!oeU$ep z%4jE9Y9n1{ah68@W{++)8|fc~HIM4)QycHpg}3P<_K$M$L~}7jBXs?6bDwjvo+I;D zsoi}398La6+~*osM@45l#ptQ6MrZFz597*no3v)ffsUEletxWeW~`A+ntYvaeQj?e z*kSqGXZsrrhZ>IsxH$({IR{z11zkG`GR^j$#{%z41lp5(Ne#glJc5nj-BUaKR!X?# zzN6F-<0?&z;|30?9q0Z}oHG*G)Q)s%Db~RbjMU)mp-u&Dmm0zkF~o9eRh}p?ByVnjn4wmEZ*c=^{+H00012dQ@0+Qek%>aB^>E zX>4U6ba`-PAZc)PV*mhnoa6Eg2ys>@D9TUE%t_@^00ScnE@KN5BNI!L6ay0=M1VBI uWCJ6!R3OXP)X2ol#2my2%YaCrN-hBE7ZG&wLN%2D0000`v literal 0 HcmV?d00001 diff --git a/source/images/avatar.gif b/source/images/avatar.gif new file mode 100644 index 0000000000000000000000000000000000000000..989902574302a6378709709f7baab789b242ebbb GIT binary patch literal 2926 zcmc&#X;@R|5pPyvCW zxS$0@5JiQmxK`QsB_M$WA_QcYeMe9lZ0Wr}dhc_e`{&M&bH4e$cjld$Z|0nR&W@IN zN;}XF3;@8#j~_pL_)uG2-B4FoUt8ND7O$+V)Ya51EiH|{d$+i_*!T9Wq_eYKC>-eT zf8E^N+S1b0(C|hg>F(-k5eSx-mn9t?vokYub8~{m#<9`S@v*Uy;o+uG*m=Ns$m7Z(<0XJ@CTrt0hJW~Qen#>Z!7W?r|nh()5ofq~kZ znzy~Z9U{@v;$mk<$K=Gs^wd;;U*G)PobdJQcQP3nnVX#*8XTOMm=L$OkBp3rkB_%B zH+PD~0|Nu1wzg)0U~FuxOCnjApC29`Zfa~4wzdur4YjqlO1rx!CnrZoM^{%@YpSY% z|F^(bRSvkhgZ30YMfTof9m1thkJ0&{AKjnHCL$)Dze0da8WG`zb3?gtNpuF&=>(7N zdEzTF^~5nMo`$gA3+@Rags`|QI-dfDumaeDgb*TvLgV<+39|LtHWC4Tg7A+K5w>dw z;2I~1!=r;ZQ=ADEg~oywcvCbEjkQD@gBTRr42d#BqRmXu7y=4UK;yta1tDYO(T)&2 z>>dB)l4(Q)gU{y@kjUf5kDDGhGv)C7k!U;~k3?aR7>tPwVG5=Noacq2M2p|lsV3J-PV~M$fvNW^mT5gj2mZ$B01vGSPUM6`?t0P z5|2*db9iJ9Ct$q`+!-7`Cy>G6f+Q07r5lCHWUuKv*Y4<#l7TmvgH~-G|iV84!C`1kb;7jtK zzIVoJ&$S-_ptu@Fj);tkj){#sbM{<(LgM+PhjYk1v zGsMZRtu^i;cU2>iVRh6_@?3F;0OlZnzx#y!d~gIf&5;0V^2ZPv#gm6&+cXcmNJU&o z&BY_+;62cpY-oao^{Jt)Es*9!?bK7*rNGfL1#&){|Naq0_&{^RkZ&h9_SVx)!lAJz z{*xs0xX%-L5<%F5+6jn`AU!E+D8`7aA0@wh*sv2eHJ|vHv}n+`x?OyVNc0&Ko_kVt zkhXk&>G)8j%QiP`=w!J)_glm>SEtThN0zaF*D4Pg^?7*PB)nY?^vGNu{$w4ZH-D ztNExN)lDUZkh$*uL_Mk4=h`GIt>n5VBYFoU2oaVGrsnOe$ReZMcR-WWCkK)N`yvL< zw*$xngTwRMbDLQBH@Wfb(5<)0)eL$G(;d>Pik=vp2Sc;vxl3v$^urL zrr_`-?b6CPr2W2TWs;t=}soo-~^9Wg^} zJ!E_>lVqSC#jrKJTODx~KZHeWk87K5jg^ABst5E-f1y4KCRS_QC&K5!{V$5j#bmXl ze1<}~RZvyYPZFHm%a`AVOGs83>CgkueIHVRg3DMrBVR8_H>d*2huTS93jv!S)57|o zSKa$hT3iA!(9k9?xtmJbg2-rMu?|ZfZu4E15?t-+9Yuq9<344BLka#id+U`4HteuG2dWbiJ_6`m&dZYZv5zzh=hj8fOeP5?QRGqH102<_*#8ppi*Wv)eW-fPS zkpL?WuN!dFwzyzJ$vI($eCE1*Y@HZ;>(i4;d!0;k**l5mF z_+wi&oPy|Etioim$}WHC;K54h$wAxxbl_AiQ1ag82}aF0QZAC3$pCDgQJq|3#`EB4 zpD@zOiwvEp;hvLfX7O?Yo4CbHTcsaMAcpg?u#)PF8p}6Id@dD7c)FgK+taQ>q!(KM z)C+5UDbkf-&-H?4>%*BRqn@25L+soFIMlU7rIgfMei h5TAq1b#6H7J#$4=pJV>Grh$E8=BiZB9s~fZ-vK!n_o@H@ literal 0 HcmV?d00001 diff --git a/source/images/cc-by-nc-nd.svg b/source/images/cc-by-nc-nd.svg new file mode 100644 index 000000000..79a4f2e0d --- /dev/null +++ b/source/images/cc-by-nc-nd.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/source/images/cc-by-nc-sa.svg b/source/images/cc-by-nc-sa.svg new file mode 100644 index 000000000..bf6bc26f5 --- /dev/null +++ b/source/images/cc-by-nc-sa.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/source/images/cc-by-nc.svg b/source/images/cc-by-nc.svg new file mode 100644 index 000000000..36973490a --- /dev/null +++ b/source/images/cc-by-nc.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/source/images/cc-by-nd.svg b/source/images/cc-by-nd.svg new file mode 100644 index 000000000..934c61e15 --- /dev/null +++ b/source/images/cc-by-nd.svg @@ -0,0 +1,117 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/source/images/cc-by-sa.svg b/source/images/cc-by-sa.svg new file mode 100644 index 000000000..463276a8c --- /dev/null +++ b/source/images/cc-by-sa.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/source/images/cc-by.svg b/source/images/cc-by.svg new file mode 100644 index 000000000..4bccd14f6 --- /dev/null +++ b/source/images/cc-by.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/source/images/cc-zero.svg b/source/images/cc-zero.svg new file mode 100644 index 000000000..0f866392f --- /dev/null +++ b/source/images/cc-zero.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/images/favicon-16x16-next.png b/source/images/favicon-16x16-next.png new file mode 100644 index 0000000000000000000000000000000000000000..de8c5d3a5f8215c3f7b095c9e284e061bda65f86 GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%A+0*}aIAe|4wj2{=>aRxHH1AIbUeKHFb!9Yn#DLy_vBO^maMdk0`zd#Zw z0tY~@yu3V6p{Ay$mX_Az$B+O0`?r4m`qisfPnj~MwY3$f@^9nqaG!lvI6;x#X;^) z4C~IxyaaMM3p^r=f%IJvW-JI^#13S11^9%x`eYU=fq|TyoQjGHgbgIWfB*jF%NI8{ zx2;>Zu3x`iO-&6bs0aoM3JPUqWq0n}*}Qo(P|Le_@AmKC57(%ytPE5IHwwrGiqzKD z{{8#c)YSCg!Gk}3{P_R>|Gj(no6k4eJyZq^Jd4Jw%*zpM57yY9pK zMcQgs21j>QigM54W!RCVazM0UCtHDVhG46xh5pA!(TqDDnlwLEm~eRS(JM@6p3293 zNMwDW(!P~x!s$%jghh-wOB)P19fJ88oOHECttPa5*~LF^Vp#0%pwrbyN~~|szWB|o z_J4%n&U>rEu5s2%I6jof{A;(j!|>g|;yo?%ZfFGheBJp^9_Zijs*s41pu}>8f};Gi z%$!t(lFEWqh0KDIWCn(cIgdZ_a1@4VXq@stea7=?5CgL^w_Y;0u(GiCWD#az1(ybs x!zs+ln?n>%-?(z($eANDN7zp{cr5VJV|XPlSn|oqbSlsa22WQ%mvv4FO#p=N1nU3* literal 0 HcmV?d00001 diff --git a/source/images/loading.gif b/source/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..efb6768db9d768e6c7322905ed131b4f184c23f8 GIT binary patch literal 35 ncmZ?wbhEHbWMp7uXkcLY|NlP&1A`6_1Nn>$3`|Tej11NQg@y&% literal 0 HcmV?d00001 diff --git a/source/images/logo.svg b/source/images/logo.svg new file mode 100644 index 000000000..cbb3937ec --- /dev/null +++ b/source/images/logo.svg @@ -0,0 +1,23 @@ + +image/svg+xml diff --git a/source/images/placeholder.gif b/source/images/placeholder.gif new file mode 100644 index 0000000000000000000000000000000000000000..efb6768db9d768e6c7322905ed131b4f184c23f8 GIT binary patch literal 35 ncmZ?wbhEHbWMp7uXkcLY|NlP&1A`6_1Nn>$3`|Tej11NQg@y&% literal 0 HcmV?d00001 diff --git a/source/images/quote-l.svg b/source/images/quote-l.svg new file mode 100644 index 000000000..6dd94a4a0 --- /dev/null +++ b/source/images/quote-l.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/source/images/quote-r.svg b/source/images/quote-r.svg new file mode 100644 index 000000000..312b64d71 --- /dev/null +++ b/source/images/quote-r.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/source/images/searchicon.png b/source/images/searchicon.png new file mode 100644 index 0000000000000000000000000000000000000000..14a16cad3e0722952bae78768f4ef457dbfb4c0d GIT binary patch literal 766 zcmVJ#lUOPJ;Vj#I(msyiw!_!8!*~r|1AXz-KMD5FGF_S0z}juE=ksK$FPr z1&d6=n}oZS!R}eX;|zGLjbmV~Nw`Ru>4Ft5zJp65S7H)gs*T@)msa?=1Ab}a<$epu zBxfErz6xQZxgsL>$C|!~n1s{XcrJ@W*eDc5Y04!0Oq{=!{~=r{wr|KJd{-N11u66* z3cwbT>oo~?vuM~+6;iwzEYZded|?eIahvBNf7#%*3 zRS(z-F7h+W&)&suB^9-%Kl-?`PY%!G{OlE(5Vl((wXzQ`hO5n#ur4kQ_eA+8lfw2T wk(|G@S?Y{yH0NDkLt#Wf;(f|Me07*qoM6N<$f@1()lK=n! literal 0 HcmV?d00001 diff --git a/source/js/src/affix.js b/source/js/src/affix.js new file mode 100644 index 000000000..11a3d39a0 --- /dev/null +++ b/source/js/src/affix.js @@ -0,0 +1,162 @@ +/* ======================================================================== + * Bootstrap: affix.js v3.3.5 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = null + this.unpin = null + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.5' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/source/js/src/algolia-search.js b/source/js/src/algolia-search.js new file mode 100644 index 000000000..9787e2ac3 --- /dev/null +++ b/source/js/src/algolia-search.js @@ -0,0 +1,115 @@ +/* global instantsearch: true */ +/*jshint camelcase: false */ + +$(document).ready(function () { + var algoliaSettings = CONFIG.algolia; + var isAlgoliaSettingsValid = algoliaSettings.applicationID && + algoliaSettings.apiKey && + algoliaSettings.indexName; + + if (!isAlgoliaSettingsValid) { + window.console.error('Algolia Settings are invalid.'); + return; + } + + var search = instantsearch({ + appId: algoliaSettings.applicationID, + apiKey: algoliaSettings.apiKey, + indexName: algoliaSettings.indexName, + searchFunction: function (helper) { + var searchInput = $('#algolia-search-input').find('input'); + + if (searchInput.val()) { + helper.search(); + } + } + }); + + // Registering Widgets + [ + instantsearch.widgets.searchBox({ + container: '#algolia-search-input', + placeholder: algoliaSettings.labels.input_placeholder + }), + + instantsearch.widgets.hits({ + container: '#algolia-hits', + hitsPerPage: algoliaSettings.hits.per_page || 10, + templates: { + item: function (data) { + var link = data.permalink ? data.permalink : (CONFIG.root + data.path); + return ( + '' + + data._highlightResult.title.value + + '' + ); + }, + empty: function (data) { + return ( + '
      ' + + algoliaSettings.labels.hits_empty.replace(/\$\{query}/, data.query) + + '
      ' + ); + } + }, + cssClasses: { + item: 'algolia-hit-item' + } + }), + + instantsearch.widgets.stats({ + container: '#algolia-stats', + templates: { + body: function (data) { + var stats = algoliaSettings.labels.hits_stats + .replace(/\$\{hits}/, data.nbHits) + .replace(/\$\{time}/, data.processingTimeMS); + return ( + stats + + '' + + ' Algolia' + + '' + + '
      ' + ); + } + } + }), + + instantsearch.widgets.pagination({ + container: '#algolia-pagination', + scrollTo: false, + showFirstLast: false, + labels: { + first: '', + last: '', + previous: '', + next: '' + }, + cssClasses: { + root: 'pagination', + item: 'pagination-item', + link: 'page-number', + active: 'current', + disabled: 'disabled-item' + } + }) + ].forEach(search.addWidget, search); + + search.start(); + + $('.popup-trigger').on('click', function(e) { + e.stopPropagation(); + $('body') + .append('
      ') + .css('overflow', 'hidden'); + $('.popup').toggle(); + $('#algolia-search-input').find('input').focus(); + }); + + $('.popup-btn-close').click(function(){ + $('.popup').hide(); + $('.algolia-pop-overlay').remove(); + $('body').css('overflow', ''); + }); + +}); diff --git a/source/js/src/bootstrap.js b/source/js/src/bootstrap.js new file mode 100644 index 000000000..e71de3504 --- /dev/null +++ b/source/js/src/bootstrap.js @@ -0,0 +1,53 @@ +/* global NexT: true */ + +$(document).ready(function () { + + $(document).trigger('bootstrap:before'); + + /** + * Register JS handlers by condition option. + * Need to add config option in Front-End at 'layout/_partials/head.swig' file. + */ + CONFIG.fastclick && NexT.utils.isMobile() && window.FastClick.attach(document.body); + CONFIG.lazyload && NexT.utils.lazyLoadPostsImages(); + + NexT.utils.registerESCKeyEvent(); + + NexT.utils.registerBackToTop(); + + // Mobile top menu bar. + $('.site-nav-toggle button').on('click', function () { + var $siteNav = $('.site-nav'); + var ON_CLASS_NAME = 'site-nav-on'; + var isSiteNavOn = $siteNav.hasClass(ON_CLASS_NAME); + var animateAction = isSiteNavOn ? 'slideUp' : 'slideDown'; + var animateCallback = isSiteNavOn ? 'removeClass' : 'addClass'; + + $siteNav.stop()[animateAction]('fast', function () { + $siteNav[animateCallback](ON_CLASS_NAME); + }); + }); + + /** + * Register JS handlers by condition option. + * Need to add config option in Front-End at 'layout/_partials/head.swig' file. + */ + CONFIG.fancybox && NexT.utils.wrapImageWithFancyBox(); + CONFIG.tabs && NexT.utils.registerTabsTag(); + + NexT.utils.embeddedVideoTransformer(); + + // Define Motion Sequence. + NexT.motion.integrator + .add(NexT.motion.middleWares.logo) + .add(NexT.motion.middleWares.menu) + .add(NexT.motion.middleWares.postList) + .add(NexT.motion.middleWares.sidebar); + + $(document).trigger('motion:before'); + + // Bootstrap Motion. + CONFIG.motion.enable && NexT.motion.integrator.bootstrap(); + + $(document).trigger('bootstrap:after'); +}); diff --git a/source/js/src/exturl.js b/source/js/src/exturl.js new file mode 100644 index 000000000..b85062ad4 --- /dev/null +++ b/source/js/src/exturl.js @@ -0,0 +1,15 @@ +/* global NexT: true */ + +$(document).ready(function () { + + // Create Base64 Object + var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9+/=]/g,"");while(f>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/rn/g,"n");var t="";for(var n=0;n127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}}; + + $('.exturl').on('click', function () { + var $exturl = $(this).attr('data-url'); + var $decurl = Base64.decode($exturl); + window.open($decurl, '_blank'); + return false; + }); + +}); diff --git a/source/js/src/js.cookie.js b/source/js/src/js.cookie.js new file mode 100644 index 000000000..c6c397583 --- /dev/null +++ b/source/js/src/js.cookie.js @@ -0,0 +1,165 @@ +/*! + * JavaScript Cookie v2.1.4 + * https://github.com/js-cookie/js-cookie + * + * Copyright 2006, 2015 Klaus Hartl & Fagner Brack + * Released under the MIT license + */ +;(function (factory) { + var registeredInModuleLoader = false; + if (typeof define === 'function' && define.amd) { + define(factory); + registeredInModuleLoader = true; + } + if (typeof exports === 'object') { + module.exports = factory(); + registeredInModuleLoader = true; + } + if (!registeredInModuleLoader) { + var OldCookies = window.Cookies; + var api = window.Cookies = factory(); + api.noConflict = function () { + window.Cookies = OldCookies; + return api; + }; + } +}(function () { + function extend () { + var i = 0; + var result = {}; + for (; i < arguments.length; i++) { + var attributes = arguments[ i ]; + for (var key in attributes) { + result[key] = attributes[key]; + } + } + return result; + } + + function init (converter) { + function api (key, value, attributes) { + var result; + if (typeof document === 'undefined') { + return; + } + + // Write + + if (arguments.length > 1) { + attributes = extend({ + path: '/' + }, api.defaults, attributes); + + if (typeof attributes.expires === 'number') { + var expires = new Date(); + expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5); + attributes.expires = expires; + } + + // We're using "expires" because "max-age" is not supported by IE + attributes.expires = attributes.expires ? attributes.expires.toUTCString() : ''; + + try { + result = JSON.stringify(value); + if (/^[\{\[]/.test(result)) { + value = result; + } + } catch (e) {} + + if (!converter.write) { + value = encodeURIComponent(String(value)) + .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); + } else { + value = converter.write(value, key); + } + + key = encodeURIComponent(String(key)); + key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent); + key = key.replace(/[\(\)]/g, escape); + + var stringifiedAttributes = ''; + + for (var attributeName in attributes) { + if (!attributes[attributeName]) { + continue; + } + stringifiedAttributes += '; ' + attributeName; + if (attributes[attributeName] === true) { + continue; + } + stringifiedAttributes += '=' + attributes[attributeName]; + } + return (document.cookie = key + '=' + value + stringifiedAttributes); + } + + // Read + + if (!key) { + result = {}; + } + + // To prevent the for loop in the first place assign an empty array + // in case there are no cookies at all. Also prevents odd result when + // calling "get()" + var cookies = document.cookie ? document.cookie.split('; ') : []; + var rdecode = /(%[0-9A-Z]{2})+/g; + var i = 0; + + for (; i < cookies.length; i++) { + var parts = cookies[i].split('='); + var cookie = parts.slice(1).join('='); + + if (cookie.charAt(0) === '"') { + cookie = cookie.slice(1, -1); + } + + try { + var name = parts[0].replace(rdecode, decodeURIComponent); + cookie = converter.read ? + converter.read(cookie, name) : converter(cookie, name) || + cookie.replace(rdecode, decodeURIComponent); + + if (this.json) { + try { + cookie = JSON.parse(cookie); + } catch (e) {} + } + + if (key === name) { + result = cookie; + break; + } + + if (!key) { + result[name] = cookie; + } + } catch (e) {} + } + + return result; + } + + api.set = api; + api.get = function (key) { + return api.call(api, key); + }; + api.getJSON = function () { + return api.apply({ + json: true + }, [].slice.call(arguments)); + }; + api.defaults = {}; + + api.remove = function (key, attributes) { + api(key, '', extend(attributes, { + expires: -1 + })); + }; + + api.withConverter = init; + + return api; + } + + return init(function () {}); +})); diff --git a/source/js/src/motion.js b/source/js/src/motion.js new file mode 100644 index 000000000..c6b72257f --- /dev/null +++ b/source/js/src/motion.js @@ -0,0 +1,352 @@ +/* global NexT: true */ + +$(document).ready(function () { + NexT.motion = {}; + + var sidebarToggleLines = { + lines: [], + push: function (line) { + this.lines.push(line); + }, + init: function () { + this.lines.forEach(function (line) { + line.init(); + }); + }, + arrow: function () { + this.lines.forEach(function (line) { + line.arrow(); + }); + }, + close: function () { + this.lines.forEach(function (line) { + line.close(); + }); + } + }; + + function SidebarToggleLine(settings) { + this.el = $(settings.el); + this.status = $.extend({}, { + init: { + width: '100%', + opacity: 1, + left: 0, + rotateZ: 0, + top: 0 + } + }, settings.status); + } + + SidebarToggleLine.prototype.init = function () { + this.transform('init'); + }; + SidebarToggleLine.prototype.arrow = function () { + this.transform('arrow'); + }; + SidebarToggleLine.prototype.close = function () { + this.transform('close'); + }; + SidebarToggleLine.prototype.transform = function (status) { + this.el.velocity('stop').velocity(this.status[status]); + }; + + var sidebarToggleLine1st = new SidebarToggleLine({ + el: '.sidebar-toggle-line-first', + status: { + arrow: {width: '50%', rotateZ: '-45deg', top: '2px'}, + close: {width: '100%', rotateZ: '-45deg', top: '5px'} + } + }); + var sidebarToggleLine2nd = new SidebarToggleLine({ + el: '.sidebar-toggle-line-middle', + status: { + arrow: {width: '90%'}, + close: {opacity: 0} + } + }); + var sidebarToggleLine3rd = new SidebarToggleLine({ + el: '.sidebar-toggle-line-last', + status: { + arrow: {width: '50%', rotateZ: '45deg', top: '-2px'}, + close: {width: '100%', rotateZ: '45deg', top: '-5px'} + } + }); + + sidebarToggleLines.push(sidebarToggleLine1st); + sidebarToggleLines.push(sidebarToggleLine2nd); + sidebarToggleLines.push(sidebarToggleLine3rd); + + var SIDEBAR_WIDTH = '320px'; + var SIDEBAR_DISPLAY_DURATION = 200; + var xPos, yPos; + + var sidebarToggleMotion = { + toggleEl: $('.sidebar-toggle'), + dimmerEl: $('#sidebar-dimmer'), + sidebarEl: $('.sidebar'), + isSidebarVisible: false, + init: function () { + this.toggleEl.on('click', this.clickHandler.bind(this)); + this.dimmerEl.on('click', this.clickHandler.bind(this)); + this.toggleEl.on('mouseenter', this.mouseEnterHandler.bind(this)); + this.toggleEl.on('mouseleave', this.mouseLeaveHandler.bind(this)); + this.sidebarEl.on('touchstart', this.touchstartHandler.bind(this)); + this.sidebarEl.on('touchend', this.touchendHandler.bind(this)); + this.sidebarEl.on('touchmove', function(e){e.preventDefault();}); + + $(document) + .on('sidebar.isShowing', function () { + NexT.utils.isDesktop() && $('body').velocity('stop').velocity( + {paddingRight: SIDEBAR_WIDTH}, + SIDEBAR_DISPLAY_DURATION + ); + }) + .on('sidebar.isHiding', function () { + }); + }, + clickHandler: function () { + this.isSidebarVisible ? this.hideSidebar() : this.showSidebar(); + this.isSidebarVisible = !this.isSidebarVisible; + }, + mouseEnterHandler: function () { + if (this.isSidebarVisible) { + return; + } + sidebarToggleLines.arrow(); + }, + mouseLeaveHandler: function () { + if (this.isSidebarVisible) { + return; + } + sidebarToggleLines.init(); + }, + touchstartHandler: function(e) { + xPos = e.originalEvent.touches[0].clientX; + yPos = e.originalEvent.touches[0].clientY; + }, + touchendHandler: function(e) { + var _xPos = e.originalEvent.changedTouches[0].clientX; + var _yPos = e.originalEvent.changedTouches[0].clientY; + if (_xPos-xPos > 30 && Math.abs(_yPos-yPos) < 20) { + this.clickHandler(); + } + }, + showSidebar: function () { + var self = this; + + sidebarToggleLines.close(); + + this.sidebarEl.velocity('stop').velocity({ + width: SIDEBAR_WIDTH + }, { + display: 'block', + duration: SIDEBAR_DISPLAY_DURATION, + begin: function () { + $('.sidebar .motion-element').velocity( + 'transition.slideRightIn', + { + stagger: 50, + drag: true, + complete: function () { + self.sidebarEl.trigger('sidebar.motion.complete'); + } + } + ); + }, + complete: function () { + self.sidebarEl.addClass('sidebar-active'); + self.sidebarEl.trigger('sidebar.didShow'); + } + } + ); + + this.sidebarEl.trigger('sidebar.isShowing'); + }, + hideSidebar: function () { + NexT.utils.isDesktop() && $('body').velocity('stop').velocity({paddingRight: 0}); + this.sidebarEl.find('.motion-element').velocity('stop').css('display', 'none'); + this.sidebarEl.velocity('stop').velocity({width: 0}, {display: 'none'}); + + sidebarToggleLines.init(); + + this.sidebarEl.removeClass('sidebar-active'); + this.sidebarEl.trigger('sidebar.isHiding'); + + // Prevent adding TOC to Overview if Overview was selected when close & open sidebar. + if (!!$('.post-toc-wrap')) { + if ($('.site-overview-wrap').css('display') === 'block') { + $('.post-toc-wrap').removeClass('motion-element'); + } else { + $('.post-toc-wrap').addClass('motion-element'); + } + } + } + }; + sidebarToggleMotion.init(); + + NexT.motion.integrator = { + queue: [], + cursor: -1, + add: function (fn) { + this.queue.push(fn); + return this; + }, + next: function () { + this.cursor++; + var fn = this.queue[this.cursor]; + $.isFunction(fn) && fn(NexT.motion.integrator); + }, + bootstrap: function () { + this.next(); + } + }; + + NexT.motion.middleWares = { + logo: function (integrator) { + var sequence = []; + var $brand = $('.brand'); + var $title = $('.site-title'); + var $subtitle = $('.site-subtitle'); + var $logoLineTop = $('.logo-line-before i'); + var $logoLineBottom = $('.logo-line-after i'); + + $brand.length > 0 && sequence.push({ + e: $brand, + p: {opacity: 1}, + o: {duration: 200} + }); + + NexT.utils.isMist() && hasElement([$logoLineTop, $logoLineBottom]) && + sequence.push( + getMistLineSettings($logoLineTop, '100%'), + getMistLineSettings($logoLineBottom, '-100%') + ); + + hasElement($title) && sequence.push({ + e: $title, + p: {opacity: 1, top: 0}, + o: { duration: 200 } + }); + + hasElement($subtitle) && sequence.push({ + e: $subtitle, + p: {opacity: 1, top: 0}, + o: {duration: 200} + }); + + if (CONFIG.motion.async) { + integrator.next(); + } + + if (sequence.length > 0) { + sequence[sequence.length - 1].o.complete = function () { + integrator.next(); + }; + $.Velocity.RunSequence(sequence); + } else { + integrator.next(); + } + + + function getMistLineSettings (element, translateX) { + return { + e: $(element), + p: {translateX: translateX}, + o: { + duration: 500, + sequenceQueue: false + } + }; + } + + /** + * Check if $elements exist. + * @param {jQuery|Array} $elements + * @returns {boolean} + */ + function hasElement ($elements) { + $elements = Array.isArray($elements) ? $elements : [$elements]; + return $elements.every(function ($element) { + return $element.length > 0; + }); + } + }, + + menu: function (integrator) { + + if (CONFIG.motion.async) { + integrator.next(); + } + + $('.menu-item').velocity('transition.slideDownIn', { + display: null, + duration: 200, + complete: function () { + integrator.next(); + } + }); + }, + + postList: function (integrator) { + //var $post = $('.post'); + var $postBlock = $('.post-block, .pagination, .comments'); + var $postBlockTransition = CONFIG.motion.transition.post_block; + var $postHeader = $('.post-header'); + var $postHeaderTransition = CONFIG.motion.transition.post_header; + var $postBody = $('.post-body'); + var $postBodyTransition = CONFIG.motion.transition.post_body; + var $collHeader = $('.collection-title, .archive-year'); + var $collHeaderTransition = CONFIG.motion.transition.coll_header; + var $sidebarAffix = $('.sidebar-inner'); + var $sidebarAffixTransition = CONFIG.motion.transition.sidebar; + var hasPost = $postBlock.length > 0; + + hasPost ? postMotion() : integrator.next(); + + if (CONFIG.motion.async) { + integrator.next(); + } + + function postMotion () { + var postMotionOptions = window.postMotionOptions || { + stagger: 100, + drag: true + }; + postMotionOptions.complete = function () { + // After motion complete need to remove transform from sidebar to let affix work on Pisces | Gemini. + if (CONFIG.motion.transition.sidebar && (NexT.utils.isPisces() || NexT.utils.isGemini())) { + $sidebarAffix.css({ 'transform': 'initial' }); + } + integrator.next(); + }; + + //$post.velocity('transition.slideDownIn', postMotionOptions); + if (CONFIG.motion.transition.post_block) { + $postBlock.velocity('transition.' + $postBlockTransition, postMotionOptions); + } + if (CONFIG.motion.transition.post_header) { + $postHeader.velocity('transition.' + $postHeaderTransition, postMotionOptions); + } + if (CONFIG.motion.transition.post_body) { + $postBody.velocity('transition.' + $postBodyTransition, postMotionOptions); + } + if (CONFIG.motion.transition.coll_header) { + $collHeader.velocity('transition.' + $collHeaderTransition, postMotionOptions); + } + // Only for Pisces | Gemini. + if (CONFIG.motion.transition.sidebar && (NexT.utils.isPisces() || NexT.utils.isGemini())) { + $sidebarAffix.velocity('transition.' + $sidebarAffixTransition, postMotionOptions); + } + } + }, + + sidebar: function (integrator) { + if (CONFIG.sidebar.display === 'always') { + NexT.utils.displaySidebar(); + } + integrator.next(); + } + }; + +}); diff --git a/source/js/src/post-details.js b/source/js/src/post-details.js new file mode 100644 index 000000000..bfb6e6b14 --- /dev/null +++ b/source/js/src/post-details.js @@ -0,0 +1,104 @@ +/* global NexT: true */ + +$(document).ready(function () { + + initScrollSpy(); + + function initScrollSpy () { + var tocSelector = '.post-toc'; + var $tocElement = $(tocSelector); + var activeCurrentSelector = '.active-current'; + + $tocElement + .on('activate.bs.scrollspy', function () { + var $currentActiveElement = $(tocSelector + ' .active').last(); + + removeCurrentActiveClass(); + $currentActiveElement.addClass('active-current'); + + // Scrolling to center active TOC element if TOC content is taller then viewport. + $tocElement.scrollTop($currentActiveElement.offset().top - $tocElement.offset().top + $tocElement.scrollTop() - ($tocElement.height() / 2)); + }) + .on('clear.bs.scrollspy', removeCurrentActiveClass); + + $('body').scrollspy({ target: tocSelector }); + + function removeCurrentActiveClass () { + $(tocSelector + ' ' + activeCurrentSelector) + .removeClass(activeCurrentSelector.substring(1)); + } + } + +}); + +$(document).ready(function () { + var html = $('html'); + var TAB_ANIMATE_DURATION = 200; + var hasVelocity = $.isFunction(html.velocity); + + $('.sidebar-nav li').on('click', function () { + var item = $(this); + var activeTabClassName = 'sidebar-nav-active'; + var activePanelClassName = 'sidebar-panel-active'; + if (item.hasClass(activeTabClassName)) { + return; + } + + var currentTarget = $('.' + activePanelClassName); + var target = $('.' + item.data('target')); + + hasVelocity ? + currentTarget.velocity('transition.slideUpOut', TAB_ANIMATE_DURATION, function () { + target + .velocity('stop') + .velocity('transition.slideDownIn', TAB_ANIMATE_DURATION) + .addClass(activePanelClassName); + }) : + currentTarget.animate({ opacity: 0 }, TAB_ANIMATE_DURATION, function () { + currentTarget.hide(); + target + .stop() + .css({'opacity': 0, 'display': 'block'}) + .animate({ opacity: 1 }, TAB_ANIMATE_DURATION, function () { + currentTarget.removeClass(activePanelClassName); + target.addClass(activePanelClassName); + }); + }); + + item.siblings().removeClass(activeTabClassName); + item.addClass(activeTabClassName); + }); + + // TOC item animation navigate & prevent #item selector in adress bar. + $('.post-toc a').on('click', function (e) { + e.preventDefault(); + var targetSelector = NexT.utils.escapeSelector(this.getAttribute('href')); + var offset = $(targetSelector).offset().top; + + hasVelocity ? + html.velocity('stop').velocity('scroll', { + offset: offset + 'px', + mobileHA: false + }) : + $('html, body').stop().animate({ + scrollTop: offset + }, 500); + }); + + // Expand sidebar on post detail page by default, when post has a toc. + var $tocContent = $('.post-toc-content'); + var display = CONFIG.page.sidebar; + if (typeof display !== 'boolean') { + // There's no definition sidebar in the page front-matter + var isSidebarCouldDisplay = CONFIG.sidebar.display === 'post' || + CONFIG.sidebar.display === 'always'; + var hasTOC = $tocContent.length > 0 && $tocContent.html().trim().length > 0; + display = isSidebarCouldDisplay && hasTOC; + } + if (display) { + CONFIG.motion.enable ? + (NexT.motion.middleWares.sidebar = function () { + NexT.utils.displaySidebar(); + }) : NexT.utils.displaySidebar(); + } +}); diff --git a/source/js/src/schemes/pisces.js b/source/js/src/schemes/pisces.js new file mode 100644 index 000000000..0e6e4267e --- /dev/null +++ b/source/js/src/schemes/pisces.js @@ -0,0 +1,57 @@ +$(document).ready(function () { + + var sidebarInner = $('.sidebar-inner'); + + initAffix(); + resizeListener(); + + function initAffix () { + var headerOffset = getHeaderOffset(), + footerOffset = getFooterOffset(), + sidebarHeight = $('#sidebar').height() + NexT.utils.getSidebarb2tHeight(), + contentHeight = $('#content').height(); + + // Not affix if sidebar taller then content (to prevent bottom jumping). + if (headerOffset + sidebarHeight < contentHeight) { + sidebarInner.affix({ + offset: { + top: headerOffset - CONFIG.sidebar.offset, + bottom: footerOffset + } + }); + } + + setSidebarMarginTop(headerOffset).css({ 'margin-left': 'initial' }); + } + + function resizeListener () { + var mql = window.matchMedia('(min-width: 991px)'); + mql.addListener(function(e){ + if(e.matches){ + recalculateAffixPosition(); + } + }); + } + + function getHeaderOffset () { + return $('.header-inner').height() + CONFIG.sidebar.offset; + } + + function getFooterOffset () { + var footerInner = $('.footer-inner'), + footerMargin = footerInner.outerHeight(true) - footerInner.outerHeight(), + footerOffset = footerInner.outerHeight(true) + footerMargin; + return footerOffset; + } + + function setSidebarMarginTop (headerOffset) { + return $('#sidebar').css({ 'margin-top': headerOffset }); + } + + function recalculateAffixPosition () { + $(window).off('.affix'); + sidebarInner.removeData('bs.affix').removeClass('affix affix-top affix-bottom'); + initAffix(); + } + +}); diff --git a/source/js/src/scroll-cookie.js b/source/js/src/scroll-cookie.js new file mode 100644 index 000000000..34ff200bd --- /dev/null +++ b/source/js/src/scroll-cookie.js @@ -0,0 +1,23 @@ +$(document).ready(function() { + + // Set relative link path (without domain) + var rpath = window.location.href.replace(window.location.origin, ""); + + // Write position in cookie + var timeout; + $(window).on("scroll", function() { + clearTimeout(timeout); + timeout = setTimeout(function () { + Cookies.set("scroll-cookie", ($(window).scrollTop() + "|" + rpath), { expires: 365, path: '' }); + }, 250); + }); + + // Read position from cookie + if (Cookies.get("scroll-cookie") !== undefined) { + var cvalues = Cookies.get("scroll-cookie").split('|'); + if (cvalues[1] == rpath) { + $(window).scrollTop(cvalues[0]); + } + } + +}); diff --git a/source/js/src/scrollspy.js b/source/js/src/scrollspy.js new file mode 100644 index 000000000..f5c5c6cb8 --- /dev/null +++ b/source/js/src/scrollspy.js @@ -0,0 +1,182 @@ +/* ======================================================================== +* Bootstrap: scrollspy.js v3.3.2 +* http://getbootstrap.com/javascript/#scrollspy +* ======================================================================== +* Copyright 2011-2015 Twitter, Inc. +* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) +* ======================================================================== */ + +/** + * Custom by iissnan + * + * - Add a `clear.bs.scrollspy` event. + * - Esacpe targets selector. + */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.2' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(NexT.utils.escapeSelector(href)) // Need to escape selector. + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + + + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + $(this.selector).trigger('clear.bs.scrollspy') // Add a custom event. + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); diff --git a/source/js/src/utils.js b/source/js/src/utils.js new file mode 100644 index 000000000..c68519f55 --- /dev/null +++ b/source/js/src/utils.js @@ -0,0 +1,329 @@ +/* global NexT: true */ + +NexT.utils = NexT.$u = { + /** + * Wrap images with fancybox support. + */ + wrapImageWithFancyBox: function () { + $('.content img') + .not('[hidden]') + .not('.group-picture img, .post-gallery img') + .each(function () { + var $image = $(this); + var imageTitle = $image.attr('title'); + var $imageWrapLink = $image.parent('a'); + + if ($imageWrapLink.length < 1) { + var imageLink = ($image.attr('data-original')) ? this.getAttribute('data-original') : this.getAttribute('src'); + $imageWrapLink = $image.wrap('').parent('a'); + } + + $imageWrapLink.addClass('fancybox fancybox.image'); + $imageWrapLink.attr('rel', 'group'); + + if (imageTitle) { + $imageWrapLink.append('

      ' + imageTitle + '

      '); + + //make sure img title tag will show correctly in fancybox + $imageWrapLink.attr('title', imageTitle); + } + }); + + $('.fancybox').fancybox({ + helpers: { + overlay: { + locked: false + } + } + }); + }, + + lazyLoadPostsImages: function () { + $('#posts').find('img').lazyload({ + //placeholder: '/images/loading.gif', + effect: 'fadeIn', + threshold : 0 + }); + }, + + /** + * Tabs tag listener (without twitter bootstrap). + */ + registerTabsTag: function () { + var tNav = '.tabs ul.nav-tabs '; + + // Binding `nav-tabs` & `tab-content` by real time permalink changing. + $(function() { + $(window).bind('hashchange', function() { + var tHash = location.hash; + if (tHash !== '') { + $(tNav + 'li:has(a[href="' + tHash + '"])').addClass('active').siblings().removeClass('active'); + $(tHash).addClass('active').siblings().removeClass('active'); + } + }).trigger('hashchange'); + }); + + $(tNav + '.tab').on('click', function (href) { + href.preventDefault(); + // Prevent selected tab to select again. + if(!$(this).hasClass('active')){ + + // Add & Remove active class on `nav-tabs` & `tab-content`. + $(this).addClass('active').siblings().removeClass('active'); + var tActive = $(this).find('a').attr('href'); + $(tActive).addClass('active').siblings().removeClass('active'); + + // Clear location hash in browser if #permalink exists. + if (location.hash !== '') { + history.pushState('', document.title, window.location.pathname + window.location.search); + } + } + }); + + }, + + registerESCKeyEvent: function () { + $(document).on('keyup', function (event) { + var shouldDismissSearchPopup = event.which === 27 && + $('.search-popup').is(':visible'); + if (shouldDismissSearchPopup) { + $('.search-popup').hide(); + $('.search-popup-overlay').remove(); + $('body').css('overflow', ''); + } + }); + }, + + registerBackToTop: function () { + var THRESHOLD = 50; + var $top = $('.back-to-top'); + + $(window).on('scroll', function () { + $top.toggleClass('back-to-top-on', window.pageYOffset > THRESHOLD); + + var scrollTop = $(window).scrollTop(); + var contentVisibilityHeight = NexT.utils.getContentVisibilityHeight(); + var scrollPercent = (scrollTop) / (contentVisibilityHeight); + var scrollPercentRounded = Math.round(scrollPercent*100); + var scrollPercentMaxed = (scrollPercentRounded > 100) ? 100 : scrollPercentRounded; + $('#scrollpercent>span').html(scrollPercentMaxed); + }); + + $top.on('click', function () { + $('body').velocity('scroll'); + }); + }, + + /** + * Transform embedded video to support responsive layout. + * @see http://toddmotto.com/fluid-and-responsive-youtube-and-vimeo-videos-with-fluidvids-js/ + */ + embeddedVideoTransformer: function () { + var $iframes = $('iframe'); + + // Supported Players. Extend this if you need more players. + var SUPPORTED_PLAYERS = [ + 'www.youtube.com', + 'player.vimeo.com', + 'player.youku.com', + 'music.163.com', + 'www.tudou.com' + ]; + var pattern = new RegExp( SUPPORTED_PLAYERS.join('|') ); + + $iframes.each(function () { + var iframe = this; + var $iframe = $(this); + var oldDimension = getDimension($iframe); + var newDimension; + + if (this.src.search(pattern) > 0) { + + // Calculate the video ratio based on the iframe's w/h dimensions + var videoRatio = getAspectRadio(oldDimension.width, oldDimension.height); + + // Replace the iframe's dimensions and position the iframe absolute + // This is the trick to emulate the video ratio + $iframe.width('100%').height('100%') + .css({ + position: 'absolute', + top: '0', + left: '0' + }); + + + // Wrap the iframe in a new
      which uses a dynamically fetched padding-top property + // based on the video's w/h dimensions + var wrap = document.createElement('div'); + wrap.className = 'fluid-vids'; + wrap.style.position = 'relative'; + wrap.style.marginBottom = '20px'; + wrap.style.width = '100%'; + wrap.style.paddingTop = videoRatio + '%'; + // Fix for appear inside tabs tag. + (wrap.style.paddingTop === '') && (wrap.style.paddingTop = '50%'); + + // Add the iframe inside our newly created
      + var iframeParent = iframe.parentNode; + iframeParent.insertBefore(wrap, iframe); + wrap.appendChild(iframe); + + // Additional adjustments for 163 Music + if (this.src.search('music.163.com') > 0) { + newDimension = getDimension($iframe); + var shouldRecalculateAspect = newDimension.width > oldDimension.width || + newDimension.height < oldDimension.height; + + // 163 Music Player has a fixed height, so we need to reset the aspect radio + if (shouldRecalculateAspect) { + wrap.style.paddingTop = getAspectRadio(newDimension.width, oldDimension.height) + '%'; + } + } + } + }); + + function getDimension($element) { + return { + width: $element.width(), + height: $element.height() + }; + } + + function getAspectRadio(width, height) { + return height / width * 100; + } + }, + + hasMobileUA: function () { + var nav = window.navigator; + var ua = nav.userAgent; + var pa = /iPad|iPhone|Android|Opera Mini|BlackBerry|webOS|UCWEB|Blazer|PSP|IEMobile|Symbian/g; + + return pa.test(ua); + }, + + isTablet: function () { + return window.screen.width < 992 && window.screen.width > 767 && this.hasMobileUA(); + }, + + isMobile: function () { + return window.screen.width < 767 && this.hasMobileUA(); + }, + + isDesktop: function () { + return !this.isTablet() && !this.isMobile(); + }, + + /** + * Escape meta symbols in jQuery selectors. + * + * @param selector + * @returns {string|void|XML|*} + */ + escapeSelector: function (selector) { + return selector.replace(/[!"$%&'()*+,.\/:;<=>?@[\\\]^`{|}~]/g, '\\$&'); + }, + + displaySidebar: function () { + if (!this.isDesktop() || this.isPisces() || this.isGemini()) { + return; + } + $('.sidebar-toggle').trigger('click'); + }, + + isMist: function () { + return CONFIG.scheme === 'Mist'; + }, + + isPisces: function () { + return CONFIG.scheme === 'Pisces'; + }, + + isGemini: function () { + return CONFIG.scheme === 'Gemini'; + }, + + getScrollbarWidth: function () { + var $div = $('
      ').addClass('scrollbar-measure').prependTo('body'); + var div = $div[0]; + var scrollbarWidth = div.offsetWidth - div.clientWidth; + + $div.remove(); + + return scrollbarWidth; + }, + + getContentVisibilityHeight: function () { + var docHeight = $('#content').height(), + winHeight = $(window).height(), + contentVisibilityHeight = (docHeight > winHeight) ? (docHeight - winHeight) : ($(document).height() - winHeight); + return contentVisibilityHeight; + }, + + getSidebarb2tHeight: function () { + //var sidebarb2tHeight = (CONFIG.sidebar.b2t) ? document.getElementsByClassName('back-to-top')[0].clientHeight : 0; + var sidebarb2tHeight = (CONFIG.sidebar.b2t) ? $('.back-to-top').height() : 0; + //var sidebarb2tHeight = (CONFIG.sidebar.b2t) ? 24 : 0; + return sidebarb2tHeight; + }, + + getSidebarSchemePadding: function () { + var sidebarNavHeight = ($('.sidebar-nav').css('display') == 'block') ? $('.sidebar-nav').outerHeight(true) : 0, + sidebarInner = $('.sidebar-inner'), + sidebarPadding = sidebarInner.innerWidth() - sidebarInner.width(), + sidebarSchemePadding = this.isPisces() || this.isGemini() ? + ((sidebarPadding * 2) + sidebarNavHeight + (CONFIG.sidebar.offset * 2) + this.getSidebarb2tHeight()) : + ((sidebarPadding * 2) + (sidebarNavHeight / 2)); + return sidebarSchemePadding; + } + + /** + * Affix behaviour for Sidebar. + * + * @returns {Boolean} + */ +// needAffix: function () { +// return this.isPisces() || this.isGemini(); +// } +}; + +$(document).ready(function () { + + initSidebarDimension(); + + /** + * Init Sidebar & TOC inner dimensions on all pages and for all schemes. + * Need for Sidebar/TOC inner scrolling if content taller then viewport. + */ + function initSidebarDimension () { + var updateSidebarHeightTimer; + + $(window).on('resize', function () { + updateSidebarHeightTimer && clearTimeout(updateSidebarHeightTimer); + + updateSidebarHeightTimer = setTimeout(function () { + var sidebarWrapperHeight = document.body.clientHeight - NexT.utils.getSidebarSchemePadding(); + + updateSidebarHeight(sidebarWrapperHeight); + }, 0); + }); + + // Initialize Sidebar & TOC Width. + var scrollbarWidth = NexT.utils.getScrollbarWidth(); + if ($('.site-overview-wrap').height() > (document.body.clientHeight - NexT.utils.getSidebarSchemePadding())) { + $('.site-overview').css('width', 'calc(100% + ' + scrollbarWidth + 'px)'); + } + if ($('.post-toc-wrap').height() > (document.body.clientHeight - NexT.utils.getSidebarSchemePadding())) { + $('.post-toc').css('width', 'calc(100% + ' + scrollbarWidth + 'px)'); + } + + // Initialize Sidebar & TOC Height. + updateSidebarHeight(document.body.clientHeight - NexT.utils.getSidebarSchemePadding()); + } + + function updateSidebarHeight (height) { + height = height || 'auto'; + $('.site-overview, .post-toc').css('max-height', height); + } + +}); diff --git a/source/lib/font-awesome/.bower.json b/source/lib/font-awesome/.bower.json new file mode 100644 index 000000000..fb98b1d6d --- /dev/null +++ b/source/lib/font-awesome/.bower.json @@ -0,0 +1,36 @@ +{ + "name": "font-awesome", + "description": "Font Awesome", + "keywords": [], + "homepage": "http://fontawesome.io", + "dependencies": {}, + "devDependencies": {}, + "license": [ + "OFL-1.1", + "MIT", + "CC-BY-3.0" + ], + "main": [ + "less/font-awesome.less", + "scss/font-awesome.scss" + ], + "ignore": [ + "*/.*", + "*.json", + "src", + "*.yml", + "Gemfile", + "Gemfile.lock", + "*.md" + ], + "version": "4.7.0", + "_release": "4.7.0", + "_resolution": { + "type": "version", + "tag": "v4.7.0", + "commit": "a3fe90fa5f6fac55d197f9cbd18e3f57dafb716c" + }, + "_source": "https://github.com/FortAwesome/Font-Awesome.git", + "_target": "*", + "_originalSource": "fontawesome" +} \ No newline at end of file diff --git a/source/lib/font-awesome/.gitignore b/source/lib/font-awesome/.gitignore new file mode 100644 index 000000000..39c4f20b7 --- /dev/null +++ b/source/lib/font-awesome/.gitignore @@ -0,0 +1,33 @@ +*.pyc +*.egg-info +*.db +*.db.old +*.swp +*.db-journal + +.coverage +.DS_Store +.installed.cfg +_gh_pages/* + +.idea/* +.svn/* +src/website/static/* +src/website/media/* + +bin +cfcache +develop-eggs +dist +downloads +eggs +parts +tmp +.sass-cache +node_modules + +src/website/settingslocal.py +stunnel.log + +.ruby-version +.bundle diff --git a/source/lib/font-awesome/.npmignore b/source/lib/font-awesome/.npmignore new file mode 100644 index 000000000..54a691f81 --- /dev/null +++ b/source/lib/font-awesome/.npmignore @@ -0,0 +1,42 @@ +*.pyc +*.egg-info +*.db +*.db.old +*.swp +*.db-journal + +.coverage +.DS_Store +.installed.cfg +_gh_pages/* + +.idea/* +.svn/* +src/website/static/* +src/website/media/* + +bin +cfcache +develop-eggs +dist +downloads +eggs +parts +tmp +.sass-cache +node_modules + +src/website/settingslocal.py +stunnel.log + +.ruby-version + +# don't need these in the npm package. +src/ +_config.yml +bower.json +component.json +composer.json +CONTRIBUTING.md +Gemfile +Gemfile.lock diff --git a/source/lib/font-awesome/HELP-US-OUT.txt b/source/lib/font-awesome/HELP-US-OUT.txt new file mode 100644 index 000000000..83d083dd7 --- /dev/null +++ b/source/lib/font-awesome/HELP-US-OUT.txt @@ -0,0 +1,7 @@ +I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project, +Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome, +comprehensive icon sets or copy and paste your own. + +Please. Check it out. + +-Dave Gandy diff --git a/source/lib/font-awesome/bower.json b/source/lib/font-awesome/bower.json new file mode 100644 index 000000000..9e2112659 --- /dev/null +++ b/source/lib/font-awesome/bower.json @@ -0,0 +1,22 @@ +{ + "name": "font-awesome", + "description": "Font Awesome", + "keywords": [], + "homepage": "http://fontawesome.io", + "dependencies": {}, + "devDependencies": {}, + "license": ["OFL-1.1", "MIT", "CC-BY-3.0"], + "main": [ + "less/font-awesome.less", + "scss/font-awesome.scss" + ], + "ignore": [ + "*/.*", + "*.json", + "src", + "*.yml", + "Gemfile", + "Gemfile.lock", + "*.md" + ] +} diff --git a/source/lib/font-awesome/css/font-awesome.css b/source/lib/font-awesome/css/font-awesome.css new file mode 100644 index 000000000..ee906a819 --- /dev/null +++ b/source/lib/font-awesome/css/font-awesome.css @@ -0,0 +1,2337 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/source/lib/font-awesome/css/font-awesome.css.map b/source/lib/font-awesome/css/font-awesome.css.map new file mode 100644 index 000000000..60763a864 --- /dev/null +++ b/source/lib/font-awesome/css/font-awesome.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../scss/_path.scss","../scss/_core.scss","../scss/_larger.scss","../scss/_fixed-width.scss","../scss/_list.scss","../scss/_variables.scss","../scss/_bordered-pulled.scss","../scss/_animated.scss","../scss/_rotated-flipped.scss","../scss/_mixins.scss","../scss/_stacked.scss","../scss/_icons.scss"], +"names": [], +"file": "font-awesome.css" +} diff --git a/source/lib/font-awesome/css/font-awesome.min.css b/source/lib/font-awesome/css/font-awesome.min.css new file mode 100644 index 000000000..540440ce8 --- /dev/null +++ b/source/lib/font-awesome/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/source/lib/font-awesome/fonts/fontawesome-webfont.eot b/source/lib/font-awesome/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..e9f60ca953f93e35eab4108bd414bc02ddcf3928 GIT binary patch literal 165742 zcmd443w)Ht)jvM-T=tf|Uz5#kH`z;W1W0z103j^*Tev7F2#5hiQ9w~aka}5_DkxP1 zRJ3Y?7YePlysh?CD|XvjdsAv#YOS?>W2@EHO9NV8h3u2x_sp}KECIB>@9+Qn{FBV{ zJTr4<=FH5QnRCvZnOu5{#2&j@Vw_3r#2?PKa|-F4dtx{Ptp0P(#$Rn88poKQO<|X@ zOW8U$o^4<&*p=|D!J9EVI}`7V*m|~_En`<8B*M-{$Q6LOSfmND1Z!lia3ffVHQ_mu zwE*t)c_Na~v9UCh+1x2p=FeL7+|;L;bTeUAHg(eEDN-*};9m=WXwJOhO^lgVEPBX5Gh_bo8QSSFY{vM^4hsD-mzHX!X?>-tpg$&tfe27?V1mUAbb} z1dVewCjIN7C5$=lXROG% zX4%HIa)VTc_%^_YE?u@}#b58a4S8RL@|2s`UUucWZ{P9NJxp5Fi!#@Xx+(mZ+kdt3 zobw#*|6)Z(BxCGw^Gi+ncRvs|a|3xz=tRA9@HDV~1eqD)`^`KTPEg`UdXhq18})-@}JTHp30^)`L{?* z;c)alkYAc@67|W!7RDPu6Tsy@xJCK8{2T9-fJw6?@=A(w^}KCVjwlOd=JTO=3Zr+< zIdd?1zo-M^76}Jf!cpLfH`+2q=}d5id5XLcPw#xVocH5RVG7;@@%R>Sxpy8{(H9JH zY1V)?J1-AIeIxKhoG1%;AWq7C50ok3DSe?!Gatbry_zpS*VoS6`$~lK9E?(!mcrm1 z^cLZ1fmx5Ds`-ethCvMtDTz zMd=G1)gR$jic|1SaTLaL-{ePJOFkUs%j634IMp}dnR5yGMtsXmA$+JDyxRuSq*)bk zt3tSN2(J<@ooh3|!(R%VsE#5%U{m-mB7fcy&h(8kC(#>yA(JCmQ6|O1<=_U=0+$AY zC)@~M`UboR6Xm2?$e8Z$r#u8)TEP0~`viw@@+){#874R?kHRP|IU4&!?+9Cy52v^I zPV4Xd{9yc;)#l?0VS#6g@ z`#y))03Laq@^6Z#Z*uvzpl{$JzFJgn&xHlNBS|Eb!E@}~Z$^m!a9k34KX zT|VETZ;B_E$Ai8J#t5#kATCAUlqbr&P~-s)k^FfWyz}iK@`B$FI6L0u1uz5fgfqgU zRBmB>F8s_qp1HWm1!aXOEbpf`U?X|>{F`8Md500U3i;Mh9Kvbd(CeuC>077ww4g^h zKgM(A48W`XEDE~N*Th^NqP#S7&^w2Vpq+df2#@A*&4u~I+>t)9&GYcop9OtUo=;2d zGSq?IMBAYZffMC1v^|Z|AWdQ38UdJS4(H(nFI<|%=>0iAn3lvcSjIR(^7r7QuQI0a zm+@Z9QXmf!efG1**%Ryq_G-AQs-mi^*WO#v+tE9_cWLjXz1Q{L-uqzh z-Vb`UBlaT|M;ecG9GQJ&>5)s1TzBO5BM%;V{K#`h4juXPkq?e&N9{)|j&>ZKeRS#3 zOOIZ6^!B3<9)0}ib4L#y{qxZe{ss8}C5PC)Atkb2XK%PS)jPMht9Na0x_5hTckhAT zOz+FRJ-xk0*b(QE(2)^GQb*<<={mCZNczb3Bi%<19LXGc`AE-^-lOcO^Jw^J>ge2~ zT}Rg*O&{HUwEO6RqnV>GAMK$M`~TX%q<>-my#5LOBmex)pWgq|V@{jX>a;k`PLtE< zG&ohK;*_0|<6n-C93MK4I*vGc9shKE;CSEhp5tA|KOBE|yyJM=@i)g?jyD~Db^OKg zhNH*vXUCr$uRH$ec+K$#$E%LtJ6>`8&T-iBTicKH)SNMZS zB8UG!{1{Y=QL&oLMgLzR(}0Y>sN0TqgG|kLqv_VcVSLD)aJ?AC^D!bLa6K5Ut1)YA zghRXq;YBrYhrzOK23vXorq6v~v*CBb?*bYw$l-3J@cY5H}8Gr;t8{e8!J}L*5e>!hOQnM3g=8eoXDiYZBlmBW?=(Qvo;ib;hP4-|5>J zo6*MD%*UW90?aI=ncV;fJZB$fY|a73<^rd=!0(I%TsLE9TH#hRHV<&~b~82~@n<2= z1-*oTQL{zWh}4H zGjX>}SbW{R;(k^VBouiebp<&Q9S1P`GIlM(uLaz7TNt~37h`FJ-B1j-jj@}iF}B$Yhy1^cv|oM`3X|20-GXwq z0QapK#%@FUZ9ik|D}cWpad#li_7EK6?wrrq4l5kOc5H@2*p5ENc6Pxb%`OEl1=q{i zU1`Sdjxcu562^8fWbEEDi1(A=o?`5)DC_=i#vVX^45ZpSrpE35`g>WA+_QYDo!1%Byk?;4A*Y^%H_McC{^)mJp(mf6Mr$1rr8Klp< z@9$&m+0Bd{OfmMH!q^XxU*>tneq@E)#@LU6-}5Nz`DYpXi4*QA#$MRP*w045^)U8x zl=XAu_Y36n%QPIqUi^r$mjH7JWgdEmv0oiv>}BNj>jtO;GSSiGr=LO--M;f3$4%-kcdA5=kp1;?w1)iU%_3WyqWQmjf@AcVZ3xc<7I~# zFHgbYU4b-}3LN4>NEZft6=17@TlH$jBZ!NjjQC2%Yu;hJu9NWwZ@DynQp=tBj8Wjw$e9<5A{>pD{iW zZqogXPX_!HxT$LypN98z;4>ox_a@^r4>R7`&G@Wh#%HG(p9^;e{AczsK5r7^^FxfE z1>DZ=f&=UVl(8@Y2be_)+!n?cUjPUAC8+bcuQI+Aab3F@Uxu=lJpt$oQq38DE=X{7U3=m6P!eKVy6&>UK5q-?WYKFCon} zcwbuv_Xy+HBi;48;XYwJy_)eGknfFvzbOHS_{~WFRt)zJ zijpU?=0x zkwe%IkXL3J<39wBKYX6?A1iQgGX8uw<3E|t_zN{~?=k)}E8{7uHGX6%I@xLJ5o5hU3g}A@9GyXR4dV3$^??m7ZGyeD0jQ;~={sZ6d0>}3fa8JQ~ z#Q6Kj>z^jLM;Px_;9g|>2lp6?Oy32JW8UD|ZH#LugXW9=mzl&9Ov2uUBsVZgS;-{zFeKKwOfnbOFe$i&Nu~HMe}YLB^Wk1(Qs^2cg^_pF zV@!&4GARo9*fb`^0bBDClWMmysSaUvuQREB7n2(BZbV*M)y$0@8CXG!nX&m5FyO}f|^_bYrq)EtQ3jEW$ z;E;a$iwt`}|2xOlf`@fNIFLzjYz@1@vMcQB;TbKpR_b1>hK{W@uw#sVI6JqW86H;C ztQ;P%k-Nf8ey^cATop^SG>2V0mP~Z;=5SL5H#}UQ-NIABSS;9=rYBEjx70^!0%|%? z6H%vBBRb1si5UK{xwWyrI#6mdl~NhlB{DFSQ4f#HYnQ4Tr9_9++!S!BCwdbtt-PhV z2|9^MD=%7f(aK494ZCcz4t6dY`X;_62ywrIPovV+sT0pH?+{mwxjh%^> zh_?T`uiv2^KX}>z4HVY!Y%V1QDcBvi>!sD@MEbj99(bg@lcBxTD9~gYzfIm>7jFFl;^hEgOD8Clhu+6jw>0z&OhJ=2DoJ42R3QaA zWOOLCseE6;o!xG!?ra~f^>o~D+1yBE?qxT0^k{Eo?@YU;MW)Dk7u-Ja^-t=jry`Nm z^!iU;|I=I9eR|&CLf`eUDtM5Q2iZ}-MO8dOpsgMv)7Ge`r77T1(I!FduCuw%>+xyh zv~lQApLDjitE7#8{D!C9^9KL8O}^S6)E?BVMw_qP`rdoia-YG@KjOf%Qh4Bnt8Mcoi9h#JRYY3kEvn*UVbReO50BrmV+ z;MZw4c4)uX7XS38vL%mZ(`R5ww4GL|?R_+gqd5vmpyBRdmy(bdo1(0=sB8@yxdn)~lxbJjigu9=)pPhNBHJ@OCr@Hfy7 zMKpelG=3bck_~6$*c^5qw$ra?cd)OqZ$smlOvLJWm7$z_{bM*t_;dW+m52!n&yhSI z0)LYKbKpO(yrBb!r(;1ei=F17uvjq5XquDp?1L{4s1~Hu@I46id3j>UeJTcx0fQ!$ z&o9RBJJn}4D52n3P@|_Z2y%SzQ!WJ22E$LC;WNiX*{T?@;Pj!}DC|#~nZ>-HpIS<2 za>P22_kUiz%sLYqOLTT7B=H>lmeZ$;kr+*xoe54)>BRz1U!muO7@@$$G=552gn*!9 zJ(lYeq-%(OX#D?e|IqRz)>flsYTDXrc#58b-%`5Jmp#FEV%&+o&w?z>k%vUF^x&@! zd}aqf<-yN_(1OoX0~BNi5+XV}sW1Mo_rky5sw&#MPqeg*Iv+ow^-qi|g!>=1)d@|( zIJ=tJ4Yw%YfhiFbenxIIR1N1mmKeveFq!eFI?k+2%4<3`YlV3hM zS45R<;g^uVtW5iZbSGet@1^}8sBUEktA@_c>)?i}IE-EQTR@N-j%b9$Syc1{S3U?8e~d3B1?Lij0H27USiF&gR}A>wG-vBGIPuh*4ry;{Khxekv}wCTm%_>vhFZSJ)Pw2iv6Q4YVoQ`J2w?yCkiavVTWeVa)j|q=T9@J0pTtcQX!VHnIM6Al- z^*7Og!1y$xN4)5fYK&2X5x-Om4A;1k20|=O+$wl^1T}IRHkcq<^P$a{C0fAii(ypB z{ef1n(U1a&g|>5}zY?N{!tOqN_uYr3yPejjJ>KeR7IW!#ztw(g!*Hj~SpH|bkC%t5kd^Q2w*f{D8tJPwQ z++kT&2yEHVY_jXXBg!P7SUbSC;y1@rj$sqoMWF2=y$%ua1S%Nn_dvGwR*;O^!Fd?1 z8#WkKL1{>+GcdW?sX2^RC#k8D;~{~1M4#fpPxGDbOWPf?oRS^(Y!}arFj}-9Ta5B$ zZhP0#34P$Fx`;w}a*AU%t?#oPQ+U$umO}+(WIxS!wnBcQuM;%yiYhbKnNwXa7LiRjmf+(2(ZG}wiz%sgWJi>jgGIsPnZ=KfX?8mJ2^L!4-hBx#UR zZa((80+3k2t!n9h@La(dm&Qrs_teRTeB}Y= zShqm6zJdPGS+juA6^_Mu3_1sz1Hvx#*|M6pnqz`jk<&F@Wt;g%i&gunm7lM5)wE@q zvbn6Q=6IU;C_@UMWs|fmylAcBqr(MowarQT7@9BsXzyH534G z1e0`Rlnqb_RAIW{M7dQoxdg$ z;&VZRA?1jrgF9nN0lg?)7VU>c#YI}iVKVtMV&I^SUL2sA9Xn2<8mY@_)qZF;^OV!$ z;QVMjZTMUtC^eDXuo)DkX75sJ*#d6g{w?U1!Fbwid(nlSiF_z zStRqVrV`8MJBg{|ZM^Kzrps2`fI(Eq&qUZ%VCjWLQn)GthGkFz0LcT(tUy)_i~PWb ze1obC@Hu0-n}r4LO@8%lp3+uoAMDWnx#|WFhG&pQo@eXSCzjp(&Xl4$kfY60LiIx^ zs+SA=sm(K<-^V>WxOdf!NXC0qN&86q?xh#r;L)>)B|KXvOuO+4*98HO?4jfcxpk`^ zU^8+npM|PWn*7Nj9O_U%@pt)^gcu2m|17^}h}J6KWCJ>t zv@Qsc2z0711@V0%PDVqW?i)a)=GC>nC+Kx~*FeS}p5iNes=&dpY_lv9^<|K`GOJMG zE5^7&yqgjFK*qz6I-su3QFo4`PbRSbk|gNIa3+>jPUVH}5I6C)+!U&5lUe4HyYIe4 z>&a$lqL(n;XP)9F?USc6ZA6!;oE+i8ksYGTfe8;xbPFg9e&VVdrRpkO9Zch#cxJH7 z%@Bt~=_%2;shO9|R5K-|zrSznwM%ZBp3!<;&S0$4H~PJ&S3PrGtf}StbLZKDF_le= z9k)|^Do10}k~3$n&#EP*_H_-3h8^ZuQ2JXaU@zY|dW@$oQAY%Z@s0V8+F~YQ=#aqp z=je#~nV5}oI1J`wLIQ^&`Mj01oDZ;O`V>BvWCRJd%56g!((T@-{aY6fa;a0Vs+v@O z0IK2dXum&DKB?-ese^F~xB8#t6TFirdTy3(-MedKc;2cI&D}ztv4^I%ThCj* ziyQ90UpuyI`FYm%sUlWqP(!Qcg-7n%dk-&uY15{cw0HD+gbuz}CQP*u8*(+KCYFiz80m1pT=kmx0(q(xrCPMsUH1k{mefDSp) zD5G^q?m1N%Jbl&_iz65-uBs{~7YjNpQ%+H^=H7i%nHnwimHSGDPZ(Z;cWG1wcZw|v z%*juq&!(bo!`O7T>Wkon^QZ-rLvkd_^z#)5Hg zxufObryg!`lzZc#{xRRv6592P5fce0Hl-xEm^*nBcP$v z0`KR64y6=xK{a*oNxW9jv+9)$I9SxN-Oig_c%UK7hZDj_WEb$BDlO#*M?@b>eU7 zxN!%UE+w#Wg$bqFfc# zeDOpwnoY)%(93rx(=q9nQKg6?XKJZrRP#oo(u>h_l6NOMld)_IF( zs6M+iRmTC+ALc}C7V>JEuRjk9o)*YO8Y}oKQNl2t?D;qFLv4U`StSyoFzFYuq>i@C zEa1!N?B0BK0gjTwsL04McVmu=$6B!!-4bi1u_j7ZpCQm-l2u7AlYMmx zH!4a*@eEhENs{b-gUMy{c*AjMjcwAWGv@lW4YQtoQvvf*jQ2wL8+EGF4rQjAc;uiEzG%4uf z9wX{X3(U5*s$>6M z)n+q=_&#l6nEa|4ez8YOb9q{(?8h1|AYN<53x+g()8?U_N+)sEV;tdoV{pJ^DTD)ZvO|;^t&(V6L2z~TSiWu zI&#bLG#NGMHVY^mJXXH_jBGA?Np1q;)EYzS3U=1VKn3aXyU}xGihu`L8($R|e#HpJ zzo`QozgXO&25>bM*l>oHk|GV&2I+U-2>)u7C$^yP7gAuth~}8}eO^2>X_8+G@2GX0 zUG8;wZgm*=I4#ww{Ufg2!~-Uu*`{`!$+eE)in1}WPMJ%i|32CjmFLR8);bg^+jrF* zW0A!Zuas6whwVl!G+Vp(ysAHq9%glv8)6>Sr8w=pzPe1s`fRb9oO^yGOQW^-OZ=5? zNNaJk+iSAxa}{PtjC&tu_+{8J_cw=JiFhMqFC!}FHB@j}@Q$b&*h-^U)Y&U$fDWad zC!K&D&RZgww6M(~`@DA92;#vDM1_`->Ss*g8*57^PdIP-=;>u#;wD4g#4|T7ZytTY zx(Q8lO+5Ris0v-@GZXC@|&A*DPrZ51ZeSyziwc>%X>dNyCAL zOSDTJAwK7d2@UOGmtsjCPM9{#I9Gbb7#z25{*;Tyl-Zho(Oh~-u(5CLQl;2ot%#Nl z_cf{VEA=LuSylKv$-{%A=U+QBv0&8bP;vDOcU|zc3n!Nu{9=5j6^6DL&6tm-J4|~) z9#1w(@m3N|G3n9Xf)O<|NO+P)+F(TgqN3E#F8`eIrDZn0=@MQ%cDBb8e*D_eBUXH+ zOtn|s5j9y2W~uaQm*j{3fV=j|wxar?@^xjmPHKMYy0eTPkG*<=QA$Wf)g`tfRlZ0v ztEyRwH(8<%&+zbQ+pg>z^Ucf8Jj>x$N*h{buawh;61^S+&ZX>H^j?#nw!}!~35^Z# zqU|=INy-tBD+E^RCJdtvC_M2+Bx*2%C6nTfGS!1b*MJvhKZZPkBfkjIFf@kLBCdo) zszai4sxmBgklbZ>Iqddc=N%2_4$qxi==t>5E!Ll+-y(NJc+^l)uMgMZH+KM<|+cUS^t~AUy&z{UpW?AA~QO;;xntfuA^Rj7SU%j)& zVs~)K>u%=e(ooP|$In{9cdb}2l?KYZinZ8o+i;N-baM#CG$-JMDcX1$y9-L(TsuaT zfPY9MCb3xN8WGxNDB@4sjvZ10JTUS1Snvy5l9QPbZJ1#AG@_xCVXxndg&0Cz99x`Z zKvV%^1YbB2L)tU+ww(e6EZYzc6gI5g;!?*}TsL=hotb0Mow8kxW*HVdXfdVep4yL` zdfTcM*7nwv5)3M-)^@ASp~`(sR`IsMgXV>xPx0&5!lR8(L&vn@?_Oi2EXy)sj?Q8S$Mm zP{=PsbQ)rJtxy*+R9EqNek1fupF(7d1z|uHBZdEQMm`l!QnDTsJ_DX2E=_R?o*D5) z4}Rh2eEvVeTQ^UXfsDXgAf@6dtaXG>!t?(&-a~B^KF@z*dl$BLVOt|yVElz!`rm5n z&%<$O{7{?+>7|f%3ctTlD}Sc0Zs_hY;YO-&eOIT+Kh%FJdM|_@8b7qIL;aj#^MhF1 z(>x4_KPKYTl+AOj0Q$t3La4&;o`HP%m8bgb`*0vs83ZT@J#{j%7e8dKm;){k%rMw* zG9eKbw_mh1PHLUB$7VNcJ=oL;nV~#W;r|rv;ISD5+Q-FH5g~=&gD`RrnNm>lGJ1GE zw`K+PW!P*uxsEyAzhLvBOEUkj>)1sV6q-RhP*nGS(JD%Z$|wijTm)a5S+oj03MzBz zPjp$XjyM!3`cFtv`8wrA`EpL(8Soof9J(X7wr2l^Y-+>){TrmrhW&h}yVPonlai>; zrF!_zz4@5^8y@95z(7+GLY@+~o<>}!RDp|@N4vi4Y-r@AF@6Q7ET8d9j~&O$3l#Yuo`voKB12v8pK*p3sJO+k{- zak5sNppfOFju-S9tC#^&UI}&^S-3TB^fmi<0$e%==MK3AqBrn!K@ZCzuah-}pRZc{ z?&7p`mEU5_{>6x=RAFr4-F+FYOMN%GSL@mvX-UT3jRI;_TJH7}l*La_ztFn+GQ3;r zNk;eb?nh&>e?Z$I<$LDON!e1tJ26yLILq`~hFYrCA|rj2uGJHxzz@8b<} z&bETBnbLPG9E*iz!<03Ld4q;C140%fzRO5j*Ql#XY*C-ELCtp24zs*#$X0ZhlF~Qj zq$4Nq9U@=qSTzHghxD(IcI0@hO0e}l7_PKLX|J5jQe+67(8W~90a!?QdAYyLs6f^$ zgAUsZ6%aIOhqZ;;;WG@EpL1!Mxhc_XD!cTY%MEAnbR^8{!>s|QGte5Y=ivx6=T9Ei zP_M&x-e`XKwm+O(fpg~P{^7QV&DZPW)$j@GX#kClVjXN6u+n=I$K0{Y-O4?f;0vgV zY+%5cgK;dNK1}{#_x-Zyaw9sN`r9jST(^5&m&8IY?IBml#h0G3e?uSWfByzKHLe8) z9oCU{cfd~u97`w2ATe{wQPagk*)FX|S+YdySpplm-DSKB*|c>@nSp$=zj{v3WyAgw zqtk_K3c5J|0pC zSpww86>3JZSitYm_b*{%7cv?=elhCFy1v6m)^n?211803vG_;TRU3WPV`g7=>ywvsW6B76c-kXXYuS7~J+@Lc zSf%7^`HIJ4D|VX9{BlBG~IV;M->JId%#U?}jR@kQ&o5A3HyYDx}6Nc^pMjj0Jeun)M=&7-NLZ9@2 z)j60}@#z8oft^qhO`qgPG;Gf4Q@Zbq!Fx_DP1GkX<}_%EF`!5fg*xCsir}$yMH#85 zT3Y4bdV)bucC=X;w24>D>XjaA@K`En^++$6E!jmvauA$rc9F%b=P&f^I7M+{{--HM z0JXFl21+}*Oz8zr@T8JQp9Td0TZ7rr0+&rWePPKdaG}l-^)$@O*ON;2pkAjf4ZSg# zy{PLo>hhTUUK_q5L{o!vKb^7AIkbXB zm3BG{rbFE>fKfZsL4iKVYubQMO_AvYWH<3F_@;7*b}ss*4!r5a-5Mr{qoVbpXW1cja+YCd!nQ3xt*CEBq_FNhDc93rhj=>>F59=AN5 zoRmKmL))oDox0VF;gltwNSdcF9cb*OX3{Gx?X{Q-krC~b9}_3yG8Bn{`W6m}6YD#q zAkEzk)zB|ZA2Ao`dW^gC77j#kXk7>zOYg~2Y0NyG9@9L)X=yRL!=`tj7; z^S=K3l)dWTz%eniebMP!Z)q@7d(l_cR;2OvPv7I~Va{X>R@4XXh- zOMOMef=}m)U?`>^E`qUO(+Ng$xKwZ1|FQ|>X41&zvAf`(9 zj3GGCzGHqa8_lMGV+Q3A(d5seacFHJ92meB0vj+?SfQ~dL#3UE!1{}wjz|HPWCEHI zW{zYTeA(UwAEq6F%|@%!oD5ebM$D`kG45gkQ6COfjjk-==^@y6=Tp0-#~0px=I@H# z7Z|LQii;EBSfjse{lo}m?iuTG`$i6*F?L9m*kGMV_JUqsuT##HNJkrNL~cklwZK&3 zgesq4oycISoHuCg>Jo;0K(3&I(n-j7+uaf)NPK7+@p8+z!=r!xa45cmV`Mna1hT=i zAkgv-=xDHofR+dHn7FZvghtoxVqmi^U=Tk5i*(?UbiEGt9|mBN4tXfwT0b zIQSzTbod84Y<){2C!IJja=k65vqPM|!xFS?-HOK!3%&6=!T(Z$<>g6+rTpioPBf57 z$!8fVo=}&Z?KB-UB4$>vfxffiJ*^StPHhnl@7Fw@3-N|6BAyp|HhmV#(r=Ll2Y3af zNJ44J*!nZfs0Z5o%Qy|_7UzOtMt~9CA*sTy5=4c0Q9mP-JJ+p-7G&*PyD$6sj+4b>6a~%2eXf~A?KRzL4v_GQ!SRxsdZi`B(7Jx*fGf@DK z&P<|o9z*F!kX>I*;y78= z>JB#p1zld#NFeK3{?&UgU*1uzsxF7qYP34!>yr;jKktE5CNZ3N_W+965o=}3S?jx3 zv`#Wqn;l-4If#|AeD6_oY2Y||U?Fss}Sa>HvkP$9_KPcb_jB*Jc;M0XIE+qhbP$U2d z&;h?{>;H=Sp?W2>Uc{rF29ML>EiCy?fyim_mQtrgMA~^uv?&@WN@gUOPn(379I}U4Vg~Qo)jwJb7e_Pg^`Gmp+s5vF{tNzJVhBQ z$VB8M@`XJsXC!-){6wetDsTY94 G*yFsbY~cLNXLP73aA74Mq6M9f^&YV`isWW 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

      5q!RY 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 SdSQM28?+M|D(2r_;{O0|uQ74} literal 0 HcmV?d00001 diff --git a/source/lib/font-awesome/fonts/fontawesome-webfont.woff2 b/source/lib/font-awesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4d13fc60404b91e398a37200c4a77b645cfd9586 GIT binary patch literal 77160 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 literal 0 HcmV?d00001 diff --git a/source/lib/jquery/index.js b/source/lib/jquery/index.js new file mode 100644 index 000000000..25714ed29 --- /dev/null +++ b/source/lib/jquery/index.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.3 | (c) 2005, 2014 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.3",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=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=hb(),z=hb(),A=hb(),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-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=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)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){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 gb(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(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(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 hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(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 mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(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 pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.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",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(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(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);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))&&(jb(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(".#.+[+~]")}),jb(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))&&jb(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 lb(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?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.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 gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.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},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.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=gb.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=gb.selectors={cacheLength:50,createPseudo:ib,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(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===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]||gb.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]&&gb.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(cb,db).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=gb.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()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(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:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(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:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).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:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sb(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 tb(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 ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(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 wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(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=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(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=[sb(tb(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 wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(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=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.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(cb,db),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(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(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}),gb}(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,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(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 kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(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 ob(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 pb(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=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(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(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$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=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.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=jb(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=jb(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(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(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(ob(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&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(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(ob(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&&eb.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(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}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 qb,rb={};function sb(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 tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("', + + // Preload iframe before displaying it + // This allows to calculate iframe content width and height + // (note: Due to "Same Origin Policy", you can't get cross domain data). + preload : true, + + // Custom CSS styling for iframe wrapping element + // You can use this to set custom iframe dimensions + css : {}, + + // Iframe tag attributes + attr : { + scrolling : 'auto' + } + + }, + + // Default content type if cannot be detected automatically + defaultType : 'image', + + // Open/close animation type + // Possible values: + // false - disable + // "zoom" - zoom images from/to thumbnail + // "fade" + // "zoom-in-out" + // + animationEffect : "zoom", + + // Duration in ms for open/close animation + animationDuration : 500, + + // Should image change opacity while zooming + // If opacity is "auto", then opacity will be changed if image and thumbnail have different aspect ratios + zoomOpacity : "auto", + + // Transition effect between slides + // + // Possible values: + // false - disable + // "fade' + // "slide' + // "circular' + // "tube' + // "zoom-in-out' + // "rotate' + // + transitionEffect : "fade", + + // Duration in ms for transition animation + transitionDuration : 366, + + // Custom CSS class for slide element + slideClass : '', + + // Custom CSS class for layout + baseClass : '', + + // Base template for layout + baseTpl : + '

      ', + + // Loading indicator template + spinnerTpl : '
      ', + + // Error message template + errorTpl : '

      {{ERROR}}

      ', + + btnTpl : { + + download : '' + + '' + + '' + + '' + + '', + + zoom : '', + + close : '', + + // This small close button will be appended to your html/inline/ajax content by default, + // if "smallBtn" option is not set to false + smallBtn : '', + + // Arrows + arrowLeft : '', + + arrowRight : '' + }, + + // Container is injected into this element + parentEl : 'body', + + + // Focus handling + // ============== + + // Try to focus on the first focusable element after opening + autoFocus : false, + + // Put focus back to active element after closing + backFocus : true, + + // Do not let user to focus on element outside modal content + trapFocus : true, + + + // Module specific options + // ======================= + + fullScreen : { + autoStart : false, + }, + + // Set `touch: false` to disable dragging/swiping + touch : { + vertical : true, // Allow to drag content vertically + momentum : true // Continue movement after releasing mouse/touch when panning + }, + + // Hash value when initializing manually, + // set `false` to disable hash change + hash : null, + + // Customize or add new media types + // Example: + /* + media : { + youtube : { + params : { + autoplay : 0 + } + } + } + */ + media : {}, + + slideShow : { + autoStart : false, + speed : 4000 + }, + + thumbs : { + autoStart : false, // Display thumbnails on opening + hideOnClose : true, // Hide thumbnail grid when closing animation starts + parentEl : '.fancybox-container', // Container is injected into this element + axis : 'y' // Vertical (y) or horizontal (x) scrolling + }, + + // Callbacks + //========== + + // See Documentation/API/Events for more information + // Example: + /* + afterShow: function( instance, current ) { + console.info( 'Clicked element:' ); + console.info( current.opts.$orig ); + } + */ + + onInit : $.noop, // When instance has been initialized + + beforeLoad : $.noop, // Before the content of a slide is being loaded + afterLoad : $.noop, // When the content of a slide is done loading + + beforeShow : $.noop, // Before open animation starts + afterShow : $.noop, // When content is done loading and animating + + beforeClose : $.noop, // Before the instance attempts to close. Return false to cancel the close. + afterClose : $.noop, // After instance has been closed + + onActivate : $.noop, // When instance is brought to front + onDeactivate : $.noop, // When other instance has been activated + + + // Interaction + // =========== + + // Use options below to customize taken action when user clicks or double clicks on the fancyBox area, + // each option can be string or method that returns value. + // + // Possible values: + // "close" - close instance + // "next" - move to next gallery item + // "nextOrClose" - move to next gallery item or close if gallery has only one item + // "toggleControls" - show/hide controls + // "zoom" - zoom image (if loaded) + // false - do nothing + + // Clicked on the content + clickContent : function( current, event ) { + return current.type === 'image' ? 'zoom' : false; + }, + + // Clicked on the slide + clickSlide : 'close', + + // Clicked on the background (backdrop) element + clickOutside : 'close', + + // Same as previous two, but for double click + dblclickContent : false, + dblclickSlide : false, + dblclickOutside : false, + + + // Custom options when mobile device is detected + // ============================================= + + mobile : { + margin : 0, + + clickContent : function( current, event ) { + return current.type === 'image' ? 'toggleControls' : false; + }, + clickSlide : function( current, event ) { + return current.type === 'image' ? 'toggleControls' : 'close'; + }, + dblclickContent : function( current, event ) { + return current.type === 'image' ? 'zoom' : false; + }, + dblclickSlide : function( current, event ) { + return current.type === 'image' ? 'zoom' : false; + } + }, + + + // Internationalization + // ============ + + lang : 'en', + i18n : { + 'en' : { + CLOSE : 'Close', + NEXT : 'Next', + PREV : 'Previous', + ERROR : 'The requested content cannot be loaded.
      Please try again later.', + PLAY_START : 'Start slideshow', + PLAY_STOP : 'Pause slideshow', + FULL_SCREEN : 'Full screen', + THUMBS : 'Thumbnails', + DOWNLOAD : 'Download', + SHARE : 'Share', + ZOOM : 'Zoom' + }, + 'de' : { + CLOSE : 'Schliessen', + NEXT : 'Weiter', + PREV : 'Zurück', + ERROR : 'Die angeforderten Daten konnten nicht geladen werden.
      Bitte versuchen Sie es später nochmal.', + PLAY_START : 'Diaschau starten', + PLAY_STOP : 'Diaschau beenden', + FULL_SCREEN : 'Vollbild', + THUMBS : 'Vorschaubilder', + DOWNLOAD : 'Herunterladen', + SHARE : 'Teilen', + ZOOM : 'Maßstab' + } + } + + }; + + // Few useful variables and methods + // ================================ + + var $W = $(window); + var $D = $(document); + + var called = 0; + + + // Check if an object is a jQuery object and not a native JavaScript object + // ======================================================================== + + var isQuery = function ( obj ) { + return obj && obj.hasOwnProperty && obj instanceof $; + }; + + + // Handle multiple browsers for "requestAnimationFrame" and "cancelAnimationFrame" + // =============================================================================== + + var requestAFrame = (function () { + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + // if all else fails, use setTimeout + function (callback) { + return window.setTimeout(callback, 1000 / 60); + }; + })(); + + + // Detect the supported transition-end event property name + // ======================================================= + + var transitionEnd = (function () { + var t, el = document.createElement("fakeelement"); + + var transitions = { + "transition" : "transitionend", + "OTransition" : "oTransitionEnd", + "MozTransition" : "transitionend", + "WebkitTransition": "webkitTransitionEnd" + }; + + for (t in transitions) { + if (el.style[t] !== undefined){ + return transitions[t]; + } + } + + return 'transitionend'; + })(); + + + // Force redraw on an element. + // This helps in cases where the browser doesn't redraw an updated element properly. + // ================================================================================= + + var forceRedraw = function( $el ) { + return ( $el && $el.length && $el[0].offsetHeight ); + }; + + + // Class definition + // ================ + + var FancyBox = function( content, opts, index ) { + var self = this; + + self.opts = $.extend( true, { index : index }, $.fancybox.defaults, opts || {} ); + + if ( $.fancybox.isMobile ) { + self.opts = $.extend( true, {}, self.opts, self.opts.mobile ); + } + + // Exclude buttons option from deep merging + if ( opts && $.isArray( opts.buttons ) ) { + self.opts.buttons = opts.buttons; + } + + self.id = self.opts.id || ++called; + self.group = []; + + self.currIndex = parseInt( self.opts.index, 10 ) || 0; + self.prevIndex = null; + + self.prevPos = null; + self.currPos = 0; + + self.firstRun = null; + + // Create group elements from original item collection + self.createGroup( content ); + + if ( !self.group.length ) { + return; + } + + // Save last active element and current scroll position + self.$lastFocus = $(document.activeElement).blur(); + + // Collection of gallery objects + self.slides = {}; + + self.init(); + }; + + $.extend(FancyBox.prototype, { + + // Create DOM structure + // ==================== + + init : function() { + var self = this, + firstItem = self.group[ self.currIndex ], + firstItemOpts = firstItem.opts, + scrollbarWidth = $.fancybox.scrollbarWidth, + $scrollDiv, + $container, + buttonStr; + + self.scrollTop = $D.scrollTop(); + self.scrollLeft = $D.scrollLeft(); + + + // Hide scrollbars + // =============== + + if ( !$.fancybox.getInstance() ) { + + $( 'body' ).addClass( 'fancybox-active' ); + + // iOS hack + if ( /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream ) { + + // iOS has problems for input elements inside fixed containers, + // the workaround is to apply `position: fixed` to `` element, + // unfortunately, this makes it lose the scrollbars and forces address bar to appear. + + if ( firstItem.type !== 'image' ) { + $( 'body' ).css( 'top', $( 'body' ).scrollTop() * -1 ).addClass( 'fancybox-iosfix' ); + } + + } else if ( !$.fancybox.isMobile && document.body.scrollHeight > window.innerHeight ) { + + if ( scrollbarWidth === undefined ) { + $scrollDiv = $('
      ').appendTo( 'body' ); + + scrollbarWidth = $.fancybox.scrollbarWidth = $scrollDiv[0].offsetWidth - $scrollDiv[0].clientWidth; + + $scrollDiv.remove(); + } + + $( 'head' ).append( '' ); + $( 'body' ).addClass( 'compensate-for-scrollbar' ); + } + } + + + // Build html markup and set references + // ==================================== + + // Build html code for buttons and insert into main template + buttonStr = ''; + + $.each( firstItemOpts.buttons, function( index, value ) { + buttonStr += ( firstItemOpts.btnTpl[ value ] || '' ); + }); + + // Create markup from base template, it will be initially hidden to + // avoid unnecessary work like painting while initializing is not complete + $container = $( + self.translate( self, + firstItemOpts.baseTpl + .replace( '\{\{buttons\}\}', buttonStr ) + .replace( '\{\{arrows\}\}', firstItemOpts.btnTpl.arrowLeft + firstItemOpts.btnTpl.arrowRight ) + ) + ) + .attr( 'id', 'fancybox-container-' + self.id ) + .addClass( 'fancybox-is-hidden' ) + .addClass( firstItemOpts.baseClass ) + .data( 'FancyBox', self ) + .appendTo( firstItemOpts.parentEl ); + + // Create object holding references to jQuery wrapped nodes + self.$refs = { + container : $container + }; + + [ 'bg', 'inner', 'infobar', 'toolbar', 'stage', 'caption', 'navigation' ].forEach(function(item) { + self.$refs[ item ] = $container.find( '.fancybox-' + item ); + }); + + self.trigger( 'onInit' ); + + // Enable events, deactive previous instances + self.activate(); + + // Build slides, load and reveal content + self.jumpTo( self.currIndex ); + }, + + + // Simple i18n support - replaces object keys found in template + // with corresponding values + // ============================================================ + + translate : function( obj, str ) { + var arr = obj.opts.i18n[ obj.opts.lang ]; + + return str.replace(/\{\{(\w+)\}\}/g, function(match, n) { + var value = arr[n]; + + if ( value === undefined ) { + return match; + } + + return value; + }); + }, + + // Create array of gally item objects + // Check if each object has valid type and content + // =============================================== + + createGroup : function ( content ) { + var self = this; + var items = $.makeArray( content ); + + $.each(items, function( i, item ) { + var obj = {}, + opts = {}, + $item, + type, + src, + srcParts; + + // Step 1 - Make sure we have an object + // ==================================== + + if ( $.isPlainObject( item ) ) { + + // We probably have manual usage here, something like + // $.fancybox.open( [ { src : "image.jpg", type : "image" } ] ) + + obj = item; + opts = item.opts || item; + + } else if ( $.type( item ) === 'object' && $( item ).length ) { + + // Here we probably have jQuery collection returned by some selector + $item = $( item ); + + opts = $item.data(); + opts = $.extend( {}, opts, opts.options || {} ); + + // Here we store clicked element + opts.$orig = $item; + + obj.src = opts.src || $item.attr( 'href' ); + + // Assume that simple syntax is used, for example: + // `$.fancybox.open( $("#test"), {} );` + if ( !obj.type && !obj.src ) { + obj.type = 'inline'; + obj.src = item; + } + + } else { + + // Assume we have a simple html code, for example: + // $.fancybox.open( '

      Hi!

      ' ); + + obj = { + type : 'html', + src : item + '' + }; + + } + + // Each gallery object has full collection of options + obj.opts = $.extend( true, {}, self.opts, opts ); + + // Do not merge buttons array + if ( $.isArray( opts.buttons ) ) { + obj.opts.buttons = opts.buttons; + } + + + // Step 2 - Make sure we have content type, if not - try to guess + // ============================================================== + + type = obj.type || obj.opts.type; + src = obj.src || ''; + + if ( !type && src ) { + if ( src.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i) ) { + type = 'image'; + + } else if ( src.match(/\.(pdf)((\?|#).*)?$/i) ) { + type = 'pdf'; + + } else if ( src.charAt(0) === '#' ) { + type = 'inline'; + } + } + + if ( type ) { + obj.type = type; + + } else { + self.trigger( 'objectNeedsType', obj ); + } + + + // Step 3 - Some adjustments + // ========================= + + obj.index = self.group.length; + + // Check if $orig and $thumb objects exist + if ( obj.opts.$orig && !obj.opts.$orig.length ) { + delete obj.opts.$orig; + } + + if ( !obj.opts.$thumb && obj.opts.$orig ) { + obj.opts.$thumb = obj.opts.$orig.find( 'img:first' ); + } + + if ( obj.opts.$thumb && !obj.opts.$thumb.length ) { + delete obj.opts.$thumb; + } + + // "caption" is a "special" option, it can be used to customize caption per gallery item .. + if ( $.type( obj.opts.caption ) === 'function' ) { + obj.opts.caption = obj.opts.caption.apply( item, [ self, obj ] ); + } + + if ( $.type( self.opts.caption ) === 'function' ) { + obj.opts.caption = self.opts.caption.apply( item, [ self, obj ] ); + } + + // Make sure we have caption as a string or jQuery object + if ( !( obj.opts.caption instanceof $ ) ) { + obj.opts.caption = obj.opts.caption === undefined ? '' : obj.opts.caption + ''; + } + + // Check if url contains "filter" used to filter the content + // Example: "ajax.html #something" + if ( type === 'ajax' ) { + srcParts = src.split(/\s+/, 2); + + if ( srcParts.length > 1 ) { + obj.src = srcParts.shift(); + + obj.opts.filter = srcParts.shift(); + } + } + + if ( obj.opts.smallBtn == 'auto' ) { + + if ( $.inArray( type, ['html', 'inline', 'ajax'] ) > -1 ) { + obj.opts.toolbar = false; + obj.opts.smallBtn = true; + + } else { + obj.opts.smallBtn = false; + } + + } + + // If the type is "pdf", then simply load file into iframe + if ( type === 'pdf' ) { + obj.type = 'iframe'; + + obj.opts.iframe.preload = false; + } + + // Hide all buttons and disable interactivity for modal items + if ( obj.opts.modal ) { + + obj.opts = $.extend(true, obj.opts, { + // Remove buttons + infobar : 0, + toolbar : 0, + + smallBtn : 0, + + // Disable keyboard navigation + keyboard : 0, + + // Disable some modules + slideShow : 0, + fullScreen : 0, + thumbs : 0, + touch : 0, + + // Disable click event handlers + clickContent : false, + clickSlide : false, + clickOutside : false, + dblclickContent : false, + dblclickSlide : false, + dblclickOutside : false + }); + + } + + // Step 4 - Add processed object to group + // ====================================== + + self.group.push( obj ); + + }); + + }, + + + // Attach an event handler functions for: + // - navigation buttons + // - browser scrolling, resizing; + // - focusing + // - keyboard + // - detect idle + // ====================================== + + addEvents : function() { + var self = this; + + self.removeEvents(); + + // Make navigation elements clickable + self.$refs.container.on('click.fb-close', '[data-fancybox-close]', function(e) { + e.stopPropagation(); + e.preventDefault(); + + self.close( e ); + + }).on( 'click.fb-prev touchend.fb-prev', '[data-fancybox-prev]', function(e) { + e.stopPropagation(); + e.preventDefault(); + + self.previous(); + + }).on( 'click.fb-next touchend.fb-next', '[data-fancybox-next]', function(e) { + e.stopPropagation(); + e.preventDefault(); + + self.next(); + + }).on( 'click.fb', '[data-fancybox-zoom]', function(e) { + // Click handler for zoom button + self[ self.isScaledDown() ? 'scaleToActual' : 'scaleToFit' ](); + }); + + + // Handle page scrolling and browser resizing + $W.on('orientationchange.fb resize.fb', function(e) { + + if ( e && e.originalEvent && e.originalEvent.type === "resize" ) { + + requestAFrame(function() { + self.update(); + }); + + } else { + + self.$refs.stage.hide(); + + setTimeout(function() { + self.$refs.stage.show(); + + self.update(); + }, 600); + + } + + }); + + // Trap keyboard focus inside of the modal, so the user does not accidentally tab outside of the modal + // (a.k.a. "escaping the modal") + $D.on('focusin.fb', function(e) { + var instance = $.fancybox ? $.fancybox.getInstance() : null; + + if ( instance.isClosing || !instance.current || !instance.current.opts.trapFocus || $( e.target ).hasClass( 'fancybox-container' ) || $( e.target ).is( document ) ) { + return; + } + + if ( instance && $( e.target ).css( 'position' ) !== 'fixed' && !instance.$refs.container.has( e.target ).length ) { + e.stopPropagation(); + + instance.focus(); + + // Sometimes page gets scrolled, set it back + $W.scrollTop( self.scrollTop ).scrollLeft( self.scrollLeft ); + } + }); + + + // Enable keyboard navigation + $D.on('keydown.fb', function (e) { + var current = self.current, + keycode = e.keyCode || e.which; + + if ( !current || !current.opts.keyboard ) { + return; + } + + if ( $(e.target).is('input') || $(e.target).is('textarea') ) { + return; + } + + // Backspace and Esc keys + if ( keycode === 8 || keycode === 27 ) { + e.preventDefault(); + + self.close( e ); + + return; + } + + // Left arrow and Up arrow + if ( keycode === 37 || keycode === 38 ) { + e.preventDefault(); + + self.previous(); + + return; + } + + // Righ arrow and Down arrow + if ( keycode === 39 || keycode === 40 ) { + e.preventDefault(); + + self.next(); + + return; + } + + self.trigger('afterKeydown', e, keycode); + }); + + + // Hide controls after some inactivity period + if ( self.group[ self.currIndex ].opts.idleTime ) { + self.idleSecondsCounter = 0; + + $D.on('mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle', function(e) { + self.idleSecondsCounter = 0; + + if ( self.isIdle ) { + self.showControls(); + } + + self.isIdle = false; + }); + + self.idleInterval = window.setInterval(function() { + self.idleSecondsCounter++; + + if ( self.idleSecondsCounter >= self.group[ self.currIndex ].opts.idleTime ) { + self.isIdle = true; + self.idleSecondsCounter = 0; + + self.hideControls(); + } + + }, 1000); + } + + }, + + + // Remove events added by the core + // =============================== + + removeEvents : function() { + var self = this; + + $W.off( 'orientationchange.fb resize.fb' ); + $D.off( 'focusin.fb keydown.fb .fb-idle' ); + + this.$refs.container.off( '.fb-close .fb-prev .fb-next' ); + + if ( self.idleInterval ) { + window.clearInterval( self.idleInterval ); + + self.idleInterval = null; + } + }, + + + // Change to previous gallery item + // =============================== + + previous : function( duration ) { + return this.jumpTo( this.currPos - 1, duration ); + }, + + + // Change to next gallery item + // =========================== + + next : function( duration ) { + return this.jumpTo( this.currPos + 1, duration ); + }, + + + // Switch to selected gallery item + // =============================== + + jumpTo : function ( pos, duration, slide ) { + var self = this, + firstRun, + loop, + current, + previous, + canvasWidth, + currentPos, + transitionProps; + + var groupLen = self.group.length; + + if ( self.isSliding || self.isClosing || ( self.isAnimating && self.firstRun ) ) { + return; + } + + pos = parseInt( pos, 10 ); + loop = self.current ? self.current.opts.loop : self.opts.loop; + + if ( !loop && ( pos < 0 || pos >= groupLen ) ) { + return false; + } + + firstRun = self.firstRun = ( self.firstRun === null ); + + if ( groupLen < 2 && !firstRun && !!self.isSliding ) { + return; + } + + previous = self.current; + + self.prevIndex = self.currIndex; + self.prevPos = self.currPos; + + // Create slides + current = self.createSlide( pos ); + + if ( groupLen > 1 ) { + if ( loop || current.index > 0 ) { + self.createSlide( pos - 1 ); + } + + if ( loop || current.index < groupLen - 1 ) { + self.createSlide( pos + 1 ); + } + } + + self.current = current; + self.currIndex = current.index; + self.currPos = current.pos; + + self.trigger( 'beforeShow', firstRun ); + + self.updateControls(); + + currentPos = $.fancybox.getTranslate( current.$slide ); + + current.isMoved = ( currentPos.left !== 0 || currentPos.top !== 0 ) && !current.$slide.hasClass( 'fancybox-animated' ); + current.forcedDuration = undefined; + + if ( $.isNumeric( duration ) ) { + current.forcedDuration = duration; + } else { + duration = current.opts[ firstRun ? 'animationDuration' : 'transitionDuration' ]; + } + + duration = parseInt( duration, 10 ); + + // Fresh start - reveal container, current slide and start loading content + if ( firstRun ) { + + if ( current.opts.animationEffect && duration ) { + self.$refs.container.css( 'transition-duration', duration + 'ms' ); + } + + self.$refs.container.removeClass( 'fancybox-is-hidden' ); + + forceRedraw( self.$refs.container ); + + self.$refs.container.addClass( 'fancybox-is-open' ); + + // Make first slide visible (to display loading icon, if needed) + current.$slide.addClass( 'fancybox-slide--current' ); + + self.loadSlide( current ); + + self.preload(); + + return; + } + + // Clean up + $.each(self.slides, function( index, slide ) { + $.fancybox.stop( slide.$slide ); + }); + + // Make current that slide is visible even if content is still loading + current.$slide.removeClass( 'fancybox-slide--next fancybox-slide--previous' ).addClass( 'fancybox-slide--current' ); + + // If slides have been dragged, animate them to correct position + if ( current.isMoved ) { + canvasWidth = Math.round( current.$slide.width() ); + + $.each(self.slides, function( index, slide ) { + var pos = slide.pos - current.pos; + + $.fancybox.animate( slide.$slide, { + top : 0, + left : ( pos * canvasWidth ) + ( pos * slide.opts.gutter ) + }, duration, function() { + + slide.$slide.removeAttr('style').removeClass( 'fancybox-slide--next fancybox-slide--previous' ); + + if ( slide.pos === self.currPos ) { + current.isMoved = false; + + self.complete(); + } + }); + }); + + } else { + self.$refs.stage.children().removeAttr( 'style' ); + } + + // Start transition that reveals current content + // or wait when it will be loaded + + if ( current.isLoaded ) { + self.revealContent( current ); + + } else { + self.loadSlide( current ); + } + + self.preload(); + + if ( previous.pos === current.pos ) { + return; + } + + // Handle previous slide + // ===================== + + transitionProps = 'fancybox-slide--' + ( previous.pos > current.pos ? 'next' : 'previous' ); + + previous.$slide.removeClass( 'fancybox-slide--complete fancybox-slide--current fancybox-slide--next fancybox-slide--previous' ); + + previous.isComplete = false; + + if ( !duration || ( !current.isMoved && !current.opts.transitionEffect ) ) { + return; + } + + if ( current.isMoved ) { + previous.$slide.addClass( transitionProps ); + + } else { + + transitionProps = 'fancybox-animated ' + transitionProps + ' fancybox-fx-' + current.opts.transitionEffect; + + $.fancybox.animate( previous.$slide, transitionProps, duration, function() { + previous.$slide.removeClass( transitionProps ).removeAttr( 'style' ); + }); + + } + + }, + + + // Create new "slide" element + // These are gallery items that are actually added to DOM + // ======================================================= + + createSlide : function( pos ) { + + var self = this; + var $slide; + var index; + + index = pos % self.group.length; + index = index < 0 ? self.group.length + index : index; + + if ( !self.slides[ pos ] && self.group[ index ] ) { + $slide = $('
      ').appendTo( self.$refs.stage ); + + self.slides[ pos ] = $.extend( true, {}, self.group[ index ], { + pos : pos, + $slide : $slide, + isLoaded : false, + }); + + self.updateSlide( self.slides[ pos ] ); + } + + return self.slides[ pos ]; + }, + + + // Scale image to the actual size of the image + // =========================================== + + scaleToActual : function( x, y, duration ) { + + var self = this; + + var current = self.current; + var $what = current.$content; + + var imgPos, posX, posY, scaleX, scaleY; + + var canvasWidth = parseInt( current.$slide.width(), 10 ); + var canvasHeight = parseInt( current.$slide.height(), 10 ); + + var newImgWidth = current.width; + var newImgHeight = current.height; + + if ( !( current.type == 'image' && !current.hasError) || !$what || self.isAnimating ) { + return; + } + + $.fancybox.stop( $what ); + + self.isAnimating = true; + + x = x === undefined ? canvasWidth * 0.5 : x; + y = y === undefined ? canvasHeight * 0.5 : y; + + imgPos = $.fancybox.getTranslate( $what ); + + scaleX = newImgWidth / imgPos.width; + scaleY = newImgHeight / imgPos.height; + + // Get center position for original image + posX = ( canvasWidth * 0.5 - newImgWidth * 0.5 ); + posY = ( canvasHeight * 0.5 - newImgHeight * 0.5 ); + + // Make sure image does not move away from edges + if ( newImgWidth > canvasWidth ) { + posX = imgPos.left * scaleX - ( ( x * scaleX ) - x ); + + if ( posX > 0 ) { + posX = 0; + } + + if ( posX < canvasWidth - newImgWidth ) { + posX = canvasWidth - newImgWidth; + } + } + + if ( newImgHeight > canvasHeight) { + posY = imgPos.top * scaleY - ( ( y * scaleY ) - y ); + + if ( posY > 0 ) { + posY = 0; + } + + if ( posY < canvasHeight - newImgHeight ) { + posY = canvasHeight - newImgHeight; + } + } + + self.updateCursor( newImgWidth, newImgHeight ); + + $.fancybox.animate( $what, { + top : posY, + left : posX, + scaleX : scaleX, + scaleY : scaleY + }, duration || 330, function() { + self.isAnimating = false; + }); + + // Stop slideshow + if ( self.SlideShow && self.SlideShow.isActive ) { + self.SlideShow.stop(); + } + }, + + + // Scale image to fit inside parent element + // ======================================== + + scaleToFit : function( duration ) { + + var self = this; + + var current = self.current; + var $what = current.$content; + var end; + + if ( !( current.type == 'image' && !current.hasError) || !$what || self.isAnimating ) { + return; + } + + $.fancybox.stop( $what ); + + self.isAnimating = true; + + end = self.getFitPos( current ); + + self.updateCursor( end.width, end.height ); + + $.fancybox.animate( $what, { + top : end.top, + left : end.left, + scaleX : end.width / $what.width(), + scaleY : end.height / $what.height() + }, duration || 330, function() { + self.isAnimating = false; + }); + + }, + + // Calculate image size to fit inside viewport + // =========================================== + + getFitPos : function( slide ) { + var self = this; + var $what = slide.$content; + + var imgWidth = slide.width; + var imgHeight = slide.height; + + var margin = slide.opts.margin; + + var canvasWidth, canvasHeight, minRatio, width, height; + + if ( !$what || !$what.length || ( !imgWidth && !imgHeight) ) { + return false; + } + + // Convert "margin to CSS style: [ top, right, bottom, left ] + if ( $.type( margin ) === "number" ) { + margin = [ margin, margin ]; + } + + if ( margin.length == 2 ) { + margin = [ margin[0], margin[1], margin[0], margin[1] ]; + } + + // We can not use $slide width here, because it can have different diemensions while in transiton + canvasWidth = parseInt( self.$refs.stage.width(), 10 ) - ( margin[ 1 ] + margin[ 3 ] ); + canvasHeight = parseInt( self.$refs.stage.height(), 10 ) - ( margin[ 0 ] + margin[ 2 ] ); + + minRatio = Math.min(1, canvasWidth / imgWidth, canvasHeight / imgHeight ); + + width = Math.floor( minRatio * imgWidth ); + height = Math.floor( minRatio * imgHeight ); + + // Use floor rounding to make sure it really fits + return { + top : Math.floor( ( canvasHeight - height ) * 0.5 ) + margin[ 0 ], + left : Math.floor( ( canvasWidth - width ) * 0.5 ) + margin[ 3 ], + width : width, + height : height + }; + + }, + + + // Update position and content of all slides + // ========================================= + + update : function() { + + var self = this; + + $.each( self.slides, function( key, slide ) { + self.updateSlide( slide ); + }); + + }, + + + // Update slide position and scale content to fit + // ============================================== + + updateSlide : function( slide ) { + + var self = this; + var $what = slide.$content; + + if ( $what && ( slide.width || slide.height ) ) { + self.isAnimating = false; + + $.fancybox.stop( $what ); + + $.fancybox.setTranslate( $what, self.getFitPos( slide ) ); + + if ( slide.pos === self.currPos ) { + self.updateCursor(); + } + } + + slide.$slide.trigger( 'refresh' ); + + self.trigger( 'onUpdate', slide ); + + }, + + // Update cursor style depending if content can be zoomed + // ====================================================== + + updateCursor : function( nextWidth, nextHeight ) { + + var self = this; + var isScaledDown; + + var $container = self.$refs.container.removeClass( 'fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-drag fancybox-can-zoomOut' ); + + if ( !self.current || self.isClosing ) { + return; + } + + if ( self.isZoomable() ) { + + $container.addClass( 'fancybox-is-zoomable' ); + + if ( nextWidth !== undefined && nextHeight !== undefined ) { + isScaledDown = nextWidth < self.current.width && nextHeight < self.current.height; + + } else { + isScaledDown = self.isScaledDown(); + } + + if ( isScaledDown ) { + + // If image is scaled down, then, obviously, it can be zoomed to full size + $container.addClass( 'fancybox-can-zoomIn' ); + + } else { + + if ( self.current.opts.touch ) { + + // If image size ir largen than available available and touch module is not disable, + // then user can do panning + $container.addClass( 'fancybox-can-drag' ); + + } else { + $container.addClass( 'fancybox-can-zoomOut' ); + } + + } + + } else if ( self.current.opts.touch ) { + $container.addClass( 'fancybox-can-drag' ); + } + + }, + + + // Check if current slide is zoomable + // ================================== + + isZoomable : function() { + + var self = this; + + var current = self.current; + var fitPos; + + if ( !current || self.isClosing ) { + return; + } + + // Assume that slide is zoomable if + // - image is loaded successfuly + // - click action is "zoom" + // - actual size of the image is smaller than available area + if ( current.type === 'image' && current.isLoaded && !current.hasError && + ( current.opts.clickContent === 'zoom' || ( $.isFunction( current.opts.clickContent ) && current.opts.clickContent( current ) === "zoom" ) ) + ) { + + fitPos = self.getFitPos( current ); + + if ( current.width > fitPos.width || current.height > fitPos.height ) { + return true; + } + + } + + return false; + + }, + + + // Check if current image dimensions are smaller than actual + // ========================================================= + + isScaledDown : function() { + + var self = this; + + var current = self.current; + var $what = current.$content; + + var rez = false; + + if ( $what ) { + rez = $.fancybox.getTranslate( $what ); + rez = rez.width < current.width || rez.height < current.height; + } + + return rez; + + }, + + + // Check if image dimensions exceed parent element + // =============================================== + + canPan : function() { + + var self = this; + + var current = self.current; + var $what = current.$content; + + var rez = false; + + if ( $what ) { + rez = self.getFitPos( current ); + rez = Math.abs( $what.width() - rez.width ) > 1 || Math.abs( $what.height() - rez.height ) > 1; + + } + + return rez; + + }, + + + // Load content into the slide + // =========================== + + loadSlide : function( slide ) { + + var self = this, type, $slide; + var ajaxLoad; + + if ( slide.isLoading ) { + return; + } + + if ( slide.isLoaded ) { + return; + } + + slide.isLoading = true; + + self.trigger( 'beforeLoad', slide ); + + type = slide.type; + $slide = slide.$slide; + + $slide + .off( 'refresh' ) + .trigger( 'onReset' ) + .addClass( 'fancybox-slide--' + ( type || 'unknown' ) ) + .addClass( slide.opts.slideClass ); + + // Create content depending on the type + + switch ( type ) { + + case 'image': + + self.setImage( slide ); + + break; + + case 'iframe': + + self.setIframe( slide ); + + break; + + case 'html': + + self.setContent( slide, slide.src || slide.content ); + + break; + + case 'inline': + + if ( $( slide.src ).length ) { + self.setContent( slide, $( slide.src ) ); + + } else { + self.setError( slide ); + } + + break; + + case 'ajax': + + self.showLoading( slide ); + + ajaxLoad = $.ajax( $.extend( {}, slide.opts.ajax.settings, { + url : slide.src, + success : function ( data, textStatus ) { + + if ( textStatus === 'success' ) { + self.setContent( slide, data ); + } + + }, + error : function ( jqXHR, textStatus ) { + + if ( jqXHR && textStatus !== 'abort' ) { + self.setError( slide ); + } + + } + })); + + $slide.one( 'onReset', function () { + ajaxLoad.abort(); + }); + + break; + + default: + + self.setError( slide ); + + break; + + } + + return true; + + }, + + + // Use thumbnail image, if possible + // ================================ + + setImage : function( slide ) { + + var self = this; + var srcset = slide.opts.srcset || slide.opts.image.srcset; + + var found, temp, pxRatio, windowWidth; + + // If we have "srcset", then we need to find matching "src" value. + // This is necessary, because when you set an src attribute, the browser will preload the image + // before any javascript or even CSS is applied. + if ( srcset ) { + pxRatio = window.devicePixelRatio || 1; + windowWidth = window.innerWidth * pxRatio; + + temp = srcset.split(',').map(function ( el ) { + var ret = {}; + + el.trim().split(/\s+/).forEach(function ( el, i ) { + var value = parseInt( el.substring(0, el.length - 1), 10 ); + + if ( i === 0 ) { + return ( ret.url = el ); + } + + if ( value ) { + ret.value = value; + ret.postfix = el[ el.length - 1 ]; + } + + }); + + return ret; + }); + + // Sort by value + temp.sort(function (a, b) { + return a.value - b.value; + }); + + // Ok, now we have an array of all srcset values + for ( var j = 0; j < temp.length; j++ ) { + var el = temp[ j ]; + + if ( ( el.postfix === 'w' && el.value >= windowWidth ) || ( el.postfix === 'x' && el.value >= pxRatio ) ) { + found = el; + break; + } + } + + // If not found, take the last one + if ( !found && temp.length ) { + found = temp[ temp.length - 1 ]; + } + + if ( found ) { + slide.src = found.url; + + // If we have default width/height values, we can calculate height for matching source + if ( slide.width && slide.height && found.postfix == 'w' ) { + slide.height = ( slide.width / slide.height ) * found.value; + slide.width = found.value; + } + } + } + + // This will be wrapper containing both ghost and actual image + slide.$content = $('
      ') + .addClass( 'fancybox-is-hidden' ) + .appendTo( slide.$slide ); + + + // If we have a thumbnail, we can display it while actual image is loading + // Users will not stare at black screen and actual image will appear gradually + if ( slide.opts.preload !== false && slide.opts.width && slide.opts.height && ( slide.opts.thumb || slide.opts.$thumb ) ) { + + slide.width = slide.opts.width; + slide.height = slide.opts.height; + + slide.$ghost = $('') + .one('error', function() { + + $(this).remove(); + + slide.$ghost = null; + + self.setBigImage( slide ); + + }) + .one('load', function() { + + self.afterLoad( slide ); + + self.setBigImage( slide ); + + }) + .addClass( 'fancybox-image' ) + .appendTo( slide.$content ) + .attr( 'src', slide.opts.thumb || slide.opts.$thumb.attr( 'src' ) ); + + } else { + + self.setBigImage( slide ); + + } + + }, + + + // Create full-size image + // ====================== + + setBigImage : function ( slide ) { + var self = this; + var $img = $(''); + + slide.$image = $img + .one('error', function() { + + self.setError( slide ); + + }) + .one('load', function() { + + // Clear timeout that checks if loading icon needs to be displayed + clearTimeout( slide.timouts ); + + slide.timouts = null; + + if ( self.isClosing ) { + return; + } + + slide.width = this.naturalWidth; + slide.height = this.naturalHeight; + + if ( slide.opts.image.srcset ) { + $img.attr( 'sizes', '100vw' ).attr( 'srcset', slide.opts.image.srcset ); + } + + self.hideLoading( slide ); + + if ( slide.$ghost ) { + + slide.timouts = setTimeout(function() { + slide.timouts = null; + + slide.$ghost.hide(); + + }, Math.min( 300, Math.max( 1000, slide.height / 1600 ) ) ); + + } else { + self.afterLoad( slide ); + } + + }) + .addClass( 'fancybox-image' ) + .attr('src', slide.src) + .appendTo( slide.$content ); + + if ( ( $img[0].complete || $img[0].readyState == "complete" ) && $img[0].naturalWidth && $img[0].naturalHeight ) { + $img.trigger( 'load' ); + + } else if( $img[0].error ) { + $img.trigger( 'error' ); + + } else { + + slide.timouts = setTimeout(function() { + if ( !$img[0].complete && !slide.hasError ) { + self.showLoading( slide ); + } + + }, 100); + + } + + }, + + + // Create iframe wrapper, iframe and bindings + // ========================================== + + setIframe : function( slide ) { + var self = this, + opts = slide.opts.iframe, + $slide = slide.$slide, + $iframe; + + slide.$content = $('
      ') + .css( opts.css ) + .appendTo( $slide ); + + $iframe = $( opts.tpl.replace(/\{rnd\}/g, new Date().getTime()) ) + .attr( opts.attr ) + .appendTo( slide.$content ); + + if ( opts.preload ) { + + self.showLoading( slide ); + + // Unfortunately, it is not always possible to determine if iframe is successfully loaded + // (due to browser security policy) + + $iframe.on('load.fb error.fb', function(e) { + this.isReady = 1; + + slide.$slide.trigger( 'refresh' ); + + self.afterLoad( slide ); + }); + + // Recalculate iframe content size + // =============================== + + $slide.on('refresh.fb', function() { + var $wrap = slide.$content, + frameWidth = opts.css.width, + frameHeight = opts.css.height, + scrollWidth, + $contents, + $body; + + if ( $iframe[0].isReady !== 1 ) { + return; + } + + // Check if content is accessible, + // it will fail if frame is not with the same origin + + try { + $contents = $iframe.contents(); + $body = $contents.find('body'); + + } catch (ignore) {} + + // Calculate dimensions for the wrapper + if ( $body && $body.length ) { + + if ( frameWidth === undefined ) { + scrollWidth = $iframe[0].contentWindow.document.documentElement.scrollWidth; + + frameWidth = Math.ceil( $body.outerWidth(true) + ( $wrap.width() - scrollWidth ) ); + frameWidth += $wrap.outerWidth() - $wrap.innerWidth(); + } + + if ( frameHeight === undefined ) { + frameHeight = Math.ceil( $body.outerHeight(true) ); + frameHeight += $wrap.outerHeight() - $wrap.innerHeight(); + } + + // Resize wrapper to fit iframe content + if ( frameWidth ) { + $wrap.width( frameWidth ); + } + + if ( frameHeight ) { + $wrap.height( frameHeight ); + } + } + + $wrap.removeClass( 'fancybox-is-hidden' ); + + }); + + } else { + + this.afterLoad( slide ); + + } + + $iframe.attr( 'src', slide.src ); + + if ( slide.opts.smallBtn === true ) { + slide.$content.prepend( self.translate( slide, slide.opts.btnTpl.smallBtn ) ); + } + + // Remove iframe if closing or changing gallery item + $slide.one( 'onReset', function () { + + // This helps IE not to throw errors when closing + try { + + $( this ).find( 'iframe' ).hide().attr( 'src', '//about:blank' ); + + } catch ( ignore ) {} + + $( this ).empty(); + + slide.isLoaded = false; + + }); + + }, + + + // Wrap and append content to the slide + // ====================================== + + setContent : function ( slide, content ) { + + var self = this; + + if ( self.isClosing ) { + return; + } + + self.hideLoading( slide ); + + slide.$slide.empty(); + + if ( isQuery( content ) && content.parent().length ) { + + // If content is a jQuery object, then it will be moved to the slide. + // The placeholder is created so we will know where to put it back. + // If user is navigating gallery fast, then the content might be already inside fancyBox + // ===================================================================================== + + // Make sure content is not already moved to fancyBox + content.parent( '.fancybox-slide--inline' ).trigger( 'onReset' ); + + // Create temporary element marking original place of the content + slide.$placeholder = $( '
      ' ).hide().insertAfter( content ); + + // Make sure content is visible + content.css('display', 'inline-block'); + + } else if ( !slide.hasError ) { + + // If content is just a plain text, try to convert it to html + if ( $.type( content ) === 'string' ) { + content = $('
      ').append( $.trim( content ) ).contents(); + + // If we have text node, then add wrapping element to make vertical alignment work + if ( content[0].nodeType === 3 ) { + content = $('
      ').html( content ); + } + } + + // If "filter" option is provided, then filter content + if ( slide.opts.filter ) { + content = $('
      ').html( content ).find( slide.opts.filter ); + } + + } + + slide.$slide.one('onReset', function () { + + // Put content back + if ( slide.$placeholder ) { + slide.$placeholder.after( content.hide() ).remove(); + + slide.$placeholder = null; + } + + // Remove custom close button + if ( slide.$smallBtn ) { + slide.$smallBtn.remove(); + + slide.$smallBtn = null; + } + + // Remove content and mark slide as not loaded + if ( !slide.hasError ) { + $(this).empty(); + + slide.isLoaded = false; + } + + }); + + slide.$content = $( content ).appendTo( slide.$slide ); + + this.afterLoad( slide ); + }, + + // Display error message + // ===================== + + setError : function ( slide ) { + + slide.hasError = true; + + slide.$slide.removeClass( 'fancybox-slide--' + slide.type ); + + this.setContent( slide, this.translate( slide, slide.opts.errorTpl ) ); + + }, + + + // Show loading icon inside the slide + // ================================== + + showLoading : function( slide ) { + + var self = this; + + slide = slide || self.current; + + if ( slide && !slide.$spinner ) { + slide.$spinner = $( self.opts.spinnerTpl ).appendTo( slide.$slide ); + } + + }, + + // Remove loading icon from the slide + // ================================== + + hideLoading : function( slide ) { + + var self = this; + + slide = slide || self.current; + + if ( slide && slide.$spinner ) { + slide.$spinner.remove(); + + delete slide.$spinner; + } + + }, + + + // Adjustments after slide content has been loaded + // =============================================== + + afterLoad : function( slide ) { + + var self = this; + + if ( self.isClosing ) { + return; + } + + slide.isLoading = false; + slide.isLoaded = true; + + self.trigger( 'afterLoad', slide ); + + self.hideLoading( slide ); + + if ( slide.opts.smallBtn && !slide.$smallBtn ) { + slide.$smallBtn = $( self.translate( slide, slide.opts.btnTpl.smallBtn ) ).appendTo( slide.$content.filter('div,form').first() ); + } + + if ( slide.opts.protect && slide.$content && !slide.hasError ) { + + // Disable right click + slide.$content.on( 'contextmenu.fb', function( e ) { + if ( e.button == 2 ) { + e.preventDefault(); + } + + return true; + }); + + // Add fake element on top of the image + // This makes a bit harder for user to select image + if ( slide.type === 'image' ) { + $( '
      ' ).appendTo( slide.$content ); + } + + } + + self.revealContent( slide ); + + }, + + + // Make content visible + // This method is called right after content has been loaded or + // user navigates gallery and transition should start + // ============================================================ + + revealContent : function( slide ) { + + var self = this; + var $slide = slide.$slide; + + var effect, effectClassName, duration, opacity, end, start = false; + + effect = slide.opts[ self.firstRun ? 'animationEffect' : 'transitionEffect' ]; + duration = slide.opts[ self.firstRun ? 'animationDuration' : 'transitionDuration' ]; + + duration = parseInt( slide.forcedDuration === undefined ? duration : slide.forcedDuration, 10 ); + + if ( slide.isMoved || slide.pos !== self.currPos || !duration ) { + effect = false; + } + + // Check if can zoom + if ( effect === 'zoom' && !( slide.pos === self.currPos && duration && slide.type === 'image' && !slide.hasError && ( start = self.getThumbPos( slide ) ) ) ) { + effect = 'fade'; + } + + // Zoom animation + // ============== + + if ( effect === 'zoom' ) { + end = self.getFitPos( slide ); + + end.scaleX = end.width / start.width; + end.scaleY = end.height / start.height; + + delete end.width; + delete end.height; + + // Check if we need to animate opacity + opacity = slide.opts.zoomOpacity; + + if ( opacity == 'auto' ) { + opacity = Math.abs( slide.width / slide.height - start.width / start.height ) > 0.1; + } + + if ( opacity ) { + start.opacity = 0.1; + end.opacity = 1; + } + + // Draw image at start position + $.fancybox.setTranslate( slide.$content.removeClass( 'fancybox-is-hidden' ), start ); + + forceRedraw( slide.$content ); + + // Start animation + $.fancybox.animate( slide.$content, end, duration, function() { + self.complete(); + }); + + return; + } + + self.updateSlide( slide ); + + + // Simply show content + // =================== + + if ( !effect ) { + forceRedraw( $slide ); + + slide.$content.removeClass( 'fancybox-is-hidden' ); + + if ( slide.pos === self.currPos ) { + self.complete(); + } + + return; + } + + $.fancybox.stop( $slide ); + + effectClassName = 'fancybox-animated fancybox-slide--' + ( slide.pos >= self.prevPos ? 'next' : 'previous' ) + ' fancybox-fx-' + effect; + + $slide.removeAttr( 'style' ).removeClass( 'fancybox-slide--current fancybox-slide--next fancybox-slide--previous' ).addClass( effectClassName ); + + slide.$content.removeClass( 'fancybox-is-hidden' ); + + //Force reflow for CSS3 transitions + forceRedraw( $slide ); + + $.fancybox.animate( $slide, 'fancybox-slide--current', duration, function(e) { + $slide.removeClass( effectClassName ).removeAttr( 'style' ); + + if ( slide.pos === self.currPos ) { + self.complete(); + } + + }, true); + + }, + + + // Check if we can and have to zoom from thumbnail + //================================================ + + getThumbPos : function( slide ) { + + var self = this; + var rez = false; + + // Check if element is inside the viewport by at least 1 pixel + var isElementVisible = function( $el ) { + var element = $el[0]; + + var elementRect = element.getBoundingClientRect(); + var parentRects = []; + + var visibleInAllParents; + + while ( element.parentElement !== null ) { + if ( $(element.parentElement).css('overflow') === 'hidden' || $(element.parentElement).css('overflow') === 'auto' ) { + parentRects.push(element.parentElement.getBoundingClientRect()); + } + + element = element.parentElement; + } + + visibleInAllParents = parentRects.every(function(parentRect){ + var visiblePixelX = Math.min(elementRect.right, parentRect.right) - Math.max(elementRect.left, parentRect.left); + var visiblePixelY = Math.min(elementRect.bottom, parentRect.bottom) - Math.max(elementRect.top, parentRect.top); + + return visiblePixelX > 0 && visiblePixelY > 0; + }); + + return visibleInAllParents && + elementRect.bottom > 0 && elementRect.right > 0 && + elementRect.left < $(window).width() && elementRect.top < $(window).height(); + }; + + var $thumb = slide.opts.$thumb; + var thumbPos = $thumb ? $thumb.offset() : 0; + var slidePos; + + if ( thumbPos && $thumb[0].ownerDocument === document && isElementVisible( $thumb ) ) { + slidePos = self.$refs.stage.offset(); + + rez = { + top : thumbPos.top - slidePos.top + parseFloat( $thumb.css( "border-top-width" ) || 0 ), + left : thumbPos.left - slidePos.left + parseFloat( $thumb.css( "border-left-width" ) || 0 ), + width : $thumb.width(), + height : $thumb.height(), + scaleX : 1, + scaleY : 1 + }; + } + + return rez; + }, + + + // Final adjustments after current gallery item is moved to position + // and it`s content is loaded + // ================================================================== + + complete : function() { + + var self = this; + + var current = self.current; + var slides = {}; + + if ( current.isMoved || !current.isLoaded || current.isComplete ) { + return; + } + + current.isComplete = true; + + current.$slide.siblings().trigger( 'onReset' ); + + // Trigger any CSS3 transiton inside the slide + forceRedraw( current.$slide ); + + current.$slide.addClass( 'fancybox-slide--complete' ); + + // Remove unnecessary slides + $.each( self.slides, function( key, slide ) { + if ( slide.pos >= self.currPos - 1 && slide.pos <= self.currPos + 1 ) { + slides[ slide.pos ] = slide; + + } else if ( slide ) { + + $.fancybox.stop( slide.$slide ); + + slide.$slide.off().remove(); + } + }); + + self.slides = slides; + + self.updateCursor(); + + self.trigger( 'afterShow' ); + + // Try to focus on the first focusable element + if ( $( document.activeElement ).is( '[disabled]' ) || ( current.opts.autoFocus && !( current.type == 'image' || current.type === 'iframe' ) ) ) { + self.focus(); + } + + }, + + + // Preload next and previous slides + // ================================ + + preload : function() { + var self = this; + var next, prev; + + if ( self.group.length < 2 ) { + return; + } + + next = self.slides[ self.currPos + 1 ]; + prev = self.slides[ self.currPos - 1 ]; + + if ( next && next.type === 'image' ) { + self.loadSlide( next ); + } + + if ( prev && prev.type === 'image' ) { + self.loadSlide( prev ); + } + + }, + + + // Try to find and focus on the first focusable element + // ==================================================== + + focus : function() { + var current = this.current; + var $el; + + if ( this.isClosing ) { + return; + } + + if ( current && current.isComplete ) { + + // Look for first input with autofocus attribute + $el = current.$slide.find('input[autofocus]:enabled:visible:first'); + + if ( !$el.length ) { + $el = current.$slide.find('button,:input,[tabindex],a').filter(':enabled:visible:first'); + } + } + + $el = $el && $el.length ? $el : this.$refs.container; + + $el.focus(); + }, + + + // Activates current instance - brings container to the front and enables keyboard, + // notifies other instances about deactivating + // ================================================================================= + + activate : function () { + var self = this; + + // Deactivate all instances + $( '.fancybox-container' ).each(function () { + var instance = $(this).data( 'FancyBox' ); + + // Skip self and closing instances + if (instance && instance.id !== self.id && !instance.isClosing) { + instance.trigger( 'onDeactivate' ); + + instance.removeEvents(); + + instance.isVisible = false; + } + + }); + + self.isVisible = true; + + if ( self.current || self.isIdle ) { + self.update(); + + self.updateControls(); + } + + self.trigger( 'onActivate' ); + + self.addEvents(); + }, + + + // Start closing procedure + // This will start "zoom-out" animation if needed and clean everything up afterwards + // ================================================================================= + + close : function( e, d ) { + + var self = this; + var current = self.current; + + var effect, duration; + var $what, opacity, start, end; + + var done = function() { + self.cleanUp( e ); + }; + + if ( self.isClosing ) { + return false; + } + + self.isClosing = true; + + // If beforeClose callback prevents closing, make sure content is centered + if ( self.trigger( 'beforeClose', e ) === false ) { + self.isClosing = false; + + requestAFrame(function() { + self.update(); + }); + + return false; + } + + // Remove all events + // If there are multiple instances, they will be set again by "activate" method + self.removeEvents(); + + if ( current.timouts ) { + clearTimeout( current.timouts ); + } + + $what = current.$content; + effect = current.opts.animationEffect; + duration = $.isNumeric( d ) ? d : ( effect ? current.opts.animationDuration : 0 ); + + // Remove other slides + current.$slide.off( transitionEnd ).removeClass( 'fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated' ); + + current.$slide.siblings().trigger( 'onReset' ).remove(); + + // Trigger animations + if ( duration ) { + self.$refs.container.removeClass( 'fancybox-is-open' ).addClass( 'fancybox-is-closing' ); + } + + // Clean up + self.hideLoading( current ); + + self.hideControls(); + + self.updateCursor(); + + // Check if possible to zoom-out + if ( effect === 'zoom' && !( e !== true && $what && duration && current.type === 'image' && !current.hasError && ( end = self.getThumbPos( current ) ) ) ) { + effect = 'fade'; + } + + if ( effect === 'zoom' ) { + $.fancybox.stop( $what ); + + start = $.fancybox.getTranslate( $what ); + + start.width = start.width * start.scaleX; + start.height = start.height * start.scaleY; + + // Check if we need to animate opacity + opacity = current.opts.zoomOpacity; + + if ( opacity == 'auto' ) { + opacity = Math.abs( current.width / current.height - end.width / end.height ) > 0.1; + } + + if ( opacity ) { + end.opacity = 0; + } + + start.scaleX = start.width / end.width; + start.scaleY = start.height / end.height; + + start.width = end.width; + start.height = end.height; + + $.fancybox.setTranslate( current.$content, start ); + + forceRedraw( current.$content ); + + $.fancybox.animate( current.$content, end, duration, done ); + + return true; + } + + if ( effect && duration ) { + + // If skip animation + if ( e === true ) { + setTimeout( done, duration ); + + } else { + $.fancybox.animate( current.$slide.removeClass( 'fancybox-slide--current' ), 'fancybox-animated fancybox-slide--previous fancybox-fx-' + effect, duration, done ); + } + + } else { + done(); + } + + return true; + }, + + + // Final adjustments after removing the instance + // ============================================= + + cleanUp : function( e ) { + var self = this, + $body = $( 'body' ), + instance, + offset; + + self.current.$slide.trigger( 'onReset' ); + + self.$refs.container.empty().remove(); + + self.trigger( 'afterClose', e ); + + // Place back focus + if ( self.$lastFocus && !!self.current.opts.backFocus ) { + self.$lastFocus.focus(); + } + + self.current = null; + + // Check if there are other instances + instance = $.fancybox.getInstance(); + + if ( instance ) { + instance.activate(); + + } else { + + $W.scrollTop( self.scrollTop ).scrollLeft( self.scrollLeft ); + + $body.removeClass( 'fancybox-active compensate-for-scrollbar' ); + + if ( $body.hasClass( 'fancybox-iosfix' ) ) { + offset = parseInt(document.body.style.top, 10); + + $body.removeClass( 'fancybox-iosfix' ).css( 'top', '' ).scrollTop( offset * -1 ); + } + + $( '#fancybox-style-noscroll' ).remove(); + + } + + }, + + + // Call callback and trigger an event + // ================================== + + trigger : function( name, slide ) { + var args = Array.prototype.slice.call(arguments, 1), + self = this, + obj = slide && slide.opts ? slide : self.current, + rez; + + if ( obj ) { + args.unshift( obj ); + + } else { + obj = self; + } + + args.unshift( self ); + + if ( $.isFunction( obj.opts[ name ] ) ) { + rez = obj.opts[ name ].apply( obj, args ); + } + + if ( rez === false ) { + return rez; + } + + if ( name === 'afterClose' || !self.$refs ) { + $D.trigger( name + '.fb', args ); + + } else { + self.$refs.container.trigger( name + '.fb', args ); + } + + }, + + + // Update infobar values, navigation button states and reveal caption + // ================================================================== + + updateControls : function ( force ) { + + var self = this; + + var current = self.current, + index = current.index, + caption = current.opts.caption, + $container = self.$refs.container, + $caption = self.$refs.caption; + + // Recalculate content dimensions + current.$slide.trigger( 'refresh' ); + + self.$caption = caption && caption.length ? $caption.html( caption ) : null; + + if ( !self.isHiddenControls && !self.isIdle ) { + self.showControls(); + } + + // Update info and navigation elements + $container.find('[data-fancybox-count]').html( self.group.length ); + $container.find('[data-fancybox-index]').html( index + 1 ); + + $container.find('[data-fancybox-prev]').prop( 'disabled', ( !current.opts.loop && index <= 0 ) ); + $container.find('[data-fancybox-next]').prop( 'disabled', ( !current.opts.loop && index >= self.group.length - 1 ) ); + + if ( current.type === 'image' ) { + + // Update download button source + $container.find('[data-fancybox-download]').attr( 'href', current.opts.image.src || current.src ).show(); + + } else { + $container.find('[data-fancybox-download],[data-fancybox-zoom]').hide(); + } + }, + + // Hide toolbar and caption + // ======================== + + hideControls : function () { + + this.isHiddenControls = true; + + this.$refs.container.removeClass( 'fancybox-show-infobar fancybox-show-toolbar fancybox-show-caption fancybox-show-nav' ); + + }, + + showControls : function() { + var self = this; + var opts = self.current ? self.current.opts : self.opts; + var $container = self.$refs.container; + + self.isHiddenControls = false; + self.idleSecondsCounter = 0; + + $container + .toggleClass( 'fancybox-show-toolbar', !!( opts.toolbar && opts.buttons ) ) + .toggleClass( 'fancybox-show-infobar', !!( opts.infobar && self.group.length > 1 ) ) + .toggleClass( 'fancybox-show-nav', !!( opts.arrows && self.group.length > 1 ) ) + .toggleClass( 'fancybox-is-modal', !!opts.modal ); + + if ( self.$caption ) { + $container.addClass( 'fancybox-show-caption '); + + } else { + $container.removeClass( 'fancybox-show-caption' ); + } + + }, + + + // Toggle toolbar and caption + // ========================== + + toggleControls : function() { + if ( this.isHiddenControls ) { + this.showControls(); + + } else { + this.hideControls(); + } + + }, + + + }); + + + $.fancybox = { + + version : "3.2.5", + defaults : defaults, + + + // Get current instance and execute a command. + // + // Examples of usage: + // + // $instance = $.fancybox.getInstance(); + // $.fancybox.getInstance().jumpTo( 1 ); + // $.fancybox.getInstance( 'jumpTo', 1 ); + // $.fancybox.getInstance( function() { + // console.info( this.currIndex ); + // }); + // ====================================================== + + getInstance : function ( command ) { + var instance = $('.fancybox-container:not(".fancybox-is-closing"):last').data( 'FancyBox' ); + var args = Array.prototype.slice.call(arguments, 1); + + if ( instance instanceof FancyBox ) { + + if ( $.type( command ) === 'string' ) { + instance[ command ].apply( instance, args ); + + } else if ( $.type( command ) === 'function' ) { + command.apply( instance, args ); + } + + return instance; + } + + return false; + + }, + + + // Create new instance + // =================== + + open : function ( items, opts, index ) { + return new FancyBox( items, opts, index ); + }, + + + // Close current or all instances + // ============================== + + close : function ( all ) { + var instance = this.getInstance(); + + if ( instance ) { + instance.close(); + + // Try to find and close next instance + + if ( all === true ) { + this.close(); + } + } + + }, + + // Close instances and unbind all events + // ============================== + + destroy : function() { + + this.close( true ); + + $D.off( 'click.fb-start' ); + + }, + + + // Try to detect mobile devices + // ============================ + + isMobile : document.createTouch !== undefined && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), + + + // Detect if 'translate3d' support is available + // ============================================ + + use3d : (function() { + var div = document.createElement('div'); + + return window.getComputedStyle && window.getComputedStyle( div ).getPropertyValue('transform') && !(document.documentMode && document.documentMode < 11); + }()), + + // Helper function to get current visual state of an element + // returns array[ top, left, horizontal-scale, vertical-scale, opacity ] + // ===================================================================== + + getTranslate : function( $el ) { + var matrix; + + if ( !$el || !$el.length ) { + return false; + } + + matrix = $el.eq( 0 ).css('transform'); + + if ( matrix && matrix.indexOf( 'matrix' ) !== -1 ) { + matrix = matrix.split('(')[1]; + matrix = matrix.split(')')[0]; + matrix = matrix.split(','); + } else { + matrix = []; + } + + if ( matrix.length ) { + + // If IE + if ( matrix.length > 10 ) { + matrix = [ matrix[13], matrix[12], matrix[0], matrix[5] ]; + + } else { + matrix = [ matrix[5], matrix[4], matrix[0], matrix[3]]; + } + + matrix = matrix.map(parseFloat); + + } else { + matrix = [ 0, 0, 1, 1 ]; + + var transRegex = /\.*translate\((.*)px,(.*)px\)/i; + var transRez = transRegex.exec( $el.eq( 0 ).attr('style') ); + + if ( transRez ) { + matrix[ 0 ] = parseFloat( transRez[2] ); + matrix[ 1 ] = parseFloat( transRez[1] ); + } + } + + return { + top : matrix[ 0 ], + left : matrix[ 1 ], + scaleX : matrix[ 2 ], + scaleY : matrix[ 3 ], + opacity : parseFloat( $el.css('opacity') ), + width : $el.width(), + height : $el.height() + }; + + }, + + + // Shortcut for setting "translate3d" properties for element + // Can set be used to set opacity, too + // ======================================================== + + setTranslate : function( $el, props ) { + var str = ''; + var css = {}; + + if ( !$el || !props ) { + return; + } + + if ( props.left !== undefined || props.top !== undefined ) { + str = ( props.left === undefined ? $el.position().left : props.left ) + 'px, ' + ( props.top === undefined ? $el.position().top : props.top ) + 'px'; + + if ( this.use3d ) { + str = 'translate3d(' + str + ', 0px)'; + + } else { + str = 'translate(' + str + ')'; + } + } + + if ( props.scaleX !== undefined && props.scaleY !== undefined ) { + str = (str.length ? str + ' ' : '') + 'scale(' + props.scaleX + ', ' + props.scaleY + ')'; + } + + if ( str.length ) { + css.transform = str; + } + + if ( props.opacity !== undefined ) { + css.opacity = props.opacity; + } + + if ( props.width !== undefined ) { + css.width = props.width; + } + + if ( props.height !== undefined ) { + css.height = props.height; + } + + return $el.css( css ); + }, + + + // Simple CSS transition handler + // ============================= + + animate : function ( $el, to, duration, callback, leaveAnimationName ) { + if ( $.isFunction( duration ) ) { + callback = duration; + duration = null; + } + + if ( !$.isPlainObject( to ) ) { + $el.removeAttr('style'); + } + + $el.on( transitionEnd, function(e) { + + // Skip events from child elements and z-index change + if ( e && e.originalEvent && ( !$el.is( e.originalEvent.target ) || e.originalEvent.propertyName == 'z-index' ) ) { + return; + } + + $.fancybox.stop( $el ); + + if ( $.isPlainObject( to ) ) { + + if ( to.scaleX !== undefined && to.scaleY !== undefined ) { + $el.css( 'transition-duration', '' ); + + to.width = Math.round( $el.width() * to.scaleX ); + to.height = Math.round( $el.height() * to.scaleY ); + + to.scaleX = 1; + to.scaleY = 1; + + $.fancybox.setTranslate( $el, to ); + } + + } else if ( leaveAnimationName !== true ) { + $el.removeClass( to ); + } + + if ( $.isFunction( callback ) ) { + callback( e ); + } + + }); + + if ( $.isNumeric( duration ) ) { + $el.css( 'transition-duration', duration + 'ms' ); + } + + if ( $.isPlainObject( to ) ) { + $.fancybox.setTranslate( $el, to ); + + } else { + $el.addClass( to ); + } + + if ( to.scaleX && $el.hasClass( 'fancybox-image-wrap' ) ) { + $el.parent().addClass( 'fancybox-is-scaling' ); + } + + // Make sure that `transitionend` callback gets fired + $el.data("timer", setTimeout(function() { + $el.trigger( 'transitionend' ); + }, duration + 16)); + + }, + + stop : function( $el ) { + clearTimeout( $el.data("timer") ); + + $el.off( 'transitionend' ).css( 'transition-duration', '' ); + + if ( $el.hasClass( 'fancybox-image-wrap' ) ) { + $el.parent().removeClass( 'fancybox-is-scaling' ); + } + } + + }; + + + // Default click handler for "fancyboxed" links + // ============================================ + + function _run( e ) { + var $target = $( e.currentTarget ), + opts = e.data ? e.data.options : {}, + value = $target.attr( 'data-fancybox' ) || '', + index = 0, + items = []; + + // Avoid opening multiple times + if ( e.isDefaultPrevented() ) { + return; + } + + e.preventDefault(); + + // Get all related items and find index for clicked one + if ( value ) { + items = opts.selector ? $( opts.selector ) : ( e.data ? e.data.items : [] ); + items = items.length ? items.filter( '[data-fancybox="' + value + '"]' ) : $( '[data-fancybox="' + value + '"]' ); + + index = items.index( $target ); + + // Sometimes current item can not be found + // (for example, when slider clones items) + if ( index < 0 ) { + index = 0; + } + + } else { + items = [ $target ]; + } + + $.fancybox.open( items, opts, index ); + } + + + // Create a jQuery plugin + // ====================== + + $.fn.fancybox = function (options) { + var selector; + + options = options || {}; + selector = options.selector || false; + + if ( selector ) { + + $( 'body' ).off( 'click.fb-start', selector ).on( 'click.fb-start', selector, { + options : options + }, _run ); + + } else { + + this.off( 'click.fb-start' ).on( 'click.fb-start', { + items : this, + options : options + }, _run); + + } + + return this; + }; + + + // Self initializing plugin + // ======================== + + $D.on( 'click.fb-start', '[data-fancybox]', _run ); + +}( window, document, window.jQuery || jQuery )); + +// ========================================================================== +// +// Media +// Adds additional media type support +// +// ========================================================================== +;(function ($) { + + 'use strict'; + + // Formats matching url to final form + + var format = function (url, rez, params) { + if ( !url ) { + return; + } + + params = params || ''; + + if ( $.type(params) === "object" ) { + params = $.param(params, true); + } + + $.each(rez, function (key, value) { + url = url.replace('$' + key, value || ''); + }); + + if (params.length) { + url += (url.indexOf('?') > 0 ? '&' : '?') + params; + } + + return url; + }; + + // Object containing properties for each media type + + var defaults = { + youtube : { + matcher : /(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i, + params : { + autoplay : 1, + autohide : 1, + fs : 1, + rel : 0, + hd : 1, + wmode : 'transparent', + enablejsapi : 1, + html5 : 1 + }, + paramPlace : 8, + type : 'iframe', + url : '//www.youtube.com/embed/$4', + thumb : '//img.youtube.com/vi/$4/hqdefault.jpg' + }, + + vimeo : { + matcher : /^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/, + params : { + autoplay : 1, + hd : 1, + show_title : 1, + show_byline : 1, + show_portrait : 0, + fullscreen : 1, + api : 1 + }, + paramPlace : 3, + type : 'iframe', + url : '//player.vimeo.com/video/$2' + }, + + metacafe : { + matcher : /metacafe.com\/watch\/(\d+)\/(.*)?/, + type : 'iframe', + url : '//www.metacafe.com/embed/$1/?ap=1' + }, + + dailymotion : { + matcher : /dailymotion.com\/video\/(.*)\/?(.*)/, + params : { + additionalInfos : 0, + autoStart : 1 + }, + type : 'iframe', + url : '//www.dailymotion.com/embed/video/$1' + }, + + vine : { + matcher : /vine.co\/v\/([a-zA-Z0-9\?\=\-]+)/, + type : 'iframe', + url : '//vine.co/v/$1/embed/simple' + }, + + instagram : { + matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i, + type : 'image', + url : '//$1/p/$2/media/?size=l' + }, + + // Examples: + // http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16 + // https://www.google.com/maps/@37.7852006,-122.4146355,14.65z + // https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0833494,17z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840572 + gmap_place : { + matcher : /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i, + type : 'iframe', + url : function (rez) { + return '//maps.google.' + rez[2] + '/?ll=' + ( rez[9] ? rez[9] + '&z=' + Math.floor( rez[10] ) + ( rez[12] ? rez[12].replace(/^\//, "&") : '' ) : rez[12] ) + '&output=' + ( rez[12] && rez[12].indexOf('layer=c') > 0 ? 'svembed' : 'embed' ); + } + }, + + // Examples: + // https://www.google.com/maps/search/Empire+State+Building/ + // https://www.google.com/maps/search/?api=1&query=centurylink+field + // https://www.google.com/maps/search/?api=1&query=47.5951518,-122.3316393 + gmap_search : { + matcher : /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i, + type : 'iframe', + url : function (rez) { + return '//maps.google.' + rez[2] + '/maps?q=' + rez[5].replace('query=', 'q=').replace('api=1', '') + '&output=embed'; + } + } + }; + + $(document).on('objectNeedsType.fb', function (e, instance, item) { + + var url = item.src || '', + type = false, + media, + thumb, + rez, + params, + urlParams, + paramObj, + provider; + + media = $.extend( true, {}, defaults, item.opts.media ); + + // Look for any matching media type + $.each(media, function ( providerName, providerOpts ) { + rez = url.match( providerOpts.matcher ); + + if ( !rez ) { + return; + } + + type = providerOpts.type; + paramObj = {}; + + if ( providerOpts.paramPlace && rez[ providerOpts.paramPlace ] ) { + urlParams = rez[ providerOpts.paramPlace ]; + + if ( urlParams[ 0 ] == '?' ) { + urlParams = urlParams.substring(1); + } + + urlParams = urlParams.split('&'); + + for ( var m = 0; m < urlParams.length; ++m ) { + var p = urlParams[ m ].split('=', 2); + + if ( p.length == 2 ) { + paramObj[ p[0] ] = decodeURIComponent( p[1].replace(/\+/g, " ") ); + } + } + } + + params = $.extend( true, {}, providerOpts.params, item.opts[ providerName ], paramObj ); + + url = $.type( providerOpts.url ) === "function" ? providerOpts.url.call( this, rez, params, item ) : format( providerOpts.url, rez, params ); + thumb = $.type( providerOpts.thumb ) === "function" ? providerOpts.thumb.call( this, rez, params, item ) : format( providerOpts.thumb, rez ); + + if ( providerName === 'vimeo' ) { + url = url.replace('&%23', '#'); + } + + return false; + }); + + // If it is found, then change content type and update the url + + if ( type ) { + item.src = url; + item.type = type; + + if ( !item.opts.thumb && !( item.opts.$thumb && item.opts.$thumb.length ) ) { + item.opts.thumb = thumb; + } + + if ( type === 'iframe' ) { + $.extend(true, item.opts, { + iframe : { + preload : false, + attr : { + scrolling : "no" + } + } + }); + + item.contentProvider = provider; + + item.opts.slideClass += ' fancybox-slide--' + ( provider == 'gmap_place' || provider == 'gmap_search' ? 'map' : 'video' ); + } + + } else if ( url ) { + item.type = item.opts.defaultType; + } + + }); + +}( window.jQuery || jQuery )); + +// ========================================================================== +// +// Guestures +// Adds touch guestures, handles click and tap events +// +// ========================================================================== +;(function (window, document, $) { + 'use strict'; + + var requestAFrame = (function () { + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + // if all else fails, use setTimeout + function (callback) { + return window.setTimeout(callback, 1000 / 60); + }; + })(); + + + var cancelAFrame = (function () { + return window.cancelAnimationFrame || + window.webkitCancelAnimationFrame || + window.mozCancelAnimationFrame || + window.oCancelAnimationFrame || + function (id) { + window.clearTimeout(id); + }; + })(); + + + var pointers = function( e ) { + var result = []; + + e = e.originalEvent || e || window.e; + e = e.touches && e.touches.length ? e.touches : ( e.changedTouches && e.changedTouches.length ? e.changedTouches : [ e ] ); + + for ( var key in e ) { + + if ( e[ key ].pageX ) { + result.push( { x : e[ key ].pageX, y : e[ key ].pageY } ); + + } else if ( e[ key ].clientX ) { + result.push( { x : e[ key ].clientX, y : e[ key ].clientY } ); + } + } + + return result; + }; + + var distance = function( point2, point1, what ) { + if ( !point1 || !point2 ) { + return 0; + } + + if ( what === 'x' ) { + return point2.x - point1.x; + + } else if ( what === 'y' ) { + return point2.y - point1.y; + } + + return Math.sqrt( Math.pow( point2.x - point1.x, 2 ) + Math.pow( point2.y - point1.y, 2 ) ); + }; + + var isClickable = function( $el ) { + + if ( $el.is('a,area,button,[role="button"],input,label,select,summary,textarea') || $.isFunction( $el.get(0).onclick ) || $el.data('selectable') ) { + return true; + } + + // Check for attributes like data-fancybox-next or data-fancybox-close + for ( var i = 0, atts = $el[0].attributes, n = atts.length; i < n; i++ ) { + if ( atts[i].nodeName.substr(0, 14) === 'data-fancybox-' ) { + return true; + } + } + + return false; + }; + + var hasScrollbars = function( el ) { + var overflowY = window.getComputedStyle( el )['overflow-y']; + var overflowX = window.getComputedStyle( el )['overflow-x']; + + var vertical = (overflowY === 'scroll' || overflowY === 'auto') && el.scrollHeight > el.clientHeight; + var horizontal = (overflowX === 'scroll' || overflowX === 'auto') && el.scrollWidth > el.clientWidth; + + return vertical || horizontal; + }; + + var isScrollable = function ( $el ) { + var rez = false; + + while ( true ) { + rez = hasScrollbars( $el.get(0) ); + + if ( rez ) { + break; + } + + $el = $el.parent(); + + if ( !$el.length || $el.hasClass( 'fancybox-stage' ) || $el.is( 'body' ) ) { + break; + } + } + + return rez; + }; + + + var Guestures = function ( instance ) { + var self = this; + + self.instance = instance; + + self.$bg = instance.$refs.bg; + self.$stage = instance.$refs.stage; + self.$container = instance.$refs.container; + + self.destroy(); + + self.$container.on( 'touchstart.fb.touch mousedown.fb.touch', $.proxy(self, 'ontouchstart') ); + }; + + Guestures.prototype.destroy = function() { + this.$container.off( '.fb.touch' ); + }; + + Guestures.prototype.ontouchstart = function( e ) { + var self = this; + + var $target = $( e.target ); + var instance = self.instance; + var current = instance.current; + var $content = current.$content; + + var isTouchDevice = ( e.type == 'touchstart' ); + + // Do not respond to both events + if ( isTouchDevice ) { + self.$container.off( 'mousedown.fb.touch' ); + } + + // Ignore clicks while zooming or closing + if ( !current || self.instance.isAnimating || self.instance.isClosing ) { + e.stopPropagation(); + e.preventDefault(); + + return; + } + + // Ignore right click + if ( e.originalEvent && e.originalEvent.button == 2 ) { + return; + } + + // Ignore taping on links, buttons, input elements + if ( !$target.length || isClickable( $target ) || isClickable( $target.parent() ) ) { + return; + } + + // Ignore clicks on the scrollbar + if ( e.originalEvent.clientX > $target[0].clientWidth + $target.offset().left ) { + return; + } + + self.startPoints = pointers( e ); + + // Prevent zooming if already swiping + if ( !self.startPoints || ( self.startPoints.length > 1 && instance.isSliding ) ) { + return; + } + + self.$target = $target; + self.$content = $content; + self.canTap = true; + self.opts = current.opts.touch; + + $(document).off( '.fb.touch' ); + + $(document).on( isTouchDevice ? 'touchend.fb.touch touchcancel.fb.touch' : 'mouseup.fb.touch mouseleave.fb.touch', $.proxy(self, "ontouchend")); + $(document).on( isTouchDevice ? 'touchmove.fb.touch' : 'mousemove.fb.touch', $.proxy(self, "ontouchmove")); + + if ( !(self.opts || instance.canPan() ) || !( $target.is( self.$stage ) || self.$stage.find( $target ).length ) ) { + + // Prevent ghosting + if ( $target.is('img') ) { + e.preventDefault(); + } + + return; + } + + e.stopPropagation(); + + if ( !( $.fancybox.isMobile && ( isScrollable( self.$target ) || isScrollable( self.$target.parent() ) ) ) ) { + e.preventDefault(); + } + + self.canvasWidth = Math.round( current.$slide[0].clientWidth ); + self.canvasHeight = Math.round( current.$slide[0].clientHeight ); + + self.startTime = new Date().getTime(); + self.distanceX = self.distanceY = self.distance = 0; + + self.isPanning = false; + self.isSwiping = false; + self.isZooming = false; + + self.sliderStartPos = self.sliderLastPos || { top: 0, left: 0 }; + self.contentStartPos = $.fancybox.getTranslate( self.$content ); + self.contentLastPos = null; + + if ( self.startPoints.length === 1 && !self.isZooming ) { + self.canTap = !instance.isSliding; + + if ( current.type === 'image' && ( self.contentStartPos.width > self.canvasWidth + 1 || self.contentStartPos.height > self.canvasHeight + 1 ) ) { + + $.fancybox.stop( self.$content ); + + self.$content.css( 'transition-duration', '0ms' ); + + self.isPanning = true; + + } else { + + self.isSwiping = true; + } + + self.$container.addClass('fancybox-controls--isGrabbing'); + } + + if ( self.startPoints.length === 2 && !instance.isAnimating && !current.hasError && current.type === 'image' && ( current.isLoaded || current.$ghost ) ) { + self.isZooming = true; + + self.isSwiping = false; + self.isPanning = false; + + $.fancybox.stop( self.$content ); + + self.$content.css( 'transition-duration', '0ms' ); + + self.centerPointStartX = ( ( self.startPoints[0].x + self.startPoints[1].x ) * 0.5 ) - $(window).scrollLeft(); + self.centerPointStartY = ( ( self.startPoints[0].y + self.startPoints[1].y ) * 0.5 ) - $(window).scrollTop(); + + self.percentageOfImageAtPinchPointX = ( self.centerPointStartX - self.contentStartPos.left ) / self.contentStartPos.width; + self.percentageOfImageAtPinchPointY = ( self.centerPointStartY - self.contentStartPos.top ) / self.contentStartPos.height; + + self.startDistanceBetweenFingers = distance( self.startPoints[0], self.startPoints[1] ); + } + + }; + + Guestures.prototype.ontouchmove = function( e ) { + + var self = this; + + self.newPoints = pointers( e ); + + if ( $.fancybox.isMobile && ( isScrollable( self.$target ) || isScrollable( self.$target.parent() ) ) ) { + e.stopPropagation(); + + self.canTap = false; + + return; + } + + if ( !( self.opts || self.instance.canPan() ) || !self.newPoints || !self.newPoints.length ) { + return; + } + + self.distanceX = distance( self.newPoints[0], self.startPoints[0], 'x' ); + self.distanceY = distance( self.newPoints[0], self.startPoints[0], 'y' ); + + self.distance = distance( self.newPoints[0], self.startPoints[0] ); + + // Skip false ontouchmove events (Chrome) + if ( self.distance > 0 ) { + + if ( !( self.$target.is( self.$stage ) || self.$stage.find( self.$target ).length ) ) { + return; + } + + e.stopPropagation(); + e.preventDefault(); + + if ( self.isSwiping ) { + self.onSwipe(); + + } else if ( self.isPanning ) { + self.onPan(); + + } else if ( self.isZooming ) { + self.onZoom(); + } + + } + + }; + + Guestures.prototype.onSwipe = function() { + + var self = this; + + var swiping = self.isSwiping; + var left = self.sliderStartPos.left || 0; + var angle; + + if ( swiping === true ) { + + if ( Math.abs( self.distance ) > 10 ) { + + self.canTap = false; + + if ( self.instance.group.length < 2 && self.opts.vertical ) { + self.isSwiping = 'y'; + + } else if ( self.instance.isSliding || self.opts.vertical === false || ( self.opts.vertical === 'auto' && $( window ).width() > 800 ) ) { + self.isSwiping = 'x'; + + } else { + angle = Math.abs( Math.atan2( self.distanceY, self.distanceX ) * 180 / Math.PI ); + + self.isSwiping = ( angle > 45 && angle < 135 ) ? 'y' : 'x'; + } + + self.instance.isSliding = self.isSwiping; + + // Reset points to avoid jumping, because we dropped first swipes to calculate the angle + self.startPoints = self.newPoints; + + $.each(self.instance.slides, function( index, slide ) { + $.fancybox.stop( slide.$slide ); + + slide.$slide.css( 'transition-duration', '0ms' ); + + slide.inTransition = false; + + if ( slide.pos === self.instance.current.pos ) { + self.sliderStartPos.left = $.fancybox.getTranslate( slide.$slide ).left; + } + }); + + //self.instance.current.isMoved = true; + + // Stop slideshow + if ( self.instance.SlideShow && self.instance.SlideShow.isActive ) { + self.instance.SlideShow.stop(); + } + } + + } else { + + if ( swiping == 'x' ) { + + // Sticky edges + if ( self.distanceX > 0 && ( self.instance.group.length < 2 || ( self.instance.current.index === 0 && !self.instance.current.opts.loop ) ) ) { + left = left + Math.pow( self.distanceX, 0.8 ); + + } else if ( self.distanceX < 0 && ( self.instance.group.length < 2 || ( self.instance.current.index === self.instance.group.length - 1 && !self.instance.current.opts.loop ) ) ) { + left = left - Math.pow( -self.distanceX, 0.8 ); + + } else { + left = left + self.distanceX; + } + + } + + self.sliderLastPos = { + top : swiping == 'x' ? 0 : self.sliderStartPos.top + self.distanceY, + left : left + }; + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.requestId = requestAFrame(function() { + + if ( self.sliderLastPos ) { + $.each(self.instance.slides, function( index, slide ) { + var pos = slide.pos - self.instance.currPos; + + $.fancybox.setTranslate( slide.$slide, { + top : self.sliderLastPos.top, + left : self.sliderLastPos.left + ( pos * self.canvasWidth ) + ( pos * slide.opts.gutter ) + }); + }); + + self.$container.addClass( 'fancybox-is-sliding' ); + } + + }); + + } + + }; + + Guestures.prototype.onPan = function() { + + var self = this; + + var newOffsetX, newOffsetY, newPos; + + self.canTap = false; + + if ( self.contentStartPos.width > self.canvasWidth ) { + newOffsetX = self.contentStartPos.left + self.distanceX; + + } else { + newOffsetX = self.contentStartPos.left; + } + + newOffsetY = self.contentStartPos.top + self.distanceY; + + newPos = self.limitMovement( newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height ); + + newPos.scaleX = self.contentStartPos.scaleX; + newPos.scaleY = self.contentStartPos.scaleY; + + self.contentLastPos = newPos; + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.requestId = requestAFrame(function() { + $.fancybox.setTranslate( self.$content, self.contentLastPos ); + }); + }; + + // Make panning sticky to the edges + Guestures.prototype.limitMovement = function( newOffsetX, newOffsetY, newWidth, newHeight ) { + + var self = this; + + var minTranslateX, minTranslateY, maxTranslateX, maxTranslateY; + + var canvasWidth = self.canvasWidth; + var canvasHeight = self.canvasHeight; + + var currentOffsetX = self.contentStartPos.left; + var currentOffsetY = self.contentStartPos.top; + + var distanceX = self.distanceX; + var distanceY = self.distanceY; + + // Slow down proportionally to traveled distance + + minTranslateX = Math.max(0, canvasWidth * 0.5 - newWidth * 0.5 ); + minTranslateY = Math.max(0, canvasHeight * 0.5 - newHeight * 0.5 ); + + maxTranslateX = Math.min( canvasWidth - newWidth, canvasWidth * 0.5 - newWidth * 0.5 ); + maxTranslateY = Math.min( canvasHeight - newHeight, canvasHeight * 0.5 - newHeight * 0.5 ); + + if ( newWidth > canvasWidth ) { + + // -> + if ( distanceX > 0 && newOffsetX > minTranslateX ) { + newOffsetX = minTranslateX - 1 + Math.pow( -minTranslateX + currentOffsetX + distanceX, 0.8 ) || 0; + } + + // <- + if ( distanceX < 0 && newOffsetX < maxTranslateX ) { + newOffsetX = maxTranslateX + 1 - Math.pow( maxTranslateX - currentOffsetX - distanceX, 0.8 ) || 0; + } + + } + + if ( newHeight > canvasHeight ) { + + // \/ + if ( distanceY > 0 && newOffsetY > minTranslateY ) { + newOffsetY = minTranslateY - 1 + Math.pow(-minTranslateY + currentOffsetY + distanceY, 0.8 ) || 0; + } + + // /\ + if ( distanceY < 0 && newOffsetY < maxTranslateY ) { + newOffsetY = maxTranslateY + 1 - Math.pow ( maxTranslateY - currentOffsetY - distanceY, 0.8 ) || 0; + } + + } + + return { + top : newOffsetY, + left : newOffsetX + }; + + }; + + + Guestures.prototype.limitPosition = function( newOffsetX, newOffsetY, newWidth, newHeight ) { + + var self = this; + + var canvasWidth = self.canvasWidth; + var canvasHeight = self.canvasHeight; + + if ( newWidth > canvasWidth ) { + newOffsetX = newOffsetX > 0 ? 0 : newOffsetX; + newOffsetX = newOffsetX < canvasWidth - newWidth ? canvasWidth - newWidth : newOffsetX; + + } else { + + // Center horizontally + newOffsetX = Math.max( 0, canvasWidth / 2 - newWidth / 2 ); + + } + + if ( newHeight > canvasHeight ) { + newOffsetY = newOffsetY > 0 ? 0 : newOffsetY; + newOffsetY = newOffsetY < canvasHeight - newHeight ? canvasHeight - newHeight : newOffsetY; + + } else { + + // Center vertically + newOffsetY = Math.max( 0, canvasHeight / 2 - newHeight / 2 ); + + } + + return { + top : newOffsetY, + left : newOffsetX + }; + + }; + + Guestures.prototype.onZoom = function() { + + var self = this; + + // Calculate current distance between points to get pinch ratio and new width and height + + var currentWidth = self.contentStartPos.width; + var currentHeight = self.contentStartPos.height; + + var currentOffsetX = self.contentStartPos.left; + var currentOffsetY = self.contentStartPos.top; + + var endDistanceBetweenFingers = distance( self.newPoints[0], self.newPoints[1] ); + + var pinchRatio = endDistanceBetweenFingers / self.startDistanceBetweenFingers; + + var newWidth = Math.floor( currentWidth * pinchRatio ); + var newHeight = Math.floor( currentHeight * pinchRatio ); + + // This is the translation due to pinch-zooming + var translateFromZoomingX = (currentWidth - newWidth) * self.percentageOfImageAtPinchPointX; + var translateFromZoomingY = (currentHeight - newHeight) * self.percentageOfImageAtPinchPointY; + + //Point between the two touches + + var centerPointEndX = ((self.newPoints[0].x + self.newPoints[1].x) / 2) - $(window).scrollLeft(); + var centerPointEndY = ((self.newPoints[0].y + self.newPoints[1].y) / 2) - $(window).scrollTop(); + + // And this is the translation due to translation of the centerpoint + // between the two fingers + + var translateFromTranslatingX = centerPointEndX - self.centerPointStartX; + var translateFromTranslatingY = centerPointEndY - self.centerPointStartY; + + // The new offset is the old/current one plus the total translation + + var newOffsetX = currentOffsetX + ( translateFromZoomingX + translateFromTranslatingX ); + var newOffsetY = currentOffsetY + ( translateFromZoomingY + translateFromTranslatingY ); + + var newPos = { + top : newOffsetY, + left : newOffsetX, + scaleX : self.contentStartPos.scaleX * pinchRatio, + scaleY : self.contentStartPos.scaleY * pinchRatio + }; + + self.canTap = false; + + self.newWidth = newWidth; + self.newHeight = newHeight; + + self.contentLastPos = newPos; + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.requestId = requestAFrame(function() { + $.fancybox.setTranslate( self.$content, self.contentLastPos ); + }); + + }; + + Guestures.prototype.ontouchend = function( e ) { + + var self = this; + var dMs = Math.max( (new Date().getTime() ) - self.startTime, 1); + + var swiping = self.isSwiping; + var panning = self.isPanning; + var zooming = self.isZooming; + + self.endPoints = pointers( e ); + + self.$container.removeClass( 'fancybox-controls--isGrabbing' ); + + $(document).off( '.fb.touch' ); + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.isSwiping = false; + self.isPanning = false; + self.isZooming = false; + + if ( self.canTap ) { + return self.onTap( e ); + } + + self.speed = 366; + + // Speed in px/ms + self.velocityX = self.distanceX / dMs * 0.5; + self.velocityY = self.distanceY / dMs * 0.5; + + self.speedX = Math.max( self.speed * 0.5, Math.min( self.speed * 1.5, ( 1 / Math.abs( self.velocityX ) ) * self.speed ) ); + + if ( panning ) { + self.endPanning(); + + } else if ( zooming ) { + self.endZooming(); + + } else { + self.endSwiping( swiping ); + } + + return; + }; + + Guestures.prototype.endSwiping = function( swiping ) { + + var self = this; + var ret = false; + + self.instance.isSliding = false; + self.sliderLastPos = null; + + // Close if swiped vertically / navigate if horizontally + if ( swiping == 'y' && Math.abs( self.distanceY ) > 50 ) { + + // Continue vertical movement + $.fancybox.animate( self.instance.current.$slide, { + top : self.sliderStartPos.top + self.distanceY + ( self.velocityY * 150 ), + opacity : 0 + }, 150 ); + + ret = self.instance.close( true, 300 ); + + } else if ( swiping == 'x' && self.distanceX > 50 && self.instance.group.length > 1 ) { + ret = self.instance.previous( self.speedX ); + + } else if ( swiping == 'x' && self.distanceX < -50 && self.instance.group.length > 1 ) { + ret = self.instance.next( self.speedX ); + } + + if ( ret === false && ( swiping == 'x' || swiping == 'y' ) ) { + self.instance.jumpTo( self.instance.current.index, 150 ); + } + + self.$container.removeClass( 'fancybox-is-sliding' ); + + }; + + // Limit panning from edges + // ======================== + + Guestures.prototype.endPanning = function() { + + var self = this; + var newOffsetX, newOffsetY, newPos; + + if ( !self.contentLastPos ) { + return; + } + + if ( self.opts.momentum === false ) { + newOffsetX = self.contentLastPos.left; + newOffsetY = self.contentLastPos.top; + + } else { + + // Continue movement + newOffsetX = self.contentLastPos.left + ( self.velocityX * self.speed ); + newOffsetY = self.contentLastPos.top + ( self.velocityY * self.speed ); + } + + newPos = self.limitPosition( newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height ); + + newPos.width = self.contentStartPos.width; + newPos.height = self.contentStartPos.height; + + $.fancybox.animate( self.$content, newPos, 330 ); + }; + + + Guestures.prototype.endZooming = function() { + + var self = this; + + var current = self.instance.current; + + var newOffsetX, newOffsetY, newPos, reset; + + var newWidth = self.newWidth; + var newHeight = self.newHeight; + + if ( !self.contentLastPos ) { + return; + } + + newOffsetX = self.contentLastPos.left; + newOffsetY = self.contentLastPos.top; + + reset = { + top : newOffsetY, + left : newOffsetX, + width : newWidth, + height : newHeight, + scaleX : 1, + scaleY : 1 + }; + + // Reset scalex/scaleY values; this helps for perfomance and does not break animation + $.fancybox.setTranslate( self.$content, reset ); + + if ( newWidth < self.canvasWidth && newHeight < self.canvasHeight ) { + self.instance.scaleToFit( 150 ); + + } else if ( newWidth > current.width || newHeight > current.height ) { + self.instance.scaleToActual( self.centerPointStartX, self.centerPointStartY, 150 ); + + } else { + + newPos = self.limitPosition( newOffsetX, newOffsetY, newWidth, newHeight ); + + // Switch from scale() to width/height or animation will not work correctly + $.fancybox.setTranslate( self.content, $.fancybox.getTranslate( self.$content ) ); + + $.fancybox.animate( self.$content, newPos, 150 ); + } + + }; + + Guestures.prototype.onTap = function(e) { + var self = this; + var $target = $( e.target ); + + var instance = self.instance; + var current = instance.current; + + var endPoints = ( e && pointers( e ) ) || self.startPoints; + + var tapX = endPoints[0] ? endPoints[0].x - self.$stage.offset().left : 0; + var tapY = endPoints[0] ? endPoints[0].y - self.$stage.offset().top : 0; + + var where; + + var process = function ( prefix ) { + + var action = current.opts[ prefix ]; + + if ( $.isFunction( action ) ) { + action = action.apply( instance, [ current, e ] ); + } + + if ( !action) { + return; + } + + switch ( action ) { + + case "close" : + + instance.close( self.startEvent ); + + break; + + case "toggleControls" : + + instance.toggleControls( true ); + + break; + + case "next" : + + instance.next(); + + break; + + case "nextOrClose" : + + if ( instance.group.length > 1 ) { + instance.next(); + + } else { + instance.close( self.startEvent ); + } + + break; + + case "zoom" : + + if ( current.type == 'image' && ( current.isLoaded || current.$ghost ) ) { + + if ( instance.canPan() ) { + instance.scaleToFit(); + + } else if ( instance.isScaledDown() ) { + instance.scaleToActual( tapX, tapY ); + + } else if ( instance.group.length < 2 ) { + instance.close( self.startEvent ); + } + } + + break; + } + + }; + + // Ignore right click + if ( e.originalEvent && e.originalEvent.button == 2 ) { + return; + } + + // Skip if current slide is not in the center + if ( instance.isSliding ) { + return; + } + + // Skip if clicked on the scrollbar + if ( tapX > $target[0].clientWidth + $target.offset().left ) { + return; + } + + // Check where is clicked + if ( $target.is( '.fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container' ) ) { + where = 'Outside'; + + } else if ( $target.is( '.fancybox-slide' ) ) { + where = 'Slide'; + + } else if ( instance.current.$content && instance.current.$content.has( e.target ).length ) { + where = 'Content'; + + } else { + return; + } + + // Check if this is a double tap + if ( self.tapped ) { + + // Stop previously created single tap + clearTimeout( self.tapped ); + self.tapped = null; + + // Skip if distance between taps is too big + if ( Math.abs( tapX - self.tapX ) > 50 || Math.abs( tapY - self.tapY ) > 50 || instance.isSliding ) { + return this; + } + + // OK, now we assume that this is a double-tap + process( 'dblclick' + where ); + + } else { + + // Single tap will be processed if user has not clicked second time within 300ms + // or there is no need to wait for double-tap + self.tapX = tapX; + self.tapY = tapY; + + if ( current.opts[ 'dblclick' + where ] && current.opts[ 'dblclick' + where ] !== current.opts[ 'click' + where ] ) { + self.tapped = setTimeout(function() { + self.tapped = null; + + process( 'click' + where ); + + }, 300); + + } else { + process( 'click' + where ); + } + + } + + return this; + }; + + $(document).on('onActivate.fb', function (e, instance) { + if ( instance && !instance.Guestures ) { + instance.Guestures = new Guestures( instance ); + } + }); + + $(document).on('beforeClose.fb', function (e, instance) { + if ( instance && instance.Guestures ) { + instance.Guestures.destroy(); + } + }); + + +}( window, document, window.jQuery || jQuery )); + +// ========================================================================== +// +// SlideShow +// Enables slideshow functionality +// +// Example of usage: +// $.fancybox.getInstance().SlideShow.start() +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + $.extend(true, $.fancybox.defaults, { + btnTpl : { + slideShow : + '' + }, + slideShow : { + autoStart : false, + speed : 3000 + } + }); + + var SlideShow = function( instance ) { + this.instance = instance; + this.init(); + }; + + $.extend( SlideShow.prototype, { + timer : null, + isActive : false, + $button : null, + + init : function() { + var self = this; + + self.$button = self.instance.$refs.toolbar.find('[data-fancybox-play]').on('click', function() { + self.toggle(); + }); + + if ( self.instance.group.length < 2 || !self.instance.group[ self.instance.currIndex ].opts.slideShow ) { + self.$button.hide(); + } + }, + + set : function( force ) { + var self = this; + + // Check if reached last element + if ( self.instance && self.instance.current && (force === true || self.instance.current.opts.loop || self.instance.currIndex < self.instance.group.length - 1 )) { + self.timer = setTimeout(function() { + if ( self.isActive ) { + self.instance.jumpTo( (self.instance.currIndex + 1) % self.instance.group.length ); + } + + }, self.instance.current.opts.slideShow.speed); + + } else { + self.stop(); + self.instance.idleSecondsCounter = 0; + self.instance.showControls(); + } + }, + + clear : function() { + var self = this; + + clearTimeout( self.timer ); + + self.timer = null; + }, + + start : function() { + var self = this; + var current = self.instance.current; + + if ( current ) { + self.isActive = true; + + self.$button + .attr( 'title', current.opts.i18n[ current.opts.lang ].PLAY_STOP ) + .removeClass( 'fancybox-button--play' ) + .addClass( 'fancybox-button--pause' ); + + self.set( true ); + } + }, + + stop : function() { + var self = this; + var current = self.instance.current; + + self.clear(); + + self.$button + .attr( 'title', current.opts.i18n[ current.opts.lang ].PLAY_START ) + .removeClass( 'fancybox-button--pause' ) + .addClass( 'fancybox-button--play' ); + + self.isActive = false; + }, + + toggle : function() { + var self = this; + + if ( self.isActive ) { + self.stop(); + + } else { + self.start(); + } + } + + }); + + $(document).on({ + 'onInit.fb' : function(e, instance) { + if ( instance && !instance.SlideShow ) { + instance.SlideShow = new SlideShow( instance ); + } + }, + + 'beforeShow.fb' : function(e, instance, current, firstRun) { + var SlideShow = instance && instance.SlideShow; + + if ( firstRun ) { + + if ( SlideShow && current.opts.slideShow.autoStart ) { + SlideShow.start(); + } + + } else if ( SlideShow && SlideShow.isActive ) { + SlideShow.clear(); + } + }, + + 'afterShow.fb' : function(e, instance, current) { + var SlideShow = instance && instance.SlideShow; + + if ( SlideShow && SlideShow.isActive ) { + SlideShow.set(); + } + }, + + 'afterKeydown.fb' : function(e, instance, current, keypress, keycode) { + var SlideShow = instance && instance.SlideShow; + + // "P" or Spacebar + if ( SlideShow && current.opts.slideShow && ( keycode === 80 || keycode === 32 ) && !$(document.activeElement).is( 'button,a,input' ) ) { + keypress.preventDefault(); + + SlideShow.toggle(); + } + }, + + 'beforeClose.fb onDeactivate.fb' : function(e, instance) { + var SlideShow = instance && instance.SlideShow; + + if ( SlideShow ) { + SlideShow.stop(); + } + } + }); + + // Page Visibility API to pause slideshow when window is not active + $(document).on("visibilitychange", function() { + var instance = $.fancybox.getInstance(); + var SlideShow = instance && instance.SlideShow; + + if ( SlideShow && SlideShow.isActive ) { + if ( document.hidden ) { + SlideShow.clear(); + + } else { + SlideShow.set(); + } + } + }); + +}( document, window.jQuery || jQuery )); + +// ========================================================================== +// +// FullScreen +// Adds fullscreen functionality +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + // Collection of methods supported by user browser + var fn = (function () { + + var fnMap = [ + [ + 'requestFullscreen', + 'exitFullscreen', + 'fullscreenElement', + 'fullscreenEnabled', + 'fullscreenchange', + 'fullscreenerror' + ], + // new WebKit + [ + 'webkitRequestFullscreen', + 'webkitExitFullscreen', + 'webkitFullscreenElement', + 'webkitFullscreenEnabled', + 'webkitfullscreenchange', + 'webkitfullscreenerror' + + ], + // old WebKit (Safari 5.1) + [ + 'webkitRequestFullScreen', + 'webkitCancelFullScreen', + 'webkitCurrentFullScreenElement', + 'webkitCancelFullScreen', + 'webkitfullscreenchange', + 'webkitfullscreenerror' + + ], + [ + 'mozRequestFullScreen', + 'mozCancelFullScreen', + 'mozFullScreenElement', + 'mozFullScreenEnabled', + 'mozfullscreenchange', + 'mozfullscreenerror' + ], + [ + 'msRequestFullscreen', + 'msExitFullscreen', + 'msFullscreenElement', + 'msFullscreenEnabled', + 'MSFullscreenChange', + 'MSFullscreenError' + ] + ]; + + var val; + var ret = {}; + var i, j; + + for ( i = 0; i < fnMap.length; i++ ) { + val = fnMap[ i ]; + + if ( val && val[ 1 ] in document ) { + for ( j = 0; j < val.length; j++ ) { + ret[ fnMap[ 0 ][ j ] ] = val[ j ]; + } + + return ret; + } + } + + return false; + })(); + + // If browser does not have Full Screen API, then simply unset default button template and stop + if ( !fn ) { + + if ( $ && $.fancybox ) { + $.fancybox.defaults.btnTpl.fullScreen = false; + } + + return; + } + + var FullScreen = { + + request : function ( elem ) { + + elem = elem || document.documentElement; + + elem[ fn.requestFullscreen ]( elem.ALLOW_KEYBOARD_INPUT ); + + }, + exit : function () { + + document[ fn.exitFullscreen ](); + + }, + toggle : function ( elem ) { + + elem = elem || document.documentElement; + + if ( this.isFullscreen() ) { + this.exit(); + + } else { + this.request( elem ); + } + + }, + isFullscreen : function() { + + return Boolean( document[ fn.fullscreenElement ] ); + + }, + enabled : function() { + + return Boolean( document[ fn.fullscreenEnabled ] ); + + } + }; + + $.extend(true, $.fancybox.defaults, { + btnTpl : { + fullScreen : + '' + }, + fullScreen : { + autoStart : false + } + }); + + $(document).on({ + 'onInit.fb' : function(e, instance) { + var $container; + + if ( instance && instance.group[ instance.currIndex ].opts.fullScreen ) { + $container = instance.$refs.container; + + $container.on('click.fb-fullscreen', '[data-fancybox-fullscreen]', function(e) { + + e.stopPropagation(); + e.preventDefault(); + + FullScreen.toggle( $container[ 0 ] ); + + }); + + if ( instance.opts.fullScreen && instance.opts.fullScreen.autoStart === true ) { + FullScreen.request( $container[ 0 ] ); + } + + // Expose API + instance.FullScreen = FullScreen; + + } else if ( instance ) { + instance.$refs.toolbar.find('[data-fancybox-fullscreen]').hide(); + } + + }, + + 'afterKeydown.fb' : function(e, instance, current, keypress, keycode) { + + // "P" or Spacebar + if ( instance && instance.FullScreen && keycode === 70 ) { + keypress.preventDefault(); + + instance.FullScreen.toggle( instance.$refs.container[ 0 ] ); + } + + }, + + 'beforeClose.fb' : function( instance ) { + if ( instance && instance.FullScreen ) { + FullScreen.exit(); + } + } + }); + + $(document).on(fn.fullscreenchange, function() { + var isFullscreen = FullScreen.isFullscreen(), + instance = $.fancybox.getInstance(); + + if ( instance ) { + + // If image is zooming, then force to stop and reposition properly + if ( instance.current && instance.current.type === 'image' && instance.isAnimating ) { + instance.current.$content.css( 'transition', 'none' ); + + instance.isAnimating = false; + + instance.update( true, true, 0 ); + } + + instance.trigger( 'onFullscreenChange', isFullscreen ); + + instance.$refs.container.toggleClass( 'fancybox-is-fullscreen', isFullscreen ); + } + + }); + +}( document, window.jQuery || jQuery )); + +// ========================================================================== +// +// Thumbs +// Displays thumbnails in a grid +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + // Make sure there are default values + $.fancybox.defaults = $.extend(true, { + btnTpl : { + thumbs : + '' + }, + thumbs : { + autoStart : false, // Display thumbnails on opening + hideOnClose : true, // Hide thumbnail grid when closing animation starts + parentEl : '.fancybox-container', // Container is injected into this element + axis : 'y' // Vertical (y) or horizontal (x) scrolling + } + }, $.fancybox.defaults); + + var FancyThumbs = function( instance ) { + this.init( instance ); + }; + + $.extend( FancyThumbs.prototype, { + + $button : null, + $grid : null, + $list : null, + isVisible : false, + isActive : false, + + init : function( instance ) { + var self = this; + + self.instance = instance; + + instance.Thumbs = self; + + // Enable thumbs if at least two group items have thumbnails + var first = instance.group[0], + second = instance.group[1]; + + self.opts = instance.group[ instance.currIndex ].opts.thumbs; + + self.$button = instance.$refs.toolbar.find( '[data-fancybox-thumbs]' ); + + if ( self.opts && first && second && ( + ( first.type == 'image' || first.opts.thumb || first.opts.$thumb ) && + ( second.type == 'image' || second.opts.thumb || second.opts.$thumb ) + )) { + + self.$button.show().on('click', function() { + self.toggle(); + }); + + self.isActive = true; + + } else { + self.$button.hide(); + } + }, + + create : function() { + var self = this, + instance = self.instance, + parentEl = self.opts.parentEl, + list, + src; + + self.$grid = $('
      ').appendTo( instance.$refs.container.find( parentEl ).addBack().filter( parentEl ) ); + + // Build list HTML + list = '
        '; + + $.each(instance.group, function( i, item ) { + src = item.opts.thumb || ( item.opts.$thumb ? item.opts.$thumb.attr( 'src' ) : null ); + + if ( !src && item.type === 'image' ) { + src = item.src; + } + + if ( src && src.length ) { + list += '
      • '; + } + }); + + list += '
      '; + + self.$list = $( list ).appendTo( self.$grid ).on('click', 'li', function() { + instance.jumpTo( $(this).data('index') ); + }); + + self.$list.find( 'img' ).hide().one('load', function() { + var $parent = $(this).parent().removeClass( 'fancybox-thumbs-loading' ), + thumbWidth = $parent.outerWidth(), + thumbHeight = $parent.outerHeight(), + width, + height, + widthRatio, + heightRatio; + + width = this.naturalWidth || this.width; + height = this.naturalHeight || this.height; + + // Calculate thumbnail dimensions; center vertically and horizontally + widthRatio = width / thumbWidth; + heightRatio = height / thumbHeight; + + if (widthRatio >= 1 && heightRatio >= 1) { + if (widthRatio > heightRatio) { + width = width / heightRatio; + height = thumbHeight; + + } else { + width = thumbWidth; + height = height / widthRatio; + } + } + + $(this).css({ + width : Math.floor(width), + height : Math.floor(height), + 'margin-top' : height > thumbHeight ? ( Math.floor(thumbHeight * 0.3 - height * 0.3 ) ) : Math.floor(thumbHeight * 0.5 - height * 0.5 ), + 'margin-left' : Math.floor(thumbWidth * 0.5 - width * 0.5 ) + }).show(); + + }) + .each(function() { + this.src = $( this ).data( 'src' ); + }); + + if ( self.opts.axis === 'x' ) { + self.$list.width( parseInt( self.$grid.css("padding-right") ) + ( instance.group.length * self.$list.children().eq(0).outerWidth(true) ) + 'px' ); + } + }, + + focus : function( duration ) { + var self = this, + $list = self.$list, + thumb, + thumbPos; + + if ( self.instance.current ) { + thumb = $list.children() + .removeClass( 'fancybox-thumbs-active' ) + .filter('[data-index="' + self.instance.current.index + '"]') + .addClass('fancybox-thumbs-active'); + + thumbPos = thumb.position(); + + // Check if need to scroll to make current thumb visible + if ( self.opts.axis === 'y' && ( thumbPos.top < 0 || thumbPos.top > ( $list.height() - thumb.outerHeight() ) ) ) { + $list.stop().animate({ 'scrollTop' : $list.scrollTop() + thumbPos.top }, duration); + + } else if ( self.opts.axis === 'x' && ( + thumbPos.left < $list.parent().scrollLeft() || + thumbPos.left > ( $list.parent().scrollLeft() + ( $list.parent().width() - thumb.outerWidth() ) ) + ) + ) { + $list.parent().stop().animate({ 'scrollLeft' : thumbPos.left }, duration); + } + } + }, + + update : function() { + this.instance.$refs.container.toggleClass( 'fancybox-show-thumbs', this.isVisible ); + + if ( this.isVisible ) { + if ( !this.$grid ) { + this.create(); + } + + this.instance.trigger( 'onThumbsShow' ); + + this.focus( 0 ); + + } else if ( this.$grid ) { + this.instance.trigger( 'onThumbsHide' ); + } + + // Update content position + this.instance.update(); + }, + + hide : function() { + this.isVisible = false; + this.update(); + }, + + show : function() { + this.isVisible = true; + this.update(); + }, + + toggle : function() { + this.isVisible = !this.isVisible; + this.update(); + } + }); + + $(document).on({ + + 'onInit.fb' : function(e, instance) { + var Thumbs; + + if ( instance && !instance.Thumbs ) { + Thumbs = new FancyThumbs( instance ); + + if ( Thumbs.isActive && Thumbs.opts.autoStart === true ) { + Thumbs.show(); + } + } + }, + + 'beforeShow.fb' : function(e, instance, item, firstRun) { + var Thumbs = instance && instance.Thumbs; + + if ( Thumbs && Thumbs.isVisible ) { + Thumbs.focus( firstRun ? 0 : 250 ); + } + }, + + 'afterKeydown.fb' : function(e, instance, current, keypress, keycode) { + var Thumbs = instance && instance.Thumbs; + + // "G" + if ( Thumbs && Thumbs.isActive && keycode === 71 ) { + keypress.preventDefault(); + + Thumbs.toggle(); + } + }, + + 'beforeClose.fb' : function( e, instance ) { + var Thumbs = instance && instance.Thumbs; + + if ( Thumbs && Thumbs.isVisible && Thumbs.opts.hideOnClose !== false ) { + Thumbs.$grid.hide(); + } + } + + }); + +}(document, window.jQuery)); + +//// ========================================================================== +// +// Share +// Displays simple form for sharing current url +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + $.extend(true, $.fancybox.defaults, { + btnTpl : { + share : + '' + }, + share : { + tpl : + '
      ' + + '

      {{SHARE}}

      ' + + '

      ' + + '' + + '' + + 'Facebook' + + '' + + '' + + '' + + 'Pinterest' + + '' + + '' + + '' + + 'Twitter' + + '' + + '

      ' + + '

      ' + + '
      ' + } + }); + + function escapeHtml(string) { + var entityMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '/': '/', + '`': '`', + '=': '=' + }; + + return String(string).replace(/[&<>"'`=\/]/g, function (s) { + return entityMap[s]; + }); + } + + $(document).on('click', '[data-fancybox-share]', function() { + var f = $.fancybox.getInstance(), + url, + tpl; + + if ( f ) { + url = f.current.opts.hash === false ? f.current.src : window.location; + tpl = f.current.opts.share.tpl + .replace( /\{\{src\}\}/g, encodeURIComponent( url ) ) + .replace( /\{\{src_raw\}\}/g, escapeHtml( url ) ) + .replace( /\{\{descr\}\}/g, f.$caption ? encodeURIComponent( f.$caption.text() ) : '' ); + + $.fancybox.open({ + src : f.translate( f, tpl ), + type : 'html', + opts : { + animationEffect : "fade", + animationDuration : 250 + } + }); + } + + }); + +}( document, window.jQuery || jQuery )); + +// ========================================================================== +// +// Hash +// Enables linking to each modal +// +// ========================================================================== +;(function (document, window, $) { + 'use strict'; + + // Simple $.escapeSelector polyfill (for jQuery prior v3) + if ( !$.escapeSelector ) { + $.escapeSelector = function( sel ) { + var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; + var fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }; + + return ( sel + "" ).replace( rcssescape, fcssescape ); + }; + } + + // Create new history entry only once + var shouldCreateHistory = true; + + // Variable containing last hash value set by fancyBox + // It will be used to determine if fancyBox needs to close after hash change is detected + var currentHash = null; + + // Throttling the history change + var timerID = null; + + // Get info about gallery name and current index from url + function parseUrl() { + var hash = window.location.hash.substr( 1 ); + var rez = hash.split( '-' ); + var index = rez.length > 1 && /^\+?\d+$/.test( rez[ rez.length - 1 ] ) ? parseInt( rez.pop( -1 ), 10 ) || 1 : 1; + var gallery = rez.join( '-' ); + + // Index is starting from 1 + if ( index < 1 ) { + index = 1; + } + + return { + hash : hash, + index : index, + gallery : gallery + }; + } + + // Trigger click evnt on links to open new fancyBox instance + function triggerFromUrl( url ) { + var $el; + + if ( url.gallery !== '' ) { + + // If we can find element matching 'data-fancybox' atribute, then trigger click event for that .. + $el = $( "[data-fancybox='" + $.escapeSelector( url.gallery ) + "']" ).eq( url.index - 1 ); + + if ( !$el.length ) { + // .. if not, try finding element by ID + $el = $( "#" + $.escapeSelector( url.gallery ) + "" ); + } + + if ( $el.length ) { + shouldCreateHistory = false; + + $el.trigger( 'click' ); + } + + } + } + + // Get gallery name from current instance + function getGalleryID( instance ) { + var opts; + + if ( !instance ) { + return false; + } + + opts = instance.current ? instance.current.opts : instance.opts; + + return opts.hash || ( opts.$orig ? opts.$orig.data( 'fancybox' ) : '' ); + } + + // Start when DOM becomes ready + $(function() { + + // Check if user has disabled this module + if ( $.fancybox.defaults.hash === false ) { + return; + } + + // Update hash when opening/closing fancyBox + $(document).on({ + 'onInit.fb' : function( e, instance ) { + var url, gallery; + + if ( instance.group[ instance.currIndex ].opts.hash === false ) { + return; + } + + url = parseUrl(); + gallery = getGalleryID( instance ); + + // Make sure gallery start index matches index from hash + if ( gallery && url.gallery && gallery == url.gallery ) { + instance.currIndex = url.index - 1; + } + }, + + 'beforeShow.fb' : function( e, instance, current ) { + var gallery; + + if ( !current || current.opts.hash === false ) { + return; + } + + gallery = getGalleryID( instance ); + + // Update window hash + if ( gallery && gallery !== '' ) { + + if ( window.location.hash.indexOf( gallery ) < 0 ) { + instance.opts.origHash = window.location.hash; + } + + currentHash = gallery + ( instance.group.length > 1 ? '-' + ( current.index + 1 ) : '' ); + + if ( 'replaceState' in window.history ) { + if ( timerID ) { + clearTimeout( timerID ); + } + + timerID = setTimeout(function() { + window.history[ shouldCreateHistory ? 'pushState' : 'replaceState' ]( {} , document.title, window.location.pathname + window.location.search + '#' + currentHash ); + + timerID = null; + + shouldCreateHistory = false; + + }, 300); + + } else { + window.location.hash = currentHash; + } + + } + + }, + + 'beforeClose.fb' : function( e, instance, current ) { + var gallery, origHash; + + if ( timerID ) { + clearTimeout( timerID ); + } + + if ( current.opts.hash === false ) { + return; + } + + gallery = getGalleryID( instance ); + origHash = instance && instance.opts.origHash ? instance.opts.origHash : ''; + + // Remove hash from location bar + if ( gallery && gallery !== '' ) { + + if ( 'replaceState' in history ) { + window.history.replaceState( {} , document.title, window.location.pathname + window.location.search + origHash ); + + } else { + window.location.hash = origHash; + + // Keep original scroll position + $( window ).scrollTop( instance.scrollTop ).scrollLeft( instance.scrollLeft ); + } + } + + currentHash = null; + } + }); + + // Check if need to close after url has changed + $(window).on('hashchange.fb', function() { + var url = parseUrl(); + + if ( $.fancybox.getInstance() ) { + if ( currentHash && currentHash !== url.gallery + '-' + url.index && !( url.index === 1 && currentHash == url.gallery ) ) { + currentHash = null; + + $.fancybox.close(); + } + + } else if ( url.gallery !== '' ) { + triggerFromUrl( url ); + } + }); + + // Check current hash and trigger click event on matching element to start fancyBox, if needed + setTimeout(function() { + triggerFromUrl( parseUrl() ); + }, 50); + }); + +}( document, window, window.jQuery || jQuery )); diff --git a/source/lib/fancybox/source/jquery.fancybox.min.css b/source/lib/fancybox/source/jquery.fancybox.min.css new file mode 100644 index 000000000..193567a31 --- /dev/null +++ b/source/lib/fancybox/source/jquery.fancybox.min.css @@ -0,0 +1 @@ +@charset "UTF-8";body.fancybox-active{overflow:hidden}body.fancybox-iosfix{position:fixed;left:0;right:0}.fancybox-is-hidden{position:absolute;top:-9999px;left:-9999px;visibility:hidden}.fancybox-container{position:fixed;top:0;left:0;width:100%;height:100%;z-index:99992;-webkit-tap-highlight-color:transparent;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-stage{position:absolute;top:0;right:0;bottom:0;left:0}.fancybox-outer{overflow-y:auto;-webkit-overflow-scrolling:touch}.fancybox-bg{background:#1e1e1e;opacity:0;transition-duration:inherit;transition-property:opacity;transition-timing-function:cubic-bezier(.47,0,.74,.71)}.fancybox-is-open .fancybox-bg{opacity:.87;transition-timing-function:cubic-bezier(.22,.61,.36,1)}.fancybox-caption-wrap,.fancybox-infobar,.fancybox-toolbar{position:absolute;direction:ltr;z-index:99997;opacity:0;visibility:hidden;transition:opacity .25s,visibility 0s linear .25s;box-sizing:border-box}.fancybox-show-caption .fancybox-caption-wrap,.fancybox-show-infobar .fancybox-infobar,.fancybox-show-toolbar .fancybox-toolbar{opacity:1;visibility:visible;transition:opacity .25s,visibility 0s}.fancybox-infobar{top:0;left:0;font-size:13px;padding:0 10px;height:44px;min-width:44px;line-height:44px;color:#ccc;text-align:center;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:subpixel-antialiased;mix-blend-mode:exclusion}.fancybox-toolbar{top:0;right:0;margin:0;padding:0}.fancybox-stage{overflow:hidden;direction:ltr;z-index:99994;-webkit-transform:translateZ(0)}.fancybox-is-closing .fancybox-stage{overflow:visible}.fancybox-slide{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;overflow:auto;outline:none;white-space:normal;box-sizing:border-box;text-align:center;z-index:99994;-webkit-overflow-scrolling:touch;display:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform}.fancybox-slide:before{content:"";display:inline-block;vertical-align:middle;height:100%;width:0}.fancybox-is-sliding .fancybox-slide,.fancybox-slide--current,.fancybox-slide--next,.fancybox-slide--previous{display:block}.fancybox-slide--image{overflow:visible}.fancybox-slide--image:before{display:none}.fancybox-slide--video .fancybox-content,.fancybox-slide--video iframe{background:#000}.fancybox-slide--map .fancybox-content,.fancybox-slide--map iframe{background:#e5e3df}.fancybox-slide--next{z-index:99995}.fancybox-slide>*{display:inline-block;position:relative;padding:24px;margin:44px 0;border-width:0;vertical-align:middle;text-align:left;background-color:#fff;overflow:auto;box-sizing:border-box}.fancybox-slide>base,.fancybox-slide>link,.fancybox-slide>meta,.fancybox-slide>script,.fancybox-slide>style,.fancybox-slide>title{display:none}.fancybox-slide .fancybox-image-wrap{position:absolute;top:0;left:0;margin:0;padding:0;border:0;z-index:99995;background:transparent;cursor:default;overflow:visible;-webkit-transform-origin:top left;transform-origin:top left;background-size:100% 100%;background-repeat:no-repeat;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform}.fancybox-can-zoomOut .fancybox-image-wrap{cursor:zoom-out}.fancybox-can-zoomIn .fancybox-image-wrap{cursor:zoom-in}.fancybox-can-drag .fancybox-image-wrap{cursor:-webkit-grab;cursor:grab}.fancybox-is-dragging .fancybox-image-wrap{cursor:-webkit-grabbing;cursor:grabbing}.fancybox-image,.fancybox-spaceball{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;border:0;max-width:none;max-height:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fancybox-spaceball{z-index:1}.fancybox-slide--iframe .fancybox-content{padding:0;width:80%;height:80%;max-width:calc(100% - 100px);max-height:calc(100% - 88px);overflow:visible;background:#fff}.fancybox-iframe{display:block;padding:0;border:0;height:100%}.fancybox-error,.fancybox-iframe{margin:0;width:100%;background:#fff}.fancybox-error{padding:40px;max-width:380px;cursor:default}.fancybox-error p{margin:0;padding:0;color:#444;font-size:16px;line-height:20px}.fancybox-button{box-sizing:border-box;display:inline-block;vertical-align:top;width:44px;height:44px;margin:0;padding:10px;border:0;border-radius:0;background:rgba(30,30,30,.6);transition:color .3s ease;cursor:pointer;outline:none}.fancybox-button,.fancybox-button:link,.fancybox-button:visited{color:#ccc}.fancybox-button:focus,.fancybox-button:hover{color:#fff}.fancybox-button[disabled]{color:#ccc;cursor:default;opacity:.6}.fancybox-button svg{display:block;position:relative;overflow:visible;shape-rendering:geometricPrecision}.fancybox-button svg path{fill:currentColor;stroke:currentColor;stroke-linejoin:round;stroke-width:3}.fancybox-button--share svg path{stroke-width:1}.fancybox-button--pause svg path:nth-child(1),.fancybox-button--play svg path:nth-child(2){display:none}.fancybox-button--zoom svg path{fill:transparent}.fancybox-navigation{display:none}.fancybox-show-nav .fancybox-navigation{display:block}.fancybox-navigation button{position:absolute;top:50%;margin:-50px 0 0;z-index:99997;background:transparent;width:60px;height:100px;padding:17px}.fancybox-navigation button:before{content:"";position:absolute;top:30px;right:10px;width:40px;height:40px;background:rgba(30,30,30,.6)}.fancybox-navigation .fancybox-button--arrow_left{left:0}.fancybox-navigation .fancybox-button--arrow_right{right:0}.fancybox-close-small{position:absolute;top:0;right:0;width:44px;height:44px;padding:0;margin:0;border:0;border-radius:0;background:transparent;z-index:10;cursor:pointer}.fancybox-close-small:after{content:"×";position:absolute;top:5px;right:5px;width:30px;height:30px;font:20px/30px Arial,Helvetica Neue,Helvetica,sans-serif;color:#888;font-weight:300;text-align:center;border-radius:50%;border-width:0;background-color:transparent;transition:background-color .25s;box-sizing:border-box;z-index:2}.fancybox-close-small:focus{outline:none}.fancybox-close-small:focus:after{outline:1px dotted #888}.fancybox-close-small:hover:after{color:#555;background:#eee}.fancybox-slide--iframe .fancybox-close-small,.fancybox-slide--image .fancybox-close-small{top:0;right:-44px}.fancybox-slide--iframe .fancybox-close-small:after,.fancybox-slide--image .fancybox-close-small:after{font-size:35px;color:#aaa}.fancybox-slide--iframe .fancybox-close-small:hover:after,.fancybox-slide--image .fancybox-close-small:hover:after{color:#fff;background:transparent}.fancybox-is-scaling .fancybox-close-small,.fancybox-is-zoomable.fancybox-can-drag .fancybox-close-small{display:none}.fancybox-caption-wrap{bottom:0;left:0;right:0;padding:60px 2vw 0;background:linear-gradient(180deg,transparent 0,rgba(0,0,0,.1) 20%,rgba(0,0,0,.2) 40%,rgba(0,0,0,.6) 80%,rgba(0,0,0,.8));pointer-events:none}.fancybox-caption{padding:30px 0;border-top:1px solid hsla(0,0%,100%,.4);font-size:14px;color:#fff;line-height:20px;-webkit-text-size-adjust:none}.fancybox-caption a,.fancybox-caption button,.fancybox-caption select{pointer-events:all;position:relative}.fancybox-caption a{color:#fff;text-decoration:underline}.fancybox-slide>.fancybox-loading{border:6px solid hsla(0,0%,39%,.4);border-top:6px solid hsla(0,0%,100%,.6);border-radius:100%;height:50px;width:50px;-webkit-animation:a .8s infinite linear;animation:a .8s infinite linear;background:transparent;position:absolute;top:50%;left:50%;margin-top:-30px;margin-left:-30px;z-index:99999}@-webkit-keyframes a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fancybox-animated{transition-timing-function:cubic-bezier(0,0,.25,1)}.fancybox-fx-slide.fancybox-slide--previous{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);opacity:0}.fancybox-fx-slide.fancybox-slide--next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);opacity:0}.fancybox-fx-slide.fancybox-slide--current{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}.fancybox-fx-fade.fancybox-slide--next,.fancybox-fx-fade.fancybox-slide--previous{opacity:0;transition-timing-function:cubic-bezier(.19,1,.22,1)}.fancybox-fx-fade.fancybox-slide--current{opacity:1}.fancybox-fx-zoom-in-out.fancybox-slide--previous{-webkit-transform:scale3d(1.5,1.5,1.5);transform:scale3d(1.5,1.5,1.5);opacity:0}.fancybox-fx-zoom-in-out.fancybox-slide--next{-webkit-transform:scale3d(.5,.5,.5);transform:scale3d(.5,.5,.5);opacity:0}.fancybox-fx-zoom-in-out.fancybox-slide--current{-webkit-transform:scaleX(1);transform:scaleX(1);opacity:1}.fancybox-fx-rotate.fancybox-slide--previous{-webkit-transform:rotate(-1turn);transform:rotate(-1turn);opacity:0}.fancybox-fx-rotate.fancybox-slide--next{-webkit-transform:rotate(1turn);transform:rotate(1turn);opacity:0}.fancybox-fx-rotate.fancybox-slide--current{-webkit-transform:rotate(0deg);transform:rotate(0deg);opacity:1}.fancybox-fx-circular.fancybox-slide--previous{-webkit-transform:scale3d(0,0,0) translate3d(-100%,0,0);transform:scale3d(0,0,0) translate3d(-100%,0,0);opacity:0}.fancybox-fx-circular.fancybox-slide--next{-webkit-transform:scale3d(0,0,0) translate3d(100%,0,0);transform:scale3d(0,0,0) translate3d(100%,0,0);opacity:0}.fancybox-fx-circular.fancybox-slide--current{-webkit-transform:scaleX(1) translateZ(0);transform:scaleX(1) translateZ(0);opacity:1}.fancybox-fx-tube.fancybox-slide--previous{-webkit-transform:translate3d(-100%,0,0) scale(.1) skew(-10deg);transform:translate3d(-100%,0,0) scale(.1) skew(-10deg)}.fancybox-fx-tube.fancybox-slide--next{-webkit-transform:translate3d(100%,0,0) scale(.1) skew(10deg);transform:translate3d(100%,0,0) scale(.1) skew(10deg)}.fancybox-fx-tube.fancybox-slide--current{-webkit-transform:translateZ(0) scale(1);transform:translateZ(0) scale(1)}.fancybox-share{padding:30px;border-radius:3px;background:#f4f4f4;max-width:90%}.fancybox-share h1{color:#222;margin:0 0 20px;font-size:33px;font-weight:700;text-align:center}.fancybox-share p{margin:0;padding:0;text-align:center}.fancybox-share p:first-of-type{margin-right:-10px}.fancybox-share_button{display:inline-block;text-decoration:none;margin:0 10px 10px 0;padding:10px 20px;border:0;border-radius:3px;box-shadow:0 2px 2px 0 rgba(0,0,0,.16);background:#fff;white-space:nowrap;font-size:16px;line-height:23px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;min-width:140px;color:#707070;transition:all .2s}.fancybox-share_button:focus,.fancybox-share_button:hover{text-decoration:none;color:#333;box-shadow:0 2px 2px 0 rgba(0,0,0,.3)}.fancybox-share_button svg{margin-right:5px;width:20px;height:20px;vertical-align:text-bottom}.fancybox-share input{box-sizing:border-box;width:100%;margin:5px 0 0;padding:10px 15px;border:1px solid #d7d7d7;border-radius:3px;background:#ebebeb;color:#5d5b5b;font-size:14px;outline:none}.fancybox-thumbs{display:none;position:absolute;top:0;bottom:0;right:0;width:212px;margin:0;padding:2px 2px 4px;background:#fff;-webkit-tap-highlight-color:transparent;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;box-sizing:border-box;z-index:99995}.fancybox-thumbs-x{overflow-y:hidden;overflow-x:auto}.fancybox-show-thumbs .fancybox-thumbs{display:block}.fancybox-show-thumbs .fancybox-inner{right:212px}.fancybox-thumbs>ul{list-style:none;position:absolute;position:relative;width:100%;height:100%;margin:0;padding:0;overflow-x:hidden;overflow-y:auto;font-size:0;white-space:nowrap}.fancybox-thumbs-x>ul{overflow:hidden}.fancybox-thumbs-y>ul::-webkit-scrollbar{width:7px}.fancybox-thumbs-y>ul::-webkit-scrollbar-track{background:#fff;border-radius:10px;box-shadow:inset 0 0 6px rgba(0,0,0,.3)}.fancybox-thumbs-y>ul::-webkit-scrollbar-thumb{background:#2a2a2a;border-radius:10px}.fancybox-thumbs>ul>li{float:left;overflow:hidden;padding:0;margin:2px;width:100px;height:75px;max-width:calc(50% - 4px);max-height:calc(100% - 8px);position:relative;cursor:pointer;outline:none;-webkit-tap-highlight-color:transparent;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box}li.fancybox-thumbs-loading{background:rgba(0,0,0,.1)}.fancybox-thumbs>ul>li>img{position:absolute;top:0;left:0;max-width:none;max-height:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fancybox-thumbs>ul>li:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border:4px solid #4ea7f9;z-index:99991;opacity:0;transition:all .2s cubic-bezier(.25,.46,.45,.94)}.fancybox-thumbs>ul>li.fancybox-thumbs-active:before{opacity:1}@media (max-width:800px){.fancybox-thumbs{width:110px}.fancybox-show-thumbs .fancybox-inner{right:110px}.fancybox-thumbs>ul>li{max-width:calc(100% - 10px)}} \ No newline at end of file diff --git a/source/lib/fancybox/source/jquery.fancybox.min.js b/source/lib/fancybox/source/jquery.fancybox.min.js new file mode 100644 index 000000000..aa654e17a --- /dev/null +++ b/source/lib/fancybox/source/jquery.fancybox.min.js @@ -0,0 +1,12 @@ +// ================================================== +// fancyBox v3.2.5 +// +// Licensed GPLv3 for open source use +// or fancyBox Commercial License for commercial use +// +// http://fancyapps.com/fancybox/ +// Copyright 2017 fancyApps +// +// ================================================== +!function(t,e,n,o){"use strict";function a(t){var e=n(t.currentTarget),o=t.data?t.data.options:{},a=e.attr("data-fancybox")||"",i=0,s=[];t.isDefaultPrevented()||(t.preventDefault(),a?(s=o.selector?n(o.selector):t.data?t.data.items:[],s=s.length?s.filter('[data-fancybox="'+a+'"]'):n('[data-fancybox="'+a+'"]'),i=s.index(e),i<0&&(i=0)):s=[e],n.fancybox.open(s,o,i))}if(n){if(n.fn.fancybox)return void("console"in t&&console.log("fancyBox already initialized"));var i={loop:!1,margin:[44,0],gutter:50,keyboard:!0,arrows:!0,infobar:!0,toolbar:!0,buttons:["slideShow","fullScreen","thumbs","share","close"],idleTime:3,smallBtn:"auto",protect:!1,modal:!1,image:{preload:"auto"},ajax:{settings:{data:{fancybox:!0}}},iframe:{tpl:'',preload:!0,css:{},attr:{scrolling:"auto"}},defaultType:"image",animationEffect:"zoom",animationDuration:500,zoomOpacity:"auto",transitionEffect:"fade",transitionDuration:366,slideClass:"",baseClass:"",baseTpl:'',spinnerTpl:'
      ',errorTpl:'

      {{ERROR}}

      ',btnTpl:{download:'',zoom:'',close:'',smallBtn:'',arrowLeft:'',arrowRight:''},parentEl:"body",autoFocus:!1,backFocus:!0,trapFocus:!0,fullScreen:{autoStart:!1},touch:{vertical:!0,momentum:!0},hash:null,media:{},slideShow:{autoStart:!1,speed:4e3},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"},onInit:n.noop,beforeLoad:n.noop,afterLoad:n.noop,beforeShow:n.noop,afterShow:n.noop,beforeClose:n.noop,afterClose:n.noop,onActivate:n.noop,onDeactivate:n.noop,clickContent:function(t,e){return"image"===t.type&&"zoom"},clickSlide:"close",clickOutside:"close",dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1,mobile:{margin:0,clickContent:function(t,e){return"image"===t.type&&"toggleControls"},clickSlide:function(t,e){return"image"===t.type?"toggleControls":"close"},dblclickContent:function(t,e){return"image"===t.type&&"zoom"},dblclickSlide:function(t,e){return"image"===t.type&&"zoom"}},lang:"en",i18n:{en:{CLOSE:"Close",NEXT:"Next",PREV:"Previous",ERROR:"The requested content cannot be loaded.
      Please try again later.",PLAY_START:"Start slideshow",PLAY_STOP:"Pause slideshow",FULL_SCREEN:"Full screen",THUMBS:"Thumbnails",DOWNLOAD:"Download",SHARE:"Share",ZOOM:"Zoom"},de:{CLOSE:"Schliessen",NEXT:"Weiter",PREV:"Zurück",ERROR:"Die angeforderten Daten konnten nicht geladen werden.
      Bitte versuchen Sie es später nochmal.",PLAY_START:"Diaschau starten",PLAY_STOP:"Diaschau beenden",FULL_SCREEN:"Vollbild",THUMBS:"Vorschaubilder",DOWNLOAD:"Herunterladen",SHARE:"Teilen",ZOOM:"Maßstab"}}},s=n(t),r=n(e),c=0,l=function(t){return t&&t.hasOwnProperty&&t instanceof n},u=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),d=function(){var t,n=e.createElement("fakeelement"),a={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(t in a)if(n.style[t]!==o)return a[t];return"transitionend"}(),f=function(t){return t&&t.length&&t[0].offsetHeight},p=function(t,o,a){var i=this;i.opts=n.extend(!0,{index:a},n.fancybox.defaults,o||{}),n.fancybox.isMobile&&(i.opts=n.extend(!0,{},i.opts,i.opts.mobile)),o&&n.isArray(o.buttons)&&(i.opts.buttons=o.buttons),i.id=i.opts.id||++c,i.group=[],i.currIndex=parseInt(i.opts.index,10)||0,i.prevIndex=null,i.prevPos=null,i.currPos=0,i.firstRun=null,i.createGroup(t),i.group.length&&(i.$lastFocus=n(e.activeElement).blur(),i.slides={},i.init())};n.extend(p.prototype,{init:function(){var a,i,s,c=this,l=c.group[c.currIndex],u=l.opts,d=n.fancybox.scrollbarWidth;c.scrollTop=r.scrollTop(),c.scrollLeft=r.scrollLeft(),n.fancybox.getInstance()||(n("body").addClass("fancybox-active"),/iPad|iPhone|iPod/.test(navigator.userAgent)&&!t.MSStream?"image"!==l.type&&n("body").css("top",n("body").scrollTop()*-1).addClass("fancybox-iosfix"):!n.fancybox.isMobile&&e.body.scrollHeight>t.innerHeight&&(d===o&&(a=n('
      ').appendTo("body"),d=n.fancybox.scrollbarWidth=a[0].offsetWidth-a[0].clientWidth,a.remove()),n("head").append('"),n("body").addClass("compensate-for-scrollbar"))),s="",n.each(u.buttons,function(t,e){s+=u.btnTpl[e]||""}),i=n(c.translate(c,u.baseTpl.replace("{{buttons}}",s).replace("{{arrows}}",u.btnTpl.arrowLeft+u.btnTpl.arrowRight))).attr("id","fancybox-container-"+c.id).addClass("fancybox-is-hidden").addClass(u.baseClass).data("FancyBox",c).appendTo(u.parentEl),c.$refs={container:i},["bg","inner","infobar","toolbar","stage","caption","navigation"].forEach(function(t){c.$refs[t]=i.find(".fancybox-"+t)}),c.trigger("onInit"),c.activate(),c.jumpTo(c.currIndex)},translate:function(t,e){var n=t.opts.i18n[t.opts.lang];return e.replace(/\{\{(\w+)\}\}/g,function(t,e){var a=n[e];return a===o?t:a})},createGroup:function(t){var e=this,a=n.makeArray(t);n.each(a,function(t,a){var i,s,r,c,l={},u={};n.isPlainObject(a)?(l=a,u=a.opts||a):"object"===n.type(a)&&n(a).length?(i=n(a),u=i.data(),u=n.extend({},u,u.options||{}),u.$orig=i,l.src=u.src||i.attr("href"),l.type||l.src||(l.type="inline",l.src=a)):l={type:"html",src:a+""},l.opts=n.extend(!0,{},e.opts,u),n.isArray(u.buttons)&&(l.opts.buttons=u.buttons),s=l.type||l.opts.type,r=l.src||"",!s&&r&&(r.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)?s="image":r.match(/\.(pdf)((\?|#).*)?$/i)?s="pdf":"#"===r.charAt(0)&&(s="inline")),s?l.type=s:e.trigger("objectNeedsType",l),l.index=e.group.length,l.opts.$orig&&!l.opts.$orig.length&&delete l.opts.$orig,!l.opts.$thumb&&l.opts.$orig&&(l.opts.$thumb=l.opts.$orig.find("img:first")),l.opts.$thumb&&!l.opts.$thumb.length&&delete l.opts.$thumb,"function"===n.type(l.opts.caption)&&(l.opts.caption=l.opts.caption.apply(a,[e,l])),"function"===n.type(e.opts.caption)&&(l.opts.caption=e.opts.caption.apply(a,[e,l])),l.opts.caption instanceof n||(l.opts.caption=l.opts.caption===o?"":l.opts.caption+""),"ajax"===s&&(c=r.split(/\s+/,2),c.length>1&&(l.src=c.shift(),l.opts.filter=c.shift())),"auto"==l.opts.smallBtn&&(n.inArray(s,["html","inline","ajax"])>-1?(l.opts.toolbar=!1,l.opts.smallBtn=!0):l.opts.smallBtn=!1),"pdf"===s&&(l.type="iframe",l.opts.iframe.preload=!1),l.opts.modal&&(l.opts=n.extend(!0,l.opts,{infobar:0,toolbar:0,smallBtn:0,keyboard:0,slideShow:0,fullScreen:0,thumbs:0,touch:0,clickContent:!1,clickSlide:!1,clickOutside:!1,dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1})),e.group.push(l)})},addEvents:function(){var o=this;o.removeEvents(),o.$refs.container.on("click.fb-close","[data-fancybox-close]",function(t){t.stopPropagation(),t.preventDefault(),o.close(t)}).on("click.fb-prev touchend.fb-prev","[data-fancybox-prev]",function(t){t.stopPropagation(),t.preventDefault(),o.previous()}).on("click.fb-next touchend.fb-next","[data-fancybox-next]",function(t){t.stopPropagation(),t.preventDefault(),o.next()}).on("click.fb","[data-fancybox-zoom]",function(t){o[o.isScaledDown()?"scaleToActual":"scaleToFit"]()}),s.on("orientationchange.fb resize.fb",function(t){t&&t.originalEvent&&"resize"===t.originalEvent.type?u(function(){o.update()}):(o.$refs.stage.hide(),setTimeout(function(){o.$refs.stage.show(),o.update()},600))}),r.on("focusin.fb",function(t){var a=n.fancybox?n.fancybox.getInstance():null;a.isClosing||!a.current||!a.current.opts.trapFocus||n(t.target).hasClass("fancybox-container")||n(t.target).is(e)||a&&"fixed"!==n(t.target).css("position")&&!a.$refs.container.has(t.target).length&&(t.stopPropagation(),a.focus(),s.scrollTop(o.scrollTop).scrollLeft(o.scrollLeft))}),r.on("keydown.fb",function(t){var e=o.current,a=t.keyCode||t.which;if(e&&e.opts.keyboard&&!n(t.target).is("input")&&!n(t.target).is("textarea"))return 8===a||27===a?(t.preventDefault(),void o.close(t)):37===a||38===a?(t.preventDefault(),void o.previous()):39===a||40===a?(t.preventDefault(),void o.next()):void o.trigger("afterKeydown",t,a)}),o.group[o.currIndex].opts.idleTime&&(o.idleSecondsCounter=0,r.on("mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle",function(t){o.idleSecondsCounter=0,o.isIdle&&o.showControls(),o.isIdle=!1}),o.idleInterval=t.setInterval(function(){o.idleSecondsCounter++,o.idleSecondsCounter>=o.group[o.currIndex].opts.idleTime&&(o.isIdle=!0,o.idleSecondsCounter=0,o.hideControls())},1e3))},removeEvents:function(){var e=this;s.off("orientationchange.fb resize.fb"),r.off("focusin.fb keydown.fb .fb-idle"),this.$refs.container.off(".fb-close .fb-prev .fb-next"),e.idleInterval&&(t.clearInterval(e.idleInterval),e.idleInterval=null)},previous:function(t){return this.jumpTo(this.currPos-1,t)},next:function(t){return this.jumpTo(this.currPos+1,t)},jumpTo:function(t,e,a){var i,s,r,c,l,u,d,p=this,h=p.group.length;if(!(p.isSliding||p.isClosing||p.isAnimating&&p.firstRun)){if(t=parseInt(t,10),s=p.current?p.current.opts.loop:p.opts.loop,!s&&(t<0||t>=h))return!1;if(i=p.firstRun=null===p.firstRun,!(h<2&&!i&&p.isSliding)){if(c=p.current,p.prevIndex=p.currIndex,p.prevPos=p.currPos,r=p.createSlide(t),h>1&&((s||r.index>0)&&p.createSlide(t-1),(s||r.indexr.pos?"next":"previous"),c.$slide.removeClass("fancybox-slide--complete fancybox-slide--current fancybox-slide--next fancybox-slide--previous"),c.isComplete=!1,e&&(r.isMoved||r.opts.transitionEffect)&&(r.isMoved?c.$slide.addClass(d):(d="fancybox-animated "+d+" fancybox-fx-"+r.opts.transitionEffect,n.fancybox.animate(c.$slide,d,e,function(){c.$slide.removeClass(d).removeAttr("style")}))))}}},createSlide:function(t){var e,o,a=this;return o=t%a.group.length,o=o<0?a.group.length+o:o,!a.slides[t]&&a.group[o]&&(e=n('
      ').appendTo(a.$refs.stage),a.slides[t]=n.extend(!0,{},a.group[o],{pos:t,$slide:e,isLoaded:!1}),a.updateSlide(a.slides[t])),a.slides[t]},scaleToActual:function(t,e,a){var i,s,r,c,l,u=this,d=u.current,f=d.$content,p=parseInt(d.$slide.width(),10),h=parseInt(d.$slide.height(),10),g=d.width,b=d.height;"image"!=d.type||d.hasError||!f||u.isAnimating||(n.fancybox.stop(f),u.isAnimating=!0,t=t===o?.5*p:t,e=e===o?.5*h:e,i=n.fancybox.getTranslate(f),c=g/i.width,l=b/i.height,s=.5*p-.5*g,r=.5*h-.5*b,g>p&&(s=i.left*c-(t*c-t),s>0&&(s=0),sh&&(r=i.top*l-(e*l-e),r>0&&(r=0),rt.width||o.height>t.height))},isScaledDown:function(){var t=this,e=t.current,o=e.$content,a=!1;return o&&(a=n.fancybox.getTranslate(o),a=a.width1||Math.abs(n.height()-o.height)>1),o},loadSlide:function(t){var e,o,a,i=this;if(!t.isLoading&&!t.isLoaded){switch(t.isLoading=!0,i.trigger("beforeLoad",t),e=t.type,o=t.$slide,o.off("refresh").trigger("onReset").addClass("fancybox-slide--"+(e||"unknown")).addClass(t.opts.slideClass),e){case"image":i.setImage(t);break;case"iframe":i.setIframe(t);break;case"html":i.setContent(t,t.src||t.content);break;case"inline":n(t.src).length?i.setContent(t,n(t.src)):i.setError(t);break;case"ajax":i.showLoading(t),a=n.ajax(n.extend({},t.opts.ajax.settings,{url:t.src,success:function(e,n){"success"===n&&i.setContent(t,e)},error:function(e,n){e&&"abort"!==n&&i.setError(t)}})),o.one("onReset",function(){a.abort()});break;default:i.setError(t)}return!0}},setImage:function(e){var o,a,i,s,r=this,c=e.opts.srcset||e.opts.image.srcset;if(c){i=t.devicePixelRatio||1,s=t.innerWidth*i,a=c.split(",").map(function(t){var e={};return t.trim().split(/\s+/).forEach(function(t,n){var o=parseInt(t.substring(0,t.length-1),10);return 0===n?e.url=t:void(o&&(e.value=o,e.postfix=t[t.length-1]))}),e}),a.sort(function(t,e){return t.value-e.value});for(var l=0;l=s||"x"===u.postfix&&u.value>=i){o=u;break}}!o&&a.length&&(o=a[a.length-1]),o&&(e.src=o.url,e.width&&e.height&&"w"==o.postfix&&(e.height=e.width/e.height*o.value,e.width=o.value))}e.$content=n('
      ').addClass("fancybox-is-hidden").appendTo(e.$slide),e.opts.preload!==!1&&e.opts.width&&e.opts.height&&(e.opts.thumb||e.opts.$thumb)?(e.width=e.opts.width,e.height=e.opts.height,e.$ghost=n("").one("error",function(){n(this).remove(),e.$ghost=null,r.setBigImage(e)}).one("load",function(){r.afterLoad(e),r.setBigImage(e)}).addClass("fancybox-image").appendTo(e.$content).attr("src",e.opts.thumb||e.opts.$thumb.attr("src"))):r.setBigImage(e)},setBigImage:function(t){var e=this,o=n("");t.$image=o.one("error",function(){e.setError(t)}).one("load",function(){clearTimeout(t.timouts),t.timouts=null,e.isClosing||(t.width=this.naturalWidth,t.height=this.naturalHeight,t.opts.image.srcset&&o.attr("sizes","100vw").attr("srcset",t.opts.image.srcset),e.hideLoading(t),t.$ghost?t.timouts=setTimeout(function(){t.timouts=null,t.$ghost.hide()},Math.min(300,Math.max(1e3,t.height/1600))):e.afterLoad(t))}).addClass("fancybox-image").attr("src",t.src).appendTo(t.$content),(o[0].complete||"complete"==o[0].readyState)&&o[0].naturalWidth&&o[0].naturalHeight?o.trigger("load"):o[0].error?o.trigger("error"):t.timouts=setTimeout(function(){o[0].complete||t.hasError||e.showLoading(t)},100)},setIframe:function(t){var e,a=this,i=t.opts.iframe,s=t.$slide;t.$content=n('
      ').css(i.css).appendTo(s),e=n(i.tpl.replace(/\{rnd\}/g,(new Date).getTime())).attr(i.attr).appendTo(t.$content),i.preload?(a.showLoading(t),e.on("load.fb error.fb",function(e){this.isReady=1,t.$slide.trigger("refresh"),a.afterLoad(t)}),s.on("refresh.fb",function(){var n,a,s,r=t.$content,c=i.css.width,l=i.css.height;if(1===e[0].isReady){try{a=e.contents(),s=a.find("body")}catch(t){}s&&s.length&&(c===o&&(n=e[0].contentWindow.document.documentElement.scrollWidth,c=Math.ceil(s.outerWidth(!0)+(r.width()-n)),c+=r.outerWidth()-r.innerWidth()),l===o&&(l=Math.ceil(s.outerHeight(!0)),l+=r.outerHeight()-r.innerHeight()),c&&r.width(c),l&&r.height(l)),r.removeClass("fancybox-is-hidden")}})):this.afterLoad(t),e.attr("src",t.src),t.opts.smallBtn===!0&&t.$content.prepend(a.translate(t,t.opts.btnTpl.smallBtn)),s.one("onReset",function(){try{n(this).find("iframe").hide().attr("src","//about:blank")}catch(t){}n(this).empty(),t.isLoaded=!1})},setContent:function(t,e){var o=this;o.isClosing||(o.hideLoading(t),t.$slide.empty(),l(e)&&e.parent().length?(e.parent(".fancybox-slide--inline").trigger("onReset"),t.$placeholder=n("
      ").hide().insertAfter(e),e.css("display","inline-block")):t.hasError||("string"===n.type(e)&&(e=n("
      ").append(n.trim(e)).contents(),3===e[0].nodeType&&(e=n("
      ").html(e))),t.opts.filter&&(e=n("
      ").html(e).find(t.opts.filter))),t.$slide.one("onReset",function(){t.$placeholder&&(t.$placeholder.after(e.hide()).remove(),t.$placeholder=null),t.$smallBtn&&(t.$smallBtn.remove(),t.$smallBtn=null),t.hasError||(n(this).empty(),t.isLoaded=!1)}),t.$content=n(e).appendTo(t.$slide),this.afterLoad(t))},setError:function(t){t.hasError=!0,t.$slide.removeClass("fancybox-slide--"+t.type),this.setContent(t,this.translate(t,t.opts.errorTpl))},showLoading:function(t){var e=this;t=t||e.current,t&&!t.$spinner&&(t.$spinner=n(e.opts.spinnerTpl).appendTo(t.$slide))},hideLoading:function(t){var e=this;t=t||e.current,t&&t.$spinner&&(t.$spinner.remove(),delete t.$spinner)},afterLoad:function(t){var e=this;e.isClosing||(t.isLoading=!1,t.isLoaded=!0,e.trigger("afterLoad",t),e.hideLoading(t),t.opts.smallBtn&&!t.$smallBtn&&(t.$smallBtn=n(e.translate(t,t.opts.btnTpl.smallBtn)).appendTo(t.$content.filter("div,form").first())),t.opts.protect&&t.$content&&!t.hasError&&(t.$content.on("contextmenu.fb",function(t){return 2==t.button&&t.preventDefault(),!0}),"image"===t.type&&n('
      ').appendTo(t.$content)),e.revealContent(t))},revealContent:function(t){var e,a,i,s,r,c=this,l=t.$slide,u=!1;return e=t.opts[c.firstRun?"animationEffect":"transitionEffect"],i=t.opts[c.firstRun?"animationDuration":"transitionDuration"],i=parseInt(t.forcedDuration===o?i:t.forcedDuration,10),!t.isMoved&&t.pos===c.currPos&&i||(e=!1),"zoom"!==e||t.pos===c.currPos&&i&&"image"===t.type&&!t.hasError&&(u=c.getThumbPos(t))||(e="fade"),"zoom"===e?(r=c.getFitPos(t),r.scaleX=r.width/u.width,r.scaleY=r.height/u.height,delete r.width,delete r.height,s=t.opts.zoomOpacity,"auto"==s&&(s=Math.abs(t.width/t.height-u.width/u.height)>.1),s&&(u.opacity=.1,r.opacity=1),n.fancybox.setTranslate(t.$content.removeClass("fancybox-is-hidden"),u),f(t.$content),void n.fancybox.animate(t.$content,r,i,function(){c.complete()})):(c.updateSlide(t),e?(n.fancybox.stop(l),a="fancybox-animated fancybox-slide--"+(t.pos>=c.prevPos?"next":"previous")+" fancybox-fx-"+e,l.removeAttr("style").removeClass("fancybox-slide--current fancybox-slide--next fancybox-slide--previous").addClass(a),t.$content.removeClass("fancybox-is-hidden"),f(l),void n.fancybox.animate(l,"fancybox-slide--current",i,function(e){l.removeClass(a).removeAttr("style"),t.pos===c.currPos&&c.complete()},!0)):(f(l),t.$content.removeClass("fancybox-is-hidden"),void(t.pos===c.currPos&&c.complete())))},getThumbPos:function(o){var a,i=this,s=!1,r=function(e){for(var o,a=e[0],i=a.getBoundingClientRect(),s=[];null!==a.parentElement;)"hidden"!==n(a.parentElement).css("overflow")&&"auto"!==n(a.parentElement).css("overflow")||s.push(a.parentElement.getBoundingClientRect()),a=a.parentElement;return o=s.every(function(t){var e=Math.min(i.right,t.right)-Math.max(i.left,t.left),n=Math.min(i.bottom,t.bottom)-Math.max(i.top,t.top);return e>0&&n>0}),o&&i.bottom>0&&i.right>0&&i.left=t.currPos-1&&o.pos<=t.currPos+1?a[o.pos]=o:o&&(n.fancybox.stop(o.$slide),o.$slide.off().remove())}),t.slides=a,t.updateCursor(),t.trigger("afterShow"),(n(e.activeElement).is("[disabled]")||o.opts.autoFocus&&"image"!=o.type&&"iframe"!==o.type)&&t.focus())},preload:function(){var t,e,n=this;n.group.length<2||(t=n.slides[n.currPos+1],e=n.slides[n.currPos-1],t&&"image"===t.type&&n.loadSlide(t),e&&"image"===e.type&&n.loadSlide(e))},focus:function(){var t,e=this.current;this.isClosing||(e&&e.isComplete&&(t=e.$slide.find("input[autofocus]:enabled:visible:first"),t.length||(t=e.$slide.find("button,:input,[tabindex],a").filter(":enabled:visible:first"))),t=t&&t.length?t:this.$refs.container,t.focus())},activate:function(){var t=this;n(".fancybox-container").each(function(){var e=n(this).data("FancyBox");e&&e.id!==t.id&&!e.isClosing&&(e.trigger("onDeactivate"),e.removeEvents(),e.isVisible=!1)}),t.isVisible=!0,(t.current||t.isIdle)&&(t.update(),t.updateControls()),t.trigger("onActivate"),t.addEvents()},close:function(t,e){var o,a,i,s,r,c,l=this,p=l.current,h=function(){l.cleanUp(t)};return!l.isClosing&&(l.isClosing=!0,l.trigger("beforeClose",t)===!1?(l.isClosing=!1,u(function(){l.update()}),!1):(l.removeEvents(),p.timouts&&clearTimeout(p.timouts),i=p.$content,o=p.opts.animationEffect,a=n.isNumeric(e)?e:o?p.opts.animationDuration:0,p.$slide.off(d).removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated"),p.$slide.siblings().trigger("onReset").remove(),a&&l.$refs.container.removeClass("fancybox-is-open").addClass("fancybox-is-closing"),l.hideLoading(p),l.hideControls(),l.updateCursor(),"zoom"!==o||t!==!0&&i&&a&&"image"===p.type&&!p.hasError&&(c=l.getThumbPos(p))||(o="fade"),"zoom"===o?(n.fancybox.stop(i),r=n.fancybox.getTranslate(i),r.width=r.width*r.scaleX,r.height=r.height*r.scaleY,s=p.opts.zoomOpacity,"auto"==s&&(s=Math.abs(p.width/p.height-c.width/c.height)>.1),s&&(c.opacity=0),r.scaleX=r.width/c.width,r.scaleY=r.height/c.height,r.width=c.width,r.height=c.height,n.fancybox.setTranslate(p.$content,r),f(p.$content),n.fancybox.animate(p.$content,c,a,h),!0):(o&&a?t===!0?setTimeout(h,a):n.fancybox.animate(p.$slide.removeClass("fancybox-slide--current"),"fancybox-animated fancybox-slide--previous fancybox-fx-"+o,a,h):h(),!0)))},cleanUp:function(t){var o,a,i=this,r=n("body");i.current.$slide.trigger("onReset"),i.$refs.container.empty().remove(),i.trigger("afterClose",t),i.$lastFocus&&i.current.opts.backFocus&&i.$lastFocus.focus(),i.current=null,o=n.fancybox.getInstance(),o?o.activate():(s.scrollTop(i.scrollTop).scrollLeft(i.scrollLeft),r.removeClass("fancybox-active compensate-for-scrollbar"),r.hasClass("fancybox-iosfix")&&(a=parseInt(e.body.style.top,10),r.removeClass("fancybox-iosfix").css("top","").scrollTop(a*-1)),n("#fancybox-style-noscroll").remove())},trigger:function(t,e){var o,a=Array.prototype.slice.call(arguments,1),i=this,s=e&&e.opts?e:i.current;return s?a.unshift(s):s=i,a.unshift(i),n.isFunction(s.opts[t])&&(o=s.opts[t].apply(s,a)),o===!1?o:void("afterClose"!==t&&i.$refs?i.$refs.container.trigger(t+".fb",a):r.trigger(t+".fb",a))},updateControls:function(t){var e=this,n=e.current,o=n.index,a=n.opts.caption,i=e.$refs.container,s=e.$refs.caption;n.$slide.trigger("refresh"),e.$caption=a&&a.length?s.html(a):null,e.isHiddenControls||e.isIdle||e.showControls(),i.find("[data-fancybox-count]").html(e.group.length),i.find("[data-fancybox-index]").html(o+1),i.find("[data-fancybox-prev]").prop("disabled",!n.opts.loop&&o<=0),i.find("[data-fancybox-next]").prop("disabled",!n.opts.loop&&o>=e.group.length-1),"image"===n.type?i.find("[data-fancybox-download]").attr("href",n.opts.image.src||n.src).show():i.find("[data-fancybox-download],[data-fancybox-zoom]").hide()},hideControls:function(){this.isHiddenControls=!0,this.$refs.container.removeClass("fancybox-show-infobar fancybox-show-toolbar fancybox-show-caption fancybox-show-nav")},showControls:function(){var t=this,e=t.current?t.current.opts:t.opts,n=t.$refs.container;t.isHiddenControls=!1,t.idleSecondsCounter=0,n.toggleClass("fancybox-show-toolbar",!(!e.toolbar||!e.buttons)).toggleClass("fancybox-show-infobar",!!(e.infobar&&t.group.length>1)).toggleClass("fancybox-show-nav",!!(e.arrows&&t.group.length>1)).toggleClass("fancybox-is-modal",!!e.modal),t.$caption?n.addClass("fancybox-show-caption "):n.removeClass("fancybox-show-caption")},toggleControls:function(){this.isHiddenControls?this.showControls():this.hideControls()}}),n.fancybox={version:"3.2.5",defaults:i,getInstance:function(t){var e=n('.fancybox-container:not(".fancybox-is-closing"):last').data("FancyBox"),o=Array.prototype.slice.call(arguments,1);return e instanceof p&&("string"===n.type(t)?e[t].apply(e,o):"function"===n.type(t)&&t.apply(e,o),e)},open:function(t,e,n){return new p(t,e,n)},close:function(t){var e=this.getInstance();e&&(e.close(),t===!0&&this.close())},destroy:function(){this.close(!0),r.off("click.fb-start")},isMobile:e.createTouch!==o&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),use3d:function(){var n=e.createElement("div");return t.getComputedStyle&&t.getComputedStyle(n).getPropertyValue("transform")&&!(e.documentMode&&e.documentMode<11)}(),getTranslate:function(t){var e;if(!t||!t.length)return!1;if(e=t.eq(0).css("transform"),e&&e.indexOf("matrix")!==-1?(e=e.split("(")[1],e=e.split(")")[0],e=e.split(",")):e=[],e.length)e=e.length>10?[e[13],e[12],e[0],e[5]]:[e[5],e[4],e[0],e[3]],e=e.map(parseFloat);else{e=[0,0,1,1];var n=/\.*translate\((.*)px,(.*)px\)/i,o=n.exec(t.eq(0).attr("style"));o&&(e[0]=parseFloat(o[2]),e[1]=parseFloat(o[1]))}return{top:e[0],left:e[1],scaleX:e[2],scaleY:e[3],opacity:parseFloat(t.css("opacity")),width:t.width(),height:t.height()}},setTranslate:function(t,e){var n="",a={};if(t&&e)return e.left===o&&e.top===o||(n=(e.left===o?t.position().left:e.left)+"px, "+(e.top===o?t.position().top:e.top)+"px",n=this.use3d?"translate3d("+n+", 0px)":"translate("+n+")"),e.scaleX!==o&&e.scaleY!==o&&(n=(n.length?n+" ":"")+"scale("+e.scaleX+", "+e.scaleY+")"),n.length&&(a.transform=n),e.opacity!==o&&(a.opacity=e.opacity),e.width!==o&&(a.width=e.width),e.height!==o&&(a.height=e.height),t.css(a)},animate:function(t,e,a,i,s){n.isFunction(a)&&(i=a,a=null),n.isPlainObject(e)||t.removeAttr("style"),t.on(d,function(a){(!a||!a.originalEvent||t.is(a.originalEvent.target)&&"z-index"!=a.originalEvent.propertyName)&&(n.fancybox.stop(t),n.isPlainObject(e)?e.scaleX!==o&&e.scaleY!==o&&(t.css("transition-duration",""),e.width=Math.round(t.width()*e.scaleX),e.height=Math.round(t.height()*e.scaleY),e.scaleX=1,e.scaleY=1,n.fancybox.setTranslate(t,e)):s!==!0&&t.removeClass(e),n.isFunction(i)&&i(a))}),n.isNumeric(a)&&t.css("transition-duration",a+"ms"),n.isPlainObject(e)?n.fancybox.setTranslate(t,e):t.addClass(e),e.scaleX&&t.hasClass("fancybox-image-wrap")&&t.parent().addClass("fancybox-is-scaling"),t.data("timer",setTimeout(function(){t.trigger("transitionend")},a+16))},stop:function(t){clearTimeout(t.data("timer")),t.off("transitionend").css("transition-duration",""),t.hasClass("fancybox-image-wrap")&&t.parent().removeClass("fancybox-is-scaling")}},n.fn.fancybox=function(t){var e;return t=t||{},e=t.selector||!1,e?n("body").off("click.fb-start",e).on("click.fb-start",e,{options:t},a):this.off("click.fb-start").on("click.fb-start",{items:this,options:t},a),this},r.on("click.fb-start","[data-fancybox]",a)}}(window,document,window.jQuery||jQuery),function(t){"use strict";var e=function(e,n,o){if(e)return o=o||"","object"===t.type(o)&&(o=t.param(o,!0)),t.each(n,function(t,n){e=e.replace("$"+t,n||"")}),o.length&&(e+=(e.indexOf("?")>0?"&":"?")+o),e},n={youtube:{matcher:/(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i,params:{autoplay:1,autohide:1,fs:1,rel:0,hd:1,wmode:"transparent",enablejsapi:1,html5:1},paramPlace:8,type:"iframe",url:"//www.youtube.com/embed/$4",thumb:"//img.youtube.com/vi/$4/hqdefault.jpg"},vimeo:{matcher:/^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/,params:{autoplay:1,hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1,api:1},paramPlace:3,type:"iframe",url:"//player.vimeo.com/video/$2"},metacafe:{matcher:/metacafe.com\/watch\/(\d+)\/(.*)?/,type:"iframe",url:"//www.metacafe.com/embed/$1/?ap=1"},dailymotion:{matcher:/dailymotion.com\/video\/(.*)\/?(.*)/,params:{additionalInfos:0,autoStart:1},type:"iframe",url:"//www.dailymotion.com/embed/video/$1"},vine:{matcher:/vine.co\/v\/([a-zA-Z0-9\?\=\-]+)/,type:"iframe",url:"//vine.co/v/$1/embed/simple"},instagram:{matcher:/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,type:"image",url:"//$1/p/$2/media/?size=l" +},gmap_place:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/?ll="+(t[9]?t[9]+"&z="+Math.floor(t[10])+(t[12]?t[12].replace(/^\//,"&"):""):t[12])+"&output="+(t[12]&&t[12].indexOf("layer=c")>0?"svembed":"embed")}},gmap_search:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/maps?q="+t[5].replace("query=","q=").replace("api=1","")+"&output=embed"}}};t(document).on("objectNeedsType.fb",function(o,a,i){var s,r,c,l,u,d,f,p=i.src||"",h=!1;s=t.extend(!0,{},n,i.opts.media),t.each(s,function(n,o){if(c=p.match(o.matcher)){if(h=o.type,d={},o.paramPlace&&c[o.paramPlace]){u=c[o.paramPlace],"?"==u[0]&&(u=u.substring(1)),u=u.split("&");for(var a=0;ae.clientHeight,i=("scroll"===o||"auto"===o)&&e.scrollWidth>e.clientWidth;return a||i},l=function(t){for(var e=!1;;){if(e=c(t.get(0)))break;if(t=t.parent(),!t.length||t.hasClass("fancybox-stage")||t.is("body"))break}return e},u=function(t){var e=this;e.instance=t,e.$bg=t.$refs.bg,e.$stage=t.$refs.stage,e.$container=t.$refs.container,e.destroy(),e.$container.on("touchstart.fb.touch mousedown.fb.touch",n.proxy(e,"ontouchstart"))};u.prototype.destroy=function(){this.$container.off(".fb.touch")},u.prototype.ontouchstart=function(o){var a=this,c=n(o.target),u=a.instance,d=u.current,f=d.$content,p="touchstart"==o.type;if(p&&a.$container.off("mousedown.fb.touch"),!d||a.instance.isAnimating||a.instance.isClosing)return o.stopPropagation(),void o.preventDefault();if((!o.originalEvent||2!=o.originalEvent.button)&&c.length&&!r(c)&&!r(c.parent())&&!(o.originalEvent.clientX>c[0].clientWidth+c.offset().left)&&(a.startPoints=i(o),a.startPoints&&!(a.startPoints.length>1&&u.isSliding))){if(a.$target=c,a.$content=f,a.canTap=!0,a.opts=d.opts.touch,n(e).off(".fb.touch"),n(e).on(p?"touchend.fb.touch touchcancel.fb.touch":"mouseup.fb.touch mouseleave.fb.touch",n.proxy(a,"ontouchend")),n(e).on(p?"touchmove.fb.touch":"mousemove.fb.touch",n.proxy(a,"ontouchmove")),!a.opts&&!u.canPan()||!c.is(a.$stage)&&!a.$stage.find(c).length)return void(c.is("img")&&o.preventDefault());o.stopPropagation(),n.fancybox.isMobile&&(l(a.$target)||l(a.$target.parent()))||o.preventDefault(),a.canvasWidth=Math.round(d.$slide[0].clientWidth),a.canvasHeight=Math.round(d.$slide[0].clientHeight),a.startTime=(new Date).getTime(),a.distanceX=a.distanceY=a.distance=0,a.isPanning=!1,a.isSwiping=!1,a.isZooming=!1,a.sliderStartPos=a.sliderLastPos||{top:0,left:0},a.contentStartPos=n.fancybox.getTranslate(a.$content),a.contentLastPos=null,1!==a.startPoints.length||a.isZooming||(a.canTap=!u.isSliding,"image"===d.type&&(a.contentStartPos.width>a.canvasWidth+1||a.contentStartPos.height>a.canvasHeight+1)?(n.fancybox.stop(a.$content),a.$content.css("transition-duration","0ms"),a.isPanning=!0):a.isSwiping=!0,a.$container.addClass("fancybox-controls--isGrabbing")),2!==a.startPoints.length||u.isAnimating||d.hasError||"image"!==d.type||!d.isLoaded&&!d.$ghost||(a.isZooming=!0,a.isSwiping=!1,a.isPanning=!1,n.fancybox.stop(a.$content),a.$content.css("transition-duration","0ms"),a.centerPointStartX=.5*(a.startPoints[0].x+a.startPoints[1].x)-n(t).scrollLeft(),a.centerPointStartY=.5*(a.startPoints[0].y+a.startPoints[1].y)-n(t).scrollTop(),a.percentageOfImageAtPinchPointX=(a.centerPointStartX-a.contentStartPos.left)/a.contentStartPos.width,a.percentageOfImageAtPinchPointY=(a.centerPointStartY-a.contentStartPos.top)/a.contentStartPos.height,a.startDistanceBetweenFingers=s(a.startPoints[0],a.startPoints[1]))}},u.prototype.ontouchmove=function(t){var e=this;if(e.newPoints=i(t),n.fancybox.isMobile&&(l(e.$target)||l(e.$target.parent())))return t.stopPropagation(),void(e.canTap=!1);if((e.opts||e.instance.canPan())&&e.newPoints&&e.newPoints.length&&(e.distanceX=s(e.newPoints[0],e.startPoints[0],"x"),e.distanceY=s(e.newPoints[0],e.startPoints[0],"y"),e.distance=s(e.newPoints[0],e.startPoints[0]),e.distance>0)){if(!e.$target.is(e.$stage)&&!e.$stage.find(e.$target).length)return;t.stopPropagation(),t.preventDefault(),e.isSwiping?e.onSwipe():e.isPanning?e.onPan():e.isZooming&&e.onZoom()}},u.prototype.onSwipe=function(){var e,i=this,s=i.isSwiping,r=i.sliderStartPos.left||0;s===!0?Math.abs(i.distance)>10&&(i.canTap=!1,i.instance.group.length<2&&i.opts.vertical?i.isSwiping="y":i.instance.isSliding||i.opts.vertical===!1||"auto"===i.opts.vertical&&n(t).width()>800?i.isSwiping="x":(e=Math.abs(180*Math.atan2(i.distanceY,i.distanceX)/Math.PI),i.isSwiping=e>45&&e<135?"y":"x"),i.instance.isSliding=i.isSwiping,i.startPoints=i.newPoints,n.each(i.instance.slides,function(t,e){n.fancybox.stop(e.$slide),e.$slide.css("transition-duration","0ms"),e.inTransition=!1,e.pos===i.instance.current.pos&&(i.sliderStartPos.left=n.fancybox.getTranslate(e.$slide).left)}),i.instance.SlideShow&&i.instance.SlideShow.isActive&&i.instance.SlideShow.stop()):("x"==s&&(i.distanceX>0&&(i.instance.group.length<2||0===i.instance.current.index&&!i.instance.current.opts.loop)?r+=Math.pow(i.distanceX,.8):i.distanceX<0&&(i.instance.group.length<2||i.instance.current.index===i.instance.group.length-1&&!i.instance.current.opts.loop)?r-=Math.pow(-i.distanceX,.8):r+=i.distanceX),i.sliderLastPos={top:"x"==s?0:i.sliderStartPos.top+i.distanceY,left:r},i.requestId&&(a(i.requestId),i.requestId=null),i.requestId=o(function(){i.sliderLastPos&&(n.each(i.instance.slides,function(t,e){var o=e.pos-i.instance.currPos;n.fancybox.setTranslate(e.$slide,{top:i.sliderLastPos.top,left:i.sliderLastPos.left+o*i.canvasWidth+o*e.opts.gutter})}),i.$container.addClass("fancybox-is-sliding"))}))},u.prototype.onPan=function(){var t,e,i,s=this;s.canTap=!1,t=s.contentStartPos.width>s.canvasWidth?s.contentStartPos.left+s.distanceX:s.contentStartPos.left,e=s.contentStartPos.top+s.distanceY,i=s.limitMovement(t,e,s.contentStartPos.width,s.contentStartPos.height),i.scaleX=s.contentStartPos.scaleX,i.scaleY=s.contentStartPos.scaleY,s.contentLastPos=i,s.requestId&&(a(s.requestId),s.requestId=null),s.requestId=o(function(){n.fancybox.setTranslate(s.$content,s.contentLastPos)})},u.prototype.limitMovement=function(t,e,n,o){var a,i,s,r,c=this,l=c.canvasWidth,u=c.canvasHeight,d=c.contentStartPos.left,f=c.contentStartPos.top,p=c.distanceX,h=c.distanceY;return a=Math.max(0,.5*l-.5*n),i=Math.max(0,.5*u-.5*o),s=Math.min(l-n,.5*l-.5*n),r=Math.min(u-o,.5*u-.5*o),n>l&&(p>0&&t>a&&(t=a-1+Math.pow(-a+d+p,.8)||0),p<0&&tu&&(h>0&&e>i&&(e=i-1+Math.pow(-i+f+h,.8)||0),h<0&&ei?(t=t>0?0:t,t=ts?(e=e>0?0:e,e=e50?(n.fancybox.animate(e.instance.current.$slide,{top:e.sliderStartPos.top+e.distanceY+150*e.velocityY,opacity:0},150),o=e.instance.close(!0,300)):"x"==t&&e.distanceX>50&&e.instance.group.length>1?o=e.instance.previous(e.speedX):"x"==t&&e.distanceX<-50&&e.instance.group.length>1&&(o=e.instance.next(e.speedX)),o!==!1||"x"!=t&&"y"!=t||e.instance.jumpTo(e.instance.current.index,150),e.$container.removeClass("fancybox-is-sliding")},u.prototype.endPanning=function(){var t,e,o,a=this;a.contentLastPos&&(a.opts.momentum===!1?(t=a.contentLastPos.left,e=a.contentLastPos.top):(t=a.contentLastPos.left+a.velocityX*a.speed,e=a.contentLastPos.top+a.velocityY*a.speed),o=a.limitPosition(t,e,a.contentStartPos.width,a.contentStartPos.height),o.width=a.contentStartPos.width,o.height=a.contentStartPos.height,n.fancybox.animate(a.$content,o,330))},u.prototype.endZooming=function(){var t,e,o,a,i=this,s=i.instance.current,r=i.newWidth,c=i.newHeight;i.contentLastPos&&(t=i.contentLastPos.left,e=i.contentLastPos.top,a={top:e,left:t,width:r,height:c,scaleX:1,scaleY:1},n.fancybox.setTranslate(i.$content,a),rs.width||c>s.height?i.instance.scaleToActual(i.centerPointStartX,i.centerPointStartY,150):(o=i.limitPosition(t,e,r,c),n.fancybox.setTranslate(i.content,n.fancybox.getTranslate(i.$content)),n.fancybox.animate(i.$content,o,150)))},u.prototype.onTap=function(t){var e,o=this,a=n(t.target),s=o.instance,r=s.current,c=t&&i(t)||o.startPoints,l=c[0]?c[0].x-o.$stage.offset().left:0,u=c[0]?c[0].y-o.$stage.offset().top:0,d=function(e){var a=r.opts[e];if(n.isFunction(a)&&(a=a.apply(s,[r,t])),a)switch(a){case"close":s.close(o.startEvent);break;case"toggleControls":s.toggleControls(!0);break;case"next":s.next();break;case"nextOrClose":s.group.length>1?s.next():s.close(o.startEvent);break;case"zoom":"image"==r.type&&(r.isLoaded||r.$ghost)&&(s.canPan()?s.scaleToFit():s.isScaledDown()?s.scaleToActual(l,u):s.group.length<2&&s.close(o.startEvent))}};if(!(t.originalEvent&&2==t.originalEvent.button||s.isSliding||l>a[0].clientWidth+a.offset().left)){if(a.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container"))e="Outside";else if(a.is(".fancybox-slide"))e="Slide";else{if(!s.current.$content||!s.current.$content.has(t.target).length)return;e="Content"}if(o.tapped){if(clearTimeout(o.tapped),o.tapped=null,Math.abs(l-o.tapX)>50||Math.abs(u-o.tapY)>50||s.isSliding)return this;d("dblclick"+e)}else o.tapX=l,o.tapY=u,r.opts["dblclick"+e]&&r.opts["dblclick"+e]!==r.opts["click"+e]?o.tapped=setTimeout(function(){o.tapped=null,d("click"+e)},300):d("click"+e);return this}},n(e).on("onActivate.fb",function(t,e){e&&!e.Guestures&&(e.Guestures=new u(e))}),n(e).on("beforeClose.fb",function(t,e){e&&e.Guestures&&e.Guestures.destroy()})}(window,document,window.jQuery||jQuery),function(t,e){"use strict";e.extend(!0,e.fancybox.defaults,{btnTpl:{slideShow:''},slideShow:{autoStart:!1,speed:3e3}});var n=function(t){this.instance=t,this.init()};e.extend(n.prototype,{timer:null,isActive:!1,$button:null,init:function(){var t=this;t.$button=t.instance.$refs.toolbar.find("[data-fancybox-play]").on("click",function(){t.toggle()}),(t.instance.group.length<2||!t.instance.group[t.instance.currIndex].opts.slideShow)&&t.$button.hide()},set:function(t){var e=this;e.instance&&e.instance.current&&(t===!0||e.instance.current.opts.loop||e.instance.currIndex'},fullScreen:{autoStart:!1}}),e(t).on({"onInit.fb":function(t,e){var n;e&&e.group[e.currIndex].opts.fullScreen?(n=e.$refs.container,n.on("click.fb-fullscreen","[data-fancybox-fullscreen]",function(t){t.stopPropagation(),t.preventDefault(),o.toggle(n[0])}),e.opts.fullScreen&&e.opts.fullScreen.autoStart===!0&&o.request(n[0]),e.FullScreen=o):e&&e.$refs.toolbar.find("[data-fancybox-fullscreen]").hide()},"afterKeydown.fb":function(t,e,n,o,a){e&&e.FullScreen&&70===a&&(o.preventDefault(),e.FullScreen.toggle(e.$refs.container[0]))},"beforeClose.fb":function(t){t&&t.FullScreen&&o.exit()}}),e(t).on(n.fullscreenchange,function(){var t=o.isFullscreen(),n=e.fancybox.getInstance();n&&(n.current&&"image"===n.current.type&&n.isAnimating&&(n.current.$content.css("transition","none"),n.isAnimating=!1,n.update(!0,!0,0)),n.trigger("onFullscreenChange",t),n.$refs.container.toggleClass("fancybox-is-fullscreen",t))})}(document,window.jQuery||jQuery),function(t,e){"use strict";e.fancybox.defaults=e.extend(!0,{btnTpl:{thumbs:''},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"}},e.fancybox.defaults);var n=function(t){this.init(t)};e.extend(n.prototype,{$button:null,$grid:null,$list:null,isVisible:!1,isActive:!1,init:function(t){var e=this;e.instance=t,t.Thumbs=e;var n=t.group[0],o=t.group[1];e.opts=t.group[t.currIndex].opts.thumbs,e.$button=t.$refs.toolbar.find("[data-fancybox-thumbs]"),e.opts&&n&&o&&("image"==n.type||n.opts.thumb||n.opts.$thumb)&&("image"==o.type||o.opts.thumb||o.opts.$thumb)?(e.$button.show().on("click",function(){e.toggle()}),e.isActive=!0):e.$button.hide()},create:function(){var t,n,o=this,a=o.instance,i=o.opts.parentEl;o.$grid=e('
      ').appendTo(a.$refs.container.find(i).addBack().filter(i)),t="
        ",e.each(a.group,function(e,o){n=o.opts.thumb||(o.opts.$thumb?o.opts.$thumb.attr("src"):null),n||"image"!==o.type||(n=o.src),n&&n.length&&(t+='
      • ')}),t+="
      ",o.$list=e(t).appendTo(o.$grid).on("click","li",function(){a.jumpTo(e(this).data("index"))}),o.$list.find("img").hide().one("load",function(){var t,n,o,a,i=e(this).parent().removeClass("fancybox-thumbs-loading"),s=i.outerWidth(),r=i.outerHeight();t=this.naturalWidth||this.width,n=this.naturalHeight||this.height,o=t/s,a=n/r,o>=1&&a>=1&&(o>a?(t/=a,n=r):(t=s,n/=o)),e(this).css({width:Math.floor(t),height:Math.floor(n),"margin-top":n>r?Math.floor(.3*r-.3*n):Math.floor(.5*r-.5*n),"margin-left":Math.floor(.5*s-.5*t)}).show()}).each(function(){this.src=e(this).data("src")}),"x"===o.opts.axis&&o.$list.width(parseInt(o.$grid.css("padding-right"))+a.group.length*o.$list.children().eq(0).outerWidth(!0)+"px")},focus:function(t){var e,n,o=this,a=o.$list;o.instance.current&&(e=a.children().removeClass("fancybox-thumbs-active").filter('[data-index="'+o.instance.current.index+'"]').addClass("fancybox-thumbs-active"),n=e.position(),"y"===o.opts.axis&&(n.top<0||n.top>a.height()-e.outerHeight())?a.stop().animate({scrollTop:a.scrollTop()+n.top},t):"x"===o.opts.axis&&(n.lefta.parent().scrollLeft()+(a.parent().width()-e.outerWidth()))&&a.parent().stop().animate({scrollLeft:n.left},t))},update:function(){this.instance.$refs.container.toggleClass("fancybox-show-thumbs",this.isVisible),this.isVisible?(this.$grid||this.create(),this.instance.trigger("onThumbsShow"),this.focus(0)):this.$grid&&this.instance.trigger("onThumbsHide"),this.instance.update()},hide:function(){this.isVisible=!1,this.update()},show:function(){this.isVisible=!0,this.update()},toggle:function(){this.isVisible=!this.isVisible,this.update()}}),e(t).on({"onInit.fb":function(t,e){var o;e&&!e.Thumbs&&(o=new n(e),o.isActive&&o.opts.autoStart===!0&&o.show())},"beforeShow.fb":function(t,e,n,o){var a=e&&e.Thumbs;a&&a.isVisible&&a.focus(o?0:250)},"afterKeydown.fb":function(t,e,n,o,a){var i=e&&e.Thumbs;i&&i.isActive&&71===a&&(o.preventDefault(),i.toggle())},"beforeClose.fb":function(t,e){var n=e&&e.Thumbs;n&&n.isVisible&&n.opts.hideOnClose!==!1&&n.$grid.hide()}})}(document,window.jQuery),function(t,e){"use strict";function n(t){var e={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})}e.extend(!0,e.fancybox.defaults,{btnTpl:{share:''},share:{tpl:''}}),e(t).on("click","[data-fancybox-share]",function(){var t,o,a=e.fancybox.getInstance();a&&(t=a.current.opts.hash===!1?a.current.src:window.location,o=a.current.opts.share.tpl.replace(/\{\{src\}\}/g,encodeURIComponent(t)).replace(/\{\{src_raw\}\}/g,n(t)).replace(/\{\{descr\}\}/g,a.$caption?encodeURIComponent(a.$caption.text()):""),e.fancybox.open({src:a.translate(a,o),type:"html",opts:{animationEffect:"fade",animationDuration:250}}))})}(document,window.jQuery||jQuery),function(t,e,n){"use strict";function o(){var t=e.location.hash.substr(1),n=t.split("-"),o=n.length>1&&/^\+?\d+$/.test(n[n.length-1])?parseInt(n.pop(-1),10)||1:1,a=n.join("-");return o<1&&(o=1),{hash:t,index:o,gallery:a}}function a(t){var e;""!==t.gallery&&(e=n("[data-fancybox='"+n.escapeSelector(t.gallery)+"']").eq(t.index-1),e.length||(e=n("#"+n.escapeSelector(t.gallery))),e.length&&(s=!1,e.trigger("click")))}function i(t){var e;return!!t&&(e=t.current?t.current.opts:t.opts,e.hash||(e.$orig?e.$orig.data("fancybox"):""))}n.escapeSelector||(n.escapeSelector=function(t){var e=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,n=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t};return(t+"").replace(e,n)});var s=!0,r=null,c=null;n(function(){n.fancybox.defaults.hash!==!1&&(n(t).on({"onInit.fb":function(t,e){var n,a;e.group[e.currIndex].opts.hash!==!1&&(n=o(),a=i(e),a&&n.gallery&&a==n.gallery&&(e.currIndex=n.index-1))},"beforeShow.fb":function(n,o,a){var l;a&&a.opts.hash!==!1&&(l=i(o),l&&""!==l&&(e.location.hash.indexOf(l)<0&&(o.opts.origHash=e.location.hash),r=l+(o.group.length>1?"-"+(a.index+1):""),"replaceState"in e.history?(c&&clearTimeout(c),c=setTimeout(function(){e.history[s?"pushState":"replaceState"]({},t.title,e.location.pathname+e.location.search+"#"+r),c=null,s=!1},300)):e.location.hash=r))},"beforeClose.fb":function(o,a,s){var l,u;c&&clearTimeout(c),s.opts.hash!==!1&&(l=i(a),u=a&&a.opts.origHash?a.opts.origHash:"",l&&""!==l&&("replaceState"in history?e.history.replaceState({},t.title,e.location.pathname+e.location.search+u):(e.location.hash=u,n(e).scrollTop(a.scrollTop).scrollLeft(a.scrollLeft))),r=null)}}),n(e).on("hashchange.fb",function(){var t=o();n.fancybox.getInstance()?!r||r===t.gallery+"-"+t.index||1===t.index&&r==t.gallery||(r=null,n.fancybox.close()):""!==t.gallery&&a(t)}),setTimeout(function(){a(o())},50))})}(document,window,window.jQuery||jQuery); \ No newline at end of file diff --git a/source/lib/fancybox/source/jquery.fancybox.pack.js b/source/lib/fancybox/source/jquery.fancybox.pack.js new file mode 100644 index 000000000..ac97c2cc9 --- /dev/null +++ b/source/lib/fancybox/source/jquery.fancybox.pack.js @@ -0,0 +1,5152 @@ +// ================================================== +// fancyBox v3.2.5 +// +// Licensed GPLv3 for open source use +// or fancyBox Commercial License for commercial use +// +// http://fancyapps.com/fancybox/ +// Copyright 2017 fancyApps +// +// ================================================== +;(function (window, document, $, undefined) { + 'use strict'; + + // If there's no jQuery, fancyBox can't work + // ========================================= + + if ( !$ ) { + return; + } + + // Check if fancyBox is already initialized + // ======================================== + + if ( $.fn.fancybox ) { + + if ( 'console' in window ) { + console.log( 'fancyBox already initialized' ); + } + + return; + } + + // Private default settings + // ======================== + + var defaults = { + + // Enable infinite gallery navigation + loop : false, + + // Space around image, ignored if zoomed-in or viewport width is smaller than 800px + margin : [44, 0], + + // Horizontal space between slides + gutter : 50, + + // Enable keyboard navigation + keyboard : true, + + // Should display navigation arrows at the screen edges + arrows : true, + + // Should display infobar (counter and arrows at the top) + infobar : true, + + // Should display toolbar (buttons at the top) + toolbar : true, + + // What buttons should appear in the top right corner. + // Buttons will be created using templates from `btnTpl` option + // and they will be placed into toolbar (class="fancybox-toolbar"` element) + buttons : [ + 'slideShow', + 'fullScreen', + 'thumbs', + 'share', + //'download', + //'zoom', + 'close' + ], + + // Detect "idle" time in seconds + idleTime : 3, + + // Should display buttons at top right corner of the content + // If 'auto' - they will be created for content having type 'html', 'inline' or 'ajax' + // Use template from `btnTpl.smallBtn` for customization + smallBtn : 'auto', + + // Disable right-click and use simple image protection for images + protect : false, + + // Shortcut to make content "modal" - disable keyboard navigtion, hide buttons, etc + modal : false, + + image : { + + // Wait for images to load before displaying + // Requires predefined image dimensions + // If 'auto' - will zoom in thumbnail if 'width' and 'height' attributes are found + preload : "auto" + + }, + + ajax : { + + // Object containing settings for ajax request + settings : { + + // This helps to indicate that request comes from the modal + // Feel free to change naming + data : { + fancybox : true + } + } + + }, + + iframe : { + + // Iframe template + tpl : '', + + // Preload iframe before displaying it + // This allows to calculate iframe content width and height + // (note: Due to "Same Origin Policy", you can't get cross domain data). + preload : true, + + // Custom CSS styling for iframe wrapping element + // You can use this to set custom iframe dimensions + css : {}, + + // Iframe tag attributes + attr : { + scrolling : 'auto' + } + + }, + + // Default content type if cannot be detected automatically + defaultType : 'image', + + // Open/close animation type + // Possible values: + // false - disable + // "zoom" - zoom images from/to thumbnail + // "fade" + // "zoom-in-out" + // + animationEffect : "zoom", + + // Duration in ms for open/close animation + animationDuration : 500, + + // Should image change opacity while zooming + // If opacity is "auto", then opacity will be changed if image and thumbnail have different aspect ratios + zoomOpacity : "auto", + + // Transition effect between slides + // + // Possible values: + // false - disable + // "fade' + // "slide' + // "circular' + // "tube' + // "zoom-in-out' + // "rotate' + // + transitionEffect : "fade", + + // Duration in ms for transition animation + transitionDuration : 366, + + // Custom CSS class for slide element + slideClass : '', + + // Custom CSS class for layout + baseClass : '', + + // Base template for layout + baseTpl : + '', + + // Loading indicator template + spinnerTpl : '
      ', + + // Error message template + errorTpl : '

      {{ERROR}}

      ', + + btnTpl : { + + download : '' + + '' + + '' + + '' + + '', + + zoom : '', + + close : '', + + // This small close button will be appended to your html/inline/ajax content by default, + // if "smallBtn" option is not set to false + smallBtn : '', + + // Arrows + arrowLeft : '', + + arrowRight : '' + }, + + // Container is injected into this element + parentEl : 'body', + + + // Focus handling + // ============== + + // Try to focus on the first focusable element after opening + autoFocus : false, + + // Put focus back to active element after closing + backFocus : true, + + // Do not let user to focus on element outside modal content + trapFocus : true, + + + // Module specific options + // ======================= + + fullScreen : { + autoStart : false, + }, + + // Set `touch: false` to disable dragging/swiping + touch : { + vertical : true, // Allow to drag content vertically + momentum : true // Continue movement after releasing mouse/touch when panning + }, + + // Hash value when initializing manually, + // set `false` to disable hash change + hash : null, + + // Customize or add new media types + // Example: + /* + media : { + youtube : { + params : { + autoplay : 0 + } + } + } + */ + media : {}, + + slideShow : { + autoStart : false, + speed : 4000 + }, + + thumbs : { + autoStart : false, // Display thumbnails on opening + hideOnClose : true, // Hide thumbnail grid when closing animation starts + parentEl : '.fancybox-container', // Container is injected into this element + axis : 'y' // Vertical (y) or horizontal (x) scrolling + }, + + // Callbacks + //========== + + // See Documentation/API/Events for more information + // Example: + /* + afterShow: function( instance, current ) { + console.info( 'Clicked element:' ); + console.info( current.opts.$orig ); + } + */ + + onInit : $.noop, // When instance has been initialized + + beforeLoad : $.noop, // Before the content of a slide is being loaded + afterLoad : $.noop, // When the content of a slide is done loading + + beforeShow : $.noop, // Before open animation starts + afterShow : $.noop, // When content is done loading and animating + + beforeClose : $.noop, // Before the instance attempts to close. Return false to cancel the close. + afterClose : $.noop, // After instance has been closed + + onActivate : $.noop, // When instance is brought to front + onDeactivate : $.noop, // When other instance has been activated + + + // Interaction + // =========== + + // Use options below to customize taken action when user clicks or double clicks on the fancyBox area, + // each option can be string or method that returns value. + // + // Possible values: + // "close" - close instance + // "next" - move to next gallery item + // "nextOrClose" - move to next gallery item or close if gallery has only one item + // "toggleControls" - show/hide controls + // "zoom" - zoom image (if loaded) + // false - do nothing + + // Clicked on the content + clickContent : function( current, event ) { + return current.type === 'image' ? 'zoom' : false; + }, + + // Clicked on the slide + clickSlide : 'close', + + // Clicked on the background (backdrop) element + clickOutside : 'close', + + // Same as previous two, but for double click + dblclickContent : false, + dblclickSlide : false, + dblclickOutside : false, + + + // Custom options when mobile device is detected + // ============================================= + + mobile : { + margin : 0, + + clickContent : function( current, event ) { + return current.type === 'image' ? 'toggleControls' : false; + }, + clickSlide : function( current, event ) { + return current.type === 'image' ? 'toggleControls' : 'close'; + }, + dblclickContent : function( current, event ) { + return current.type === 'image' ? 'zoom' : false; + }, + dblclickSlide : function( current, event ) { + return current.type === 'image' ? 'zoom' : false; + } + }, + + + // Internationalization + // ============ + + lang : 'en', + i18n : { + 'en' : { + CLOSE : 'Close', + NEXT : 'Next', + PREV : 'Previous', + ERROR : 'The requested content cannot be loaded.
      Please try again later.', + PLAY_START : 'Start slideshow', + PLAY_STOP : 'Pause slideshow', + FULL_SCREEN : 'Full screen', + THUMBS : 'Thumbnails', + DOWNLOAD : 'Download', + SHARE : 'Share', + ZOOM : 'Zoom' + }, + 'de' : { + CLOSE : 'Schliessen', + NEXT : 'Weiter', + PREV : 'Zurück', + ERROR : 'Die angeforderten Daten konnten nicht geladen werden.
      Bitte versuchen Sie es später nochmal.', + PLAY_START : 'Diaschau starten', + PLAY_STOP : 'Diaschau beenden', + FULL_SCREEN : 'Vollbild', + THUMBS : 'Vorschaubilder', + DOWNLOAD : 'Herunterladen', + SHARE : 'Teilen', + ZOOM : 'Maßstab' + } + } + + }; + + // Few useful variables and methods + // ================================ + + var $W = $(window); + var $D = $(document); + + var called = 0; + + + // Check if an object is a jQuery object and not a native JavaScript object + // ======================================================================== + + var isQuery = function ( obj ) { + return obj && obj.hasOwnProperty && obj instanceof $; + }; + + + // Handle multiple browsers for "requestAnimationFrame" and "cancelAnimationFrame" + // =============================================================================== + + var requestAFrame = (function () { + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + // if all else fails, use setTimeout + function (callback) { + return window.setTimeout(callback, 1000 / 60); + }; + })(); + + + // Detect the supported transition-end event property name + // ======================================================= + + var transitionEnd = (function () { + var t, el = document.createElement("fakeelement"); + + var transitions = { + "transition" : "transitionend", + "OTransition" : "oTransitionEnd", + "MozTransition" : "transitionend", + "WebkitTransition": "webkitTransitionEnd" + }; + + for (t in transitions) { + if (el.style[t] !== undefined){ + return transitions[t]; + } + } + + return 'transitionend'; + })(); + + + // Force redraw on an element. + // This helps in cases where the browser doesn't redraw an updated element properly. + // ================================================================================= + + var forceRedraw = function( $el ) { + return ( $el && $el.length && $el[0].offsetHeight ); + }; + + + // Class definition + // ================ + + var FancyBox = function( content, opts, index ) { + var self = this; + + self.opts = $.extend( true, { index : index }, $.fancybox.defaults, opts || {} ); + + if ( $.fancybox.isMobile ) { + self.opts = $.extend( true, {}, self.opts, self.opts.mobile ); + } + + // Exclude buttons option from deep merging + if ( opts && $.isArray( opts.buttons ) ) { + self.opts.buttons = opts.buttons; + } + + self.id = self.opts.id || ++called; + self.group = []; + + self.currIndex = parseInt( self.opts.index, 10 ) || 0; + self.prevIndex = null; + + self.prevPos = null; + self.currPos = 0; + + self.firstRun = null; + + // Create group elements from original item collection + self.createGroup( content ); + + if ( !self.group.length ) { + return; + } + + // Save last active element and current scroll position + self.$lastFocus = $(document.activeElement).blur(); + + // Collection of gallery objects + self.slides = {}; + + self.init(); + }; + + $.extend(FancyBox.prototype, { + + // Create DOM structure + // ==================== + + init : function() { + var self = this, + firstItem = self.group[ self.currIndex ], + firstItemOpts = firstItem.opts, + scrollbarWidth = $.fancybox.scrollbarWidth, + $scrollDiv, + $container, + buttonStr; + + self.scrollTop = $D.scrollTop(); + self.scrollLeft = $D.scrollLeft(); + + + // Hide scrollbars + // =============== + + if ( !$.fancybox.getInstance() ) { + + $( 'body' ).addClass( 'fancybox-active' ); + + // iOS hack + if ( /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream ) { + + // iOS has problems for input elements inside fixed containers, + // the workaround is to apply `position: fixed` to `` element, + // unfortunately, this makes it lose the scrollbars and forces address bar to appear. + + if ( firstItem.type !== 'image' ) { + $( 'body' ).css( 'top', $( 'body' ).scrollTop() * -1 ).addClass( 'fancybox-iosfix' ); + } + + } else if ( !$.fancybox.isMobile && document.body.scrollHeight > window.innerHeight ) { + + if ( scrollbarWidth === undefined ) { + $scrollDiv = $('
      ').appendTo( 'body' ); + + scrollbarWidth = $.fancybox.scrollbarWidth = $scrollDiv[0].offsetWidth - $scrollDiv[0].clientWidth; + + $scrollDiv.remove(); + } + + $( 'head' ).append( '' ); + $( 'body' ).addClass( 'compensate-for-scrollbar' ); + } + } + + + // Build html markup and set references + // ==================================== + + // Build html code for buttons and insert into main template + buttonStr = ''; + + $.each( firstItemOpts.buttons, function( index, value ) { + buttonStr += ( firstItemOpts.btnTpl[ value ] || '' ); + }); + + // Create markup from base template, it will be initially hidden to + // avoid unnecessary work like painting while initializing is not complete + $container = $( + self.translate( self, + firstItemOpts.baseTpl + .replace( '\{\{buttons\}\}', buttonStr ) + .replace( '\{\{arrows\}\}', firstItemOpts.btnTpl.arrowLeft + firstItemOpts.btnTpl.arrowRight ) + ) + ) + .attr( 'id', 'fancybox-container-' + self.id ) + .addClass( 'fancybox-is-hidden' ) + .addClass( firstItemOpts.baseClass ) + .data( 'FancyBox', self ) + .appendTo( firstItemOpts.parentEl ); + + // Create object holding references to jQuery wrapped nodes + self.$refs = { + container : $container + }; + + [ 'bg', 'inner', 'infobar', 'toolbar', 'stage', 'caption', 'navigation' ].forEach(function(item) { + self.$refs[ item ] = $container.find( '.fancybox-' + item ); + }); + + self.trigger( 'onInit' ); + + // Enable events, deactive previous instances + self.activate(); + + // Build slides, load and reveal content + self.jumpTo( self.currIndex ); + }, + + + // Simple i18n support - replaces object keys found in template + // with corresponding values + // ============================================================ + + translate : function( obj, str ) { + var arr = obj.opts.i18n[ obj.opts.lang ]; + + return str.replace(/\{\{(\w+)\}\}/g, function(match, n) { + var value = arr[n]; + + if ( value === undefined ) { + return match; + } + + return value; + }); + }, + + // Create array of gally item objects + // Check if each object has valid type and content + // =============================================== + + createGroup : function ( content ) { + var self = this; + var items = $.makeArray( content ); + + $.each(items, function( i, item ) { + var obj = {}, + opts = {}, + $item, + type, + src, + srcParts; + + // Step 1 - Make sure we have an object + // ==================================== + + if ( $.isPlainObject( item ) ) { + + // We probably have manual usage here, something like + // $.fancybox.open( [ { src : "image.jpg", type : "image" } ] ) + + obj = item; + opts = item.opts || item; + + } else if ( $.type( item ) === 'object' && $( item ).length ) { + + // Here we probably have jQuery collection returned by some selector + $item = $( item ); + + opts = $item.data(); + opts = $.extend( {}, opts, opts.options || {} ); + + // Here we store clicked element + opts.$orig = $item; + + obj.src = opts.src || $item.attr( 'href' ); + + // Assume that simple syntax is used, for example: + // `$.fancybox.open( $("#test"), {} );` + if ( !obj.type && !obj.src ) { + obj.type = 'inline'; + obj.src = item; + } + + } else { + + // Assume we have a simple html code, for example: + // $.fancybox.open( '

      Hi!

      ' ); + + obj = { + type : 'html', + src : item + '' + }; + + } + + // Each gallery object has full collection of options + obj.opts = $.extend( true, {}, self.opts, opts ); + + // Do not merge buttons array + if ( $.isArray( opts.buttons ) ) { + obj.opts.buttons = opts.buttons; + } + + + // Step 2 - Make sure we have content type, if not - try to guess + // ============================================================== + + type = obj.type || obj.opts.type; + src = obj.src || ''; + + if ( !type && src ) { + if ( src.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i) ) { + type = 'image'; + + } else if ( src.match(/\.(pdf)((\?|#).*)?$/i) ) { + type = 'pdf'; + + } else if ( src.charAt(0) === '#' ) { + type = 'inline'; + } + } + + if ( type ) { + obj.type = type; + + } else { + self.trigger( 'objectNeedsType', obj ); + } + + + // Step 3 - Some adjustments + // ========================= + + obj.index = self.group.length; + + // Check if $orig and $thumb objects exist + if ( obj.opts.$orig && !obj.opts.$orig.length ) { + delete obj.opts.$orig; + } + + if ( !obj.opts.$thumb && obj.opts.$orig ) { + obj.opts.$thumb = obj.opts.$orig.find( 'img:first' ); + } + + if ( obj.opts.$thumb && !obj.opts.$thumb.length ) { + delete obj.opts.$thumb; + } + + // "caption" is a "special" option, it can be used to customize caption per gallery item .. + if ( $.type( obj.opts.caption ) === 'function' ) { + obj.opts.caption = obj.opts.caption.apply( item, [ self, obj ] ); + } + + if ( $.type( self.opts.caption ) === 'function' ) { + obj.opts.caption = self.opts.caption.apply( item, [ self, obj ] ); + } + + // Make sure we have caption as a string or jQuery object + if ( !( obj.opts.caption instanceof $ ) ) { + obj.opts.caption = obj.opts.caption === undefined ? '' : obj.opts.caption + ''; + } + + // Check if url contains "filter" used to filter the content + // Example: "ajax.html #something" + if ( type === 'ajax' ) { + srcParts = src.split(/\s+/, 2); + + if ( srcParts.length > 1 ) { + obj.src = srcParts.shift(); + + obj.opts.filter = srcParts.shift(); + } + } + + if ( obj.opts.smallBtn == 'auto' ) { + + if ( $.inArray( type, ['html', 'inline', 'ajax'] ) > -1 ) { + obj.opts.toolbar = false; + obj.opts.smallBtn = true; + + } else { + obj.opts.smallBtn = false; + } + + } + + // If the type is "pdf", then simply load file into iframe + if ( type === 'pdf' ) { + obj.type = 'iframe'; + + obj.opts.iframe.preload = false; + } + + // Hide all buttons and disable interactivity for modal items + if ( obj.opts.modal ) { + + obj.opts = $.extend(true, obj.opts, { + // Remove buttons + infobar : 0, + toolbar : 0, + + smallBtn : 0, + + // Disable keyboard navigation + keyboard : 0, + + // Disable some modules + slideShow : 0, + fullScreen : 0, + thumbs : 0, + touch : 0, + + // Disable click event handlers + clickContent : false, + clickSlide : false, + clickOutside : false, + dblclickContent : false, + dblclickSlide : false, + dblclickOutside : false + }); + + } + + // Step 4 - Add processed object to group + // ====================================== + + self.group.push( obj ); + + }); + + }, + + + // Attach an event handler functions for: + // - navigation buttons + // - browser scrolling, resizing; + // - focusing + // - keyboard + // - detect idle + // ====================================== + + addEvents : function() { + var self = this; + + self.removeEvents(); + + // Make navigation elements clickable + self.$refs.container.on('click.fb-close', '[data-fancybox-close]', function(e) { + e.stopPropagation(); + e.preventDefault(); + + self.close( e ); + + }).on( 'click.fb-prev touchend.fb-prev', '[data-fancybox-prev]', function(e) { + e.stopPropagation(); + e.preventDefault(); + + self.previous(); + + }).on( 'click.fb-next touchend.fb-next', '[data-fancybox-next]', function(e) { + e.stopPropagation(); + e.preventDefault(); + + self.next(); + + }).on( 'click.fb', '[data-fancybox-zoom]', function(e) { + // Click handler for zoom button + self[ self.isScaledDown() ? 'scaleToActual' : 'scaleToFit' ](); + }); + + + // Handle page scrolling and browser resizing + $W.on('orientationchange.fb resize.fb', function(e) { + + if ( e && e.originalEvent && e.originalEvent.type === "resize" ) { + + requestAFrame(function() { + self.update(); + }); + + } else { + + self.$refs.stage.hide(); + + setTimeout(function() { + self.$refs.stage.show(); + + self.update(); + }, 600); + + } + + }); + + // Trap keyboard focus inside of the modal, so the user does not accidentally tab outside of the modal + // (a.k.a. "escaping the modal") + $D.on('focusin.fb', function(e) { + var instance = $.fancybox ? $.fancybox.getInstance() : null; + + if ( instance.isClosing || !instance.current || !instance.current.opts.trapFocus || $( e.target ).hasClass( 'fancybox-container' ) || $( e.target ).is( document ) ) { + return; + } + + if ( instance && $( e.target ).css( 'position' ) !== 'fixed' && !instance.$refs.container.has( e.target ).length ) { + e.stopPropagation(); + + instance.focus(); + + // Sometimes page gets scrolled, set it back + $W.scrollTop( self.scrollTop ).scrollLeft( self.scrollLeft ); + } + }); + + + // Enable keyboard navigation + $D.on('keydown.fb', function (e) { + var current = self.current, + keycode = e.keyCode || e.which; + + if ( !current || !current.opts.keyboard ) { + return; + } + + if ( $(e.target).is('input') || $(e.target).is('textarea') ) { + return; + } + + // Backspace and Esc keys + if ( keycode === 8 || keycode === 27 ) { + e.preventDefault(); + + self.close( e ); + + return; + } + + // Left arrow and Up arrow + if ( keycode === 37 || keycode === 38 ) { + e.preventDefault(); + + self.previous(); + + return; + } + + // Righ arrow and Down arrow + if ( keycode === 39 || keycode === 40 ) { + e.preventDefault(); + + self.next(); + + return; + } + + self.trigger('afterKeydown', e, keycode); + }); + + + // Hide controls after some inactivity period + if ( self.group[ self.currIndex ].opts.idleTime ) { + self.idleSecondsCounter = 0; + + $D.on('mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle', function(e) { + self.idleSecondsCounter = 0; + + if ( self.isIdle ) { + self.showControls(); + } + + self.isIdle = false; + }); + + self.idleInterval = window.setInterval(function() { + self.idleSecondsCounter++; + + if ( self.idleSecondsCounter >= self.group[ self.currIndex ].opts.idleTime ) { + self.isIdle = true; + self.idleSecondsCounter = 0; + + self.hideControls(); + } + + }, 1000); + } + + }, + + + // Remove events added by the core + // =============================== + + removeEvents : function() { + var self = this; + + $W.off( 'orientationchange.fb resize.fb' ); + $D.off( 'focusin.fb keydown.fb .fb-idle' ); + + this.$refs.container.off( '.fb-close .fb-prev .fb-next' ); + + if ( self.idleInterval ) { + window.clearInterval( self.idleInterval ); + + self.idleInterval = null; + } + }, + + + // Change to previous gallery item + // =============================== + + previous : function( duration ) { + return this.jumpTo( this.currPos - 1, duration ); + }, + + + // Change to next gallery item + // =========================== + + next : function( duration ) { + return this.jumpTo( this.currPos + 1, duration ); + }, + + + // Switch to selected gallery item + // =============================== + + jumpTo : function ( pos, duration, slide ) { + var self = this, + firstRun, + loop, + current, + previous, + canvasWidth, + currentPos, + transitionProps; + + var groupLen = self.group.length; + + if ( self.isSliding || self.isClosing || ( self.isAnimating && self.firstRun ) ) { + return; + } + + pos = parseInt( pos, 10 ); + loop = self.current ? self.current.opts.loop : self.opts.loop; + + if ( !loop && ( pos < 0 || pos >= groupLen ) ) { + return false; + } + + firstRun = self.firstRun = ( self.firstRun === null ); + + if ( groupLen < 2 && !firstRun && !!self.isSliding ) { + return; + } + + previous = self.current; + + self.prevIndex = self.currIndex; + self.prevPos = self.currPos; + + // Create slides + current = self.createSlide( pos ); + + if ( groupLen > 1 ) { + if ( loop || current.index > 0 ) { + self.createSlide( pos - 1 ); + } + + if ( loop || current.index < groupLen - 1 ) { + self.createSlide( pos + 1 ); + } + } + + self.current = current; + self.currIndex = current.index; + self.currPos = current.pos; + + self.trigger( 'beforeShow', firstRun ); + + self.updateControls(); + + currentPos = $.fancybox.getTranslate( current.$slide ); + + current.isMoved = ( currentPos.left !== 0 || currentPos.top !== 0 ) && !current.$slide.hasClass( 'fancybox-animated' ); + current.forcedDuration = undefined; + + if ( $.isNumeric( duration ) ) { + current.forcedDuration = duration; + } else { + duration = current.opts[ firstRun ? 'animationDuration' : 'transitionDuration' ]; + } + + duration = parseInt( duration, 10 ); + + // Fresh start - reveal container, current slide and start loading content + if ( firstRun ) { + + if ( current.opts.animationEffect && duration ) { + self.$refs.container.css( 'transition-duration', duration + 'ms' ); + } + + self.$refs.container.removeClass( 'fancybox-is-hidden' ); + + forceRedraw( self.$refs.container ); + + self.$refs.container.addClass( 'fancybox-is-open' ); + + // Make first slide visible (to display loading icon, if needed) + current.$slide.addClass( 'fancybox-slide--current' ); + + self.loadSlide( current ); + + self.preload(); + + return; + } + + // Clean up + $.each(self.slides, function( index, slide ) { + $.fancybox.stop( slide.$slide ); + }); + + // Make current that slide is visible even if content is still loading + current.$slide.removeClass( 'fancybox-slide--next fancybox-slide--previous' ).addClass( 'fancybox-slide--current' ); + + // If slides have been dragged, animate them to correct position + if ( current.isMoved ) { + canvasWidth = Math.round( current.$slide.width() ); + + $.each(self.slides, function( index, slide ) { + var pos = slide.pos - current.pos; + + $.fancybox.animate( slide.$slide, { + top : 0, + left : ( pos * canvasWidth ) + ( pos * slide.opts.gutter ) + }, duration, function() { + + slide.$slide.removeAttr('style').removeClass( 'fancybox-slide--next fancybox-slide--previous' ); + + if ( slide.pos === self.currPos ) { + current.isMoved = false; + + self.complete(); + } + }); + }); + + } else { + self.$refs.stage.children().removeAttr( 'style' ); + } + + // Start transition that reveals current content + // or wait when it will be loaded + + if ( current.isLoaded ) { + self.revealContent( current ); + + } else { + self.loadSlide( current ); + } + + self.preload(); + + if ( previous.pos === current.pos ) { + return; + } + + // Handle previous slide + // ===================== + + transitionProps = 'fancybox-slide--' + ( previous.pos > current.pos ? 'next' : 'previous' ); + + previous.$slide.removeClass( 'fancybox-slide--complete fancybox-slide--current fancybox-slide--next fancybox-slide--previous' ); + + previous.isComplete = false; + + if ( !duration || ( !current.isMoved && !current.opts.transitionEffect ) ) { + return; + } + + if ( current.isMoved ) { + previous.$slide.addClass( transitionProps ); + + } else { + + transitionProps = 'fancybox-animated ' + transitionProps + ' fancybox-fx-' + current.opts.transitionEffect; + + $.fancybox.animate( previous.$slide, transitionProps, duration, function() { + previous.$slide.removeClass( transitionProps ).removeAttr( 'style' ); + }); + + } + + }, + + + // Create new "slide" element + // These are gallery items that are actually added to DOM + // ======================================================= + + createSlide : function( pos ) { + + var self = this; + var $slide; + var index; + + index = pos % self.group.length; + index = index < 0 ? self.group.length + index : index; + + if ( !self.slides[ pos ] && self.group[ index ] ) { + $slide = $('
      ').appendTo( self.$refs.stage ); + + self.slides[ pos ] = $.extend( true, {}, self.group[ index ], { + pos : pos, + $slide : $slide, + isLoaded : false, + }); + + self.updateSlide( self.slides[ pos ] ); + } + + return self.slides[ pos ]; + }, + + + // Scale image to the actual size of the image + // =========================================== + + scaleToActual : function( x, y, duration ) { + + var self = this; + + var current = self.current; + var $what = current.$content; + + var imgPos, posX, posY, scaleX, scaleY; + + var canvasWidth = parseInt( current.$slide.width(), 10 ); + var canvasHeight = parseInt( current.$slide.height(), 10 ); + + var newImgWidth = current.width; + var newImgHeight = current.height; + + if ( !( current.type == 'image' && !current.hasError) || !$what || self.isAnimating ) { + return; + } + + $.fancybox.stop( $what ); + + self.isAnimating = true; + + x = x === undefined ? canvasWidth * 0.5 : x; + y = y === undefined ? canvasHeight * 0.5 : y; + + imgPos = $.fancybox.getTranslate( $what ); + + scaleX = newImgWidth / imgPos.width; + scaleY = newImgHeight / imgPos.height; + + // Get center position for original image + posX = ( canvasWidth * 0.5 - newImgWidth * 0.5 ); + posY = ( canvasHeight * 0.5 - newImgHeight * 0.5 ); + + // Make sure image does not move away from edges + if ( newImgWidth > canvasWidth ) { + posX = imgPos.left * scaleX - ( ( x * scaleX ) - x ); + + if ( posX > 0 ) { + posX = 0; + } + + if ( posX < canvasWidth - newImgWidth ) { + posX = canvasWidth - newImgWidth; + } + } + + if ( newImgHeight > canvasHeight) { + posY = imgPos.top * scaleY - ( ( y * scaleY ) - y ); + + if ( posY > 0 ) { + posY = 0; + } + + if ( posY < canvasHeight - newImgHeight ) { + posY = canvasHeight - newImgHeight; + } + } + + self.updateCursor( newImgWidth, newImgHeight ); + + $.fancybox.animate( $what, { + top : posY, + left : posX, + scaleX : scaleX, + scaleY : scaleY + }, duration || 330, function() { + self.isAnimating = false; + }); + + // Stop slideshow + if ( self.SlideShow && self.SlideShow.isActive ) { + self.SlideShow.stop(); + } + }, + + + // Scale image to fit inside parent element + // ======================================== + + scaleToFit : function( duration ) { + + var self = this; + + var current = self.current; + var $what = current.$content; + var end; + + if ( !( current.type == 'image' && !current.hasError) || !$what || self.isAnimating ) { + return; + } + + $.fancybox.stop( $what ); + + self.isAnimating = true; + + end = self.getFitPos( current ); + + self.updateCursor( end.width, end.height ); + + $.fancybox.animate( $what, { + top : end.top, + left : end.left, + scaleX : end.width / $what.width(), + scaleY : end.height / $what.height() + }, duration || 330, function() { + self.isAnimating = false; + }); + + }, + + // Calculate image size to fit inside viewport + // =========================================== + + getFitPos : function( slide ) { + var self = this; + var $what = slide.$content; + + var imgWidth = slide.width; + var imgHeight = slide.height; + + var margin = slide.opts.margin; + + var canvasWidth, canvasHeight, minRatio, width, height; + + if ( !$what || !$what.length || ( !imgWidth && !imgHeight) ) { + return false; + } + + // Convert "margin to CSS style: [ top, right, bottom, left ] + if ( $.type( margin ) === "number" ) { + margin = [ margin, margin ]; + } + + if ( margin.length == 2 ) { + margin = [ margin[0], margin[1], margin[0], margin[1] ]; + } + + // We can not use $slide width here, because it can have different diemensions while in transiton + canvasWidth = parseInt( self.$refs.stage.width(), 10 ) - ( margin[ 1 ] + margin[ 3 ] ); + canvasHeight = parseInt( self.$refs.stage.height(), 10 ) - ( margin[ 0 ] + margin[ 2 ] ); + + minRatio = Math.min(1, canvasWidth / imgWidth, canvasHeight / imgHeight ); + + width = Math.floor( minRatio * imgWidth ); + height = Math.floor( minRatio * imgHeight ); + + // Use floor rounding to make sure it really fits + return { + top : Math.floor( ( canvasHeight - height ) * 0.5 ) + margin[ 0 ], + left : Math.floor( ( canvasWidth - width ) * 0.5 ) + margin[ 3 ], + width : width, + height : height + }; + + }, + + + // Update position and content of all slides + // ========================================= + + update : function() { + + var self = this; + + $.each( self.slides, function( key, slide ) { + self.updateSlide( slide ); + }); + + }, + + + // Update slide position and scale content to fit + // ============================================== + + updateSlide : function( slide ) { + + var self = this; + var $what = slide.$content; + + if ( $what && ( slide.width || slide.height ) ) { + self.isAnimating = false; + + $.fancybox.stop( $what ); + + $.fancybox.setTranslate( $what, self.getFitPos( slide ) ); + + if ( slide.pos === self.currPos ) { + self.updateCursor(); + } + } + + slide.$slide.trigger( 'refresh' ); + + self.trigger( 'onUpdate', slide ); + + }, + + // Update cursor style depending if content can be zoomed + // ====================================================== + + updateCursor : function( nextWidth, nextHeight ) { + + var self = this; + var isScaledDown; + + var $container = self.$refs.container.removeClass( 'fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-drag fancybox-can-zoomOut' ); + + if ( !self.current || self.isClosing ) { + return; + } + + if ( self.isZoomable() ) { + + $container.addClass( 'fancybox-is-zoomable' ); + + if ( nextWidth !== undefined && nextHeight !== undefined ) { + isScaledDown = nextWidth < self.current.width && nextHeight < self.current.height; + + } else { + isScaledDown = self.isScaledDown(); + } + + if ( isScaledDown ) { + + // If image is scaled down, then, obviously, it can be zoomed to full size + $container.addClass( 'fancybox-can-zoomIn' ); + + } else { + + if ( self.current.opts.touch ) { + + // If image size ir largen than available available and touch module is not disable, + // then user can do panning + $container.addClass( 'fancybox-can-drag' ); + + } else { + $container.addClass( 'fancybox-can-zoomOut' ); + } + + } + + } else if ( self.current.opts.touch ) { + $container.addClass( 'fancybox-can-drag' ); + } + + }, + + + // Check if current slide is zoomable + // ================================== + + isZoomable : function() { + + var self = this; + + var current = self.current; + var fitPos; + + if ( !current || self.isClosing ) { + return; + } + + // Assume that slide is zoomable if + // - image is loaded successfuly + // - click action is "zoom" + // - actual size of the image is smaller than available area + if ( current.type === 'image' && current.isLoaded && !current.hasError && + ( current.opts.clickContent === 'zoom' || ( $.isFunction( current.opts.clickContent ) && current.opts.clickContent( current ) === "zoom" ) ) + ) { + + fitPos = self.getFitPos( current ); + + if ( current.width > fitPos.width || current.height > fitPos.height ) { + return true; + } + + } + + return false; + + }, + + + // Check if current image dimensions are smaller than actual + // ========================================================= + + isScaledDown : function() { + + var self = this; + + var current = self.current; + var $what = current.$content; + + var rez = false; + + if ( $what ) { + rez = $.fancybox.getTranslate( $what ); + rez = rez.width < current.width || rez.height < current.height; + } + + return rez; + + }, + + + // Check if image dimensions exceed parent element + // =============================================== + + canPan : function() { + + var self = this; + + var current = self.current; + var $what = current.$content; + + var rez = false; + + if ( $what ) { + rez = self.getFitPos( current ); + rez = Math.abs( $what.width() - rez.width ) > 1 || Math.abs( $what.height() - rez.height ) > 1; + + } + + return rez; + + }, + + + // Load content into the slide + // =========================== + + loadSlide : function( slide ) { + + var self = this, type, $slide; + var ajaxLoad; + + if ( slide.isLoading ) { + return; + } + + if ( slide.isLoaded ) { + return; + } + + slide.isLoading = true; + + self.trigger( 'beforeLoad', slide ); + + type = slide.type; + $slide = slide.$slide; + + $slide + .off( 'refresh' ) + .trigger( 'onReset' ) + .addClass( 'fancybox-slide--' + ( type || 'unknown' ) ) + .addClass( slide.opts.slideClass ); + + // Create content depending on the type + + switch ( type ) { + + case 'image': + + self.setImage( slide ); + + break; + + case 'iframe': + + self.setIframe( slide ); + + break; + + case 'html': + + self.setContent( slide, slide.src || slide.content ); + + break; + + case 'inline': + + if ( $( slide.src ).length ) { + self.setContent( slide, $( slide.src ) ); + + } else { + self.setError( slide ); + } + + break; + + case 'ajax': + + self.showLoading( slide ); + + ajaxLoad = $.ajax( $.extend( {}, slide.opts.ajax.settings, { + url : slide.src, + success : function ( data, textStatus ) { + + if ( textStatus === 'success' ) { + self.setContent( slide, data ); + } + + }, + error : function ( jqXHR, textStatus ) { + + if ( jqXHR && textStatus !== 'abort' ) { + self.setError( slide ); + } + + } + })); + + $slide.one( 'onReset', function () { + ajaxLoad.abort(); + }); + + break; + + default: + + self.setError( slide ); + + break; + + } + + return true; + + }, + + + // Use thumbnail image, if possible + // ================================ + + setImage : function( slide ) { + + var self = this; + var srcset = slide.opts.srcset || slide.opts.image.srcset; + + var found, temp, pxRatio, windowWidth; + + // If we have "srcset", then we need to find matching "src" value. + // This is necessary, because when you set an src attribute, the browser will preload the image + // before any javascript or even CSS is applied. + if ( srcset ) { + pxRatio = window.devicePixelRatio || 1; + windowWidth = window.innerWidth * pxRatio; + + temp = srcset.split(',').map(function ( el ) { + var ret = {}; + + el.trim().split(/\s+/).forEach(function ( el, i ) { + var value = parseInt( el.substring(0, el.length - 1), 10 ); + + if ( i === 0 ) { + return ( ret.url = el ); + } + + if ( value ) { + ret.value = value; + ret.postfix = el[ el.length - 1 ]; + } + + }); + + return ret; + }); + + // Sort by value + temp.sort(function (a, b) { + return a.value - b.value; + }); + + // Ok, now we have an array of all srcset values + for ( var j = 0; j < temp.length; j++ ) { + var el = temp[ j ]; + + if ( ( el.postfix === 'w' && el.value >= windowWidth ) || ( el.postfix === 'x' && el.value >= pxRatio ) ) { + found = el; + break; + } + } + + // If not found, take the last one + if ( !found && temp.length ) { + found = temp[ temp.length - 1 ]; + } + + if ( found ) { + slide.src = found.url; + + // If we have default width/height values, we can calculate height for matching source + if ( slide.width && slide.height && found.postfix == 'w' ) { + slide.height = ( slide.width / slide.height ) * found.value; + slide.width = found.value; + } + } + } + + // This will be wrapper containing both ghost and actual image + slide.$content = $('
      ') + .addClass( 'fancybox-is-hidden' ) + .appendTo( slide.$slide ); + + + // If we have a thumbnail, we can display it while actual image is loading + // Users will not stare at black screen and actual image will appear gradually + if ( slide.opts.preload !== false && slide.opts.width && slide.opts.height && ( slide.opts.thumb || slide.opts.$thumb ) ) { + + slide.width = slide.opts.width; + slide.height = slide.opts.height; + + slide.$ghost = $('') + .one('error', function() { + + $(this).remove(); + + slide.$ghost = null; + + self.setBigImage( slide ); + + }) + .one('load', function() { + + self.afterLoad( slide ); + + self.setBigImage( slide ); + + }) + .addClass( 'fancybox-image' ) + .appendTo( slide.$content ) + .attr( 'src', slide.opts.thumb || slide.opts.$thumb.attr( 'src' ) ); + + } else { + + self.setBigImage( slide ); + + } + + }, + + + // Create full-size image + // ====================== + + setBigImage : function ( slide ) { + var self = this; + var $img = $(''); + + slide.$image = $img + .one('error', function() { + + self.setError( slide ); + + }) + .one('load', function() { + + // Clear timeout that checks if loading icon needs to be displayed + clearTimeout( slide.timouts ); + + slide.timouts = null; + + if ( self.isClosing ) { + return; + } + + slide.width = this.naturalWidth; + slide.height = this.naturalHeight; + + if ( slide.opts.image.srcset ) { + $img.attr( 'sizes', '100vw' ).attr( 'srcset', slide.opts.image.srcset ); + } + + self.hideLoading( slide ); + + if ( slide.$ghost ) { + + slide.timouts = setTimeout(function() { + slide.timouts = null; + + slide.$ghost.hide(); + + }, Math.min( 300, Math.max( 1000, slide.height / 1600 ) ) ); + + } else { + self.afterLoad( slide ); + } + + }) + .addClass( 'fancybox-image' ) + .attr('src', slide.src) + .appendTo( slide.$content ); + + if ( ( $img[0].complete || $img[0].readyState == "complete" ) && $img[0].naturalWidth && $img[0].naturalHeight ) { + $img.trigger( 'load' ); + + } else if( $img[0].error ) { + $img.trigger( 'error' ); + + } else { + + slide.timouts = setTimeout(function() { + if ( !$img[0].complete && !slide.hasError ) { + self.showLoading( slide ); + } + + }, 100); + + } + + }, + + + // Create iframe wrapper, iframe and bindings + // ========================================== + + setIframe : function( slide ) { + var self = this, + opts = slide.opts.iframe, + $slide = slide.$slide, + $iframe; + + slide.$content = $('
      ') + .css( opts.css ) + .appendTo( $slide ); + + $iframe = $( opts.tpl.replace(/\{rnd\}/g, new Date().getTime()) ) + .attr( opts.attr ) + .appendTo( slide.$content ); + + if ( opts.preload ) { + + self.showLoading( slide ); + + // Unfortunately, it is not always possible to determine if iframe is successfully loaded + // (due to browser security policy) + + $iframe.on('load.fb error.fb', function(e) { + this.isReady = 1; + + slide.$slide.trigger( 'refresh' ); + + self.afterLoad( slide ); + }); + + // Recalculate iframe content size + // =============================== + + $slide.on('refresh.fb', function() { + var $wrap = slide.$content, + frameWidth = opts.css.width, + frameHeight = opts.css.height, + scrollWidth, + $contents, + $body; + + if ( $iframe[0].isReady !== 1 ) { + return; + } + + // Check if content is accessible, + // it will fail if frame is not with the same origin + + try { + $contents = $iframe.contents(); + $body = $contents.find('body'); + + } catch (ignore) {} + + // Calculate dimensions for the wrapper + if ( $body && $body.length ) { + + if ( frameWidth === undefined ) { + scrollWidth = $iframe[0].contentWindow.document.documentElement.scrollWidth; + + frameWidth = Math.ceil( $body.outerWidth(true) + ( $wrap.width() - scrollWidth ) ); + frameWidth += $wrap.outerWidth() - $wrap.innerWidth(); + } + + if ( frameHeight === undefined ) { + frameHeight = Math.ceil( $body.outerHeight(true) ); + frameHeight += $wrap.outerHeight() - $wrap.innerHeight(); + } + + // Resize wrapper to fit iframe content + if ( frameWidth ) { + $wrap.width( frameWidth ); + } + + if ( frameHeight ) { + $wrap.height( frameHeight ); + } + } + + $wrap.removeClass( 'fancybox-is-hidden' ); + + }); + + } else { + + this.afterLoad( slide ); + + } + + $iframe.attr( 'src', slide.src ); + + if ( slide.opts.smallBtn === true ) { + slide.$content.prepend( self.translate( slide, slide.opts.btnTpl.smallBtn ) ); + } + + // Remove iframe if closing or changing gallery item + $slide.one( 'onReset', function () { + + // This helps IE not to throw errors when closing + try { + + $( this ).find( 'iframe' ).hide().attr( 'src', '//about:blank' ); + + } catch ( ignore ) {} + + $( this ).empty(); + + slide.isLoaded = false; + + }); + + }, + + + // Wrap and append content to the slide + // ====================================== + + setContent : function ( slide, content ) { + + var self = this; + + if ( self.isClosing ) { + return; + } + + self.hideLoading( slide ); + + slide.$slide.empty(); + + if ( isQuery( content ) && content.parent().length ) { + + // If content is a jQuery object, then it will be moved to the slide. + // The placeholder is created so we will know where to put it back. + // If user is navigating gallery fast, then the content might be already inside fancyBox + // ===================================================================================== + + // Make sure content is not already moved to fancyBox + content.parent( '.fancybox-slide--inline' ).trigger( 'onReset' ); + + // Create temporary element marking original place of the content + slide.$placeholder = $( '
      ' ).hide().insertAfter( content ); + + // Make sure content is visible + content.css('display', 'inline-block'); + + } else if ( !slide.hasError ) { + + // If content is just a plain text, try to convert it to html + if ( $.type( content ) === 'string' ) { + content = $('
      ').append( $.trim( content ) ).contents(); + + // If we have text node, then add wrapping element to make vertical alignment work + if ( content[0].nodeType === 3 ) { + content = $('
      ').html( content ); + } + } + + // If "filter" option is provided, then filter content + if ( slide.opts.filter ) { + content = $('
      ').html( content ).find( slide.opts.filter ); + } + + } + + slide.$slide.one('onReset', function () { + + // Put content back + if ( slide.$placeholder ) { + slide.$placeholder.after( content.hide() ).remove(); + + slide.$placeholder = null; + } + + // Remove custom close button + if ( slide.$smallBtn ) { + slide.$smallBtn.remove(); + + slide.$smallBtn = null; + } + + // Remove content and mark slide as not loaded + if ( !slide.hasError ) { + $(this).empty(); + + slide.isLoaded = false; + } + + }); + + slide.$content = $( content ).appendTo( slide.$slide ); + + this.afterLoad( slide ); + }, + + // Display error message + // ===================== + + setError : function ( slide ) { + + slide.hasError = true; + + slide.$slide.removeClass( 'fancybox-slide--' + slide.type ); + + this.setContent( slide, this.translate( slide, slide.opts.errorTpl ) ); + + }, + + + // Show loading icon inside the slide + // ================================== + + showLoading : function( slide ) { + + var self = this; + + slide = slide || self.current; + + if ( slide && !slide.$spinner ) { + slide.$spinner = $( self.opts.spinnerTpl ).appendTo( slide.$slide ); + } + + }, + + // Remove loading icon from the slide + // ================================== + + hideLoading : function( slide ) { + + var self = this; + + slide = slide || self.current; + + if ( slide && slide.$spinner ) { + slide.$spinner.remove(); + + delete slide.$spinner; + } + + }, + + + // Adjustments after slide content has been loaded + // =============================================== + + afterLoad : function( slide ) { + + var self = this; + + if ( self.isClosing ) { + return; + } + + slide.isLoading = false; + slide.isLoaded = true; + + self.trigger( 'afterLoad', slide ); + + self.hideLoading( slide ); + + if ( slide.opts.smallBtn && !slide.$smallBtn ) { + slide.$smallBtn = $( self.translate( slide, slide.opts.btnTpl.smallBtn ) ).appendTo( slide.$content.filter('div,form').first() ); + } + + if ( slide.opts.protect && slide.$content && !slide.hasError ) { + + // Disable right click + slide.$content.on( 'contextmenu.fb', function( e ) { + if ( e.button == 2 ) { + e.preventDefault(); + } + + return true; + }); + + // Add fake element on top of the image + // This makes a bit harder for user to select image + if ( slide.type === 'image' ) { + $( '
      ' ).appendTo( slide.$content ); + } + + } + + self.revealContent( slide ); + + }, + + + // Make content visible + // This method is called right after content has been loaded or + // user navigates gallery and transition should start + // ============================================================ + + revealContent : function( slide ) { + + var self = this; + var $slide = slide.$slide; + + var effect, effectClassName, duration, opacity, end, start = false; + + effect = slide.opts[ self.firstRun ? 'animationEffect' : 'transitionEffect' ]; + duration = slide.opts[ self.firstRun ? 'animationDuration' : 'transitionDuration' ]; + + duration = parseInt( slide.forcedDuration === undefined ? duration : slide.forcedDuration, 10 ); + + if ( slide.isMoved || slide.pos !== self.currPos || !duration ) { + effect = false; + } + + // Check if can zoom + if ( effect === 'zoom' && !( slide.pos === self.currPos && duration && slide.type === 'image' && !slide.hasError && ( start = self.getThumbPos( slide ) ) ) ) { + effect = 'fade'; + } + + // Zoom animation + // ============== + + if ( effect === 'zoom' ) { + end = self.getFitPos( slide ); + + end.scaleX = end.width / start.width; + end.scaleY = end.height / start.height; + + delete end.width; + delete end.height; + + // Check if we need to animate opacity + opacity = slide.opts.zoomOpacity; + + if ( opacity == 'auto' ) { + opacity = Math.abs( slide.width / slide.height - start.width / start.height ) > 0.1; + } + + if ( opacity ) { + start.opacity = 0.1; + end.opacity = 1; + } + + // Draw image at start position + $.fancybox.setTranslate( slide.$content.removeClass( 'fancybox-is-hidden' ), start ); + + forceRedraw( slide.$content ); + + // Start animation + $.fancybox.animate( slide.$content, end, duration, function() { + self.complete(); + }); + + return; + } + + self.updateSlide( slide ); + + + // Simply show content + // =================== + + if ( !effect ) { + forceRedraw( $slide ); + + slide.$content.removeClass( 'fancybox-is-hidden' ); + + if ( slide.pos === self.currPos ) { + self.complete(); + } + + return; + } + + $.fancybox.stop( $slide ); + + effectClassName = 'fancybox-animated fancybox-slide--' + ( slide.pos >= self.prevPos ? 'next' : 'previous' ) + ' fancybox-fx-' + effect; + + $slide.removeAttr( 'style' ).removeClass( 'fancybox-slide--current fancybox-slide--next fancybox-slide--previous' ).addClass( effectClassName ); + + slide.$content.removeClass( 'fancybox-is-hidden' ); + + //Force reflow for CSS3 transitions + forceRedraw( $slide ); + + $.fancybox.animate( $slide, 'fancybox-slide--current', duration, function(e) { + $slide.removeClass( effectClassName ).removeAttr( 'style' ); + + if ( slide.pos === self.currPos ) { + self.complete(); + } + + }, true); + + }, + + + // Check if we can and have to zoom from thumbnail + //================================================ + + getThumbPos : function( slide ) { + + var self = this; + var rez = false; + + // Check if element is inside the viewport by at least 1 pixel + var isElementVisible = function( $el ) { + var element = $el[0]; + + var elementRect = element.getBoundingClientRect(); + var parentRects = []; + + var visibleInAllParents; + + while ( element.parentElement !== null ) { + if ( $(element.parentElement).css('overflow') === 'hidden' || $(element.parentElement).css('overflow') === 'auto' ) { + parentRects.push(element.parentElement.getBoundingClientRect()); + } + + element = element.parentElement; + } + + visibleInAllParents = parentRects.every(function(parentRect){ + var visiblePixelX = Math.min(elementRect.right, parentRect.right) - Math.max(elementRect.left, parentRect.left); + var visiblePixelY = Math.min(elementRect.bottom, parentRect.bottom) - Math.max(elementRect.top, parentRect.top); + + return visiblePixelX > 0 && visiblePixelY > 0; + }); + + return visibleInAllParents && + elementRect.bottom > 0 && elementRect.right > 0 && + elementRect.left < $(window).width() && elementRect.top < $(window).height(); + }; + + var $thumb = slide.opts.$thumb; + var thumbPos = $thumb ? $thumb.offset() : 0; + var slidePos; + + if ( thumbPos && $thumb[0].ownerDocument === document && isElementVisible( $thumb ) ) { + slidePos = self.$refs.stage.offset(); + + rez = { + top : thumbPos.top - slidePos.top + parseFloat( $thumb.css( "border-top-width" ) || 0 ), + left : thumbPos.left - slidePos.left + parseFloat( $thumb.css( "border-left-width" ) || 0 ), + width : $thumb.width(), + height : $thumb.height(), + scaleX : 1, + scaleY : 1 + }; + } + + return rez; + }, + + + // Final adjustments after current gallery item is moved to position + // and it`s content is loaded + // ================================================================== + + complete : function() { + + var self = this; + + var current = self.current; + var slides = {}; + + if ( current.isMoved || !current.isLoaded || current.isComplete ) { + return; + } + + current.isComplete = true; + + current.$slide.siblings().trigger( 'onReset' ); + + // Trigger any CSS3 transiton inside the slide + forceRedraw( current.$slide ); + + current.$slide.addClass( 'fancybox-slide--complete' ); + + // Remove unnecessary slides + $.each( self.slides, function( key, slide ) { + if ( slide.pos >= self.currPos - 1 && slide.pos <= self.currPos + 1 ) { + slides[ slide.pos ] = slide; + + } else if ( slide ) { + + $.fancybox.stop( slide.$slide ); + + slide.$slide.off().remove(); + } + }); + + self.slides = slides; + + self.updateCursor(); + + self.trigger( 'afterShow' ); + + // Try to focus on the first focusable element + if ( $( document.activeElement ).is( '[disabled]' ) || ( current.opts.autoFocus && !( current.type == 'image' || current.type === 'iframe' ) ) ) { + self.focus(); + } + + }, + + + // Preload next and previous slides + // ================================ + + preload : function() { + var self = this; + var next, prev; + + if ( self.group.length < 2 ) { + return; + } + + next = self.slides[ self.currPos + 1 ]; + prev = self.slides[ self.currPos - 1 ]; + + if ( next && next.type === 'image' ) { + self.loadSlide( next ); + } + + if ( prev && prev.type === 'image' ) { + self.loadSlide( prev ); + } + + }, + + + // Try to find and focus on the first focusable element + // ==================================================== + + focus : function() { + var current = this.current; + var $el; + + if ( this.isClosing ) { + return; + } + + if ( current && current.isComplete ) { + + // Look for first input with autofocus attribute + $el = current.$slide.find('input[autofocus]:enabled:visible:first'); + + if ( !$el.length ) { + $el = current.$slide.find('button,:input,[tabindex],a').filter(':enabled:visible:first'); + } + } + + $el = $el && $el.length ? $el : this.$refs.container; + + $el.focus(); + }, + + + // Activates current instance - brings container to the front and enables keyboard, + // notifies other instances about deactivating + // ================================================================================= + + activate : function () { + var self = this; + + // Deactivate all instances + $( '.fancybox-container' ).each(function () { + var instance = $(this).data( 'FancyBox' ); + + // Skip self and closing instances + if (instance && instance.id !== self.id && !instance.isClosing) { + instance.trigger( 'onDeactivate' ); + + instance.removeEvents(); + + instance.isVisible = false; + } + + }); + + self.isVisible = true; + + if ( self.current || self.isIdle ) { + self.update(); + + self.updateControls(); + } + + self.trigger( 'onActivate' ); + + self.addEvents(); + }, + + + // Start closing procedure + // This will start "zoom-out" animation if needed and clean everything up afterwards + // ================================================================================= + + close : function( e, d ) { + + var self = this; + var current = self.current; + + var effect, duration; + var $what, opacity, start, end; + + var done = function() { + self.cleanUp( e ); + }; + + if ( self.isClosing ) { + return false; + } + + self.isClosing = true; + + // If beforeClose callback prevents closing, make sure content is centered + if ( self.trigger( 'beforeClose', e ) === false ) { + self.isClosing = false; + + requestAFrame(function() { + self.update(); + }); + + return false; + } + + // Remove all events + // If there are multiple instances, they will be set again by "activate" method + self.removeEvents(); + + if ( current.timouts ) { + clearTimeout( current.timouts ); + } + + $what = current.$content; + effect = current.opts.animationEffect; + duration = $.isNumeric( d ) ? d : ( effect ? current.opts.animationDuration : 0 ); + + // Remove other slides + current.$slide.off( transitionEnd ).removeClass( 'fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated' ); + + current.$slide.siblings().trigger( 'onReset' ).remove(); + + // Trigger animations + if ( duration ) { + self.$refs.container.removeClass( 'fancybox-is-open' ).addClass( 'fancybox-is-closing' ); + } + + // Clean up + self.hideLoading( current ); + + self.hideControls(); + + self.updateCursor(); + + // Check if possible to zoom-out + if ( effect === 'zoom' && !( e !== true && $what && duration && current.type === 'image' && !current.hasError && ( end = self.getThumbPos( current ) ) ) ) { + effect = 'fade'; + } + + if ( effect === 'zoom' ) { + $.fancybox.stop( $what ); + + start = $.fancybox.getTranslate( $what ); + + start.width = start.width * start.scaleX; + start.height = start.height * start.scaleY; + + // Check if we need to animate opacity + opacity = current.opts.zoomOpacity; + + if ( opacity == 'auto' ) { + opacity = Math.abs( current.width / current.height - end.width / end.height ) > 0.1; + } + + if ( opacity ) { + end.opacity = 0; + } + + start.scaleX = start.width / end.width; + start.scaleY = start.height / end.height; + + start.width = end.width; + start.height = end.height; + + $.fancybox.setTranslate( current.$content, start ); + + forceRedraw( current.$content ); + + $.fancybox.animate( current.$content, end, duration, done ); + + return true; + } + + if ( effect && duration ) { + + // If skip animation + if ( e === true ) { + setTimeout( done, duration ); + + } else { + $.fancybox.animate( current.$slide.removeClass( 'fancybox-slide--current' ), 'fancybox-animated fancybox-slide--previous fancybox-fx-' + effect, duration, done ); + } + + } else { + done(); + } + + return true; + }, + + + // Final adjustments after removing the instance + // ============================================= + + cleanUp : function( e ) { + var self = this, + $body = $( 'body' ), + instance, + offset; + + self.current.$slide.trigger( 'onReset' ); + + self.$refs.container.empty().remove(); + + self.trigger( 'afterClose', e ); + + // Place back focus + if ( self.$lastFocus && !!self.current.opts.backFocus ) { + self.$lastFocus.focus(); + } + + self.current = null; + + // Check if there are other instances + instance = $.fancybox.getInstance(); + + if ( instance ) { + instance.activate(); + + } else { + + $W.scrollTop( self.scrollTop ).scrollLeft( self.scrollLeft ); + + $body.removeClass( 'fancybox-active compensate-for-scrollbar' ); + + if ( $body.hasClass( 'fancybox-iosfix' ) ) { + offset = parseInt(document.body.style.top, 10); + + $body.removeClass( 'fancybox-iosfix' ).css( 'top', '' ).scrollTop( offset * -1 ); + } + + $( '#fancybox-style-noscroll' ).remove(); + + } + + }, + + + // Call callback and trigger an event + // ================================== + + trigger : function( name, slide ) { + var args = Array.prototype.slice.call(arguments, 1), + self = this, + obj = slide && slide.opts ? slide : self.current, + rez; + + if ( obj ) { + args.unshift( obj ); + + } else { + obj = self; + } + + args.unshift( self ); + + if ( $.isFunction( obj.opts[ name ] ) ) { + rez = obj.opts[ name ].apply( obj, args ); + } + + if ( rez === false ) { + return rez; + } + + if ( name === 'afterClose' || !self.$refs ) { + $D.trigger( name + '.fb', args ); + + } else { + self.$refs.container.trigger( name + '.fb', args ); + } + + }, + + + // Update infobar values, navigation button states and reveal caption + // ================================================================== + + updateControls : function ( force ) { + + var self = this; + + var current = self.current, + index = current.index, + caption = current.opts.caption, + $container = self.$refs.container, + $caption = self.$refs.caption; + + // Recalculate content dimensions + current.$slide.trigger( 'refresh' ); + + self.$caption = caption && caption.length ? $caption.html( caption ) : null; + + if ( !self.isHiddenControls && !self.isIdle ) { + self.showControls(); + } + + // Update info and navigation elements + $container.find('[data-fancybox-count]').html( self.group.length ); + $container.find('[data-fancybox-index]').html( index + 1 ); + + $container.find('[data-fancybox-prev]').prop( 'disabled', ( !current.opts.loop && index <= 0 ) ); + $container.find('[data-fancybox-next]').prop( 'disabled', ( !current.opts.loop && index >= self.group.length - 1 ) ); + + if ( current.type === 'image' ) { + + // Update download button source + $container.find('[data-fancybox-download]').attr( 'href', current.opts.image.src || current.src ).show(); + + } else { + $container.find('[data-fancybox-download],[data-fancybox-zoom]').hide(); + } + }, + + // Hide toolbar and caption + // ======================== + + hideControls : function () { + + this.isHiddenControls = true; + + this.$refs.container.removeClass( 'fancybox-show-infobar fancybox-show-toolbar fancybox-show-caption fancybox-show-nav' ); + + }, + + showControls : function() { + var self = this; + var opts = self.current ? self.current.opts : self.opts; + var $container = self.$refs.container; + + self.isHiddenControls = false; + self.idleSecondsCounter = 0; + + $container + .toggleClass( 'fancybox-show-toolbar', !!( opts.toolbar && opts.buttons ) ) + .toggleClass( 'fancybox-show-infobar', !!( opts.infobar && self.group.length > 1 ) ) + .toggleClass( 'fancybox-show-nav', !!( opts.arrows && self.group.length > 1 ) ) + .toggleClass( 'fancybox-is-modal', !!opts.modal ); + + if ( self.$caption ) { + $container.addClass( 'fancybox-show-caption '); + + } else { + $container.removeClass( 'fancybox-show-caption' ); + } + + }, + + + // Toggle toolbar and caption + // ========================== + + toggleControls : function() { + if ( this.isHiddenControls ) { + this.showControls(); + + } else { + this.hideControls(); + } + + }, + + + }); + + + $.fancybox = { + + version : "3.2.5", + defaults : defaults, + + + // Get current instance and execute a command. + // + // Examples of usage: + // + // $instance = $.fancybox.getInstance(); + // $.fancybox.getInstance().jumpTo( 1 ); + // $.fancybox.getInstance( 'jumpTo', 1 ); + // $.fancybox.getInstance( function() { + // console.info( this.currIndex ); + // }); + // ====================================================== + + getInstance : function ( command ) { + var instance = $('.fancybox-container:not(".fancybox-is-closing"):last').data( 'FancyBox' ); + var args = Array.prototype.slice.call(arguments, 1); + + if ( instance instanceof FancyBox ) { + + if ( $.type( command ) === 'string' ) { + instance[ command ].apply( instance, args ); + + } else if ( $.type( command ) === 'function' ) { + command.apply( instance, args ); + } + + return instance; + } + + return false; + + }, + + + // Create new instance + // =================== + + open : function ( items, opts, index ) { + return new FancyBox( items, opts, index ); + }, + + + // Close current or all instances + // ============================== + + close : function ( all ) { + var instance = this.getInstance(); + + if ( instance ) { + instance.close(); + + // Try to find and close next instance + + if ( all === true ) { + this.close(); + } + } + + }, + + // Close instances and unbind all events + // ============================== + + destroy : function() { + + this.close( true ); + + $D.off( 'click.fb-start' ); + + }, + + + // Try to detect mobile devices + // ============================ + + isMobile : document.createTouch !== undefined && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), + + + // Detect if 'translate3d' support is available + // ============================================ + + use3d : (function() { + var div = document.createElement('div'); + + return window.getComputedStyle && window.getComputedStyle( div ).getPropertyValue('transform') && !(document.documentMode && document.documentMode < 11); + }()), + + // Helper function to get current visual state of an element + // returns array[ top, left, horizontal-scale, vertical-scale, opacity ] + // ===================================================================== + + getTranslate : function( $el ) { + var matrix; + + if ( !$el || !$el.length ) { + return false; + } + + matrix = $el.eq( 0 ).css('transform'); + + if ( matrix && matrix.indexOf( 'matrix' ) !== -1 ) { + matrix = matrix.split('(')[1]; + matrix = matrix.split(')')[0]; + matrix = matrix.split(','); + } else { + matrix = []; + } + + if ( matrix.length ) { + + // If IE + if ( matrix.length > 10 ) { + matrix = [ matrix[13], matrix[12], matrix[0], matrix[5] ]; + + } else { + matrix = [ matrix[5], matrix[4], matrix[0], matrix[3]]; + } + + matrix = matrix.map(parseFloat); + + } else { + matrix = [ 0, 0, 1, 1 ]; + + var transRegex = /\.*translate\((.*)px,(.*)px\)/i; + var transRez = transRegex.exec( $el.eq( 0 ).attr('style') ); + + if ( transRez ) { + matrix[ 0 ] = parseFloat( transRez[2] ); + matrix[ 1 ] = parseFloat( transRez[1] ); + } + } + + return { + top : matrix[ 0 ], + left : matrix[ 1 ], + scaleX : matrix[ 2 ], + scaleY : matrix[ 3 ], + opacity : parseFloat( $el.css('opacity') ), + width : $el.width(), + height : $el.height() + }; + + }, + + + // Shortcut for setting "translate3d" properties for element + // Can set be used to set opacity, too + // ======================================================== + + setTranslate : function( $el, props ) { + var str = ''; + var css = {}; + + if ( !$el || !props ) { + return; + } + + if ( props.left !== undefined || props.top !== undefined ) { + str = ( props.left === undefined ? $el.position().left : props.left ) + 'px, ' + ( props.top === undefined ? $el.position().top : props.top ) + 'px'; + + if ( this.use3d ) { + str = 'translate3d(' + str + ', 0px)'; + + } else { + str = 'translate(' + str + ')'; + } + } + + if ( props.scaleX !== undefined && props.scaleY !== undefined ) { + str = (str.length ? str + ' ' : '') + 'scale(' + props.scaleX + ', ' + props.scaleY + ')'; + } + + if ( str.length ) { + css.transform = str; + } + + if ( props.opacity !== undefined ) { + css.opacity = props.opacity; + } + + if ( props.width !== undefined ) { + css.width = props.width; + } + + if ( props.height !== undefined ) { + css.height = props.height; + } + + return $el.css( css ); + }, + + + // Simple CSS transition handler + // ============================= + + animate : function ( $el, to, duration, callback, leaveAnimationName ) { + if ( $.isFunction( duration ) ) { + callback = duration; + duration = null; + } + + if ( !$.isPlainObject( to ) ) { + $el.removeAttr('style'); + } + + $el.on( transitionEnd, function(e) { + + // Skip events from child elements and z-index change + if ( e && e.originalEvent && ( !$el.is( e.originalEvent.target ) || e.originalEvent.propertyName == 'z-index' ) ) { + return; + } + + $.fancybox.stop( $el ); + + if ( $.isPlainObject( to ) ) { + + if ( to.scaleX !== undefined && to.scaleY !== undefined ) { + $el.css( 'transition-duration', '' ); + + to.width = Math.round( $el.width() * to.scaleX ); + to.height = Math.round( $el.height() * to.scaleY ); + + to.scaleX = 1; + to.scaleY = 1; + + $.fancybox.setTranslate( $el, to ); + } + + } else if ( leaveAnimationName !== true ) { + $el.removeClass( to ); + } + + if ( $.isFunction( callback ) ) { + callback( e ); + } + + }); + + if ( $.isNumeric( duration ) ) { + $el.css( 'transition-duration', duration + 'ms' ); + } + + if ( $.isPlainObject( to ) ) { + $.fancybox.setTranslate( $el, to ); + + } else { + $el.addClass( to ); + } + + if ( to.scaleX && $el.hasClass( 'fancybox-image-wrap' ) ) { + $el.parent().addClass( 'fancybox-is-scaling' ); + } + + // Make sure that `transitionend` callback gets fired + $el.data("timer", setTimeout(function() { + $el.trigger( 'transitionend' ); + }, duration + 16)); + + }, + + stop : function( $el ) { + clearTimeout( $el.data("timer") ); + + $el.off( 'transitionend' ).css( 'transition-duration', '' ); + + if ( $el.hasClass( 'fancybox-image-wrap' ) ) { + $el.parent().removeClass( 'fancybox-is-scaling' ); + } + } + + }; + + + // Default click handler for "fancyboxed" links + // ============================================ + + function _run( e ) { + var $target = $( e.currentTarget ), + opts = e.data ? e.data.options : {}, + value = $target.attr( 'data-fancybox' ) || '', + index = 0, + items = []; + + // Avoid opening multiple times + if ( e.isDefaultPrevented() ) { + return; + } + + e.preventDefault(); + + // Get all related items and find index for clicked one + if ( value ) { + items = opts.selector ? $( opts.selector ) : ( e.data ? e.data.items : [] ); + items = items.length ? items.filter( '[data-fancybox="' + value + '"]' ) : $( '[data-fancybox="' + value + '"]' ); + + index = items.index( $target ); + + // Sometimes current item can not be found + // (for example, when slider clones items) + if ( index < 0 ) { + index = 0; + } + + } else { + items = [ $target ]; + } + + $.fancybox.open( items, opts, index ); + } + + + // Create a jQuery plugin + // ====================== + + $.fn.fancybox = function (options) { + var selector; + + options = options || {}; + selector = options.selector || false; + + if ( selector ) { + + $( 'body' ).off( 'click.fb-start', selector ).on( 'click.fb-start', selector, { + options : options + }, _run ); + + } else { + + this.off( 'click.fb-start' ).on( 'click.fb-start', { + items : this, + options : options + }, _run); + + } + + return this; + }; + + + // Self initializing plugin + // ======================== + + $D.on( 'click.fb-start', '[data-fancybox]', _run ); + +}( window, document, window.jQuery || jQuery )); + +// ========================================================================== +// +// Media +// Adds additional media type support +// +// ========================================================================== +;(function ($) { + + 'use strict'; + + // Formats matching url to final form + + var format = function (url, rez, params) { + if ( !url ) { + return; + } + + params = params || ''; + + if ( $.type(params) === "object" ) { + params = $.param(params, true); + } + + $.each(rez, function (key, value) { + url = url.replace('$' + key, value || ''); + }); + + if (params.length) { + url += (url.indexOf('?') > 0 ? '&' : '?') + params; + } + + return url; + }; + + // Object containing properties for each media type + + var defaults = { + youtube : { + matcher : /(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i, + params : { + autoplay : 1, + autohide : 1, + fs : 1, + rel : 0, + hd : 1, + wmode : 'transparent', + enablejsapi : 1, + html5 : 1 + }, + paramPlace : 8, + type : 'iframe', + url : '//www.youtube.com/embed/$4', + thumb : '//img.youtube.com/vi/$4/hqdefault.jpg' + }, + + vimeo : { + matcher : /^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/, + params : { + autoplay : 1, + hd : 1, + show_title : 1, + show_byline : 1, + show_portrait : 0, + fullscreen : 1, + api : 1 + }, + paramPlace : 3, + type : 'iframe', + url : '//player.vimeo.com/video/$2' + }, + + metacafe : { + matcher : /metacafe.com\/watch\/(\d+)\/(.*)?/, + type : 'iframe', + url : '//www.metacafe.com/embed/$1/?ap=1' + }, + + dailymotion : { + matcher : /dailymotion.com\/video\/(.*)\/?(.*)/, + params : { + additionalInfos : 0, + autoStart : 1 + }, + type : 'iframe', + url : '//www.dailymotion.com/embed/video/$1' + }, + + vine : { + matcher : /vine.co\/v\/([a-zA-Z0-9\?\=\-]+)/, + type : 'iframe', + url : '//vine.co/v/$1/embed/simple' + }, + + instagram : { + matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i, + type : 'image', + url : '//$1/p/$2/media/?size=l' + }, + + // Examples: + // http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16 + // https://www.google.com/maps/@37.7852006,-122.4146355,14.65z + // https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0833494,17z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840572 + gmap_place : { + matcher : /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i, + type : 'iframe', + url : function (rez) { + return '//maps.google.' + rez[2] + '/?ll=' + ( rez[9] ? rez[9] + '&z=' + Math.floor( rez[10] ) + ( rez[12] ? rez[12].replace(/^\//, "&") : '' ) : rez[12] ) + '&output=' + ( rez[12] && rez[12].indexOf('layer=c') > 0 ? 'svembed' : 'embed' ); + } + }, + + // Examples: + // https://www.google.com/maps/search/Empire+State+Building/ + // https://www.google.com/maps/search/?api=1&query=centurylink+field + // https://www.google.com/maps/search/?api=1&query=47.5951518,-122.3316393 + gmap_search : { + matcher : /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i, + type : 'iframe', + url : function (rez) { + return '//maps.google.' + rez[2] + '/maps?q=' + rez[5].replace('query=', 'q=').replace('api=1', '') + '&output=embed'; + } + } + }; + + $(document).on('objectNeedsType.fb', function (e, instance, item) { + + var url = item.src || '', + type = false, + media, + thumb, + rez, + params, + urlParams, + paramObj, + provider; + + media = $.extend( true, {}, defaults, item.opts.media ); + + // Look for any matching media type + $.each(media, function ( providerName, providerOpts ) { + rez = url.match( providerOpts.matcher ); + + if ( !rez ) { + return; + } + + type = providerOpts.type; + paramObj = {}; + + if ( providerOpts.paramPlace && rez[ providerOpts.paramPlace ] ) { + urlParams = rez[ providerOpts.paramPlace ]; + + if ( urlParams[ 0 ] == '?' ) { + urlParams = urlParams.substring(1); + } + + urlParams = urlParams.split('&'); + + for ( var m = 0; m < urlParams.length; ++m ) { + var p = urlParams[ m ].split('=', 2); + + if ( p.length == 2 ) { + paramObj[ p[0] ] = decodeURIComponent( p[1].replace(/\+/g, " ") ); + } + } + } + + params = $.extend( true, {}, providerOpts.params, item.opts[ providerName ], paramObj ); + + url = $.type( providerOpts.url ) === "function" ? providerOpts.url.call( this, rez, params, item ) : format( providerOpts.url, rez, params ); + thumb = $.type( providerOpts.thumb ) === "function" ? providerOpts.thumb.call( this, rez, params, item ) : format( providerOpts.thumb, rez ); + + if ( providerName === 'vimeo' ) { + url = url.replace('&%23', '#'); + } + + return false; + }); + + // If it is found, then change content type and update the url + + if ( type ) { + item.src = url; + item.type = type; + + if ( !item.opts.thumb && !( item.opts.$thumb && item.opts.$thumb.length ) ) { + item.opts.thumb = thumb; + } + + if ( type === 'iframe' ) { + $.extend(true, item.opts, { + iframe : { + preload : false, + attr : { + scrolling : "no" + } + } + }); + + item.contentProvider = provider; + + item.opts.slideClass += ' fancybox-slide--' + ( provider == 'gmap_place' || provider == 'gmap_search' ? 'map' : 'video' ); + } + + } else if ( url ) { + item.type = item.opts.defaultType; + } + + }); + +}( window.jQuery || jQuery )); + +// ========================================================================== +// +// Guestures +// Adds touch guestures, handles click and tap events +// +// ========================================================================== +;(function (window, document, $) { + 'use strict'; + + var requestAFrame = (function () { + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + // if all else fails, use setTimeout + function (callback) { + return window.setTimeout(callback, 1000 / 60); + }; + })(); + + + var cancelAFrame = (function () { + return window.cancelAnimationFrame || + window.webkitCancelAnimationFrame || + window.mozCancelAnimationFrame || + window.oCancelAnimationFrame || + function (id) { + window.clearTimeout(id); + }; + })(); + + + var pointers = function( e ) { + var result = []; + + e = e.originalEvent || e || window.e; + e = e.touches && e.touches.length ? e.touches : ( e.changedTouches && e.changedTouches.length ? e.changedTouches : [ e ] ); + + for ( var key in e ) { + + if ( e[ key ].pageX ) { + result.push( { x : e[ key ].pageX, y : e[ key ].pageY } ); + + } else if ( e[ key ].clientX ) { + result.push( { x : e[ key ].clientX, y : e[ key ].clientY } ); + } + } + + return result; + }; + + var distance = function( point2, point1, what ) { + if ( !point1 || !point2 ) { + return 0; + } + + if ( what === 'x' ) { + return point2.x - point1.x; + + } else if ( what === 'y' ) { + return point2.y - point1.y; + } + + return Math.sqrt( Math.pow( point2.x - point1.x, 2 ) + Math.pow( point2.y - point1.y, 2 ) ); + }; + + var isClickable = function( $el ) { + + if ( $el.is('a,area,button,[role="button"],input,label,select,summary,textarea') || $.isFunction( $el.get(0).onclick ) || $el.data('selectable') ) { + return true; + } + + // Check for attributes like data-fancybox-next or data-fancybox-close + for ( var i = 0, atts = $el[0].attributes, n = atts.length; i < n; i++ ) { + if ( atts[i].nodeName.substr(0, 14) === 'data-fancybox-' ) { + return true; + } + } + + return false; + }; + + var hasScrollbars = function( el ) { + var overflowY = window.getComputedStyle( el )['overflow-y']; + var overflowX = window.getComputedStyle( el )['overflow-x']; + + var vertical = (overflowY === 'scroll' || overflowY === 'auto') && el.scrollHeight > el.clientHeight; + var horizontal = (overflowX === 'scroll' || overflowX === 'auto') && el.scrollWidth > el.clientWidth; + + return vertical || horizontal; + }; + + var isScrollable = function ( $el ) { + var rez = false; + + while ( true ) { + rez = hasScrollbars( $el.get(0) ); + + if ( rez ) { + break; + } + + $el = $el.parent(); + + if ( !$el.length || $el.hasClass( 'fancybox-stage' ) || $el.is( 'body' ) ) { + break; + } + } + + return rez; + }; + + + var Guestures = function ( instance ) { + var self = this; + + self.instance = instance; + + self.$bg = instance.$refs.bg; + self.$stage = instance.$refs.stage; + self.$container = instance.$refs.container; + + self.destroy(); + + self.$container.on( 'touchstart.fb.touch mousedown.fb.touch', $.proxy(self, 'ontouchstart') ); + }; + + Guestures.prototype.destroy = function() { + this.$container.off( '.fb.touch' ); + }; + + Guestures.prototype.ontouchstart = function( e ) { + var self = this; + + var $target = $( e.target ); + var instance = self.instance; + var current = instance.current; + var $content = current.$content; + + var isTouchDevice = ( e.type == 'touchstart' ); + + // Do not respond to both events + if ( isTouchDevice ) { + self.$container.off( 'mousedown.fb.touch' ); + } + + // Ignore clicks while zooming or closing + if ( !current || self.instance.isAnimating || self.instance.isClosing ) { + e.stopPropagation(); + e.preventDefault(); + + return; + } + + // Ignore right click + if ( e.originalEvent && e.originalEvent.button == 2 ) { + return; + } + + // Ignore taping on links, buttons, input elements + if ( !$target.length || isClickable( $target ) || isClickable( $target.parent() ) ) { + return; + } + + // Ignore clicks on the scrollbar + if ( e.originalEvent.clientX > $target[0].clientWidth + $target.offset().left ) { + return; + } + + self.startPoints = pointers( e ); + + // Prevent zooming if already swiping + if ( !self.startPoints || ( self.startPoints.length > 1 && instance.isSliding ) ) { + return; + } + + self.$target = $target; + self.$content = $content; + self.canTap = true; + self.opts = current.opts.touch; + + $(document).off( '.fb.touch' ); + + $(document).on( isTouchDevice ? 'touchend.fb.touch touchcancel.fb.touch' : 'mouseup.fb.touch mouseleave.fb.touch', $.proxy(self, "ontouchend")); + $(document).on( isTouchDevice ? 'touchmove.fb.touch' : 'mousemove.fb.touch', $.proxy(self, "ontouchmove")); + + if ( !(self.opts || instance.canPan() ) || !( $target.is( self.$stage ) || self.$stage.find( $target ).length ) ) { + + // Prevent ghosting + if ( $target.is('img') ) { + e.preventDefault(); + } + + return; + } + + e.stopPropagation(); + + if ( !( $.fancybox.isMobile && ( isScrollable( self.$target ) || isScrollable( self.$target.parent() ) ) ) ) { + e.preventDefault(); + } + + self.canvasWidth = Math.round( current.$slide[0].clientWidth ); + self.canvasHeight = Math.round( current.$slide[0].clientHeight ); + + self.startTime = new Date().getTime(); + self.distanceX = self.distanceY = self.distance = 0; + + self.isPanning = false; + self.isSwiping = false; + self.isZooming = false; + + self.sliderStartPos = self.sliderLastPos || { top: 0, left: 0 }; + self.contentStartPos = $.fancybox.getTranslate( self.$content ); + self.contentLastPos = null; + + if ( self.startPoints.length === 1 && !self.isZooming ) { + self.canTap = !instance.isSliding; + + if ( current.type === 'image' && ( self.contentStartPos.width > self.canvasWidth + 1 || self.contentStartPos.height > self.canvasHeight + 1 ) ) { + + $.fancybox.stop( self.$content ); + + self.$content.css( 'transition-duration', '0ms' ); + + self.isPanning = true; + + } else { + + self.isSwiping = true; + } + + self.$container.addClass('fancybox-controls--isGrabbing'); + } + + if ( self.startPoints.length === 2 && !instance.isAnimating && !current.hasError && current.type === 'image' && ( current.isLoaded || current.$ghost ) ) { + self.isZooming = true; + + self.isSwiping = false; + self.isPanning = false; + + $.fancybox.stop( self.$content ); + + self.$content.css( 'transition-duration', '0ms' ); + + self.centerPointStartX = ( ( self.startPoints[0].x + self.startPoints[1].x ) * 0.5 ) - $(window).scrollLeft(); + self.centerPointStartY = ( ( self.startPoints[0].y + self.startPoints[1].y ) * 0.5 ) - $(window).scrollTop(); + + self.percentageOfImageAtPinchPointX = ( self.centerPointStartX - self.contentStartPos.left ) / self.contentStartPos.width; + self.percentageOfImageAtPinchPointY = ( self.centerPointStartY - self.contentStartPos.top ) / self.contentStartPos.height; + + self.startDistanceBetweenFingers = distance( self.startPoints[0], self.startPoints[1] ); + } + + }; + + Guestures.prototype.ontouchmove = function( e ) { + + var self = this; + + self.newPoints = pointers( e ); + + if ( $.fancybox.isMobile && ( isScrollable( self.$target ) || isScrollable( self.$target.parent() ) ) ) { + e.stopPropagation(); + + self.canTap = false; + + return; + } + + if ( !( self.opts || self.instance.canPan() ) || !self.newPoints || !self.newPoints.length ) { + return; + } + + self.distanceX = distance( self.newPoints[0], self.startPoints[0], 'x' ); + self.distanceY = distance( self.newPoints[0], self.startPoints[0], 'y' ); + + self.distance = distance( self.newPoints[0], self.startPoints[0] ); + + // Skip false ontouchmove events (Chrome) + if ( self.distance > 0 ) { + + if ( !( self.$target.is( self.$stage ) || self.$stage.find( self.$target ).length ) ) { + return; + } + + e.stopPropagation(); + e.preventDefault(); + + if ( self.isSwiping ) { + self.onSwipe(); + + } else if ( self.isPanning ) { + self.onPan(); + + } else if ( self.isZooming ) { + self.onZoom(); + } + + } + + }; + + Guestures.prototype.onSwipe = function() { + + var self = this; + + var swiping = self.isSwiping; + var left = self.sliderStartPos.left || 0; + var angle; + + if ( swiping === true ) { + + if ( Math.abs( self.distance ) > 10 ) { + + self.canTap = false; + + if ( self.instance.group.length < 2 && self.opts.vertical ) { + self.isSwiping = 'y'; + + } else if ( self.instance.isSliding || self.opts.vertical === false || ( self.opts.vertical === 'auto' && $( window ).width() > 800 ) ) { + self.isSwiping = 'x'; + + } else { + angle = Math.abs( Math.atan2( self.distanceY, self.distanceX ) * 180 / Math.PI ); + + self.isSwiping = ( angle > 45 && angle < 135 ) ? 'y' : 'x'; + } + + self.instance.isSliding = self.isSwiping; + + // Reset points to avoid jumping, because we dropped first swipes to calculate the angle + self.startPoints = self.newPoints; + + $.each(self.instance.slides, function( index, slide ) { + $.fancybox.stop( slide.$slide ); + + slide.$slide.css( 'transition-duration', '0ms' ); + + slide.inTransition = false; + + if ( slide.pos === self.instance.current.pos ) { + self.sliderStartPos.left = $.fancybox.getTranslate( slide.$slide ).left; + } + }); + + //self.instance.current.isMoved = true; + + // Stop slideshow + if ( self.instance.SlideShow && self.instance.SlideShow.isActive ) { + self.instance.SlideShow.stop(); + } + } + + } else { + + if ( swiping == 'x' ) { + + // Sticky edges + if ( self.distanceX > 0 && ( self.instance.group.length < 2 || ( self.instance.current.index === 0 && !self.instance.current.opts.loop ) ) ) { + left = left + Math.pow( self.distanceX, 0.8 ); + + } else if ( self.distanceX < 0 && ( self.instance.group.length < 2 || ( self.instance.current.index === self.instance.group.length - 1 && !self.instance.current.opts.loop ) ) ) { + left = left - Math.pow( -self.distanceX, 0.8 ); + + } else { + left = left + self.distanceX; + } + + } + + self.sliderLastPos = { + top : swiping == 'x' ? 0 : self.sliderStartPos.top + self.distanceY, + left : left + }; + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.requestId = requestAFrame(function() { + + if ( self.sliderLastPos ) { + $.each(self.instance.slides, function( index, slide ) { + var pos = slide.pos - self.instance.currPos; + + $.fancybox.setTranslate( slide.$slide, { + top : self.sliderLastPos.top, + left : self.sliderLastPos.left + ( pos * self.canvasWidth ) + ( pos * slide.opts.gutter ) + }); + }); + + self.$container.addClass( 'fancybox-is-sliding' ); + } + + }); + + } + + }; + + Guestures.prototype.onPan = function() { + + var self = this; + + var newOffsetX, newOffsetY, newPos; + + self.canTap = false; + + if ( self.contentStartPos.width > self.canvasWidth ) { + newOffsetX = self.contentStartPos.left + self.distanceX; + + } else { + newOffsetX = self.contentStartPos.left; + } + + newOffsetY = self.contentStartPos.top + self.distanceY; + + newPos = self.limitMovement( newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height ); + + newPos.scaleX = self.contentStartPos.scaleX; + newPos.scaleY = self.contentStartPos.scaleY; + + self.contentLastPos = newPos; + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.requestId = requestAFrame(function() { + $.fancybox.setTranslate( self.$content, self.contentLastPos ); + }); + }; + + // Make panning sticky to the edges + Guestures.prototype.limitMovement = function( newOffsetX, newOffsetY, newWidth, newHeight ) { + + var self = this; + + var minTranslateX, minTranslateY, maxTranslateX, maxTranslateY; + + var canvasWidth = self.canvasWidth; + var canvasHeight = self.canvasHeight; + + var currentOffsetX = self.contentStartPos.left; + var currentOffsetY = self.contentStartPos.top; + + var distanceX = self.distanceX; + var distanceY = self.distanceY; + + // Slow down proportionally to traveled distance + + minTranslateX = Math.max(0, canvasWidth * 0.5 - newWidth * 0.5 ); + minTranslateY = Math.max(0, canvasHeight * 0.5 - newHeight * 0.5 ); + + maxTranslateX = Math.min( canvasWidth - newWidth, canvasWidth * 0.5 - newWidth * 0.5 ); + maxTranslateY = Math.min( canvasHeight - newHeight, canvasHeight * 0.5 - newHeight * 0.5 ); + + if ( newWidth > canvasWidth ) { + + // -> + if ( distanceX > 0 && newOffsetX > minTranslateX ) { + newOffsetX = minTranslateX - 1 + Math.pow( -minTranslateX + currentOffsetX + distanceX, 0.8 ) || 0; + } + + // <- + if ( distanceX < 0 && newOffsetX < maxTranslateX ) { + newOffsetX = maxTranslateX + 1 - Math.pow( maxTranslateX - currentOffsetX - distanceX, 0.8 ) || 0; + } + + } + + if ( newHeight > canvasHeight ) { + + // \/ + if ( distanceY > 0 && newOffsetY > minTranslateY ) { + newOffsetY = minTranslateY - 1 + Math.pow(-minTranslateY + currentOffsetY + distanceY, 0.8 ) || 0; + } + + // /\ + if ( distanceY < 0 && newOffsetY < maxTranslateY ) { + newOffsetY = maxTranslateY + 1 - Math.pow ( maxTranslateY - currentOffsetY - distanceY, 0.8 ) || 0; + } + + } + + return { + top : newOffsetY, + left : newOffsetX + }; + + }; + + + Guestures.prototype.limitPosition = function( newOffsetX, newOffsetY, newWidth, newHeight ) { + + var self = this; + + var canvasWidth = self.canvasWidth; + var canvasHeight = self.canvasHeight; + + if ( newWidth > canvasWidth ) { + newOffsetX = newOffsetX > 0 ? 0 : newOffsetX; + newOffsetX = newOffsetX < canvasWidth - newWidth ? canvasWidth - newWidth : newOffsetX; + + } else { + + // Center horizontally + newOffsetX = Math.max( 0, canvasWidth / 2 - newWidth / 2 ); + + } + + if ( newHeight > canvasHeight ) { + newOffsetY = newOffsetY > 0 ? 0 : newOffsetY; + newOffsetY = newOffsetY < canvasHeight - newHeight ? canvasHeight - newHeight : newOffsetY; + + } else { + + // Center vertically + newOffsetY = Math.max( 0, canvasHeight / 2 - newHeight / 2 ); + + } + + return { + top : newOffsetY, + left : newOffsetX + }; + + }; + + Guestures.prototype.onZoom = function() { + + var self = this; + + // Calculate current distance between points to get pinch ratio and new width and height + + var currentWidth = self.contentStartPos.width; + var currentHeight = self.contentStartPos.height; + + var currentOffsetX = self.contentStartPos.left; + var currentOffsetY = self.contentStartPos.top; + + var endDistanceBetweenFingers = distance( self.newPoints[0], self.newPoints[1] ); + + var pinchRatio = endDistanceBetweenFingers / self.startDistanceBetweenFingers; + + var newWidth = Math.floor( currentWidth * pinchRatio ); + var newHeight = Math.floor( currentHeight * pinchRatio ); + + // This is the translation due to pinch-zooming + var translateFromZoomingX = (currentWidth - newWidth) * self.percentageOfImageAtPinchPointX; + var translateFromZoomingY = (currentHeight - newHeight) * self.percentageOfImageAtPinchPointY; + + //Point between the two touches + + var centerPointEndX = ((self.newPoints[0].x + self.newPoints[1].x) / 2) - $(window).scrollLeft(); + var centerPointEndY = ((self.newPoints[0].y + self.newPoints[1].y) / 2) - $(window).scrollTop(); + + // And this is the translation due to translation of the centerpoint + // between the two fingers + + var translateFromTranslatingX = centerPointEndX - self.centerPointStartX; + var translateFromTranslatingY = centerPointEndY - self.centerPointStartY; + + // The new offset is the old/current one plus the total translation + + var newOffsetX = currentOffsetX + ( translateFromZoomingX + translateFromTranslatingX ); + var newOffsetY = currentOffsetY + ( translateFromZoomingY + translateFromTranslatingY ); + + var newPos = { + top : newOffsetY, + left : newOffsetX, + scaleX : self.contentStartPos.scaleX * pinchRatio, + scaleY : self.contentStartPos.scaleY * pinchRatio + }; + + self.canTap = false; + + self.newWidth = newWidth; + self.newHeight = newHeight; + + self.contentLastPos = newPos; + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.requestId = requestAFrame(function() { + $.fancybox.setTranslate( self.$content, self.contentLastPos ); + }); + + }; + + Guestures.prototype.ontouchend = function( e ) { + + var self = this; + var dMs = Math.max( (new Date().getTime() ) - self.startTime, 1); + + var swiping = self.isSwiping; + var panning = self.isPanning; + var zooming = self.isZooming; + + self.endPoints = pointers( e ); + + self.$container.removeClass( 'fancybox-controls--isGrabbing' ); + + $(document).off( '.fb.touch' ); + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.isSwiping = false; + self.isPanning = false; + self.isZooming = false; + + if ( self.canTap ) { + return self.onTap( e ); + } + + self.speed = 366; + + // Speed in px/ms + self.velocityX = self.distanceX / dMs * 0.5; + self.velocityY = self.distanceY / dMs * 0.5; + + self.speedX = Math.max( self.speed * 0.5, Math.min( self.speed * 1.5, ( 1 / Math.abs( self.velocityX ) ) * self.speed ) ); + + if ( panning ) { + self.endPanning(); + + } else if ( zooming ) { + self.endZooming(); + + } else { + self.endSwiping( swiping ); + } + + return; + }; + + Guestures.prototype.endSwiping = function( swiping ) { + + var self = this; + var ret = false; + + self.instance.isSliding = false; + self.sliderLastPos = null; + + // Close if swiped vertically / navigate if horizontally + if ( swiping == 'y' && Math.abs( self.distanceY ) > 50 ) { + + // Continue vertical movement + $.fancybox.animate( self.instance.current.$slide, { + top : self.sliderStartPos.top + self.distanceY + ( self.velocityY * 150 ), + opacity : 0 + }, 150 ); + + ret = self.instance.close( true, 300 ); + + } else if ( swiping == 'x' && self.distanceX > 50 && self.instance.group.length > 1 ) { + ret = self.instance.previous( self.speedX ); + + } else if ( swiping == 'x' && self.distanceX < -50 && self.instance.group.length > 1 ) { + ret = self.instance.next( self.speedX ); + } + + if ( ret === false && ( swiping == 'x' || swiping == 'y' ) ) { + self.instance.jumpTo( self.instance.current.index, 150 ); + } + + self.$container.removeClass( 'fancybox-is-sliding' ); + + }; + + // Limit panning from edges + // ======================== + + Guestures.prototype.endPanning = function() { + + var self = this; + var newOffsetX, newOffsetY, newPos; + + if ( !self.contentLastPos ) { + return; + } + + if ( self.opts.momentum === false ) { + newOffsetX = self.contentLastPos.left; + newOffsetY = self.contentLastPos.top; + + } else { + + // Continue movement + newOffsetX = self.contentLastPos.left + ( self.velocityX * self.speed ); + newOffsetY = self.contentLastPos.top + ( self.velocityY * self.speed ); + } + + newPos = self.limitPosition( newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height ); + + newPos.width = self.contentStartPos.width; + newPos.height = self.contentStartPos.height; + + $.fancybox.animate( self.$content, newPos, 330 ); + }; + + + Guestures.prototype.endZooming = function() { + + var self = this; + + var current = self.instance.current; + + var newOffsetX, newOffsetY, newPos, reset; + + var newWidth = self.newWidth; + var newHeight = self.newHeight; + + if ( !self.contentLastPos ) { + return; + } + + newOffsetX = self.contentLastPos.left; + newOffsetY = self.contentLastPos.top; + + reset = { + top : newOffsetY, + left : newOffsetX, + width : newWidth, + height : newHeight, + scaleX : 1, + scaleY : 1 + }; + + // Reset scalex/scaleY values; this helps for perfomance and does not break animation + $.fancybox.setTranslate( self.$content, reset ); + + if ( newWidth < self.canvasWidth && newHeight < self.canvasHeight ) { + self.instance.scaleToFit( 150 ); + + } else if ( newWidth > current.width || newHeight > current.height ) { + self.instance.scaleToActual( self.centerPointStartX, self.centerPointStartY, 150 ); + + } else { + + newPos = self.limitPosition( newOffsetX, newOffsetY, newWidth, newHeight ); + + // Switch from scale() to width/height or animation will not work correctly + $.fancybox.setTranslate( self.content, $.fancybox.getTranslate( self.$content ) ); + + $.fancybox.animate( self.$content, newPos, 150 ); + } + + }; + + Guestures.prototype.onTap = function(e) { + var self = this; + var $target = $( e.target ); + + var instance = self.instance; + var current = instance.current; + + var endPoints = ( e && pointers( e ) ) || self.startPoints; + + var tapX = endPoints[0] ? endPoints[0].x - self.$stage.offset().left : 0; + var tapY = endPoints[0] ? endPoints[0].y - self.$stage.offset().top : 0; + + var where; + + var process = function ( prefix ) { + + var action = current.opts[ prefix ]; + + if ( $.isFunction( action ) ) { + action = action.apply( instance, [ current, e ] ); + } + + if ( !action) { + return; + } + + switch ( action ) { + + case "close" : + + instance.close( self.startEvent ); + + break; + + case "toggleControls" : + + instance.toggleControls( true ); + + break; + + case "next" : + + instance.next(); + + break; + + case "nextOrClose" : + + if ( instance.group.length > 1 ) { + instance.next(); + + } else { + instance.close( self.startEvent ); + } + + break; + + case "zoom" : + + if ( current.type == 'image' && ( current.isLoaded || current.$ghost ) ) { + + if ( instance.canPan() ) { + instance.scaleToFit(); + + } else if ( instance.isScaledDown() ) { + instance.scaleToActual( tapX, tapY ); + + } else if ( instance.group.length < 2 ) { + instance.close( self.startEvent ); + } + } + + break; + } + + }; + + // Ignore right click + if ( e.originalEvent && e.originalEvent.button == 2 ) { + return; + } + + // Skip if current slide is not in the center + if ( instance.isSliding ) { + return; + } + + // Skip if clicked on the scrollbar + if ( tapX > $target[0].clientWidth + $target.offset().left ) { + return; + } + + // Check where is clicked + if ( $target.is( '.fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container' ) ) { + where = 'Outside'; + + } else if ( $target.is( '.fancybox-slide' ) ) { + where = 'Slide'; + + } else if ( instance.current.$content && instance.current.$content.has( e.target ).length ) { + where = 'Content'; + + } else { + return; + } + + // Check if this is a double tap + if ( self.tapped ) { + + // Stop previously created single tap + clearTimeout( self.tapped ); + self.tapped = null; + + // Skip if distance between taps is too big + if ( Math.abs( tapX - self.tapX ) > 50 || Math.abs( tapY - self.tapY ) > 50 || instance.isSliding ) { + return this; + } + + // OK, now we assume that this is a double-tap + process( 'dblclick' + where ); + + } else { + + // Single tap will be processed if user has not clicked second time within 300ms + // or there is no need to wait for double-tap + self.tapX = tapX; + self.tapY = tapY; + + if ( current.opts[ 'dblclick' + where ] && current.opts[ 'dblclick' + where ] !== current.opts[ 'click' + where ] ) { + self.tapped = setTimeout(function() { + self.tapped = null; + + process( 'click' + where ); + + }, 300); + + } else { + process( 'click' + where ); + } + + } + + return this; + }; + + $(document).on('onActivate.fb', function (e, instance) { + if ( instance && !instance.Guestures ) { + instance.Guestures = new Guestures( instance ); + } + }); + + $(document).on('beforeClose.fb', function (e, instance) { + if ( instance && instance.Guestures ) { + instance.Guestures.destroy(); + } + }); + + +}( window, document, window.jQuery || jQuery )); + +// ========================================================================== +// +// SlideShow +// Enables slideshow functionality +// +// Example of usage: +// $.fancybox.getInstance().SlideShow.start() +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + $.extend(true, $.fancybox.defaults, { + btnTpl : { + slideShow : + '' + }, + slideShow : { + autoStart : false, + speed : 3000 + } + }); + + var SlideShow = function( instance ) { + this.instance = instance; + this.init(); + }; + + $.extend( SlideShow.prototype, { + timer : null, + isActive : false, + $button : null, + + init : function() { + var self = this; + + self.$button = self.instance.$refs.toolbar.find('[data-fancybox-play]').on('click', function() { + self.toggle(); + }); + + if ( self.instance.group.length < 2 || !self.instance.group[ self.instance.currIndex ].opts.slideShow ) { + self.$button.hide(); + } + }, + + set : function( force ) { + var self = this; + + // Check if reached last element + if ( self.instance && self.instance.current && (force === true || self.instance.current.opts.loop || self.instance.currIndex < self.instance.group.length - 1 )) { + self.timer = setTimeout(function() { + if ( self.isActive ) { + self.instance.jumpTo( (self.instance.currIndex + 1) % self.instance.group.length ); + } + + }, self.instance.current.opts.slideShow.speed); + + } else { + self.stop(); + self.instance.idleSecondsCounter = 0; + self.instance.showControls(); + } + }, + + clear : function() { + var self = this; + + clearTimeout( self.timer ); + + self.timer = null; + }, + + start : function() { + var self = this; + var current = self.instance.current; + + if ( current ) { + self.isActive = true; + + self.$button + .attr( 'title', current.opts.i18n[ current.opts.lang ].PLAY_STOP ) + .removeClass( 'fancybox-button--play' ) + .addClass( 'fancybox-button--pause' ); + + self.set( true ); + } + }, + + stop : function() { + var self = this; + var current = self.instance.current; + + self.clear(); + + self.$button + .attr( 'title', current.opts.i18n[ current.opts.lang ].PLAY_START ) + .removeClass( 'fancybox-button--pause' ) + .addClass( 'fancybox-button--play' ); + + self.isActive = false; + }, + + toggle : function() { + var self = this; + + if ( self.isActive ) { + self.stop(); + + } else { + self.start(); + } + } + + }); + + $(document).on({ + 'onInit.fb' : function(e, instance) { + if ( instance && !instance.SlideShow ) { + instance.SlideShow = new SlideShow( instance ); + } + }, + + 'beforeShow.fb' : function(e, instance, current, firstRun) { + var SlideShow = instance && instance.SlideShow; + + if ( firstRun ) { + + if ( SlideShow && current.opts.slideShow.autoStart ) { + SlideShow.start(); + } + + } else if ( SlideShow && SlideShow.isActive ) { + SlideShow.clear(); + } + }, + + 'afterShow.fb' : function(e, instance, current) { + var SlideShow = instance && instance.SlideShow; + + if ( SlideShow && SlideShow.isActive ) { + SlideShow.set(); + } + }, + + 'afterKeydown.fb' : function(e, instance, current, keypress, keycode) { + var SlideShow = instance && instance.SlideShow; + + // "P" or Spacebar + if ( SlideShow && current.opts.slideShow && ( keycode === 80 || keycode === 32 ) && !$(document.activeElement).is( 'button,a,input' ) ) { + keypress.preventDefault(); + + SlideShow.toggle(); + } + }, + + 'beforeClose.fb onDeactivate.fb' : function(e, instance) { + var SlideShow = instance && instance.SlideShow; + + if ( SlideShow ) { + SlideShow.stop(); + } + } + }); + + // Page Visibility API to pause slideshow when window is not active + $(document).on("visibilitychange", function() { + var instance = $.fancybox.getInstance(); + var SlideShow = instance && instance.SlideShow; + + if ( SlideShow && SlideShow.isActive ) { + if ( document.hidden ) { + SlideShow.clear(); + + } else { + SlideShow.set(); + } + } + }); + +}( document, window.jQuery || jQuery )); + +// ========================================================================== +// +// FullScreen +// Adds fullscreen functionality +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + // Collection of methods supported by user browser + var fn = (function () { + + var fnMap = [ + [ + 'requestFullscreen', + 'exitFullscreen', + 'fullscreenElement', + 'fullscreenEnabled', + 'fullscreenchange', + 'fullscreenerror' + ], + // new WebKit + [ + 'webkitRequestFullscreen', + 'webkitExitFullscreen', + 'webkitFullscreenElement', + 'webkitFullscreenEnabled', + 'webkitfullscreenchange', + 'webkitfullscreenerror' + + ], + // old WebKit (Safari 5.1) + [ + 'webkitRequestFullScreen', + 'webkitCancelFullScreen', + 'webkitCurrentFullScreenElement', + 'webkitCancelFullScreen', + 'webkitfullscreenchange', + 'webkitfullscreenerror' + + ], + [ + 'mozRequestFullScreen', + 'mozCancelFullScreen', + 'mozFullScreenElement', + 'mozFullScreenEnabled', + 'mozfullscreenchange', + 'mozfullscreenerror' + ], + [ + 'msRequestFullscreen', + 'msExitFullscreen', + 'msFullscreenElement', + 'msFullscreenEnabled', + 'MSFullscreenChange', + 'MSFullscreenError' + ] + ]; + + var val; + var ret = {}; + var i, j; + + for ( i = 0; i < fnMap.length; i++ ) { + val = fnMap[ i ]; + + if ( val && val[ 1 ] in document ) { + for ( j = 0; j < val.length; j++ ) { + ret[ fnMap[ 0 ][ j ] ] = val[ j ]; + } + + return ret; + } + } + + return false; + })(); + + // If browser does not have Full Screen API, then simply unset default button template and stop + if ( !fn ) { + + if ( $ && $.fancybox ) { + $.fancybox.defaults.btnTpl.fullScreen = false; + } + + return; + } + + var FullScreen = { + + request : function ( elem ) { + + elem = elem || document.documentElement; + + elem[ fn.requestFullscreen ]( elem.ALLOW_KEYBOARD_INPUT ); + + }, + exit : function () { + + document[ fn.exitFullscreen ](); + + }, + toggle : function ( elem ) { + + elem = elem || document.documentElement; + + if ( this.isFullscreen() ) { + this.exit(); + + } else { + this.request( elem ); + } + + }, + isFullscreen : function() { + + return Boolean( document[ fn.fullscreenElement ] ); + + }, + enabled : function() { + + return Boolean( document[ fn.fullscreenEnabled ] ); + + } + }; + + $.extend(true, $.fancybox.defaults, { + btnTpl : { + fullScreen : + '' + }, + fullScreen : { + autoStart : false + } + }); + + $(document).on({ + 'onInit.fb' : function(e, instance) { + var $container; + + if ( instance && instance.group[ instance.currIndex ].opts.fullScreen ) { + $container = instance.$refs.container; + + $container.on('click.fb-fullscreen', '[data-fancybox-fullscreen]', function(e) { + + e.stopPropagation(); + e.preventDefault(); + + FullScreen.toggle( $container[ 0 ] ); + + }); + + if ( instance.opts.fullScreen && instance.opts.fullScreen.autoStart === true ) { + FullScreen.request( $container[ 0 ] ); + } + + // Expose API + instance.FullScreen = FullScreen; + + } else if ( instance ) { + instance.$refs.toolbar.find('[data-fancybox-fullscreen]').hide(); + } + + }, + + 'afterKeydown.fb' : function(e, instance, current, keypress, keycode) { + + // "P" or Spacebar + if ( instance && instance.FullScreen && keycode === 70 ) { + keypress.preventDefault(); + + instance.FullScreen.toggle( instance.$refs.container[ 0 ] ); + } + + }, + + 'beforeClose.fb' : function( instance ) { + if ( instance && instance.FullScreen ) { + FullScreen.exit(); + } + } + }); + + $(document).on(fn.fullscreenchange, function() { + var isFullscreen = FullScreen.isFullscreen(), + instance = $.fancybox.getInstance(); + + if ( instance ) { + + // If image is zooming, then force to stop and reposition properly + if ( instance.current && instance.current.type === 'image' && instance.isAnimating ) { + instance.current.$content.css( 'transition', 'none' ); + + instance.isAnimating = false; + + instance.update( true, true, 0 ); + } + + instance.trigger( 'onFullscreenChange', isFullscreen ); + + instance.$refs.container.toggleClass( 'fancybox-is-fullscreen', isFullscreen ); + } + + }); + +}( document, window.jQuery || jQuery )); + +// ========================================================================== +// +// Thumbs +// Displays thumbnails in a grid +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + // Make sure there are default values + $.fancybox.defaults = $.extend(true, { + btnTpl : { + thumbs : + '' + }, + thumbs : { + autoStart : false, // Display thumbnails on opening + hideOnClose : true, // Hide thumbnail grid when closing animation starts + parentEl : '.fancybox-container', // Container is injected into this element + axis : 'y' // Vertical (y) or horizontal (x) scrolling + } + }, $.fancybox.defaults); + + var FancyThumbs = function( instance ) { + this.init( instance ); + }; + + $.extend( FancyThumbs.prototype, { + + $button : null, + $grid : null, + $list : null, + isVisible : false, + isActive : false, + + init : function( instance ) { + var self = this; + + self.instance = instance; + + instance.Thumbs = self; + + // Enable thumbs if at least two group items have thumbnails + var first = instance.group[0], + second = instance.group[1]; + + self.opts = instance.group[ instance.currIndex ].opts.thumbs; + + self.$button = instance.$refs.toolbar.find( '[data-fancybox-thumbs]' ); + + if ( self.opts && first && second && ( + ( first.type == 'image' || first.opts.thumb || first.opts.$thumb ) && + ( second.type == 'image' || second.opts.thumb || second.opts.$thumb ) + )) { + + self.$button.show().on('click', function() { + self.toggle(); + }); + + self.isActive = true; + + } else { + self.$button.hide(); + } + }, + + create : function() { + var self = this, + instance = self.instance, + parentEl = self.opts.parentEl, + list, + src; + + self.$grid = $('
      ').appendTo( instance.$refs.container.find( parentEl ).addBack().filter( parentEl ) ); + + // Build list HTML + list = '
        '; + + $.each(instance.group, function( i, item ) { + src = item.opts.thumb || ( item.opts.$thumb ? item.opts.$thumb.attr( 'src' ) : null ); + + if ( !src && item.type === 'image' ) { + src = item.src; + } + + if ( src && src.length ) { + list += '
      • '; + } + }); + + list += '
      '; + + self.$list = $( list ).appendTo( self.$grid ).on('click', 'li', function() { + instance.jumpTo( $(this).data('index') ); + }); + + self.$list.find( 'img' ).hide().one('load', function() { + var $parent = $(this).parent().removeClass( 'fancybox-thumbs-loading' ), + thumbWidth = $parent.outerWidth(), + thumbHeight = $parent.outerHeight(), + width, + height, + widthRatio, + heightRatio; + + width = this.naturalWidth || this.width; + height = this.naturalHeight || this.height; + + // Calculate thumbnail dimensions; center vertically and horizontally + widthRatio = width / thumbWidth; + heightRatio = height / thumbHeight; + + if (widthRatio >= 1 && heightRatio >= 1) { + if (widthRatio > heightRatio) { + width = width / heightRatio; + height = thumbHeight; + + } else { + width = thumbWidth; + height = height / widthRatio; + } + } + + $(this).css({ + width : Math.floor(width), + height : Math.floor(height), + 'margin-top' : height > thumbHeight ? ( Math.floor(thumbHeight * 0.3 - height * 0.3 ) ) : Math.floor(thumbHeight * 0.5 - height * 0.5 ), + 'margin-left' : Math.floor(thumbWidth * 0.5 - width * 0.5 ) + }).show(); + + }) + .each(function() { + this.src = $( this ).data( 'src' ); + }); + + if ( self.opts.axis === 'x' ) { + self.$list.width( parseInt( self.$grid.css("padding-right") ) + ( instance.group.length * self.$list.children().eq(0).outerWidth(true) ) + 'px' ); + } + }, + + focus : function( duration ) { + var self = this, + $list = self.$list, + thumb, + thumbPos; + + if ( self.instance.current ) { + thumb = $list.children() + .removeClass( 'fancybox-thumbs-active' ) + .filter('[data-index="' + self.instance.current.index + '"]') + .addClass('fancybox-thumbs-active'); + + thumbPos = thumb.position(); + + // Check if need to scroll to make current thumb visible + if ( self.opts.axis === 'y' && ( thumbPos.top < 0 || thumbPos.top > ( $list.height() - thumb.outerHeight() ) ) ) { + $list.stop().animate({ 'scrollTop' : $list.scrollTop() + thumbPos.top }, duration); + + } else if ( self.opts.axis === 'x' && ( + thumbPos.left < $list.parent().scrollLeft() || + thumbPos.left > ( $list.parent().scrollLeft() + ( $list.parent().width() - thumb.outerWidth() ) ) + ) + ) { + $list.parent().stop().animate({ 'scrollLeft' : thumbPos.left }, duration); + } + } + }, + + update : function() { + this.instance.$refs.container.toggleClass( 'fancybox-show-thumbs', this.isVisible ); + + if ( this.isVisible ) { + if ( !this.$grid ) { + this.create(); + } + + this.instance.trigger( 'onThumbsShow' ); + + this.focus( 0 ); + + } else if ( this.$grid ) { + this.instance.trigger( 'onThumbsHide' ); + } + + // Update content position + this.instance.update(); + }, + + hide : function() { + this.isVisible = false; + this.update(); + }, + + show : function() { + this.isVisible = true; + this.update(); + }, + + toggle : function() { + this.isVisible = !this.isVisible; + this.update(); + } + }); + + $(document).on({ + + 'onInit.fb' : function(e, instance) { + var Thumbs; + + if ( instance && !instance.Thumbs ) { + Thumbs = new FancyThumbs( instance ); + + if ( Thumbs.isActive && Thumbs.opts.autoStart === true ) { + Thumbs.show(); + } + } + }, + + 'beforeShow.fb' : function(e, instance, item, firstRun) { + var Thumbs = instance && instance.Thumbs; + + if ( Thumbs && Thumbs.isVisible ) { + Thumbs.focus( firstRun ? 0 : 250 ); + } + }, + + 'afterKeydown.fb' : function(e, instance, current, keypress, keycode) { + var Thumbs = instance && instance.Thumbs; + + // "G" + if ( Thumbs && Thumbs.isActive && keycode === 71 ) { + keypress.preventDefault(); + + Thumbs.toggle(); + } + }, + + 'beforeClose.fb' : function( e, instance ) { + var Thumbs = instance && instance.Thumbs; + + if ( Thumbs && Thumbs.isVisible && Thumbs.opts.hideOnClose !== false ) { + Thumbs.$grid.hide(); + } + } + + }); + +}(document, window.jQuery)); + +//// ========================================================================== +// +// Share +// Displays simple form for sharing current url +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + $.extend(true, $.fancybox.defaults, { + btnTpl : { + share : + '' + }, + share : { + tpl : + '
      ' + + '

      {{SHARE}}

      ' + + '

      ' + + '' + + '' + + 'Facebook' + + '' + + '' + + '' + + 'Pinterest' + + '' + + '' + + '' + + 'Twitter' + + '' + + '

      ' + + '

      ' + + '
      ' + } + }); + + function escapeHtml(string) { + var entityMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '/': '/', + '`': '`', + '=': '=' + }; + + return String(string).replace(/[&<>"'`=\/]/g, function (s) { + return entityMap[s]; + }); + } + + $(document).on('click', '[data-fancybox-share]', function() { + var f = $.fancybox.getInstance(), + url, + tpl; + + if ( f ) { + url = f.current.opts.hash === false ? f.current.src : window.location; + tpl = f.current.opts.share.tpl + .replace( /\{\{src\}\}/g, encodeURIComponent( url ) ) + .replace( /\{\{src_raw\}\}/g, escapeHtml( url ) ) + .replace( /\{\{descr\}\}/g, f.$caption ? encodeURIComponent( f.$caption.text() ) : '' ); + + $.fancybox.open({ + src : f.translate( f, tpl ), + type : 'html', + opts : { + animationEffect : "fade", + animationDuration : 250 + } + }); + } + + }); + +}( document, window.jQuery || jQuery )); + +// ========================================================================== +// +// Hash +// Enables linking to each modal +// +// ========================================================================== +;(function (document, window, $) { + 'use strict'; + + // Simple $.escapeSelector polyfill (for jQuery prior v3) + if ( !$.escapeSelector ) { + $.escapeSelector = function( sel ) { + var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; + var fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }; + + return ( sel + "" ).replace( rcssescape, fcssescape ); + }; + } + + // Create new history entry only once + var shouldCreateHistory = true; + + // Variable containing last hash value set by fancyBox + // It will be used to determine if fancyBox needs to close after hash change is detected + var currentHash = null; + + // Throttling the history change + var timerID = null; + + // Get info about gallery name and current index from url + function parseUrl() { + var hash = window.location.hash.substr( 1 ); + var rez = hash.split( '-' ); + var index = rez.length > 1 && /^\+?\d+$/.test( rez[ rez.length - 1 ] ) ? parseInt( rez.pop( -1 ), 10 ) || 1 : 1; + var gallery = rez.join( '-' ); + + // Index is starting from 1 + if ( index < 1 ) { + index = 1; + } + + return { + hash : hash, + index : index, + gallery : gallery + }; + } + + // Trigger click evnt on links to open new fancyBox instance + function triggerFromUrl( url ) { + var $el; + + if ( url.gallery !== '' ) { + + // If we can find element matching 'data-fancybox' atribute, then trigger click event for that .. + $el = $( "[data-fancybox='" + $.escapeSelector( url.gallery ) + "']" ).eq( url.index - 1 ); + + if ( !$el.length ) { + // .. if not, try finding element by ID + $el = $( "#" + $.escapeSelector( url.gallery ) + "" ); + } + + if ( $el.length ) { + shouldCreateHistory = false; + + $el.trigger( 'click' ); + } + + } + } + + // Get gallery name from current instance + function getGalleryID( instance ) { + var opts; + + if ( !instance ) { + return false; + } + + opts = instance.current ? instance.current.opts : instance.opts; + + return opts.hash || ( opts.$orig ? opts.$orig.data( 'fancybox' ) : '' ); + } + + // Start when DOM becomes ready + $(function() { + + // Check if user has disabled this module + if ( $.fancybox.defaults.hash === false ) { + return; + } + + // Update hash when opening/closing fancyBox + $(document).on({ + 'onInit.fb' : function( e, instance ) { + var url, gallery; + + if ( instance.group[ instance.currIndex ].opts.hash === false ) { + return; + } + + url = parseUrl(); + gallery = getGalleryID( instance ); + + // Make sure gallery start index matches index from hash + if ( gallery && url.gallery && gallery == url.gallery ) { + instance.currIndex = url.index - 1; + } + }, + + 'beforeShow.fb' : function( e, instance, current ) { + var gallery; + + if ( !current || current.opts.hash === false ) { + return; + } + + gallery = getGalleryID( instance ); + + // Update window hash + if ( gallery && gallery !== '' ) { + + if ( window.location.hash.indexOf( gallery ) < 0 ) { + instance.opts.origHash = window.location.hash; + } + + currentHash = gallery + ( instance.group.length > 1 ? '-' + ( current.index + 1 ) : '' ); + + if ( 'replaceState' in window.history ) { + if ( timerID ) { + clearTimeout( timerID ); + } + + timerID = setTimeout(function() { + window.history[ shouldCreateHistory ? 'pushState' : 'replaceState' ]( {} , document.title, window.location.pathname + window.location.search + '#' + currentHash ); + + timerID = null; + + shouldCreateHistory = false; + + }, 300); + + } else { + window.location.hash = currentHash; + } + + } + + }, + + 'beforeClose.fb' : function( e, instance, current ) { + var gallery, origHash; + + if ( timerID ) { + clearTimeout( timerID ); + } + + if ( current.opts.hash === false ) { + return; + } + + gallery = getGalleryID( instance ); + origHash = instance && instance.opts.origHash ? instance.opts.origHash : ''; + + // Remove hash from location bar + if ( gallery && gallery !== '' ) { + + if ( 'replaceState' in history ) { + window.history.replaceState( {} , document.title, window.location.pathname + window.location.search + origHash ); + + } else { + window.location.hash = origHash; + + // Keep original scroll position + $( window ).scrollTop( instance.scrollTop ).scrollLeft( instance.scrollLeft ); + } + } + + currentHash = null; + } + }); + + // Check if need to close after url has changed + $(window).on('hashchange.fb', function() { + var url = parseUrl(); + + if ( $.fancybox.getInstance() ) { + if ( currentHash && currentHash !== url.gallery + '-' + url.index && !( url.index === 1 && currentHash == url.gallery ) ) { + currentHash = null; + + $.fancybox.close(); + } + + } else if ( url.gallery !== '' ) { + triggerFromUrl( url ); + } + }); + + // Check current hash and trigger click event on matching element to start fancyBox, if needed + setTimeout(function() { + triggerFromUrl( parseUrl() ); + }, 50); + }); + +}( document, window, window.jQuery || jQuery )); diff --git a/source/lib/font-awesome/.bower.json b/source/lib/font-awesome/.bower.json new file mode 100644 index 000000000..fb98b1d6d --- /dev/null +++ b/source/lib/font-awesome/.bower.json @@ -0,0 +1,36 @@ +{ + "name": "font-awesome", + "description": "Font Awesome", + "keywords": [], + "homepage": "http://fontawesome.io", + "dependencies": {}, + "devDependencies": {}, + "license": [ + "OFL-1.1", + "MIT", + "CC-BY-3.0" + ], + "main": [ + "less/font-awesome.less", + "scss/font-awesome.scss" + ], + "ignore": [ + "*/.*", + "*.json", + "src", + "*.yml", + "Gemfile", + "Gemfile.lock", + "*.md" + ], + "version": "4.7.0", + "_release": "4.7.0", + "_resolution": { + "type": "version", + "tag": "v4.7.0", + "commit": "a3fe90fa5f6fac55d197f9cbd18e3f57dafb716c" + }, + "_source": "https://github.com/FortAwesome/Font-Awesome.git", + "_target": "*", + "_originalSource": "fontawesome" +} \ No newline at end of file diff --git a/source/lib/font-awesome/.gitignore b/source/lib/font-awesome/.gitignore new file mode 100644 index 000000000..39c4f20b7 --- /dev/null +++ b/source/lib/font-awesome/.gitignore @@ -0,0 +1,33 @@ +*.pyc +*.egg-info +*.db +*.db.old +*.swp +*.db-journal + +.coverage +.DS_Store +.installed.cfg +_gh_pages/* + +.idea/* +.svn/* +src/website/static/* +src/website/media/* + +bin +cfcache +develop-eggs +dist +downloads +eggs +parts +tmp +.sass-cache +node_modules + +src/website/settingslocal.py +stunnel.log + +.ruby-version +.bundle diff --git a/source/lib/font-awesome/.npmignore b/source/lib/font-awesome/.npmignore new file mode 100644 index 000000000..54a691f81 --- /dev/null +++ b/source/lib/font-awesome/.npmignore @@ -0,0 +1,42 @@ +*.pyc +*.egg-info +*.db +*.db.old +*.swp +*.db-journal + +.coverage +.DS_Store +.installed.cfg +_gh_pages/* + +.idea/* +.svn/* +src/website/static/* +src/website/media/* + +bin +cfcache +develop-eggs +dist +downloads +eggs +parts +tmp +.sass-cache +node_modules + +src/website/settingslocal.py +stunnel.log + +.ruby-version + +# don't need these in the npm package. +src/ +_config.yml +bower.json +component.json +composer.json +CONTRIBUTING.md +Gemfile +Gemfile.lock diff --git a/source/lib/font-awesome/HELP-US-OUT.txt b/source/lib/font-awesome/HELP-US-OUT.txt new file mode 100644 index 000000000..83d083dd7 --- /dev/null +++ b/source/lib/font-awesome/HELP-US-OUT.txt @@ -0,0 +1,7 @@ +I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project, +Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome, +comprehensive icon sets or copy and paste your own. + +Please. Check it out. + +-Dave Gandy diff --git a/source/lib/font-awesome/bower.json b/source/lib/font-awesome/bower.json new file mode 100644 index 000000000..9e2112659 --- /dev/null +++ b/source/lib/font-awesome/bower.json @@ -0,0 +1,22 @@ +{ + "name": "font-awesome", + "description": "Font Awesome", + "keywords": [], + "homepage": "http://fontawesome.io", + "dependencies": {}, + "devDependencies": {}, + "license": ["OFL-1.1", "MIT", "CC-BY-3.0"], + "main": [ + "less/font-awesome.less", + "scss/font-awesome.scss" + ], + "ignore": [ + "*/.*", + "*.json", + "src", + "*.yml", + "Gemfile", + "Gemfile.lock", + "*.md" + ] +} diff --git a/source/lib/font-awesome/css/font-awesome.css b/source/lib/font-awesome/css/font-awesome.css new file mode 100644 index 000000000..ee906a819 --- /dev/null +++ b/source/lib/font-awesome/css/font-awesome.css @@ -0,0 +1,2337 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/source/lib/font-awesome/css/font-awesome.css.map b/source/lib/font-awesome/css/font-awesome.css.map new file mode 100644 index 000000000..60763a864 --- /dev/null +++ b/source/lib/font-awesome/css/font-awesome.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": ";;;;;;;AAGA,UAUC;EATC,WAAW,EAAE,aAAa;EAC1B,GAAG,EAAE,+CAAgE;EACrE,GAAG,EAAE,ySAAmG;EAKxG,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;ACTpB,GAAmB;EACjB,OAAO,EAAE,YAAY;EACrB,IAAI,EAAE,uCAAwD;EAC9D,SAAS,EAAE,OAAO;EAClB,cAAc,EAAE,IAAI;EACpB,sBAAsB,EAAE,WAAW;EACnC,uBAAuB,EAAE,SAAS;EAClC,SAAS,EAAE,eAAe;;;ACN5B,MAAsB;EACpB,SAAS,EAAE,SAAS;EACpB,WAAW,EAAE,MAAS;EACtB,cAAc,EAAE,IAAI;;AAEtB,MAAsB;EAAE,SAAS,EAAE,GAAG;;AACtC,MAAsB;EAAE,SAAS,EAAE,GAAG;;AACtC,MAAsB;EAAE,SAAS,EAAE,GAAG;;AACtC,MAAsB;EAAE,SAAS,EAAE,GAAG;;ACVtC,MAAsB;EACpB,KAAK,EAAE,SAAW;EAClB,UAAU,EAAE,MAAM;;ACDpB,MAAsB;EACpB,YAAY,EAAE,CAAC;EACf,WAAW,ECKU,SAAS;EDJ9B,eAAe,EAAE,IAAI;EACrB,WAAK;IAAE,QAAQ,EAAE,QAAQ;;AAE3B,MAAsB;EACpB,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,UAAa;EACnB,KAAK,ECFgB,SAAS;EDG9B,GAAG,EAAE,SAAU;EACf,UAAU,EAAE,MAAM;EAClB,YAAuB;IACrB,IAAI,EAAE,UAA0B;;AEbpC,UAA0B;EACxB,OAAO,EAAE,gBAAgB;EACzB,MAAM,EAAE,iBAA4B;EACpC,aAAa,EAAE,IAAI;;AAGrB,WAAY;EAAE,KAAK,EAAE,KAAK;;AAC1B,UAAW;EAAE,KAAK,EAAE,IAAI;;AAGtB,aAAY;EAAE,YAAY,EAAE,IAAI;AAChC,cAAa;EAAE,WAAW,EAAE,IAAI;;ACXlC,QAAwB;EACtB,iBAAiB,EAAE,0BAA0B;EACrC,SAAS,EAAE,0BAA0B;;AAG/C,SAAyB;EACvB,iBAAiB,EAAE,4BAA4B;EACvC,SAAS,EAAE,4BAA4B;;AAGjD,0BASC;EARC,EAAG;IACD,iBAAiB,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;EAEjC,IAAK;IACH,iBAAiB,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;AAIrC,kBASC;EARC,EAAG;IACD,iBAAiB,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;EAEjC,IAAK;IACH,iBAAiB,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;AC5BrC,aAA8B;ECY5B,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,aAAgB;EAC/B,aAAa,EAAE,aAAgB;EAC3B,SAAS,EAAE,aAAgB;;ADdrC,cAA8B;ECW5B,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,cAAgB;EAC/B,aAAa,EAAE,cAAgB;EAC3B,SAAS,EAAE,cAAgB;;ADbrC,cAA8B;ECU5B,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,cAAgB;EAC/B,aAAa,EAAE,cAAgB;EAC3B,SAAS,EAAE,cAAgB;;ADXrC,mBAAmC;ECejC,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,YAAoB;EACnC,aAAa,EAAE,YAAoB;EAC/B,SAAS,EAAE,YAAoB;;ADjBzC,iBAAmC;ECcjC,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,YAAoB;EACnC,aAAa,EAAE,YAAoB;EAC/B,SAAS,EAAE,YAAoB;;ADZzC;;;;uBAIuC;EACrC,MAAM,EAAE,IAAI;;AEfd,SAAyB;EACvB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,MAAM;;AAExB,0BAAyD;EACvD,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;;AAEpB,YAA4B;EAAE,WAAW,EAAE,OAAO;;AAClD,YAA4B;EAAE,SAAS,EAAE,GAAG;;AAC5C,WAA2B;EAAE,KAAK,ELVZ,IAAI;;;;AMN1B,gBAAgC;EAAE,OAAO,ENoQ1B,GAAO;;AMnQtB,gBAAgC;EAAE,OAAO,EN0W1B,GAAO;;AMzWtB,iBAAiC;EAAE,OAAO,ENmb1B,GAAO;;AMlbvB,qBAAqC;EAAE,OAAO,ENmL1B,GAAO;;AMlL3B,gBAAgC;EAAE,OAAO,ENkR1B,GAAO;;AMjRtB,eAA+B;EAAE,OAAO,ENke1B,GAAO;;AMjerB,iBAAiC;EAAE,OAAO,ENse1B,GAAO;;AMrevB,eAA+B;EAAE,OAAO,EN+iB1B,GAAO;;AM9iBrB,eAA+B;EAAE,OAAO,ENyN1B,GAAO;;AMxNrB,mBAAmC;EAAE,OAAO,ENggB1B,GAAO;;AM/fzB,aAA6B;EAAE,OAAO,EN8f1B,GAAO;;AM7fnB,kBAAkC;EAAE,OAAO,EN+f1B,GAAO;;AM9fxB,gBAAgC;EAAE,OAAO,ENoG1B,GAAO;;AMnGtB;;gBAEgC;EAAE,OAAO,ENkgB1B,GAAO;;AMjgBtB,sBAAsC;EAAE,OAAO,ENua1B,GAAO;;AMta5B,uBAAuC;EAAE,OAAO,ENqa1B,GAAO;;AMpa7B,oBAAoC;EAAE,OAAO,EN+X1B,GAAO;;AM9X1B,iBAAiC;EAAE,OAAO,ENsb1B,GAAO;;AMrbvB;cAC8B;EAAE,OAAO,ENwH1B,GAAO;;AMvHpB,kBAAkC;EAAE,OAAO,ENygB1B,GAAO;;AMxgBxB,eAA+B;EAAE,OAAO,ENmQ1B,GAAO;;AMlQrB,iBAAiC;EAAE,OAAO,EN6L1B,GAAO;;AM5LvB,kBAAkC;EAAE,OAAO,EN0G1B,GAAO;;AMzGxB,eAA+B;EAAE,OAAO,EN+Y1B,GAAO;;AM9YrB,mBAAmC;EAAE,OAAO,ENiJ1B,GAAO;;AMhJzB,8BAA8C;EAAE,OAAO,ENI1B,GAAO;;AMHpC,4BAA4C;EAAE,OAAO,ENM1B,GAAO;;AMLlC,gBAAgC;EAAE,OAAO,ENkQ1B,GAAO;;AMjQtB,wBAAwC;EAAE,OAAO,EN4W1B,GAAO;;AM3W9B;iBACiC;EAAE,OAAO,ENmY1B,GAAO;;AMlYvB,kBAAkC;EAAE,OAAO,EN8X1B,GAAO;;AM7XxB,mBAAmC;EAAE,OAAO,ENiS1B,GAAO;;AMhSzB,eAA+B;EAAE,OAAO,ENoS1B,GAAO;;AMnSrB,eAA+B;EAAE,OAAO,ENgM1B,GAAO;;AM/LrB,qBAAqC;EAAE,OAAO,EN+O1B,GAAO;;AM9O3B,qBAAqC;EAAE,OAAO,EN8hB1B,GAAO;;AM7hB3B,sBAAsC;EAAE,OAAO,EN4hB1B,GAAO;;AM3hB5B,oBAAoC;EAAE,OAAO,EN6hB1B,GAAO;;AM5hB1B,iBAAiC;EAAE,OAAO,EN2W1B,GAAO;;AM1WvB,kBAAkC;EAAE,OAAO,ENW1B,GAAO;;AMVxB,cAA8B;EAAE,OAAO,ENod1B,GAAO;;AMndpB,eAA+B;EAAE,OAAO,ENod1B,GAAO;;AMndrB,eAA+B;EAAE,OAAO,EN2B1B,GAAO;;AM1BrB,mBAAmC;EAAE,OAAO,EN2B1B,GAAO;;AM1BzB,gBAAgC;EAAE,OAAO,ENkW1B,GAAO;;AMjWtB,iBAAiC;EAAE,OAAO,ENwC1B,GAAO;;AMvCvB,eAA+B;EAAE,OAAO,EN8L1B,GAAO;;AM7LrB,eAA+B;EAAE,OAAO,ENmB1B,GAAO;;AMlBrB,iBAAiC;EAAE,OAAO,ENoP1B,GAAO;;AMnPvB,sBAAsC;EAAE,OAAO,ENid1B,GAAO;;AMhd5B,qBAAqC;EAAE,OAAO,ENid1B,GAAO;;AMhd3B,qBAAqC;EAAE,OAAO,EN1C1B,GAAO;;AM2C3B,uBAAuC;EAAE,OAAO,EN7C1B,GAAO;;AM8C7B,sBAAsC;EAAE,OAAO,EN3C1B,GAAO;;AM4C5B,wBAAwC;EAAE,OAAO,EN9C1B,GAAO;;AM+C9B,eAA+B;EAAE,OAAO,ENwQ1B,GAAO;;AMvQrB;kBACkC;EAAE,OAAO,ENmT1B,GAAO;;AMlTxB,iBAAiC;EAAE,OAAO,ENmO1B,GAAO;;AMlOvB,uBAAuC;EAAE,OAAO,ENigB1B,GAAO;;AMhgB7B;;oBAEoC;EAAE,OAAO,EN+T1B,GAAO;;AM9T1B,iBAAiC;EAAE,OAAO,ENwT1B,GAAO;;AMvTvB,qBAAqC;EAAE,OAAO,EN+Q1B,GAAO;;AM9Q3B,iBAAiC;EAAE,OAAO,EN5D1B,GAAO;;AM6DvB,eAA+B;EAAE,OAAO,EN8c1B,GAAO;;AM7crB;0BAC0C;EAAE,OAAO,ENqT1B,GAAO;;AMpThC,yBAAyC;EAAE,OAAO,ENuX1B,GAAO;;AMtX/B,yBAAyC;EAAE,OAAO,EN0C1B,GAAO;;AMzC/B,iBAAiC;EAAE,OAAO,ENjC1B,GAAO;;AMkCvB,wBAAwC;EAAE,OAAO,ENma1B,GAAO;;AMla9B,wBAAwC;EAAE,OAAO,EN4H1B,GAAO;;AM3H9B,mBAAmC;EAAE,OAAO,EN7B1B,GAAO;;AM8BzB,eAA+B;EAAE,OAAO,EN0T1B,GAAO;;AMzTrB,gBAAgC;EAAE,OAAO,ENwS1B,GAAO;;AMvStB,eAA+B;EAAE,OAAO,ENia1B,GAAO;;AMharB,kBAAkC;EAAE,OAAO,ENgK1B,GAAO;;AM/JxB,uBAAuC;EAAE,OAAO,ENuH1B,GAAO;;AMtH7B,uBAAuC;EAAE,OAAO,EN4Z1B,GAAO;;AM3Z7B,gBAAgC;EAAE,OAAO,EN4F1B,GAAO;;AM3FtB,uBAAuC;EAAE,OAAO,ENoC1B,GAAO;;AMnC7B,wBAAwC;EAAE,OAAO,ENoC1B,GAAO;;AMnC9B,sBAAsC;EAAE,OAAO,ENsT1B,GAAO;;AMrT5B,uBAAuC;EAAE,OAAO,ENyQ1B,GAAO;;AMxQ7B,uBAAuC;EAAE,OAAO,ENwb1B,GAAO;;AMvb7B,uBAAuC;EAAE,OAAO,ENsB1B,GAAO;;AMrB7B,0BAA0C;EAAE,OAAO,EN2T1B,GAAO;;AM1ThC,sBAAsC;EAAE,OAAO,ENsM1B,GAAO;;AMrM5B,qBAAqC;EAAE,OAAO,EN6D1B,GAAO;;AM5D3B,yBAAyC;EAAE,OAAO,ENob1B,GAAO;;AMnb/B,yBAAyC;EAAE,OAAO,ENkB1B,GAAO;;AMjB/B,cAA8B;EAAE,OAAO,EN/C1B,GAAO;;AMgDpB,qBAAqC;EAAE,OAAO,EN3D1B,GAAO;;AM4D3B,sBAAsC;EAAE,OAAO,EN3D1B,GAAO;;AM4D5B,mBAAmC;EAAE,OAAO,EN3D1B,GAAO;;AM4DzB,qBAAqC;EAAE,OAAO,EN/D1B,GAAO;;AMgE3B;gBACgC;EAAE,OAAO,ENqV1B,GAAO;;AMpVtB,iBAAiC;EAAE,OAAO,ENuF1B,GAAO;;AMtFvB,mBAAmC;EAAE,OAAO,EN4C1B,GAAO;;AM3CzB,eAA+B;EAAE,OAAO,ENmS1B,GAAO;;AMlSrB,gBAAgC;EAAE,OAAO,ENsP1B,GAAO;;AMrPtB,mBAAmC;EAAE,OAAO,EN9D1B,GAAO;;AM+DzB,6BAA6C;EAAE,OAAO,ENgF1B,GAAO;;AM/EnC,eAA+B;EAAE,OAAO,EN+I1B,GAAO;;AM9IrB,eAA+B;EAAE,OAAO,ENoM1B,GAAO;;AMnMrB,eAA+B;EAAE,OAAO,ENmH1B,GAAO;;AMlHrB,cAA8B;EAAE,OAAO,ENiF1B,GAAO;;AMhFpB,oBAAoC;EAAE,OAAO,ENiF1B,GAAO;;AMhF1B;+BAC+C;EAAE,OAAO,EN0E1B,GAAO;;AMzErC,gBAAgC;EAAE,OAAO,ENmR1B,GAAO;;AMlRtB,mBAAmC;EAAE,OAAO,EN/B1B,GAAO;;AMgCzB,iBAAiC;EAAE,OAAO,ENoS1B,GAAO;;AMnSvB,kBAAkC;EAAE,OAAO,ENwB1B,GAAO;;AMvBxB,iBAAiC;EAAE,OAAO,ENqN1B,GAAO;;AMpNvB,qBAAqC;EAAE,OAAO,ENE1B,GAAO;;AMD3B,uBAAuC;EAAE,OAAO,ENF1B,GAAO;;AMG7B,kBAAkC;EAAE,OAAO,EN2S1B,GAAO;;AM1SxB,wBAAwC;EAAE,OAAO,ENyU1B,GAAO;;AMxU9B,iBAAiC;EAAE,OAAO,EN8G1B,GAAO;;AM7GvB,sBAAsC;EAAE,OAAO,EN+G1B,GAAO;;AM9G5B,mBAAmC;EAAE,OAAO,ENnF1B,GAAO;;AMoFzB,mBAAmC;EAAE,OAAO,ENrF1B,GAAO;;AMsFzB;oBACoC;EAAE,OAAO,EN/E1B,GAAO;;AMgF1B,yBAAyC;EAAE,OAAO,ENua1B,GAAO;;AMta/B,0BAA0C;EAAE,OAAO,ENmE1B,GAAO;;AMlEhC,uBAAuC;EAAE,OAAO,EN5C1B,GAAO;;AM6C7B,cAA8B;EAAE,OAAO,ENqK1B,GAAO;;AMpKpB;eAC+B;EAAE,OAAO,ENK1B,GAAO;;AMJrB,mBAAmC;EAAE,OAAO,ENQ1B,GAAO;;AMPzB,sBAAsC;EAAE,OAAO,ENmY1B,GAAO;;AMlY5B,wBAAwC;EAAE,OAAO,ENiY1B,GAAO;;AMhY9B,oBAAoC;EAAE,OAAO,EN2V1B,GAAO;;AM1V1B,kBAAkC;EAAE,OAAO,ENyI1B,GAAO;;AMxIxB,mBAAmC;EAAE,OAAO,ENyT1B,GAAO;;AMxTzB,0BAA0C;EAAE,OAAO,ENiL1B,GAAO;;AMhLhC,qBAAqC;EAAE,OAAO,EN0X1B,GAAO;;AMzX3B,wBAAwC;EAAE,OAAO,EN8C1B,GAAO;;AM7C9B,kBAAkC;EAAE,OAAO,ENoT1B,GAAO;;AMnTxB,iBAAiC;EAAE,OAAO,EN8Y1B,GAAO;;AM7YvB,wBAAwC;EAAE,OAAO,EN6G1B,GAAO;;AM5G9B,iBAAiC;EAAE,OAAO,EN8Z1B,GAAO;;AM7ZvB,kBAAkC;EAAE,OAAO,EN+J1B,GAAO;;AM9JxB,gBAAgC;EAAE,OAAO,ENsO1B,GAAO;;AMrOtB,mBAAmC;EAAE,OAAO,EN2U1B,GAAO;;AM1UzB,qBAAqC;EAAE,OAAO,EN/E1B,GAAO;;AMgF3B,uBAAuC;EAAE,OAAO,ENoO1B,GAAO;;AMnO7B,kBAAkC;EAAE,OAAO,EN8Y1B,GAAO;;AM7YxB;mBACmC;EAAE,OAAO,ENuC1B,GAAO;;AMtCzB,iBAAiC;EAAE,OAAO,ENiG1B,GAAO;;AMhGvB,iBAAiC;EAAE,OAAO,ENiZ1B,GAAO;;AMhZvB,sBAAsC;EAAE,OAAO,ENR1B,GAAO;;AMS5B,cAA8B;EAAE,OAAO,EN4Q1B,GAAO;;AM3QpB,gBAAgC;EAAE,OAAO,ENgH1B,GAAO;;AM/GtB,mBAAmC;EAAE,OAAO,ENnF1B,GAAO;;AMoFzB,eAA+B;EAAE,OAAO,ENzG1B,GAAO;;AM0GrB,sBAAsC;EAAE,OAAO,ENzD1B,GAAO;;AM0D5B,uBAAuC;EAAE,OAAO,EN0G1B,GAAO;;AMzG7B,sBAAsC;EAAE,OAAO,ENwG1B,GAAO;;AMvG5B,oBAAoC;EAAE,OAAO,ENyG1B,GAAO;;AMxG1B,sBAAsC;EAAE,OAAO,ENqG1B,GAAO;;AMpG5B,4BAA4C;EAAE,OAAO,EN5I1B,GAAO;;AM6IlC,6BAA6C;EAAE,OAAO,ENxI1B,GAAO;;AMyInC,0BAA0C;EAAE,OAAO,ENxI1B,GAAO;;AMyIhC,4BAA4C;EAAE,OAAO,ENhJ1B,GAAO;;AMiJlC,gBAAgC;EAAE,OAAO,ENsF1B,GAAO;;AMrFtB,iBAAiC;EAAE,OAAO,ENia1B,GAAO;;AMhavB,gBAAgC;EAAE,OAAO,ENiV1B,GAAO;;AMhVtB,iBAAiC;EAAE,OAAO,ENgD1B,GAAO;;AM/CvB,oBAAoC;EAAE,OAAO,ENvG1B,GAAO;;AMwG1B,qBAAqC;EAAE,OAAO,ENzI1B,GAAO;;AM0I3B;gBACgC;EAAE,OAAO,ENqY1B,GAAO;;AMpYtB;eAC+B;EAAE,OAAO,ENuI1B,GAAO;;AMtIrB,gBAAgC;EAAE,OAAO,ENpD1B,GAAO;;AMqDtB,gBAAgC;EAAE,OAAO,EN+C1B,GAAO;;AM9CtB;mBACmC;EAAE,OAAO,ENwP1B,GAAO;;AMvPzB;kBACkC;EAAE,OAAO,ENkC1B,GAAO;;AMjCxB,oBAAoC;EAAE,OAAO,ENsL1B,GAAO;;AMrL1B;mBACmC;EAAE,OAAO,EN0C1B,GAAO;;AMzCzB,iBAAiC;EAAE,OAAO,ENiS1B,GAAO;;AMhSvB;;eAE+B;EAAE,OAAO,EN9I1B,GAAO;;AM+IrB,kBAAkC;EAAE,OAAO,ENgI1B,GAAO;;AM/HxB,kBAAkC;EAAE,OAAO,EN8H1B,GAAO;;AM7HxB,wBAAwC;EAAE,OAAO,EN4S1B,GAAO;;AM3S9B,oBAAoC;EAAE,OAAO,ENoW1B,GAAO;;AMnW1B,gBAAgC;EAAE,OAAO,ENmT1B,GAAO;;AMlTtB,gBAAgC;EAAE,OAAO,ENkI1B,GAAO;;AMjItB,gBAAgC;EAAE,OAAO,ENuV1B,GAAO;;AMtVtB,oBAAoC;EAAE,OAAO,ENwL1B,GAAO;;AMvL1B,2BAA2C;EAAE,OAAO,ENyL1B,GAAO;;AMxLjC,6BAA6C;EAAE,OAAO,ENyD1B,GAAO;;AMxDnC,sBAAsC;EAAE,OAAO,ENuD1B,GAAO;;AMtD5B,gBAAgC;EAAE,OAAO,ENsJ1B,GAAO;;AMrJtB,qBAAqC;EAAE,OAAO,ENtH1B,GAAO;;AMuH3B,mBAAmC;EAAE,OAAO,ENhH1B,GAAO;;AMiHzB,qBAAqC;EAAE,OAAO,ENvH1B,GAAO;;AMwH3B,sBAAsC;EAAE,OAAO,ENvH1B,GAAO;;AMwH5B,kBAAkC;EAAE,OAAO,ENvE1B,GAAO;;AMwExB;eAC+B;EAAE,OAAO,EN2P1B,GAAO;;AM1PrB;oBACoC;EAAE,OAAO,EN+P1B,GAAO;;AM9P1B;mBACmC;EAAE,OAAO,EN4P1B,GAAO;;AM3PzB,mBAAmC;EAAE,OAAO,ENxC1B,GAAO;;AMyCzB,mBAAmC;EAAE,OAAO,ENkG1B,GAAO;;AMjGzB;eAC+B;EAAE,OAAO,EN8U1B,GAAO;;AM7UrB;gBACgC;EAAE,OAAO,ENqB1B,GAAO;;AMpBtB;qBACqC;EAAE,OAAO,EN2R1B,GAAO;;AM1R3B,oBAAoC;EAAE,OAAO,ENpF1B,GAAO;;AMqF1B,qBAAqC;EAAE,OAAO,ENnF1B,GAAO;;AMoF3B;eAC+B;EAAE,OAAO,ENjK1B,GAAO;;AMkKrB,kBAAkC;EAAE,OAAO,ENkO1B,GAAO;;AMjOxB,mBAAmC;EAAE,OAAO,ENkU1B,GAAO;;AMjUzB;oBACoC;EAAE,OAAO,EN1G1B,GAAO;;AM2G1B,sBAAsC;EAAE,OAAO,ENgF1B,GAAO;;AM/E5B,mBAAmC;EAAE,OAAO,ENnD1B,GAAO;;AMoDzB,yBAAyC;EAAE,OAAO,ENzG1B,GAAO;;AM0G/B,uBAAuC;EAAE,OAAO,ENzG1B,GAAO;;AM0G7B,kBAAkC;EAAE,OAAO,ENsU1B,GAAO;;AMrUxB,sBAAsC;EAAE,OAAO,EN+P1B,GAAO;;AM9P5B,mBAAmC;EAAE,OAAO,ENsQ1B,GAAO;;AMrQzB,iBAAiC;EAAE,OAAO,ENvL1B,GAAO;;AMwLvB,iBAAiC;EAAE,OAAO,ENzG1B,GAAO;;AM0GvB,kBAAkC;EAAE,OAAO,ENtF1B,GAAO;;AMuFxB,sBAAsC;EAAE,OAAO,EN3B1B,GAAO;;AM4B5B,qBAAqC;EAAE,OAAO,ENxK1B,GAAO;;AMyK3B,qBAAqC;EAAE,OAAO,ENkC1B,GAAO;;AMjC3B,oBAAoC;EAAE,OAAO,EN3O1B,GAAO;;AM4O1B,iBAAiC;EAAE,OAAO,ENiG1B,GAAO;;AMhGvB,sBAAsC;EAAE,OAAO,EN/C1B,GAAO;;AMgD5B,eAA+B;EAAE,OAAO,ENpM1B,GAAO;;AMqMrB,mBAAmC;EAAE,OAAO,ENe1B,GAAO;;AMdzB,sBAAsC;EAAE,OAAO,ENgJ1B,GAAO;;AM/I5B,4BAA4C;EAAE,OAAO,EN5O1B,GAAO;;AM6OlC,6BAA6C;EAAE,OAAO,EN5O1B,GAAO;;AM6OnC,0BAA0C;EAAE,OAAO,EN5O1B,GAAO;;AM6OhC,4BAA4C;EAAE,OAAO,ENhP1B,GAAO;;AMiPlC,qBAAqC;EAAE,OAAO,EN5O1B,GAAO;;AM6O3B,sBAAsC;EAAE,OAAO,EN5O1B,GAAO;;AM6O5B,mBAAmC;EAAE,OAAO,EN5O1B,GAAO;;AM6OzB,qBAAqC;EAAE,OAAO,ENhP1B,GAAO;;AMiP3B,kBAAkC;EAAE,OAAO,ENlG1B,GAAO;;AMmGxB,iBAAiC;EAAE,OAAO,ENuC1B,GAAO;;AMtCvB,iBAAiC;EAAE,OAAO,ENoP1B,GAAO;;AMnPvB;iBACiC;EAAE,OAAO,ENyF1B,GAAO;;AMxFvB,mBAAmC;EAAE,OAAO,EN9I1B,GAAO;;AM+IzB,qBAAqC;EAAE,OAAO,EN0I1B,GAAO;;AMzI3B,sBAAsC;EAAE,OAAO,EN0I1B,GAAO;;AMzI5B,kBAAkC;EAAE,OAAO,ENgN1B,GAAO;;AM/MxB,iBAAiC;EAAE,OAAO,ENnJ1B,GAAO;;AMoJvB;gBACgC;EAAE,OAAO,ENkJ1B,GAAO;;AMjJtB,qBAAqC;EAAE,OAAO,ENnB1B,GAAO;;AMoB3B,mBAAmC;EAAE,OAAO,ENxC1B,GAAO;;AMyCzB,wBAAwC;EAAE,OAAO,ENvC1B,GAAO;;AMwC9B,kBAAkC;EAAE,OAAO,EN0L1B,GAAO;;AMzLxB,kBAAkC;EAAE,OAAO,ENpC1B,GAAO;;AMqCxB,gBAAgC;EAAE,OAAO,ENoE1B,GAAO;;AMnEtB,kBAAkC;EAAE,OAAO,ENpC1B,GAAO;;AMqCxB,qBAAqC;EAAE,OAAO,ENkB1B,GAAO;;AMjB3B,iBAAiC;EAAE,OAAO,ENrD1B,GAAO;;AMsDvB,yBAAyC;EAAE,OAAO,ENvD1B,GAAO;;AMwD/B,mBAAmC;EAAE,OAAO,ENuO1B,GAAO;;AMtOzB,eAA+B;EAAE,OAAO,ENtJ1B,GAAO;;AMuJrB;oBACoC;EAAE,OAAO,ENqI1B,GAAO;;AMpI1B;;sBAEsC;EAAE,OAAO,ENuM1B,GAAO;;AMtM5B,yBAAyC;EAAE,OAAO,ENkC1B,GAAO;;AMjC/B,eAA+B;EAAE,OAAO,EN5I1B,GAAO;;AM6IrB,oBAAoC;EAAE,OAAO,EN7J1B,GAAO;;AM8J1B;uBACuC;EAAE,OAAO,EN1L1B,GAAO;;AM2L7B,mBAAmC;EAAE,OAAO,EN4G1B,GAAO;;AM3GzB,eAA+B;EAAE,OAAO,ENT1B,GAAO;;AMUrB,sBAAsC;EAAE,OAAO,ENhH1B,GAAO;;AMiH5B,sBAAsC;EAAE,OAAO,EN8M1B,GAAO;;AM7M5B,oBAAoC;EAAE,OAAO,ENyM1B,GAAO;;AMxM1B,iBAAiC;EAAE,OAAO,ENvH1B,GAAO;;AMwHvB,uBAAuC;EAAE,OAAO,ENmG1B,GAAO;;AMlG7B,qBAAqC;EAAE,OAAO,EN8C1B,GAAO;;AM7C3B,2BAA2C;EAAE,OAAO,EN8C1B,GAAO;;AM7CjC,iBAAiC;EAAE,OAAO,ENgJ1B,GAAO;;AM/IvB,qBAAqC;EAAE,OAAO,EN5N1B,GAAO;;AM6N3B,4BAA4C;EAAE,OAAO,ENjF1B,GAAO;;AMkFlC,iBAAiC;EAAE,OAAO,ENoH1B,GAAO;;AMnHvB,iBAAiC;EAAE,OAAO,ENkC1B,GAAO;;AMjCvB,8BAA8C;EAAE,OAAO,ENlM1B,GAAO;;AMmMpC,+BAA+C;EAAE,OAAO,ENlM1B,GAAO;;AMmMrC,4BAA4C;EAAE,OAAO,ENlM1B,GAAO;;AMmMlC,8BAA8C;EAAE,OAAO,ENtM1B,GAAO;;AMuMpC,gBAAgC;EAAE,OAAO,EN/B1B,GAAO;;AMgCtB,eAA+B;EAAE,OAAO,ENjK1B,GAAO;;AMkKrB,iBAAiC;EAAE,OAAO,EN9S1B,GAAO;;AM+SvB,qBAAqC;EAAE,OAAO,ENmP1B,GAAO;;AMlP3B,mBAAmC;EAAE,OAAO,EN9O1B,GAAO;;AM+OzB,qBAAqC;EAAE,OAAO,EN/I1B,GAAO;;AMgJ3B,qBAAqC;EAAE,OAAO,EN/I1B,GAAO;;AMgJ3B,qBAAqC;EAAE,OAAO,EN4G1B,GAAO;;AM3G3B,sBAAsC;EAAE,OAAO,ENsE1B,GAAO;;AMrE5B,iBAAiC;EAAE,OAAO,EN2M1B,GAAO;;AM1MvB,uBAAuC;EAAE,OAAO,EN6B1B,GAAO;;AM5B7B,yBAAyC;EAAE,OAAO,EN6B1B,GAAO;;AM5B/B,mBAAmC;EAAE,OAAO,ENhB1B,GAAO;;AMiBzB,qBAAqC;EAAE,OAAO,ENlB1B,GAAO;;AMmB3B,uBAAuC;EAAE,OAAO,ENvN1B,GAAO;;AMwN7B,wBAAwC;EAAE,OAAO,ENiD1B,GAAO;;AMhD9B,+BAA+C;EAAE,OAAO,EN3I1B,GAAO;;AM4IrC,uBAAuC;EAAE,OAAO,ENkH1B,GAAO;;AMjH7B,kBAAkC;EAAE,OAAO,EN1L1B,GAAO;;AM2LxB;8BAC8C;EAAE,OAAO,ENjP1B,GAAO;;AMkPpC;4BAC4C;EAAE,OAAO,ENhP1B,GAAO;;AMiPlC;+BAC+C;EAAE,OAAO,ENnP1B,GAAO;;AMoPrC;cAC8B;EAAE,OAAO,EN7J1B,GAAO;;AM8JpB,cAA8B;EAAE,OAAO,EN/F1B,GAAO;;AMgGpB;cAC8B;EAAE,OAAO,EN4N1B,GAAO;;AM3NpB;cAC8B;EAAE,OAAO,ENvD1B,GAAO;;AMwDpB;;;cAG8B;EAAE,OAAO,ENrD1B,GAAO;;AMsDpB;;cAE8B;EAAE,OAAO,EN8E1B,GAAO;;AM7EpB;cAC8B;EAAE,OAAO,ENtD1B,GAAO;;AMuDpB;cAC8B;EAAE,OAAO,ENzR1B,GAAO;;AM0RpB,eAA+B;EAAE,OAAO,ENzJ1B,GAAO;;AM0JrB,oBAAoC;EAAE,OAAO,EN7I1B,GAAO;;AM8I1B,yBAAyC;EAAE,OAAO,EN2G1B,GAAO;;AM1G/B,0BAA0C;EAAE,OAAO,EN2G1B,GAAO;;AM1GhC,0BAA0C;EAAE,OAAO,EN2G1B,GAAO;;AM1GhC,2BAA2C;EAAE,OAAO,EN2G1B,GAAO;;AM1GjC,2BAA2C;EAAE,OAAO,EN8G1B,GAAO;;AM7GjC,4BAA4C;EAAE,OAAO,EN8G1B,GAAO;;AM7GlC,oBAAoC;EAAE,OAAO,ENgK1B,GAAO;;AM/J1B,sBAAsC;EAAE,OAAO,EN4J1B,GAAO;;AM3J5B,yBAAyC;EAAE,OAAO,ENwO1B,GAAO;;AMvO/B,kBAAkC;EAAE,OAAO,ENqO1B,GAAO;;AMpOxB,eAA+B;EAAE,OAAO,EN+N1B,GAAO;;AM9NrB,sBAAsC;EAAE,OAAO,EN+N1B,GAAO;;AM9N5B,uBAAuC;EAAE,OAAO,ENmO1B,GAAO;;AMlO7B,kBAAkC;EAAE,OAAO,ENxM1B,GAAO;;AMyMxB,yBAAyC;EAAE,OAAO,EN+G1B,GAAO;;AM9G/B,oBAAoC;EAAE,OAAO,ENnF1B,GAAO;;AMoF1B,iBAAiC;EAAE,OAAO,EN/I1B,GAAO;;AMgJvB,cAA8B;EAAE,OAAO,ENhX1B,GAAO;;AMiXpB,oBAAoC;EAAE,OAAO,ENxT1B,GAAO;;AMyT1B,2BAA2C;EAAE,OAAO,ENxT1B,GAAO;;AMyTjC,iBAAiC;EAAE,OAAO,ENyK1B,GAAO;;AMxKvB,wBAAwC;EAAE,OAAO,ENyK1B,GAAO;;AMxK9B,0BAA0C;EAAE,OAAO,ENtD1B,GAAO;;AMuDhC,wBAAwC;EAAE,OAAO,ENpD1B,GAAO;;AMqD9B,0BAA0C;EAAE,OAAO,ENvD1B,GAAO;;AMwDhC,2BAA2C;EAAE,OAAO,ENvD1B,GAAO;;AMwDjC,gBAAgC;EAAE,OAAO,ENxW1B,GAAO;;AMyWtB,kBAAkC;EAAE,OAAO,EN0M1B,GAAO;;AMzMxB,kBAAkC;EAAE,OAAO,ENpX1B,GAAO;;AMqXxB,gBAAgC;EAAE,OAAO,ENpE1B,GAAO;;AMqEtB,mBAAmC;EAAE,OAAO,EN1N1B,GAAO;;AM2NzB,gBAAgC;EAAE,OAAO,ENqE1B,GAAO;;AMpEtB,qBAAqC;EAAE,OAAO,ENtJ1B,GAAO;;AMuJ3B,iBAAiC;EAAE,OAAO,ENuJ1B,GAAO;;AMtJvB,iBAAiC;EAAE,OAAO,EN/L1B,GAAO;;AMgMvB,eAA+B;EAAE,OAAO,EN1D1B,GAAO;;AM2DrB;mBACmC;EAAE,OAAO,ENnI1B,GAAO;;AMoIzB,gBAAgC;EAAE,OAAO,EN2G1B,GAAO;;AM1GtB,iBAAiC;EAAE,OAAO,ENxC1B,GAAO;;AMyCvB,kBAAkC;EAAE,OAAO,ENrX1B,GAAO;;AMsXxB,cAA8B;EAAE,OAAO,ENpU1B,GAAO;;AMqUpB,aAA6B;EAAE,OAAO,ENgL1B,GAAO;;AM/KnB,gBAAgC;EAAE,OAAO,ENqL1B,GAAO;;AMpLtB,iBAAiC;EAAE,OAAO,ENa1B,GAAO;;AMZvB,oBAAoC;EAAE,OAAO,ENrC1B,GAAO;;AMsC1B,yBAAyC;EAAE,OAAO,EN8E1B,GAAO;;AM7E/B,+BAA+C;EAAE,OAAO,ENtX1B,GAAO;;AMuXrC,8BAA8C;EAAE,OAAO,ENxX1B,GAAO;;AMyXpC;8BAC8C;EAAE,OAAO,EN3T1B,GAAO;;AM4TpC,uBAAuC;EAAE,OAAO,ENjP1B,GAAO;;AMkP7B,qBAAqC;EAAE,OAAO,EN+K1B,GAAO;;AM9K3B,uBAAuC;EAAE,OAAO,ENmK1B,GAAO;;AMlK7B;cAC8B;EAAE,OAAO,ENoI1B,GAAO;;AMnIpB,wBAAwC;EAAE,OAAO,ENjB1B,GAAO;;AMkB9B,wBAAwC;EAAE,OAAO,EN6D1B,GAAO;;AM5D9B,gBAAgC;EAAE,OAAO,EN2C1B,GAAO;;AM1CtB,0BAA0C;EAAE,OAAO,EN7O1B,GAAO;;AM8OhC,oBAAoC;EAAE,OAAO,EN2K1B,GAAO;;AM1K1B,iBAAiC;EAAE,OAAO,ENvD1B,GAAO;;AMwDvB;;qBAEqC;EAAE,OAAO,ENsI1B,GAAO;;AMrI3B;yBACyC;EAAE,OAAO,ENjK1B,GAAO;;AMkK/B,gBAAgC;EAAE,OAAO,ENwK1B,GAAO;;AMvKtB,iBAAiC;EAAE,OAAO,ENvK1B,GAAO;;AMwKvB,iBAAiC;EAAE,OAAO,ENhB1B,GAAO;;AMiBvB,wBAAwC;EAAE,OAAO,ENhB1B,GAAO;;AMiB9B,6BAA6C;EAAE,OAAO,ENsE1B,GAAO;;AMrEnC,sBAAsC;EAAE,OAAO,ENoE1B,GAAO;;AMnE5B,oBAAoC;EAAE,OAAO,EN7Q1B,GAAO;;AM8Q1B,eAA+B;EAAE,OAAO,EN1Q1B,GAAO;;AM2QrB,qBAAqC;EAAE,OAAO,ENjD1B,GAAO;;AMkD3B,yBAAyC;EAAE,OAAO,ENjD1B,GAAO;;AMkD/B,iBAAiC;EAAE,OAAO,ENvQ1B,GAAO;;AMwQvB,iBAAiC;EAAE,OAAO,EN9I1B,GAAO;;AM+IvB,mBAAmC;EAAE,OAAO,ENzI1B,GAAO;;AM0IzB,cAA8B;EAAE,OAAO,EN9O1B,GAAO;;AM+OpB,mBAAmC;EAAE,OAAO,EN3W1B,GAAO;;AM4WzB,gBAAgC;EAAE,OAAO,EN9T1B,GAAO;;AM+TtB,cAA8B;EAAE,OAAO,ENnE1B,GAAO;;AMoEpB,gBAAgC;EAAE,OAAO,ENoC1B,GAAO;;AMnCtB,eAA+B;EAAE,OAAO,ENjS1B,GAAO;;AMkSrB,gBAAgC;EAAE,OAAO,ENjS1B,GAAO;;AMkStB,kBAAkC;EAAE,OAAO,ENtY1B,GAAO;;AMuYxB,yBAAyC;EAAE,OAAO,ENtY1B,GAAO;;AMuY/B,gBAAgC;EAAE,OAAO,EN2C1B,GAAO;;AM1CtB,uBAAuC;EAAE,OAAO,EN2C1B,GAAO;;AM1C7B,kBAAkC;EAAE,OAAO,ENvC1B,GAAO;;AMwCxB;cAC8B;EAAE,OAAO,EN3W1B,GAAO;;AM4WpB;eAC+B;EAAE,OAAO,EN2D1B,GAAO;;AM1DrB,eAA+B;EAAE,OAAO,ENuF1B,GAAO;;AMtFrB,kBAAkC;EAAE,OAAO,ENwB1B,GAAO;;AMvBxB,qBAAqC;EAAE,OAAO,ENpS1B,GAAO;;AMqS3B,qBAAqC;EAAE,OAAO,ENkB1B,GAAO;;AMjB3B,mBAAmC;EAAE,OAAO,EN1S1B,GAAO;;AM2SzB,qBAAqC;EAAE,OAAO,ENxP1B,GAAO;;AMyP3B,sBAAsC;EAAE,OAAO,ENjP1B,GAAO;;AMkP5B,uBAAuC;EAAE,OAAO,EN9P1B,GAAO;;AM+P7B,4BAA4C;EAAE,OAAO,ENxP1B,GAAO;;AMyPlC;;uBAEuC;EAAE,OAAO,ENjQ1B,GAAO;;AMkQ7B;yBACyC;EAAE,OAAO,ENvQ1B,GAAO;;AMwQ/B;uBACuC;EAAE,OAAO,ENxQ1B,GAAO;;AMyQ7B;uBACuC;EAAE,OAAO,EN7P1B,GAAO;;AM8P7B,sBAAsC;EAAE,OAAO,EN1Q1B,GAAO;;AM2Q5B,eAA+B;EAAE,OAAO,ENsG1B,GAAO;;AMrGrB,kBAAkC;EAAE,OAAO,ENlV1B,GAAO;;AMmVxB,mBAAmC;EAAE,OAAO,ENnL1B,GAAO;;AMoLzB;;;;oBAIoC;EAAE,OAAO,ENxK1B,GAAO;;AMyK1B,yBAAyC;EAAE,OAAO,ENpW1B,GAAO;;AMqW/B;gBACgC;EAAE,OAAO,EN1E1B,GAAO;;AM2EtB;iBACiC;EAAE,OAAO,ENpT1B,GAAO;;AMqTvB,qBAAqC;EAAE,OAAO,EN1O1B,GAAO;;AM2O3B,cAA8B;EAAE,OAAO,EN5O1B,GAAO;;AM6OpB,sBAAsC;EAAE,OAAO,EN7N1B,GAAO;;AM8N5B,wBAAwC;EAAE,OAAO,ENwB1B,GAAO;;AMvB9B,aAA6B;EAAE,OAAO,ENzF1B,GAAO;;AM0FnB;iBACiC;EAAE,OAAO,EN2F1B,GAAO;;AM1FvB;sBACsC;EAAE,OAAO,EN9H1B,GAAO;;AM+H5B;wBACwC;EAAE,OAAO,EN/H1B,GAAO;;AMgI9B,kBAAkC;EAAE,OAAO,EN3N1B,GAAO;;AM4NxB;sBACsC;EAAE,OAAO,ENrX1B,GAAO;;AMsX5B,iBAAiC;EAAE,OAAO,ENnO1B,GAAO;;AMoOvB,oBAAoC;EAAE,OAAO,ENlI1B,GAAO;;AMmI1B,kBAAkC;EAAE,OAAO,EN1C1B,GAAO;;AM2CxB,oBAAoC;EAAE,OAAO,EN7D1B,GAAO;;AM8D1B,2BAA2C;EAAE,OAAO,EN7D1B,GAAO;;AM8DjC,eAA+B;EAAE,OAAO,ENpb1B,GAAO;;AMqbrB;mBACmC;EAAE,OAAO,ENzQ1B,GAAO;;AM0QzB,cAA8B;EAAE,OAAO,ENsC1B,GAAO;;AMrCpB,qBAAqC;EAAE,OAAO,EN/b1B,GAAO;;AMgc3B,eAA+B;EAAE,OAAO,ENrH1B,GAAO;;AMsHrB,qBAAqC;EAAE,OAAO,ENlD1B,GAAO;;AMmD3B,iBAAiC;EAAE,OAAO,ENsC1B,GAAO;;AMrCvB,eAA+B;EAAE,OAAO,ENiF1B,GAAO;;AMhFrB,sBAAsC;EAAE,OAAO,ENvJ1B,GAAO;;AMwJ5B,eAA+B;EAAE,OAAO,ENuE1B,GAAO;;AMtErB,qBAAqC;EAAE,OAAO,ENjb1B,GAAO;;AMkb3B,iBAAiC;EAAE,OAAO,EN9I1B,GAAO;;AM+IvB,wBAAwC;EAAE,OAAO,ENhQ1B,GAAO;;AMiQ9B,kBAAkC;EAAE,OAAO,EN9Z1B,GAAO;;AM+ZxB,wBAAwC;EAAE,OAAO,ENla1B,GAAO;;AMma9B,sBAAsC;EAAE,OAAO,ENpa1B,GAAO;;AMqa5B,kBAAkC;EAAE,OAAO,ENta1B,GAAO;;AMuaxB,oBAAoC;EAAE,OAAO,ENpa1B,GAAO;;AMqa1B,oBAAoC;EAAE,OAAO,ENpa1B,GAAO;;AMqa1B,qBAAqC;EAAE,OAAO,ENld1B,GAAO;;AMmd3B,uBAAuC;EAAE,OAAO,ENld1B,GAAO;;AMmd7B,gBAAgC;EAAE,OAAO,ENY1B,GAAO;;AMXtB,oBAAoC;EAAE,OAAO,EN3X1B,GAAO;;AM4X1B,aAA6B;EAAE,OAAO,ENre1B,GAAO;;AMsenB,qBAAqC;EAAE,OAAO,ENjV1B,GAAO;;AMkV3B,sBAAsC;EAAE,OAAO,ENpK1B,GAAO;;AMqK5B,wBAAwC;EAAE,OAAO,ENrd1B,GAAO;;AMsd9B,qBAAqC;EAAE,OAAO,EN3f1B,GAAO;;AM4f3B,oBAAoC;EAAE,OAAO,ENvJ1B,GAAO;;AMwJ1B,qBAAqC;EAAE,OAAO,EN5N1B,GAAO;;AM6N3B,iBAAiC;EAAE,OAAO,EN1O1B,GAAO;;AM2OvB,wBAAwC;EAAE,OAAO,EN1O1B,GAAO;;AM2O9B,qBAAqC;EAAE,OAAO,ENN1B,GAAO;;AMO3B,oBAAoC;EAAE,OAAO,ENN1B,GAAO;;AMO1B,kBAAkC;EAAE,OAAO,EN/d1B,GAAO;;AMgexB,cAA8B;EAAE,OAAO,EN7c1B,GAAO;;AM8cpB,kBAAkC;EAAE,OAAO,EN1P1B,GAAO;;AM2PxB,oBAAoC;EAAE,OAAO,ENhhB1B,GAAO;;AMihB1B,aAA6B;EAAE,OAAO,EN7b1B,GAAO;;AM8bnB;;cAE8B;EAAE,OAAO,ENxQ1B,GAAO;;AMyQpB,mBAAmC;EAAE,OAAO,EN7M1B,GAAO;;AM8MzB,qBAAqC;EAAE,OAAO,ENpd1B,GAAO;;AMqd3B,yBAAyC;EAAE,OAAO,ENnZ1B,GAAO;;AMoZ/B,mBAAmC;EAAE,OAAO,ENxY1B,GAAO;;AMyYzB,mBAAmC;EAAE,OAAO,EN1T1B,GAAO;;AM2TzB,kBAAkC;EAAE,OAAO,ENxP1B,GAAO;;AMyPxB,iBAAiC;EAAE,OAAO,ENrH1B,GAAO;;AMsHvB,uBAAuC;EAAE,OAAO,ENzG1B,GAAO;;AM0G7B,sBAAsC;EAAE,OAAO,ENrG1B,GAAO;;AMsG5B,mBAAmC;EAAE,OAAO,ENpG1B,GAAO;;AMqGzB,oBAAoC;EAAE,OAAO,EN5c1B,GAAO;;AM6c1B,0BAA0C;EAAE,OAAO,EN9c1B,GAAO;;AM+chC,kBAAkC;EAAE,OAAO,EN3Y1B,GAAO;;AM4YxB,eAA+B;EAAE,OAAO,ENhH1B,GAAO;;AMiHrB,sBAAsC;EAAE,OAAO,ENI1B,GAAO;;AMH5B,qBAAqC;EAAE,OAAO,EN5M1B,GAAO;;AM6M3B,sBAAsC;EAAE,OAAO,ENpE1B,GAAO;;AMqE5B,oBAAoC;EAAE,OAAO,ENhS1B,GAAO;;AMiS1B,gBAAgC;EAAE,OAAO,ENG1B,GAAO;;AMFtB,eAA+B;EAAE,OAAO,ENtO1B,GAAO;;AMuOrB,kBAAkC;EAAE,OAAO,EN7N1B,GAAO;;AM8NxB,sBAAsC;EAAE,OAAO,ENhC1B,GAAO;;AMiC5B,0BAA0C;EAAE,OAAO,ENhC1B,GAAO;;AMiChC,uBAAuC;EAAE,OAAO,END1B,GAAO;;AME7B,sBAAsC;EAAE,OAAO,EN1O1B,GAAO;;AM2O5B,qBAAqC;EAAE,OAAO,ENF1B,GAAO;;AMG3B,sBAAsC;EAAE,OAAO,EN3O1B,GAAO;;AM4O5B,wBAAwC;EAAE,OAAO,EN1O1B,GAAO;;AM2O9B,wBAAwC;EAAE,OAAO,EN5O1B,GAAO;;AM6O9B,iBAAiC;EAAE,OAAO,ENvN1B,GAAO;;AMwNvB,4BAA4C;EAAE,OAAO,EN9X1B,GAAO;;AM+XlC,sBAAsC;EAAE,OAAO,ENhM1B,GAAO;;AMiM5B,mBAAmC;EAAE,OAAO,ENI1B,GAAO;;AMHzB,iBAAiC;EAAE,OAAO,EN7I1B,GAAO;;AM8IvB,oBAAoC;EAAE,OAAO,ENjB1B,GAAO;;AMkB1B,qBAAqC;EAAE,OAAO,ENhB1B,GAAO;;AMiB3B;cAC8B;EAAE,OAAO,ENphB1B,GAAO;;AMqhBpB,kBAAkC;EAAE,OAAO,ENd1B,GAAO;;AMexB,gBAAgC;EAAE,OAAO,ENnD1B,GAAO;;AMoDtB,iBAAiC;EAAE,OAAO,ENvF1B,GAAO;;AMwFvB,iBAAiC;EAAE,OAAO,ENrP1B,GAAO", +"sources": ["../scss/_path.scss","../scss/_core.scss","../scss/_larger.scss","../scss/_fixed-width.scss","../scss/_list.scss","../scss/_variables.scss","../scss/_bordered-pulled.scss","../scss/_animated.scss","../scss/_rotated-flipped.scss","../scss/_mixins.scss","../scss/_stacked.scss","../scss/_icons.scss"], +"names": [], +"file": "font-awesome.css" +} diff --git a/source/lib/font-awesome/css/font-awesome.min.css b/source/lib/font-awesome/css/font-awesome.min.css new file mode 100644 index 000000000..540440ce8 --- /dev/null +++ b/source/lib/font-awesome/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/source/lib/font-awesome/fonts/fontawesome-webfont.eot b/source/lib/font-awesome/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..e9f60ca953f93e35eab4108bd414bc02ddcf3928 GIT binary patch literal 165742 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 G*yFsbY~cLNXLP73aA74Mq6M9f^&YV`isWW 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

      5q!RY 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 SdSQM28?+M|D(2r_;{O0|uQ74} literal 0 HcmV?d00001 diff --git a/source/lib/font-awesome/fonts/fontawesome-webfont.woff2 b/source/lib/font-awesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4d13fc60404b91e398a37200c4a77b645cfd9586 GIT binary patch literal 77160 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 literal 0 HcmV?d00001 diff --git a/source/lib/jquery/index.js b/source/lib/jquery/index.js new file mode 100644 index 000000000..25714ed29 --- /dev/null +++ b/source/lib/jquery/index.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.3 | (c) 2005, 2014 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.3",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=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=hb(),z=hb(),A=hb(),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-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=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)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){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 gb(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(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(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 hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(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 mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(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 pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.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",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(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(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);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))&&(jb(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(".#.+[+~]")}),jb(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))&&jb(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 lb(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?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.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 gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.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},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.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=gb.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=gb.selectors={cacheLength:50,createPseudo:ib,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(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===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]||gb.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]&&gb.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(cb,db).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=gb.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()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(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:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(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:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).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:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sb(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 tb(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 ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(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 wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(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=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(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=[sb(tb(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 wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(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=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.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(cb,db),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(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(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}),gb}(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,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(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 kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(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 ob(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 pb(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=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(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(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$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=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.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=jb(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=jb(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(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(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(ob(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&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(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(ob(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&&eb.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(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}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 qb,rb={};function sb(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 tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n(" --> + ## 关于我 From 4bf7311c3fc20f79c18c90c5504773469e328327 Mon Sep 17 00:00:00 2001 From: Jerry Date: Sun, 27 May 2018 23:28:55 +0800 Subject: [PATCH 015/163] add zhangjiajie --- package-lock.json | 967 ++++++++++++++++---------------- source/_data/next.yml | 21 +- source/_posts/travel-zjj.md | 99 ++++ themes/next/languages/zh-CN.yml | 2 + 4 files changed, 599 insertions(+), 490 deletions(-) create mode 100644 source/_posts/travel-zjj.md diff --git a/package-lock.json b/package-lock.json index 0e10ae012..c0f781fd4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" + "jsonparse": "1.3.1", + "through": "2.3.8" } }, "a-sync-waterfall": { @@ -28,7 +28,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "~2.1.18", + "mime-types": "2.1.18", "negotiator": "0.6.1" } }, @@ -42,9 +42,9 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" } }, "amdefine": { @@ -62,7 +62,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.1" } }, "any-promise": { @@ -75,8 +75,8 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" + "micromatch": "2.3.11", + "normalize-path": "2.1.1" } }, "archy": { @@ -89,7 +89,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "~1.0.2" + "sprintf-js": "1.0.3" } }, "arr-diff": { @@ -97,7 +97,7 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "requires": { - "arr-flatten": "^1.0.1" + "arr-flatten": "1.1.0" } }, "arr-flatten": { @@ -120,8 +120,8 @@ "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", "requires": { - "colour": "~0.7.1", - "optjs": "~3.2.2" + "colour": "0.7.1", + "optjs": "3.2.2" } }, "async": { @@ -149,8 +149,8 @@ "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" + "follow-redirects": "1.4.1", + "is-buffer": "1.1.6" } }, "babel-code-frame": { @@ -158,9 +158,9 @@ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" }, "dependencies": { "ansi-styles": { @@ -173,11 +173,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "strip-ansi": { @@ -185,7 +185,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -200,10 +200,10 @@ "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", "requires": { - "babel-code-frame": "^6.22.0", - "babel-traverse": "^6.23.1", - "babel-types": "^6.23.0", - "babylon": "^6.17.0" + "babel-code-frame": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0" } }, "babel-messages": { @@ -211,7 +211,7 @@ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-runtime": { @@ -219,8 +219,8 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "core-js": "2.5.5", + "regenerator-runtime": "0.11.1" }, "dependencies": { "core-js": { @@ -235,15 +235,15 @@ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.10" }, "dependencies": { "debug": { @@ -261,10 +261,10 @@ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "1.0.3" } }, "babylon": { @@ -317,7 +317,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -326,9 +326,9 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" } }, "browser-fingerprint": { @@ -341,7 +341,7 @@ "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", "requires": { - "long": "~3" + "long": "3.2.0" } }, "bytes": { @@ -354,8 +354,8 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" + "no-case": "2.3.2", + "upper-case": "1.1.3" } }, "camelcase": { @@ -368,8 +368,8 @@ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" + "align-text": "0.1.4", + "lazy-cache": "1.0.4" } }, "chalk": { @@ -377,9 +377,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" } }, "charenc": { @@ -392,22 +392,22 @@ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash.assignin": "^4.0.9", - "lodash.bind": "^4.1.4", - "lodash.defaults": "^4.0.1", - "lodash.filter": "^4.4.0", - "lodash.flatten": "^4.2.0", - "lodash.foreach": "^4.3.0", - "lodash.map": "^4.4.0", - "lodash.merge": "^4.4.0", - "lodash.pick": "^4.2.1", - "lodash.reduce": "^4.4.0", - "lodash.reject": "^4.4.0", - "lodash.some": "^4.4.0" + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash.assignin": "4.2.0", + "lodash.bind": "4.2.1", + "lodash.defaults": "4.2.0", + "lodash.filter": "4.6.0", + "lodash.flatten": "4.4.0", + "lodash.foreach": "4.5.0", + "lodash.map": "4.6.0", + "lodash.merge": "4.6.1", + "lodash.pick": "4.4.0", + "lodash.reduce": "4.6.0", + "lodash.reject": "4.6.0", + "lodash.some": "4.6.0" } }, "chokidar": { @@ -415,15 +415,15 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.2.2", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" } }, "cliui": { @@ -431,9 +431,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" }, "dependencies": { "strip-ansi": { @@ -441,7 +441,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -456,7 +456,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "requires": { - "color-name": "^1.1.1" + "color-name": "1.1.3" } }, "color-name": { @@ -474,7 +474,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "command-exists": { @@ -492,7 +492,7 @@ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", "requires": { - "mime-db": ">= 1.33.0 < 2" + "mime-db": "1.33.0" } }, "compression": { @@ -500,13 +500,13 @@ "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", "requires": { - "accepts": "~1.3.4", + "accepts": "1.3.5", "bytes": "3.0.0", - "compressible": "~2.0.13", + "compressible": "2.0.13", "debug": "2.6.9", - "on-headers": "~1.0.1", + "on-headers": "1.0.1", "safe-buffer": "5.1.1", - "vary": "~1.1.2" + "vary": "1.1.2" }, "dependencies": { "debug": { @@ -536,7 +536,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.1.0", - "parseurl": "~1.3.2", + "parseurl": "1.3.2", "utils-merge": "1.0.1" }, "dependencies": { @@ -575,8 +575,8 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" + "lru-cache": "4.1.2", + "which": "1.3.0" } }, "crypt": { @@ -594,10 +594,10 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", + "boolbase": "1.0.0", + "css-what": "2.1.0", "domutils": "1.5.1", - "nth-check": "~1.0.1" + "nth-check": "1.0.1" } }, "css-what": { @@ -611,7 +611,7 @@ "integrity": "sha1-S4deCWm612T37AcGz0T1+wgx9rc=", "requires": { "browser-fingerprint": "0.0.1", - "core-js": "^1.1.1", + "core-js": "1.2.7", "node-fingerprint": "0.0.2" } }, @@ -633,7 +633,7 @@ "resolved": "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz", "integrity": "sha1-FsRu/cq6PtxF8k8r1IaLAbfCrcY=", "requires": { - "os-name": "~1.0.3" + "os-name": "1.0.3" } }, "delayed-stream": { @@ -664,7 +664,7 @@ "resolved": "https://registry.npmjs.org/utility/-/utility-0.1.11.tgz", "integrity": "sha1-/eYM+bTkdRlHoM9dEEzik2ciZxU=", "requires": { - "address": ">=0.0.1" + "address": "1.0.3" } } } @@ -674,8 +674,8 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" + "domelementtype": "1.1.3", + "entities": "1.1.1" }, "dependencies": { "domelementtype": { @@ -695,7 +695,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "requires": { - "domelementtype": "1" + "domelementtype": "1.3.0" } }, "domutils": { @@ -703,8 +703,8 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" } }, "ee-first": { @@ -767,7 +767,7 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "requires": { - "is-posix-bracket": "^0.1.0" + "is-posix-bracket": "0.1.1" } }, "expand-range": { @@ -775,7 +775,7 @@ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "requires": { - "fill-range": "^2.1.0" + "fill-range": "2.2.3" } }, "extend": { @@ -788,7 +788,7 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "filename-regex": { @@ -801,11 +801,11 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" } }, "finalhandler": { @@ -814,12 +814,12 @@ "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" }, "dependencies": { "debug": { @@ -837,7 +837,7 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", "requires": { - "debug": "^3.1.0" + "debug": "3.1.0" } }, "for-in": { @@ -850,7 +850,7 @@ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "requires": { - "for-in": "^1.0.1" + "for-in": "1.0.2" } }, "form-data": { @@ -858,9 +858,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "^0.4.0", + "asynckit": "0.4.0", "combined-stream": "1.0.6", - "mime-types": "^2.1.12" + "mime-types": "2.1.18" } }, "formidable": { @@ -884,8 +884,8 @@ "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==", "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.9.0" + "nan": "2.10.0", + "node-pre-gyp": "0.9.1" }, "dependencies": { "abbrev": { @@ -1345,7 +1345,7 @@ "resolved": "https://registry.npmjs.org/gitment/-/gitment-0.0.3.tgz", "integrity": "sha1-28y610gLE0W2VpE71w7/eSp7OLg=", "requires": { - "mobx": "^3.1.7" + "mobx": "3.6.2" } }, "glob": { @@ -1354,11 +1354,11 @@ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", "optional": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "glob-base": { @@ -1366,8 +1366,8 @@ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" + "glob-parent": "2.0.0", + "is-glob": "2.0.1" } }, "glob-parent": { @@ -1375,7 +1375,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "requires": { - "is-glob": "^2.0.0" + "is-glob": "2.0.1" } }, "globals": { @@ -1393,7 +1393,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "has-flag": { @@ -1406,33 +1406,33 @@ "resolved": "https://registry.npmjs.org/hexo/-/hexo-3.7.1.tgz", "integrity": "sha512-+RRN4C8oWYzEnW0NtqNrIfIITRTvXpMoE6OrK5aK4nrO+4lzp0JfZkoxnsINVXUPmzHRimLWUzO95x9lt33jEg==", "requires": { - "abbrev": "^1.0.7", - "archy": "^1.0.0", - "bluebird": "^3.4.0", - "chalk": "^2.3.1", + "abbrev": "1.1.1", + "archy": "1.0.0", + "bluebird": "3.5.1", + "chalk": "2.4.1", "cheerio": "0.22.0", - "hexo-cli": "^1.1.0", - "hexo-front-matter": "^0.2.2", - "hexo-fs": "^0.2.0", - "hexo-i18n": "^0.2.1", - "hexo-log": "^0.2.0", - "hexo-util": "^0.6.3", - "js-yaml": "^3.6.1", - "lodash": "^4.17.5", - "minimatch": "^3.0.4", - "moment": "^2.19.4", - "moment-timezone": "^0.5.14", - "nunjucks": "^3.1.2", - "pretty-hrtime": "^1.0.2", - "resolve": "^1.5.0", - "strip-ansi": "^4.0.0", - "strip-indent": "^2.0.0", + "hexo-cli": "1.1.0", + "hexo-front-matter": "0.2.3", + "hexo-fs": "0.2.3", + "hexo-i18n": "0.2.1", + "hexo-log": "0.2.0", + "hexo-util": "0.6.3", + "js-yaml": "3.11.0", + "lodash": "4.17.10", + "minimatch": "3.0.4", + "moment": "2.22.1", + "moment-timezone": "0.5.17", + "nunjucks": "3.1.2", + "pretty-hrtime": "1.0.3", + "resolve": "1.7.1", + "strip-ansi": "4.0.0", + "strip-indent": "2.0.0", "swig-extras": "0.0.1", - "swig-templates": "^2.0.2", - "text-table": "^0.2.0", - "tildify": "^1.2.0", - "titlecase": "^1.1.2", - "warehouse": "^2.2.0" + "swig-templates": "2.0.2", + "text-table": "0.2.0", + "tildify": "1.2.0", + "titlecase": "1.1.2", + "warehouse": "2.2.0" }, "dependencies": { "ansi-styles": { @@ -1445,17 +1445,17 @@ "resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-1.1.0.tgz", "integrity": "sha512-IWQPppwgmj1iBUcP5mpcMg3Tre6a8Qlr8ejXw6naZiJNSepSgh4mS3KiNPKDa2qQIgPDqJYJzNVFLw+RLA9CkA==", "requires": { - "abbrev": "^1.0.7", - "bluebird": "^3.4.0", - "chalk": "^1.1.3", - "command-exists": "^1.2.0", - "hexo-fs": "^0.2.0", - "hexo-log": "^0.2.0", - "hexo-util": "^0.6.0", - "minimist": "^1.2.0", - "object-assign": "^4.1.0", - "resolve": "^1.5.0", - "tildify": "^1.2.0" + "abbrev": "1.1.1", + "bluebird": "3.5.1", + "chalk": "1.1.3", + "command-exists": "1.2.6", + "hexo-fs": "0.2.3", + "hexo-log": "0.2.0", + "hexo-util": "0.6.3", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "resolve": "1.7.1", + "tildify": "1.2.0" }, "dependencies": { "chalk": { @@ -1463,11 +1463,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "strip-ansi": { @@ -1475,7 +1475,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -1492,9 +1492,9 @@ "resolved": "https://registry.npmjs.org/hexo-bunyan/-/hexo-bunyan-1.0.0.tgz", "integrity": "sha512-RymT8Ck+K77mLt9BEYNb4uyfC7RIQnU5N3laXowMrS28jj2h89VHJCOnhV00mmta4fHRqNa07kP1Hrn17nvMkQ==", "requires": { - "moment": "^2.10.6", - "mv": "~2", - "safe-json-stringify": "~1" + "moment": "2.22.1", + "mv": "2.1.1", + "safe-json-stringify": "1.1.0" } }, "hexo-deployer-git": { @@ -1502,13 +1502,13 @@ "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-0.3.1.tgz", "integrity": "sha512-JSwSmTSknGpaiooGXwmP7sAhoSNW3c+xmBiCc5yyrvRSfQ3zIYWjmcqNXSj8m2DmheqQNgt5D4M7quYjw+L6tA==", "requires": { - "babel-eslint": "^7.2.1", - "bluebird": "^3.5.0", - "chalk": "^1.1.3", - "hexo-fs": "^0.2.0", - "hexo-util": "^0.6.0", - "moment": "^2.18.0", - "swig": "^1.4.2" + "babel-eslint": "7.2.3", + "bluebird": "3.5.1", + "chalk": "1.1.3", + "hexo-fs": "0.2.3", + "hexo-util": "0.6.3", + "moment": "2.22.1", + "swig": "1.4.2" }, "dependencies": { "ansi-styles": { @@ -1526,11 +1526,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "source-map": { @@ -1538,7 +1538,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=", "requires": { - "amdefine": ">=0.0.4" + "amdefine": "1.0.1" } }, "strip-ansi": { @@ -1546,7 +1546,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -1559,8 +1559,8 @@ "resolved": "https://registry.npmjs.org/swig/-/swig-1.4.2.tgz", "integrity": "sha1-QIXKBFM2kQS11IPihBs5t64aq6U=", "requires": { - "optimist": "~0.6", - "uglify-js": "~2.4" + "optimist": "0.6.1", + "uglify-js": "2.4.24" } }, "uglify-js": { @@ -1568,10 +1568,10 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=", "requires": { - "async": "~0.2.6", + "async": "0.2.10", "source-map": "0.1.34", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.5.4" + "uglify-to-browserify": "1.0.2", + "yargs": "3.5.4" } }, "window-size": { @@ -1589,8 +1589,8 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=", "requires": { - "camelcase": "^1.0.2", - "decamelize": "^1.0.0", + "camelcase": "1.2.1", + "decamelize": "1.2.0", "window-size": "0.1.0", "wordwrap": "0.0.2" } @@ -1603,13 +1603,13 @@ "integrity": "sha512-xRunvmGgEi4ER+fvwx85xeScyO5ci/gcypa6VwNlydq0alR8dq5tT0QKKnr89QWcJwJYSnlsP/xOjuJPRlj8gw==", "requires": { "ejs": "2.5.6", - "hexo-fs": "^0.2.2", - "hexo-i18n": "^0.2.1", - "hexo-log": "^0.2.0", - "path": "^0.12.7", - "urllib-sync": "^1.0.1", - "xmldom": "^0.1.27", - "xpath": "^0.0.24" + "hexo-fs": "0.2.3", + "hexo-i18n": "0.2.1", + "hexo-log": "0.2.0", + "path": "0.12.7", + "urllib-sync": "1.1.4", + "xmldom": "0.1.27", + "xpath": "0.0.24" }, "dependencies": { "ejs": { @@ -1624,7 +1624,7 @@ "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-0.2.3.tgz", "integrity": "sha1-x8qO9CDqNr2F6ECKLoyb9J76YF4=", "requires": { - "js-yaml": "^3.6.1" + "js-yaml": "3.11.0" } }, "hexo-fs": { @@ -1632,10 +1632,10 @@ "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-0.2.3.tgz", "integrity": "sha512-rLB1rMVUW3csAljvJgHfyjemL0BrmcUZfBf9hJe6S0pA53igFa3ON0PFwomvoLs1Wdmjs9Awnw9Tru4PjWFSlQ==", "requires": { - "bluebird": "^3.4.0", - "chokidar": "^1.5.2", - "escape-string-regexp": "^1.0.5", - "graceful-fs": "^4.1.4" + "bluebird": "3.5.1", + "chokidar": "1.7.0", + "escape-string-regexp": "1.0.5", + "graceful-fs": "4.1.11" } }, "hexo-generator-archive": { @@ -1644,7 +1644,7 @@ "integrity": "sha512-jPbMtibqkJnAX3hCwhYhK3r6cqy9OKQsVEScjk7LDok+iPmFmkKCNdU/OccxGe1CWAZpT+ta4+LknwNeHG2G4w==", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "^2.0.0" + "object-assign": "2.1.1" }, "dependencies": { "object-assign": { @@ -1660,7 +1660,7 @@ "integrity": "sha1-uealhiUwqDvdfaTIGcG58+TMtLI=", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "^2.0.0" + "object-assign": "2.1.1" }, "dependencies": { "object-assign": { @@ -1675,8 +1675,8 @@ "resolved": "https://registry.npmjs.org/hexo-generator-feed/-/hexo-generator-feed-1.2.2.tgz", "integrity": "sha512-4jcvVhFgpEFRJ7A+KhBSfWoQaewRBjcVWEO4OmBgnvaZOm6XwK+b5ZXx/8BpujCLHbjXWzglXhiT7qFFS/nvzw==", "requires": { - "nunjucks": "^3.0.0", - "object-assign": "^4.1.1" + "nunjucks": "3.1.2", + "object-assign": "4.1.1" } }, "hexo-generator-index": { @@ -1685,7 +1685,7 @@ "integrity": "sha1-kEIin8rHmq9wBXXaGTMr8/fuXF0=", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "^4.0.1" + "object-assign": "4.1.1" } }, "hexo-generator-searchdb": { @@ -1693,9 +1693,8 @@ "resolved": "https://registry.npmjs.org/hexo-generator-searchdb/-/hexo-generator-searchdb-1.0.8.tgz", "integrity": "sha1-BCRSVuFBOmYxOTLb8cCn5WhVkwE=", "requires": { - "ejs": "^1.0.0", - "striptags": "latest", - "utils-merge": "^1.0.0" + "ejs": "1.0.0", + "utils-merge": "1.0.1" }, "dependencies": { "ejs": { @@ -1715,9 +1714,9 @@ "resolved": "https://registry.npmjs.org/hexo-generator-sitemap/-/hexo-generator-sitemap-1.2.0.tgz", "integrity": "sha1-MBj419Hi5Cs/caZacxb/z1g7w/M=", "requires": { - "minimatch": "^3.0.0", - "nunjucks": "^2.3.0", - "object-assign": "^4.0.1" + "minimatch": "3.0.4", + "nunjucks": "2.5.2", + "object-assign": "4.1.1" }, "dependencies": { "nunjucks": { @@ -1725,9 +1724,9 @@ "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-2.5.2.tgz", "integrity": "sha1-6n00bnhbikh0Zmw8yp4YxXf7oiw=", "requires": { - "asap": "^2.0.3", - "chokidar": "^1.6.0", - "yargs": "^3.32.0" + "asap": "2.0.6", + "chokidar": "1.7.0", + "yargs": "3.32.0" } } } @@ -1738,7 +1737,7 @@ "integrity": "sha1-xXFYRrtB5X2cIMHWbX2yGhq/emI=", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "^4.0.1" + "object-assign": "4.1.1" } }, "hexo-i18n": { @@ -1746,7 +1745,7 @@ "resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-0.2.1.tgz", "integrity": "sha1-hPFBQyvwnYtVjth4xygWS20c1t4=", "requires": { - "sprintf-js": "^1.0.2" + "sprintf-js": "1.0.3" } }, "hexo-leancloud-counter-security": { @@ -1754,8 +1753,8 @@ "resolved": "https://registry.npmjs.org/hexo-leancloud-counter-security/-/hexo-leancloud-counter-security-1.3.2.tgz", "integrity": "sha512-vWxepM1Hz+W/ommkVicaFx7ATUuTWvhVq6A/iyMfmSr05uchKZguPLolv4oLD03BUpY/RU8ZLjeOwrGANLAiYA==", "requires": { - "leancloud-storage": "^3.5.0", - "readline-sync": "^1.4.7" + "leancloud-storage": "3.6.8", + "readline-sync": "1.4.9" } }, "hexo-log": { @@ -1763,8 +1762,8 @@ "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-0.2.0.tgz", "integrity": "sha512-fzoc+GQexxPPILTjoOQILnA3ZG2MFgqMBVel4xvJ11pXptw9+f97ynTgDAExXafyp9Nz2ChXRuqlCYgPtZSlxQ==", "requires": { - "chalk": "^1.1.1", - "hexo-bunyan": "^1.0.0" + "chalk": "1.1.3", + "hexo-bunyan": "1.0.0" }, "dependencies": { "ansi-styles": { @@ -1777,11 +1776,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "strip-ansi": { @@ -1789,7 +1788,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -1804,7 +1803,7 @@ "resolved": "https://registry.npmjs.org/hexo-pagination/-/hexo-pagination-0.0.2.tgz", "integrity": "sha1-jPRwx9sN5bGKOSanbesZQBXffys=", "requires": { - "utils-merge": "^1.0.0" + "utils-merge": "1.0.1" } }, "hexo-renderer-ejs": { @@ -1812,8 +1811,8 @@ "resolved": "https://registry.npmjs.org/hexo-renderer-ejs/-/hexo-renderer-ejs-0.3.1.tgz", "integrity": "sha512-XN8pYJU+Wr3dT8ipqEPRlOBySJpd1C5NUBBzgZpVSVBC/6L36O0YZI/Qd5NxQqwfGfSuKQ8N5iMyjmRXSR1MdA==", "requires": { - "ejs": "^2.3.4", - "object-assign": "^4.0.1" + "ejs": "2.5.9", + "object-assign": "4.1.1" } }, "hexo-renderer-marked": { @@ -1821,10 +1820,10 @@ "resolved": "https://registry.npmjs.org/hexo-renderer-marked/-/hexo-renderer-marked-0.3.2.tgz", "integrity": "sha512-joSLeHB0YRkuViIPQlRz4A+zfJKPNHT+rABFgPHiT1zL9eeTUPxoLL4h7kcgOwRLAontVScaxP2Sie15mNitFg==", "requires": { - "hexo-util": "^0.6.2", - "marked": "^0.3.9", - "object-assign": "^4.1.1", - "strip-indent": "^2.0.0" + "hexo-util": "0.6.3", + "marked": "0.3.19", + "object-assign": "4.1.1", + "strip-indent": "2.0.0" } }, "hexo-renderer-stylus": { @@ -1832,8 +1831,8 @@ "resolved": "https://registry.npmjs.org/hexo-renderer-stylus/-/hexo-renderer-stylus-0.3.3.tgz", "integrity": "sha1-xU6ifh/Y48ipp6hM+6itNUEiyn8=", "requires": { - "nib": "^1.1.2", - "stylus": "^0.54.5" + "nib": "1.1.2", + "stylus": "0.54.5" } }, "hexo-server": { @@ -1841,15 +1840,15 @@ "resolved": "https://registry.npmjs.org/hexo-server/-/hexo-server-0.2.2.tgz", "integrity": "sha512-/KkOYMIGylNoMtnlgas84Kw18A60WU3BVfo8ZnTHy8omCsAz2Z+aK6ddR4PpSmTdLeKDsiZj4ZSg86ZQ+FZzrA==", "requires": { - "bluebird": "^3.0.6", - "chalk": "^1.1.1", - "compression": "^1.6.0", - "connect": "3.x", - "mime": "^1.3.4", - "morgan": "^1.6.1", - "object-assign": "^4.0.1", - "opn": "^4.0.0", - "serve-static": "^1.10.0" + "bluebird": "3.5.1", + "chalk": "1.1.3", + "compression": "1.7.2", + "connect": "3.6.6", + "mime": "1.6.0", + "morgan": "1.9.0", + "object-assign": "4.1.1", + "opn": "4.0.2", + "serve-static": "1.13.2" }, "dependencies": { "ansi-styles": { @@ -1862,11 +1861,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "strip-ansi": { @@ -1874,7 +1873,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -1894,12 +1893,12 @@ "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-0.6.3.tgz", "integrity": "sha512-zPxaqCWZz3/25SAB4FlrRtWktJ+Pr+vBiv/nyHpXKgXPt1m70liViKlRwWLqDmRjJ72x6/k4qCEeXHajvcGHUw==", "requires": { - "bluebird": "^3.4.0", - "camel-case": "^3.0.0", - "cross-spawn": "^4.0.0", - "highlight.js": "^9.4.0", - "html-entities": "^1.2.0", - "striptags": "^2.1.1" + "bluebird": "3.5.1", + "camel-case": "3.0.0", + "cross-spawn": "4.0.2", + "highlight.js": "9.12.0", + "html-entities": "1.2.1", + "striptags": "2.2.1" } }, "highlight.js": { @@ -1917,12 +1916,12 @@ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", "requires": { - "domelementtype": "^1.3.0", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" + "domelementtype": "1.3.0", + "domhandler": "2.4.2", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6" } }, "http-errors": { @@ -1930,10 +1929,10 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "depd": "~1.1.2", + "depd": "1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "statuses": "1.5.0" }, "dependencies": { "statuses": { @@ -1948,7 +1947,7 @@ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", "requires": { - "ms": "^2.0.0" + "ms": "2.0.0" } }, "iconv-lite": { @@ -1956,7 +1955,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "inflight": { @@ -1964,8 +1963,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -1978,7 +1977,7 @@ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.3.1" } }, "invert-kv": { @@ -1991,7 +1990,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "requires": { - "binary-extensions": "^1.0.0" + "binary-extensions": "1.11.0" } }, "is-buffer": { @@ -2009,7 +2008,7 @@ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "requires": { - "is-primitive": "^2.0.0" + "is-primitive": "2.0.0" } }, "is-extendable": { @@ -2027,7 +2026,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "is-glob": { @@ -2035,7 +2034,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "is-number": { @@ -2043,7 +2042,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-plain-object": { @@ -2051,7 +2050,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -2104,8 +2103,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.10", + "esprima": "4.0.0" } }, "jsonparse": { @@ -2118,7 +2117,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } }, "lazy-cache": { @@ -2131,7 +2130,7 @@ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "1.0.0" } }, "leancloud-realtime": { @@ -2139,16 +2138,16 @@ "resolved": "https://registry.npmjs.org/leancloud-realtime/-/leancloud-realtime-4.0.0-beta.5.tgz", "integrity": "sha512-SMfxjexc7d36AChg//XRS+uVdY9C/Id3NaXW8yQSdlQGLR07EwiDvD8Vns/aER4Kvsx8kWYtQ0tOmo3LZkOhDA==", "requires": { - "axios": "^0.18.0", - "babel-runtime": "^6.6.1", - "base64-arraybuffer": "^0.1.5", - "debug": "^3.0.0", - "eventemitter3": "^3.0.0", - "javascript-state-machine": "^2.3.5", - "lodash": "^4.6.0", - "protobufjs": "^5.0.1", - "uuid": "^3.0.0", - "ws": "^4.0.0" + "axios": "0.18.0", + "babel-runtime": "6.26.0", + "base64-arraybuffer": "0.1.5", + "debug": "3.1.0", + "eventemitter3": "3.1.0", + "javascript-state-machine": "2.4.0", + "lodash": "4.17.10", + "protobufjs": "5.0.2", + "uuid": "3.2.1", + "ws": "4.1.0" }, "dependencies": { "eventemitter3": { @@ -2168,15 +2167,15 @@ "resolved": "https://registry.npmjs.org/leancloud-storage/-/leancloud-storage-3.6.8.tgz", "integrity": "sha512-Wp7GoqhSyaWFqHa0UzLn0YekYz/HGEFJJq2f1Sgv6EPCh9EsD6IXkpvdqEr7cgdZM11831ZCU+6nAamx5m/LEg==", "requires": { - "debug": "^3.1.0", + "debug": "3.1.0", "es6-promise": "4.2.3", - "eventemitter3": "^2.0.3", - "leancloud-realtime": "^4.0.0-beta.5", - "leancloud-realtime-plugin-live-query": "^1.1.1", - "localstorage-memory": "^1.0.1", - "md5": "^2.0.0", - "superagent": "^3.3.1", - "underscore": "^1.8.3" + "eventemitter3": "2.0.3", + "leancloud-realtime": "4.0.0-beta.5", + "leancloud-realtime-plugin-live-query": "1.1.1", + "localstorage-memory": "1.0.2", + "md5": "2.2.1", + "superagent": "3.8.2", + "underscore": "1.9.0" } }, "localstorage-memory": { @@ -2264,7 +2263,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "requires": { - "js-tokens": "^3.0.0" + "js-tokens": "3.0.2" } }, "lower-case": { @@ -2277,8 +2276,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "pseudomap": "1.0.2", + "yallist": "2.1.2" } }, "markdown": { @@ -2286,7 +2285,7 @@ "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=", "requires": { - "nopt": "~2.1.1" + "nopt": "2.1.2" } }, "marked": { @@ -2299,9 +2298,9 @@ "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", "requires": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "1.1.6" } }, "media-typer": { @@ -2319,19 +2318,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" } }, "mime": { @@ -2349,7 +2348,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "~1.33.0" + "mime-db": "1.33.0" } }, "minimatch": { @@ -2357,7 +2356,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -2395,7 +2394,7 @@ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.17.tgz", "integrity": "sha512-Y/JpVEWIOA9Gho4vO15MTnW1FCmHi3ypprrkUaxsZ1TKg3uqC8q/qMBjTddkHoiwwZN3qvZSr4zJP7x9V3LpXA==", "requires": { - "moment": ">= 2.9.0" + "moment": "2.22.1" } }, "morgan": { @@ -2403,11 +2402,11 @@ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", "requires": { - "basic-auth": "~2.0.0", + "basic-auth": "2.0.0", "debug": "2.6.9", - "depd": "~1.1.1", - "on-finished": "~2.3.0", - "on-headers": "~1.0.1" + "depd": "1.1.2", + "on-finished": "2.3.0", + "on-headers": "1.0.1" }, "dependencies": { "debug": { @@ -2431,9 +2430,9 @@ "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", "optional": true, "requires": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" + "mkdirp": "0.5.1", + "ncp": "2.0.0", + "rimraf": "2.4.5" } }, "nan": { @@ -2466,7 +2465,7 @@ "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "requires": { - "lower-case": "^1.1.1" + "lower-case": "1.1.4" } }, "node-fingerprint": { @@ -2479,7 +2478,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", "requires": { - "abbrev": "1" + "abbrev": "1.1.1" } }, "normalize-path": { @@ -2487,7 +2486,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "^1.0.1" + "remove-trailing-separator": "1.1.0" } }, "nth-check": { @@ -2495,7 +2494,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", "requires": { - "boolbase": "~1.0.0" + "boolbase": "1.0.0" } }, "number-is-nan": { @@ -2508,11 +2507,11 @@ "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.1.2.tgz", "integrity": "sha512-pJXncV07mmiuIDL9OqdNkcpvifuDMzMq9qBQT9SHasAS7AEwzNp/r/jHNl+9O0+zsldcdWG9ZtXo/nwu2cTqXA==", "requires": { - "a-sync-waterfall": "^1.0.0", - "asap": "^2.0.3", - "chokidar": "^1.6.0", - "postinstall-build": "^5.0.1", - "yargs": "^3.32.0" + "a-sync-waterfall": "1.0.0", + "asap": "2.0.6", + "chokidar": "1.7.0", + "postinstall-build": "5.0.1", + "yargs": "3.32.0" } }, "object-assign": { @@ -2525,8 +2524,8 @@ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "for-own": "0.1.5", + "is-extendable": "0.1.1" } }, "on-finished": { @@ -2547,7 +2546,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "opn": { @@ -2555,8 +2554,8 @@ "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" } }, "optimist": { @@ -2564,8 +2563,8 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "minimist": "0.0.10", + "wordwrap": "0.0.3" }, "dependencies": { "minimist": { @@ -2590,7 +2589,7 @@ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "requires": { - "lcid": "^1.0.0" + "lcid": "1.0.0" } }, "os-name": { @@ -2598,8 +2597,8 @@ "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", "integrity": "sha1-GzefZINa98Wn9JizV8uVIVwVnt8=", "requires": { - "osx-release": "^1.0.0", - "win-release": "^1.0.0" + "osx-release": "1.1.0", + "win-release": "1.1.1" } }, "osx-release": { @@ -2607,7 +2606,7 @@ "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", "integrity": "sha1-8heRGigTaUmvG/kwiyQeJzfTzWw=", "requires": { - "minimist": "^1.1.0" + "minimist": "1.2.0" } }, "parse-glob": { @@ -2615,10 +2614,10 @@ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" } }, "parseurl": { @@ -2631,8 +2630,8 @@ "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", "requires": { - "process": "^0.11.1", - "util": "^0.10.3" + "process": "0.11.10", + "util": "0.10.3" } }, "path-is-absolute": { @@ -2655,7 +2654,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "^2.0.0" + "pinkie": "2.0.4" } }, "postinstall-build": { @@ -2688,10 +2687,10 @@ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.2.tgz", "integrity": "sha1-WXSNfc8D0tsiwT2p/rAk4Wq4DJE=", "requires": { - "ascli": "~1", - "bytebuffer": "~5", - "glob": "^7.0.5", - "yargs": "^3.10.0" + "ascli": "1.0.1", + "bytebuffer": "5.0.1", + "glob": "7.1.2", + "yargs": "3.32.0" }, "dependencies": { "glob": { @@ -2699,12 +2698,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } } } @@ -2724,8 +2723,8 @@ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "3.0.0", + "kind-of": "4.0.0" }, "dependencies": { "is-number": { @@ -2733,7 +2732,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -2741,7 +2740,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -2751,7 +2750,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -2766,13 +2765,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "readdirp": { @@ -2780,10 +2779,10 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.6", + "set-immediate-shim": "1.0.1" } }, "readline-sync": { @@ -2801,7 +2800,7 @@ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "requires": { - "is-equal-shallow": "^0.1.3" + "is-equal-shallow": "0.1.3" } }, "remove-trailing-separator": { @@ -2824,7 +2823,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "requires": { - "path-parse": "^1.0.5" + "path-parse": "1.0.5" } }, "right-align": { @@ -2832,7 +2831,7 @@ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "requires": { - "align-text": "^0.1.1" + "align-text": "0.1.4" } }, "rimraf": { @@ -2841,7 +2840,7 @@ "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", "optional": true, "requires": { - "glob": "^6.0.1" + "glob": "6.0.4" } }, "safe-buffer": { @@ -2876,18 +2875,18 @@ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", + "http-errors": "1.6.3", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" }, "dependencies": { "debug": { @@ -2915,9 +2914,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", "send": "0.16.2" } }, @@ -2951,9 +2950,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" }, "dependencies": { "strip-ansi": { @@ -2961,7 +2960,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -2971,7 +2970,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } }, "strip-ansi": { @@ -2979,7 +2978,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" }, "dependencies": { "ansi-regex": { @@ -3004,12 +3003,12 @@ "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", "requires": { - "css-parse": "1.7.x", - "debug": "*", - "glob": "7.0.x", - "mkdirp": "0.5.x", - "sax": "0.5.x", - "source-map": "0.1.x" + "css-parse": "1.7.0", + "debug": "3.1.0", + "glob": "7.0.6", + "mkdirp": "0.5.1", + "sax": "0.5.8", + "source-map": "0.1.43" }, "dependencies": { "glob": { @@ -3017,12 +3016,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "source-map": { @@ -3030,7 +3029,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "requires": { - "amdefine": ">=0.0.4" + "amdefine": "1.0.1" } } } @@ -3040,16 +3039,16 @@ "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", "requires": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.1.1", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.0.5" + "component-emitter": "1.2.1", + "cookiejar": "2.1.1", + "debug": "3.1.0", + "extend": "3.0.1", + "form-data": "2.3.2", + "formidable": "1.2.1", + "methods": "1.1.2", + "mime": "1.6.0", + "qs": "6.5.1", + "readable-stream": "2.3.6" } }, "supports-color": { @@ -3057,7 +3056,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } }, "swig-extras": { @@ -3065,7 +3064,7 @@ "resolved": "https://registry.npmjs.org/swig-extras/-/swig-extras-0.0.1.tgz", "integrity": "sha1-tQP+3jcqucJMasaMr2VrzvGHIyg=", "requires": { - "markdown": "~0.5.0" + "markdown": "0.5.0" } }, "swig-templates": { @@ -3073,7 +3072,7 @@ "resolved": "https://registry.npmjs.org/swig-templates/-/swig-templates-2.0.2.tgz", "integrity": "sha1-0lAqcwMBk1b06nbqkGXU9Yr2q3U=", "requires": { - "optimist": "~0.6", + "optimist": "0.6.1", "uglify-js": "2.6.0" } }, @@ -3092,7 +3091,7 @@ "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", "requires": { - "os-homedir": "^1.0.0" + "os-homedir": "1.0.2" } }, "titlecase": { @@ -3110,10 +3109,10 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.0.tgz", "integrity": "sha1-JeqhzDVQ45QQzu+v0c+7a20V8AE=", "requires": { - "async": "~0.2.6", - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" + "async": "0.2.10", + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" }, "dependencies": { "camelcase": { @@ -3126,8 +3125,8 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", + "center-align": "0.1.3", + "right-align": "0.1.3", "wordwrap": "0.0.2" } }, @@ -3146,9 +3145,9 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", "window-size": "0.1.0" } } @@ -3179,14 +3178,14 @@ "resolved": "https://registry.npmjs.org/urllib/-/urllib-2.11.1.tgz", "integrity": "sha1-5F1Xnxu+Qsn64hzf9yVo88jIyUU=", "requires": { - "any-promise": "^1.2.0", - "debug": "^2.2.0", - "default-user-agent": "^1.0.0", - "digest-header": "^0.0.1", - "humanize-ms": "^1.2.0", - "iconv-lite": "^0.4.13", - "media-typer": "^0.3.0", - "statuses": "^1.3.0" + "any-promise": "1.3.0", + "debug": "2.6.9", + "default-user-agent": "1.0.0", + "digest-header": "0.0.1", + "humanize-ms": "1.2.1", + "iconv-lite": "0.4.23", + "media-typer": "0.3.0", + "statuses": "1.3.1" }, "dependencies": { "debug": { @@ -3204,8 +3203,8 @@ "resolved": "https://registry.npmjs.org/urllib-sync/-/urllib-sync-1.1.4.tgz", "integrity": "sha1-yRMI9JkaZe5iDWc85g/dJLvRjMo=", "requires": { - "urllib": "~2.11.0", - "utility": "~1.7.1" + "urllib": "2.11.1", + "utility": "1.7.1" } }, "util": { @@ -3233,8 +3232,8 @@ "resolved": "https://registry.npmjs.org/utility/-/utility-1.7.1.tgz", "integrity": "sha1-+3TN3IFqQRJ2ym6MqZMkfyPusKc=", "requires": { - "copy-to": "~2.0.1", - "escape-html": "~1.0.3" + "copy-to": "2.0.1", + "escape-html": "1.0.3" } }, "utils-merge": { @@ -3257,12 +3256,12 @@ "resolved": "https://registry.npmjs.org/warehouse/-/warehouse-2.2.0.tgz", "integrity": "sha1-XQnWSUKZK+Zn2PfIagnCuK6gQGI=", "requires": { - "JSONStream": "^1.0.7", - "bluebird": "^3.2.2", - "cuid": "~1.3.8", - "graceful-fs": "^4.1.3", - "is-plain-object": "^2.0.1", - "lodash": "^4.2.1" + "JSONStream": "1.3.2", + "bluebird": "3.5.1", + "cuid": "1.3.8", + "graceful-fs": "4.1.11", + "is-plain-object": "2.0.4", + "lodash": "4.17.10" } }, "which": { @@ -3270,7 +3269,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } }, "win-release": { @@ -3278,7 +3277,7 @@ "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", "requires": { - "semver": "^5.0.1" + "semver": "5.5.0" } }, "window-size": { @@ -3296,8 +3295,8 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "string-width": "1.0.2", + "strip-ansi": "3.0.1" }, "dependencies": { "strip-ansi": { @@ -3305,7 +3304,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -3320,8 +3319,8 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0" + "async-limiter": "1.0.0", + "safe-buffer": "5.1.2" } }, "xmldom": { @@ -3349,13 +3348,13 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" + "camelcase": "2.1.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "string-width": "1.0.2", + "window-size": "0.1.4", + "y18n": "3.2.1" } } } diff --git a/source/_data/next.yml b/source/_data/next.yml index f210a2993..acd7b4710 100644 --- a/source/_data/next.yml +++ b/source/_data/next.yml @@ -121,8 +121,8 @@ menu: tags: /tags/ || tags categories: /categories/ || th archives: /archives/ || archive - Books: /books/ || book - Movies: /movies || film + books: /books/ || book + movies: /movies || film about: /about/ || user #schedule: /schedule/ || calendar #sitemap: /sitemap.xml || sitemap @@ -193,10 +193,19 @@ links_layout: block # Title: https://incoder.org/ # Sidebar Avatar -# in theme directory(source/images): /images/avatar.gif -# in site directory(source/uploads): /uploads/avatar.gif -#avatar: /images/avatar.gif -avatar: https://res.cloudinary.com/incoder/image/upload/v1525515979/avatar.png +avatar: + # in theme directory(source/images): /images/avatar.gif + # in site directory(source/uploads): /uploads/avatar.gif + # You can also use other linking images. + # url: #/images/avatar.gif + url: https://res.cloudinary.com/incoder/image/upload/v1525515979/avatar.png + + # If true, the avatar would be dispalyed in circle. + rounded: false + # The value of opacity should be choose from 0 to 1 to set the opacity of the avatar. + opacity: 1 + # If true, the avatar would be rotated with the cursor. + rotated: false # Table Of Contents in the Sidebar toc: diff --git a/source/_posts/travel-zjj.md b/source/_posts/travel-zjj.md new file mode 100644 index 000000000..d04f35c98 --- /dev/null +++ b/source/_posts/travel-zjj.md @@ -0,0 +1,99 @@ +--- +title: 行·张家界 +date: 2018-05-20 22:39:10 +categories: Travel +tag: 张家界 +--- + +{% note default %} +* 时间:2018.06.16——2018.06.19 +* 地点:杭州——张家界 +* 目标:武陵源景区,天门山景区,大峡谷景区 +{% endnote %} + +听说张家界是人间仙境,鬼斧神工,嗯,今年端午就去一探究竟,慌慌张张,匆匆忙忙做一份旅行攻略,翻遍百度,爬烂谷歌,都没有找到匹配的攻略,哎,可能是我姿势不对?! + +张家界,张家界景区共分为四块:**张家界国家森林公园**,**杨家界自然保护区**,**天子山自然保护区**,**索溪峪自然保护区**四大景区,统称为武陵源风景名胜。 + +**最受欢迎** 的四大景区 +1. 武陵源景区(森林公园、金鞭溪、袁家界、杨家界、天子山、十里画廊等) +2. 天门山景区(亚州最长的索道、世界公路奇观、玻璃栈道等) +3. 大峡谷风景区(新开发的玻璃桥) +4. 凤凰古城 + +## 出行准备 +1. 身份证件等相关证件 +2. 数码产品,雨具等 +3. 简单洗漱用品及换洗衣物 +4. 现金若干(不必太多) +5. 零食(必备:辣条) + +## 注意事项 +由于是自由行的方式,因此提醒以下几点 +1. 到达张家界后,**拒绝** 和 **一切** 人搭话,避免一些麻烦,给行程带来不愉快 +2. 保管好自己的物品 +3. 张家界火车站出站后即可到汽车站乘坐大巴去武陵源景区,50分钟左右,10(森林公园)—12元(武陵源) +4. 大峡谷,天门山景区玻璃桥都需要提前5天在网上预定 + +## 出行路线 + +### 整体路线图 +路线一: + * Day1(16):天门山景区 + * Day2.Day3(17-18):武陵源景区 + * Day4(19):大峡谷风景区 + +路线二(推荐) + * Day1.Day2(16-17):武陵源景区 + * Day2.Day3(18):大峡谷风景区 + * Day4(19):天门山景区 + +![扼要路线图](https://res.cloudinary.com/incoder/image/upload/v1527342618/blog/gitpages-zjj-road.png) + +{% note info %} +标记说明 +1. 张家界火车站 +2. 武陵源景区 +3. 大峡谷风景区 +4. 天门山景区 +{% endnote %} + +### 武陵源景区路线 +门票:245 元+保险费3 元(3天内多次进出有效,含环保车票价) +开放时间:8:00-17:00 +Day1:森林公园-金鞭溪-杨家界 +Day2:大观台-天子山-十里画廊-索溪湖-武陵源门票站 +从森林公园进,从武陵源出,不走回头路。需要在 **丁香榕** 住一宿 +![武陵源景区](https://res.cloudinary.com/incoder/image/upload/v1527324112/blog/gitpages-zjj.gif) + +### 大峡谷风景区路线 +门票:大峡谷(门票122元)+玻璃桥(门票138元) +开放时间:08:00-17:00 +Day3:玻璃桥-大峡谷 + +### 天门山景区路线 +门票:258.00元(含往返索道、环保车)【旺季】 +开放时间:08:00~16:00 +路线Day4:玻璃栈道-天门山寺-天门洞(坐索道上山顶——走西线——再到天门翻水处坐自动扶梯到天门洞——爬999级阶梯——最终坐环保车返回至市区) +**自备中午餐** + +![天门山景区路线图](https://pic4.zhimg.com/80/v2-a2a1e0165e89d9610dfbfb465bee1765_hd.jpg) + +## 住宿 +现在还未确定路线,个人推荐路线二;其次,16,17,18号需要住宿,要提前预定旅店 + +## 美食 + +### 胡师傅三下锅 +三下锅,所谓的三下锅其实就是一种很方便的干锅,它是由三种主料做成的,炖着不放汤的火锅,三角坪附近的那个“胡师傅三下锅”味道不错,三下锅50元一份,分量很够吃的,包你吃够吃好!推荐的就是干煸肠子,干煸核桃肉和湘西腊肉三种混在一起炖,吃的同时还可以点一份酸萝卜,又脆又酸。真的是极品哦! + +### 阿福鱼馆 +喜欢吃鱼的朋友,可以大饱口福啦,位于十字街,自十字街路口往老十字街步行2分钟,左手边;鱼是现称现做的,做法很多,用餐环境不错。步步高超市那一条街上,还有很多好吃的地方!还有就是晚上的夜宵,在肯德基那里十子路口,那一条街都是的,晚上的小吃可是很丰富的。 + +## 汇总 +![汇总](https://res.cloudinary.com/incoder/image/upload/v1527434516/blog/gitpages-zjj-summary.png) + +## 游记 +先占坑,事后补 + + diff --git a/themes/next/languages/zh-CN.yml b/themes/next/languages/zh-CN.yml index 0d828c89c..4fc0eb8d1 100644 --- a/themes/next/languages/zh-CN.yml +++ b/themes/next/languages/zh-CN.yml @@ -9,6 +9,8 @@ menu: archives: 归档 categories: 分类 tags: 标签 + books: 阅读 + movies: 电影 about: 关于 search: 搜索 schedule: 日程表 From dc9eb3f658f7ef5dff77938a5138053f4be23c3d Mon Sep 17 00:00:00 2001 From: Jerry Date: Sun, 3 Jun 2018 22:08:19 +0800 Subject: [PATCH 016/163] add memory --- package-lock.json | 183 +++++++++++++++++++++--------------- package.json | 3 +- source/_posts/memory-hs.md | 34 +++++++ source/_posts/memory-hz1.md | 20 ++++ 4 files changed, 163 insertions(+), 77 deletions(-) create mode 100644 source/_posts/memory-hs.md create mode 100644 source/_posts/memory-hz1.md diff --git a/package-lock.json b/package-lock.json index c0f781fd4..91bb0c2ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -277,6 +277,11 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "balloon-css": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/balloon-css/-/balloon-css-0.5.0.tgz", + "integrity": "sha1-ajwGXvq56l9QmpXUMV3wCq4RT6M=" + }, "base64-arraybuffer": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", @@ -707,6 +712,15 @@ "domelementtype": "1.3.0" } }, + "dplayer": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/dplayer/-/dplayer-1.22.2.tgz", + "integrity": "sha512-M+rNMwM1walQoiEbWOwlVEj8PGtWRZyS1/kWtxDDbGPTcXBanv27UYiPTC/ukn2lTQ9+oXkd+OhMTWrestc04Q==", + "requires": { + "balloon-css": "0.5.0", + "promise-polyfill": "7.1.0" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -907,8 +921,8 @@ "bundled": true, "optional": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "delegates": "1.0.0", + "readable-stream": "2.3.6" } }, "balanced-match": { @@ -919,7 +933,7 @@ "version": "1.1.11", "bundled": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -973,7 +987,7 @@ "bundled": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.2.4" } }, "fs.realpath": { @@ -986,14 +1000,14 @@ "bundled": true, "optional": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" } }, "glob": { @@ -1001,12 +1015,12 @@ "bundled": true, "optional": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "has-unicode": { @@ -1019,7 +1033,7 @@ "bundled": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": "2.1.2" } }, "ignore-walk": { @@ -1027,7 +1041,7 @@ "bundled": true, "optional": true, "requires": { - "minimatch": "^3.0.4" + "minimatch": "3.0.4" } }, "inflight": { @@ -1035,8 +1049,8 @@ "bundled": true, "optional": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -1052,7 +1066,7 @@ "version": "1.0.0", "bundled": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "isarray": { @@ -1064,7 +1078,7 @@ "version": "3.0.4", "bundled": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -1075,8 +1089,8 @@ "version": "2.2.4", "bundled": true, "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, "minizlib": { @@ -1084,7 +1098,7 @@ "bundled": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.2.4" } }, "mkdirp": { @@ -1104,9 +1118,9 @@ "bundled": true, "optional": true, "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" } }, "node-pre-gyp": { @@ -1114,16 +1128,16 @@ "bundled": true, "optional": true, "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.0", + "nopt": "4.0.1", + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.6", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" } }, "nopt": { @@ -1131,8 +1145,8 @@ "bundled": true, "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1.1.1", + "osenv": "0.1.5" } }, "npm-bundled": { @@ -1145,8 +1159,8 @@ "bundled": true, "optional": true, "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" } }, "npmlog": { @@ -1154,10 +1168,10 @@ "bundled": true, "optional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, "number-is-nan": { @@ -1173,7 +1187,7 @@ "version": "1.4.0", "bundled": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "os-homedir": { @@ -1191,8 +1205,8 @@ "bundled": true, "optional": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, "path-is-absolute": { @@ -1210,10 +1224,10 @@ "bundled": true, "optional": true, "requires": { - "deep-extend": "~0.4.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" }, "dependencies": { "minimist": { @@ -1228,13 +1242,13 @@ "bundled": true, "optional": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "rimraf": { @@ -1242,7 +1256,7 @@ "bundled": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "7.1.2" } }, "safe-buffer": { @@ -1278,9 +1292,9 @@ "version": "1.0.2", "bundled": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "string_decoder": { @@ -1288,14 +1302,14 @@ "bundled": true, "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.1" } }, "strip-ansi": { "version": "3.0.1", "bundled": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-json-comments": { @@ -1308,13 +1322,13 @@ "bundled": true, "optional": true, "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, "util-deprecate": { @@ -1327,7 +1341,7 @@ "bundled": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "1.0.2" } }, "wrappy": { @@ -1694,6 +1708,7 @@ "integrity": "sha1-BCRSVuFBOmYxOTLb8cCn5WhVkwE=", "requires": { "ejs": "1.0.0", + "striptags": "3.1.1", "utils-merge": "1.0.1" }, "dependencies": { @@ -1888,6 +1903,17 @@ "resolved": "https://registry.npmjs.org/hexo-symbols-count-time/-/hexo-symbols-count-time-0.4.2.tgz", "integrity": "sha1-kbyvaVfhtPfHQVVMKweuXS+o8/s=" }, + "hexo-tag-dplayer": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/hexo-tag-dplayer/-/hexo-tag-dplayer-0.3.3.tgz", + "integrity": "sha512-Y2sweNkcYNr9cLt2J35V0R40P7rriPiW/99shfEdWy5xYxXNzCBKKuDC/YAr2XzzZk29WM5YPID9f2w3veaqdA==", + "requires": { + "dplayer": "1.22.2", + "hexo-fs": "0.2.3", + "hexo-log": "0.2.0", + "hexo-util": "0.6.3" + } + }, "hexo-util": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-0.6.3.tgz", @@ -2682,6 +2708,11 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, + "promise-polyfill": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-7.1.0.tgz", + "integrity": "sha512-P6NJ2wU/8fac44ENORsuqT8TiolKGB2u0fEClPtXezn7w5cmLIjM/7mhPlTebke2EPr6tmqZbXvnX0TxwykGrg==" + }, "protobufjs": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.2.tgz", diff --git a/package.json b/package.json index e434a3aba..0a1fe5bf5 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "hexo-renderer-marked": "^0.3.0", "hexo-renderer-stylus": "^0.3.1", "hexo-server": "^0.2.0", - "hexo-symbols-count-time": "^0.4.2" + "hexo-symbols-count-time": "^0.4.2", + "hexo-tag-dplayer": "^0.3.3" } } diff --git a/source/_posts/memory-hs.md b/source/_posts/memory-hs.md new file mode 100644 index 000000000..c1755d56c --- /dev/null +++ b/source/_posts/memory-hs.md @@ -0,0 +1,34 @@ +--- +title: 忆·黄山 +date: 2018-05-01 00:02:00 +categories: Memory +tag: 黄山 +--- + +{% cq %}

      黄山归来不看岳

      {% endcq %} + +五岳未归,先品黄山。以前看黄山还是小学课本《黄山》一文介绍黄山的美,黄山的秀丽,黄山的与众不同,这次是亲身去体验黄山的姿态;趁着五一,趁着年轻,趁着...。废话不多讲,先看黄山日出美景 + +{% dplayer "url=https://res.cloudinary.com/incoder/video/upload/v1528018149/blog/video/HuangShan-Sunrise.mp4" "pic=https://res.cloudinary.com/incoder/image/upload/v1528024134/blog/travel/travel-huangshan-back.jpg" "loop=no" "theme=#FADFA3" "autoplay=false" "token=tokendemo" %} +>别问我为啥抖,没有支撑点,全程手持...逃 + +这次黄山之行并没有做任何功课,计划到实施前后不超过15天,抱着走一步,看一点的心态去玩,没想到五一节假日,来黄山的人不是很多。 + +## 出行方式 +杭州 **城西客运站** 做大巴直达黄山景区,票价:¥110,时间:大约4小时左右到达 +## 攻略 +逃,没有...... +由于到达黄山游客集散中心已是14:00,由于距离黄山还有10多公里,你可以走路去黄山山脚下,而且16:00之后没有大巴去黄山景区。因此随便找了个地吃完中午饭,就往乘大巴车黄山景区去了(¥12/人),由于上山的入口有好几个,我们也没有去研究,大巴到 **云谷寺** 景区,我们也就下车从这里出发往山上去了,你可以坐缆车去往山顶,我们一行三人,选择了徒步上山,对了门票:¥230/人 + +一路说说笑笑,也没有预订上山的旅店,我们心真大,刚走了没多久,就看到了两个人被交椅抬着下山了,其中一个应该是摔了,头破血流的样子,还没开始,就...;没多管,一路还是很轻松,毕竟都是年轻人,体力不错,走到 **白鹅岭** 已经开始下雨,雨越下越大,因为在边走边看的路上,我们决定来黄山当然是去 **迎客松** 的景点,然后我们顺着 **白鹅岭** 前往 **白鹅山庄旅游商场** 去避雨,然后是人多的无法挪开脚,此时天色已晚,我们稍作休息,找了半天也没有能睡得地,那床都是人挤人。我们找了个茶馆,吃了些带着的食品,喝了一小时茶,大约20:00左右,我们决定,今晚夜行到 **迎客松** + +雨后起了大雾,山顶那时雾色正浓,能见度大约在3米。我们三人也紧随其形,在 **光明顶** 片区玩了一会,这里看日出不错,当我们并没有这里等日出,毕竟这里离 **迎客松** 有一小时多的行程,我们要明天早早的在 **迎客松** 那里拍照装逼,拍完照然后回走去最高峰 **莲花峰** ,然而到了 **迎客松** 才发现,并不像电视上看到的,是在山的悬崖边。好了,这会才23:00多,怎么办,还有好几小时,又没有帐篷什么地可住,三人就在这 **迎客松** 前的广场上,发现了超大遮阳伞两把,哈哈哈,我们就用遮阳伞前后堵住,加上自己的雨伞,构建了一个堡垒,这下,我们三可用在里面睡觉了,雨后的山上很潮湿,就这样半将半究的,坚持到4点多。 + +天快要亮了,要找地儿去拍日出,我答应别人了,要发日出照片给她,往回走去 **莲花峰** 那里并不合适,更重要的是山路也被封,不上上去,只好找到 **玉屏索道** 的另一条路上,这里刚刚好可用看到日出 + +![日出](https://res.cloudinary.com/incoder/image/upload/v1528023909/blog/travel/travel-huangshan-sunrise.jpg) + +拍完日出,我们快速折回到 **迎客松** ,那里已经开始有三三两两的人了,我们动作要快,否则等会从索道上来大批人马,嗯,快速装逼完成,迅速撤离战场 + +![迎客松](https://res.cloudinary.com/incoder/image/upload/v1528023881/blog/travel/travel-huangshan-yks.jpg) + diff --git a/source/_posts/memory-hz1.md b/source/_posts/memory-hz1.md new file mode 100644 index 000000000..a93474c62 --- /dev/null +++ b/source/_posts/memory-hz1.md @@ -0,0 +1,20 @@ +--- +title: 品·杭州 +date: 2018-04-29 00:11:01 +categories: Memory +tag: 杭州 +--- + +上有天堂,下游苏杭,杭州,一个温文尔雅,一个记忆中天堂,一个南方姑娘的城市。 +杭州:毕业后的第二个城市,很开心在这样的城市生活,工作,结识这里的人,杭州和家乡的气候非常相似,因此在杭州有种在家的感觉,在这里遇到的的人,我都会记着你们美丽帅气的脸庞 + +18年是一个动荡的一年,一起的伙伴渐渐的离开了昔日的团队,这两年中,有的人毕业,有的人结婚,有的人生子,有的人成长,感谢我能成为你们生命中的一个过客,和你们一起经历生活百态 + +不管你们在何方,从事着什么样的工作,过着什么样的生活,都别忘记初心,我会想你们,愿你们的一切顺利 + +粗略的剪影,请异步[优酷](http://v.youku.com/v_show/id_XMzU4NTgyMDE0NA==.html?spm=a2hzp.8244740.0.0) + +{% note default %} +不遵守规则的人,我们叫他废物,但是,不珍惜同伴的人,连废物都不如 +——宁智波·带土 +{% endnote %} \ No newline at end of file From cec6eadfc0036a31c035e3a5ff84c5c2d57875f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E9=BE=9A=E6=B5=B7?= Date: Tue, 5 Jun 2018 22:16:42 +0800 Subject: [PATCH 017/163] update linux-build --- package-lock.json | 978 +++++++++++++++++------------------ source/_posts/linux-build.md | 244 ++++++++- source/_posts/travel-zjj.md | 2 +- 3 files changed, 732 insertions(+), 492 deletions(-) diff --git a/package-lock.json b/package-lock.json index 91bb0c2ae..551579967 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" } }, "a-sync-waterfall": { @@ -28,7 +28,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "2.1.18", + "mime-types": "~2.1.18", "negotiator": "0.6.1" } }, @@ -42,9 +42,9 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "amdefine": { @@ -62,7 +62,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "any-promise": { @@ -75,8 +75,8 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" } }, "archy": { @@ -89,7 +89,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "arr-diff": { @@ -97,7 +97,7 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "arr-flatten": { @@ -120,8 +120,8 @@ "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", "requires": { - "colour": "0.7.1", - "optjs": "3.2.2" + "colour": "~0.7.1", + "optjs": "~3.2.2" } }, "async": { @@ -149,8 +149,8 @@ "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", "requires": { - "follow-redirects": "1.4.1", - "is-buffer": "1.1.6" + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" } }, "babel-code-frame": { @@ -158,9 +158,9 @@ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" }, "dependencies": { "ansi-styles": { @@ -173,11 +173,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { @@ -185,7 +185,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -200,10 +200,10 @@ "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", "requires": { - "babel-code-frame": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0" + "babel-code-frame": "^6.22.0", + "babel-traverse": "^6.23.1", + "babel-types": "^6.23.0", + "babylon": "^6.17.0" } }, "babel-messages": { @@ -211,7 +211,7 @@ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-runtime": { @@ -219,8 +219,8 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "2.5.5", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" }, "dependencies": { "core-js": { @@ -235,15 +235,15 @@ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.4", - "lodash": "4.17.10" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" }, "dependencies": { "debug": { @@ -261,10 +261,10 @@ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.10", - "to-fast-properties": "1.0.3" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, "babylon": { @@ -322,7 +322,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -331,9 +331,9 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "browser-fingerprint": { @@ -346,7 +346,7 @@ "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", "requires": { - "long": "3.2.0" + "long": "~3" } }, "bytes": { @@ -359,8 +359,8 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", "requires": { - "no-case": "2.3.2", - "upper-case": "1.1.3" + "no-case": "^2.2.0", + "upper-case": "^1.1.1" } }, "camelcase": { @@ -373,8 +373,8 @@ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chalk": { @@ -382,9 +382,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "charenc": { @@ -397,22 +397,22 @@ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.0", - "entities": "1.1.1", - "htmlparser2": "3.9.2", - "lodash.assignin": "4.2.0", - "lodash.bind": "4.2.1", - "lodash.defaults": "4.2.0", - "lodash.filter": "4.6.0", - "lodash.flatten": "4.4.0", - "lodash.foreach": "4.5.0", - "lodash.map": "4.6.0", - "lodash.merge": "4.6.1", - "lodash.pick": "4.4.0", - "lodash.reduce": "4.6.0", - "lodash.reject": "4.6.0", - "lodash.some": "4.6.0" + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" } }, "chokidar": { @@ -420,15 +420,15 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.2.2", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" } }, "cliui": { @@ -436,9 +436,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" }, "dependencies": { "strip-ansi": { @@ -446,7 +446,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -461,7 +461,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -479,7 +479,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "command-exists": { @@ -497,7 +497,7 @@ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", "requires": { - "mime-db": "1.33.0" + "mime-db": ">= 1.33.0 < 2" } }, "compression": { @@ -505,13 +505,13 @@ "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", "requires": { - "accepts": "1.3.5", + "accepts": "~1.3.4", "bytes": "3.0.0", - "compressible": "2.0.13", + "compressible": "~2.0.13", "debug": "2.6.9", - "on-headers": "1.0.1", + "on-headers": "~1.0.1", "safe-buffer": "5.1.1", - "vary": "1.1.2" + "vary": "~1.1.2" }, "dependencies": { "debug": { @@ -541,7 +541,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.1.0", - "parseurl": "1.3.2", + "parseurl": "~1.3.2", "utils-merge": "1.0.1" }, "dependencies": { @@ -580,8 +580,8 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "requires": { - "lru-cache": "4.1.2", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "which": "^1.2.9" } }, "crypt": { @@ -599,10 +599,10 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", + "boolbase": "~1.0.0", + "css-what": "2.1", "domutils": "1.5.1", - "nth-check": "1.0.1" + "nth-check": "~1.0.1" } }, "css-what": { @@ -616,7 +616,7 @@ "integrity": "sha1-S4deCWm612T37AcGz0T1+wgx9rc=", "requires": { "browser-fingerprint": "0.0.1", - "core-js": "1.2.7", + "core-js": "^1.1.1", "node-fingerprint": "0.0.2" } }, @@ -638,7 +638,7 @@ "resolved": "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz", "integrity": "sha1-FsRu/cq6PtxF8k8r1IaLAbfCrcY=", "requires": { - "os-name": "1.0.3" + "os-name": "~1.0.3" } }, "delayed-stream": { @@ -669,7 +669,7 @@ "resolved": "https://registry.npmjs.org/utility/-/utility-0.1.11.tgz", "integrity": "sha1-/eYM+bTkdRlHoM9dEEzik2ciZxU=", "requires": { - "address": "1.0.3" + "address": ">=0.0.1" } } } @@ -679,8 +679,8 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" + "domelementtype": "~1.1.1", + "entities": "~1.1.1" }, "dependencies": { "domelementtype": { @@ -700,7 +700,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "requires": { - "domelementtype": "1.3.0" + "domelementtype": "1" } }, "domutils": { @@ -708,8 +708,8 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "dom-serializer": "0", + "domelementtype": "1" } }, "dplayer": { @@ -717,7 +717,7 @@ "resolved": "https://registry.npmjs.org/dplayer/-/dplayer-1.22.2.tgz", "integrity": "sha512-M+rNMwM1walQoiEbWOwlVEj8PGtWRZyS1/kWtxDDbGPTcXBanv27UYiPTC/ukn2lTQ9+oXkd+OhMTWrestc04Q==", "requires": { - "balloon-css": "0.5.0", + "balloon-css": "^0.5.0", "promise-polyfill": "7.1.0" } }, @@ -781,7 +781,7 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -789,7 +789,7 @@ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" } }, "extend": { @@ -802,7 +802,7 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "filename-regex": { @@ -815,11 +815,11 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "finalhandler": { @@ -828,12 +828,12 @@ "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", "requires": { "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" }, "dependencies": { "debug": { @@ -851,7 +851,7 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", "requires": { - "debug": "3.1.0" + "debug": "^3.1.0" } }, "for-in": { @@ -864,7 +864,7 @@ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "form-data": { @@ -872,9 +872,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "mime-types": "^2.1.12" } }, "formidable": { @@ -898,8 +898,8 @@ "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==", "optional": true, "requires": { - "nan": "2.10.0", - "node-pre-gyp": "0.9.1" + "nan": "^2.9.2", + "node-pre-gyp": "^0.9.0" }, "dependencies": { "abbrev": { @@ -1359,7 +1359,7 @@ "resolved": "https://registry.npmjs.org/gitment/-/gitment-0.0.3.tgz", "integrity": "sha1-28y610gLE0W2VpE71w7/eSp7OLg=", "requires": { - "mobx": "3.6.2" + "mobx": "^3.1.7" } }, "glob": { @@ -1368,11 +1368,11 @@ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", "optional": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-base": { @@ -1380,8 +1380,8 @@ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } }, "glob-parent": { @@ -1389,7 +1389,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "globals": { @@ -1407,7 +1407,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -1420,33 +1420,33 @@ "resolved": "https://registry.npmjs.org/hexo/-/hexo-3.7.1.tgz", "integrity": "sha512-+RRN4C8oWYzEnW0NtqNrIfIITRTvXpMoE6OrK5aK4nrO+4lzp0JfZkoxnsINVXUPmzHRimLWUzO95x9lt33jEg==", "requires": { - "abbrev": "1.1.1", - "archy": "1.0.0", - "bluebird": "3.5.1", - "chalk": "2.4.1", + "abbrev": "^1.0.7", + "archy": "^1.0.0", + "bluebird": "^3.4.0", + "chalk": "^2.3.1", "cheerio": "0.22.0", - "hexo-cli": "1.1.0", - "hexo-front-matter": "0.2.3", - "hexo-fs": "0.2.3", - "hexo-i18n": "0.2.1", - "hexo-log": "0.2.0", - "hexo-util": "0.6.3", - "js-yaml": "3.11.0", - "lodash": "4.17.10", - "minimatch": "3.0.4", - "moment": "2.22.1", - "moment-timezone": "0.5.17", - "nunjucks": "3.1.2", - "pretty-hrtime": "1.0.3", - "resolve": "1.7.1", - "strip-ansi": "4.0.0", - "strip-indent": "2.0.0", + "hexo-cli": "^1.1.0", + "hexo-front-matter": "^0.2.2", + "hexo-fs": "^0.2.0", + "hexo-i18n": "^0.2.1", + "hexo-log": "^0.2.0", + "hexo-util": "^0.6.3", + "js-yaml": "^3.6.1", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "moment": "^2.19.4", + "moment-timezone": "^0.5.14", + "nunjucks": "^3.1.2", + "pretty-hrtime": "^1.0.2", + "resolve": "^1.5.0", + "strip-ansi": "^4.0.0", + "strip-indent": "^2.0.0", "swig-extras": "0.0.1", - "swig-templates": "2.0.2", - "text-table": "0.2.0", - "tildify": "1.2.0", - "titlecase": "1.1.2", - "warehouse": "2.2.0" + "swig-templates": "^2.0.2", + "text-table": "^0.2.0", + "tildify": "^1.2.0", + "titlecase": "^1.1.2", + "warehouse": "^2.2.0" }, "dependencies": { "ansi-styles": { @@ -1459,17 +1459,17 @@ "resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-1.1.0.tgz", "integrity": "sha512-IWQPppwgmj1iBUcP5mpcMg3Tre6a8Qlr8ejXw6naZiJNSepSgh4mS3KiNPKDa2qQIgPDqJYJzNVFLw+RLA9CkA==", "requires": { - "abbrev": "1.1.1", - "bluebird": "3.5.1", - "chalk": "1.1.3", - "command-exists": "1.2.6", - "hexo-fs": "0.2.3", - "hexo-log": "0.2.0", - "hexo-util": "0.6.3", - "minimist": "1.2.0", - "object-assign": "4.1.1", - "resolve": "1.7.1", - "tildify": "1.2.0" + "abbrev": "^1.0.7", + "bluebird": "^3.4.0", + "chalk": "^1.1.3", + "command-exists": "^1.2.0", + "hexo-fs": "^0.2.0", + "hexo-log": "^0.2.0", + "hexo-util": "^0.6.0", + "minimist": "^1.2.0", + "object-assign": "^4.1.0", + "resolve": "^1.5.0", + "tildify": "^1.2.0" }, "dependencies": { "chalk": { @@ -1477,11 +1477,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { @@ -1489,7 +1489,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -1506,9 +1506,9 @@ "resolved": "https://registry.npmjs.org/hexo-bunyan/-/hexo-bunyan-1.0.0.tgz", "integrity": "sha512-RymT8Ck+K77mLt9BEYNb4uyfC7RIQnU5N3laXowMrS28jj2h89VHJCOnhV00mmta4fHRqNa07kP1Hrn17nvMkQ==", "requires": { - "moment": "2.22.1", - "mv": "2.1.1", - "safe-json-stringify": "1.1.0" + "moment": "^2.10.6", + "mv": "~2", + "safe-json-stringify": "~1" } }, "hexo-deployer-git": { @@ -1516,13 +1516,13 @@ "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-0.3.1.tgz", "integrity": "sha512-JSwSmTSknGpaiooGXwmP7sAhoSNW3c+xmBiCc5yyrvRSfQ3zIYWjmcqNXSj8m2DmheqQNgt5D4M7quYjw+L6tA==", "requires": { - "babel-eslint": "7.2.3", - "bluebird": "3.5.1", - "chalk": "1.1.3", - "hexo-fs": "0.2.3", - "hexo-util": "0.6.3", - "moment": "2.22.1", - "swig": "1.4.2" + "babel-eslint": "^7.2.1", + "bluebird": "^3.5.0", + "chalk": "^1.1.3", + "hexo-fs": "^0.2.0", + "hexo-util": "^0.6.0", + "moment": "^2.18.0", + "swig": "^1.4.2" }, "dependencies": { "ansi-styles": { @@ -1540,11 +1540,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "source-map": { @@ -1552,7 +1552,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=", "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } }, "strip-ansi": { @@ -1560,7 +1560,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -1573,8 +1573,8 @@ "resolved": "https://registry.npmjs.org/swig/-/swig-1.4.2.tgz", "integrity": "sha1-QIXKBFM2kQS11IPihBs5t64aq6U=", "requires": { - "optimist": "0.6.1", - "uglify-js": "2.4.24" + "optimist": "~0.6", + "uglify-js": "~2.4" } }, "uglify-js": { @@ -1582,10 +1582,10 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=", "requires": { - "async": "0.2.10", + "async": "~0.2.6", "source-map": "0.1.34", - "uglify-to-browserify": "1.0.2", - "yargs": "3.5.4" + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.5.4" } }, "window-size": { @@ -1603,8 +1603,8 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=", "requires": { - "camelcase": "1.2.1", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "decamelize": "^1.0.0", "window-size": "0.1.0", "wordwrap": "0.0.2" } @@ -1617,13 +1617,13 @@ "integrity": "sha512-xRunvmGgEi4ER+fvwx85xeScyO5ci/gcypa6VwNlydq0alR8dq5tT0QKKnr89QWcJwJYSnlsP/xOjuJPRlj8gw==", "requires": { "ejs": "2.5.6", - "hexo-fs": "0.2.3", - "hexo-i18n": "0.2.1", - "hexo-log": "0.2.0", - "path": "0.12.7", - "urllib-sync": "1.1.4", - "xmldom": "0.1.27", - "xpath": "0.0.24" + "hexo-fs": "^0.2.2", + "hexo-i18n": "^0.2.1", + "hexo-log": "^0.2.0", + "path": "^0.12.7", + "urllib-sync": "^1.0.1", + "xmldom": "^0.1.27", + "xpath": "^0.0.24" }, "dependencies": { "ejs": { @@ -1638,7 +1638,7 @@ "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-0.2.3.tgz", "integrity": "sha1-x8qO9CDqNr2F6ECKLoyb9J76YF4=", "requires": { - "js-yaml": "3.11.0" + "js-yaml": "^3.6.1" } }, "hexo-fs": { @@ -1646,10 +1646,10 @@ "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-0.2.3.tgz", "integrity": "sha512-rLB1rMVUW3csAljvJgHfyjemL0BrmcUZfBf9hJe6S0pA53igFa3ON0PFwomvoLs1Wdmjs9Awnw9Tru4PjWFSlQ==", "requires": { - "bluebird": "3.5.1", - "chokidar": "1.7.0", - "escape-string-regexp": "1.0.5", - "graceful-fs": "4.1.11" + "bluebird": "^3.4.0", + "chokidar": "^1.5.2", + "escape-string-regexp": "^1.0.5", + "graceful-fs": "^4.1.4" } }, "hexo-generator-archive": { @@ -1658,7 +1658,7 @@ "integrity": "sha512-jPbMtibqkJnAX3hCwhYhK3r6cqy9OKQsVEScjk7LDok+iPmFmkKCNdU/OccxGe1CWAZpT+ta4+LknwNeHG2G4w==", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "2.1.1" + "object-assign": "^2.0.0" }, "dependencies": { "object-assign": { @@ -1674,7 +1674,7 @@ "integrity": "sha1-uealhiUwqDvdfaTIGcG58+TMtLI=", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "2.1.1" + "object-assign": "^2.0.0" }, "dependencies": { "object-assign": { @@ -1689,8 +1689,8 @@ "resolved": "https://registry.npmjs.org/hexo-generator-feed/-/hexo-generator-feed-1.2.2.tgz", "integrity": "sha512-4jcvVhFgpEFRJ7A+KhBSfWoQaewRBjcVWEO4OmBgnvaZOm6XwK+b5ZXx/8BpujCLHbjXWzglXhiT7qFFS/nvzw==", "requires": { - "nunjucks": "3.1.2", - "object-assign": "4.1.1" + "nunjucks": "^3.0.0", + "object-assign": "^4.1.1" } }, "hexo-generator-index": { @@ -1699,7 +1699,7 @@ "integrity": "sha1-kEIin8rHmq9wBXXaGTMr8/fuXF0=", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "4.1.1" + "object-assign": "^4.0.1" } }, "hexo-generator-searchdb": { @@ -1707,9 +1707,9 @@ "resolved": "https://registry.npmjs.org/hexo-generator-searchdb/-/hexo-generator-searchdb-1.0.8.tgz", "integrity": "sha1-BCRSVuFBOmYxOTLb8cCn5WhVkwE=", "requires": { - "ejs": "1.0.0", - "striptags": "3.1.1", - "utils-merge": "1.0.1" + "ejs": "^1.0.0", + "striptags": "latest", + "utils-merge": "^1.0.0" }, "dependencies": { "ejs": { @@ -1729,9 +1729,9 @@ "resolved": "https://registry.npmjs.org/hexo-generator-sitemap/-/hexo-generator-sitemap-1.2.0.tgz", "integrity": "sha1-MBj419Hi5Cs/caZacxb/z1g7w/M=", "requires": { - "minimatch": "3.0.4", - "nunjucks": "2.5.2", - "object-assign": "4.1.1" + "minimatch": "^3.0.0", + "nunjucks": "^2.3.0", + "object-assign": "^4.0.1" }, "dependencies": { "nunjucks": { @@ -1739,9 +1739,9 @@ "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-2.5.2.tgz", "integrity": "sha1-6n00bnhbikh0Zmw8yp4YxXf7oiw=", "requires": { - "asap": "2.0.6", - "chokidar": "1.7.0", - "yargs": "3.32.0" + "asap": "^2.0.3", + "chokidar": "^1.6.0", + "yargs": "^3.32.0" } } } @@ -1752,7 +1752,7 @@ "integrity": "sha1-xXFYRrtB5X2cIMHWbX2yGhq/emI=", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "4.1.1" + "object-assign": "^4.0.1" } }, "hexo-i18n": { @@ -1760,7 +1760,7 @@ "resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-0.2.1.tgz", "integrity": "sha1-hPFBQyvwnYtVjth4xygWS20c1t4=", "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "^1.0.2" } }, "hexo-leancloud-counter-security": { @@ -1768,8 +1768,8 @@ "resolved": "https://registry.npmjs.org/hexo-leancloud-counter-security/-/hexo-leancloud-counter-security-1.3.2.tgz", "integrity": "sha512-vWxepM1Hz+W/ommkVicaFx7ATUuTWvhVq6A/iyMfmSr05uchKZguPLolv4oLD03BUpY/RU8ZLjeOwrGANLAiYA==", "requires": { - "leancloud-storage": "3.6.8", - "readline-sync": "1.4.9" + "leancloud-storage": "^3.5.0", + "readline-sync": "^1.4.7" } }, "hexo-log": { @@ -1777,8 +1777,8 @@ "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-0.2.0.tgz", "integrity": "sha512-fzoc+GQexxPPILTjoOQILnA3ZG2MFgqMBVel4xvJ11pXptw9+f97ynTgDAExXafyp9Nz2ChXRuqlCYgPtZSlxQ==", "requires": { - "chalk": "1.1.3", - "hexo-bunyan": "1.0.0" + "chalk": "^1.1.1", + "hexo-bunyan": "^1.0.0" }, "dependencies": { "ansi-styles": { @@ -1791,11 +1791,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { @@ -1803,7 +1803,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -1818,7 +1818,7 @@ "resolved": "https://registry.npmjs.org/hexo-pagination/-/hexo-pagination-0.0.2.tgz", "integrity": "sha1-jPRwx9sN5bGKOSanbesZQBXffys=", "requires": { - "utils-merge": "1.0.1" + "utils-merge": "^1.0.0" } }, "hexo-renderer-ejs": { @@ -1826,8 +1826,8 @@ "resolved": "https://registry.npmjs.org/hexo-renderer-ejs/-/hexo-renderer-ejs-0.3.1.tgz", "integrity": "sha512-XN8pYJU+Wr3dT8ipqEPRlOBySJpd1C5NUBBzgZpVSVBC/6L36O0YZI/Qd5NxQqwfGfSuKQ8N5iMyjmRXSR1MdA==", "requires": { - "ejs": "2.5.9", - "object-assign": "4.1.1" + "ejs": "^2.3.4", + "object-assign": "^4.0.1" } }, "hexo-renderer-marked": { @@ -1835,10 +1835,10 @@ "resolved": "https://registry.npmjs.org/hexo-renderer-marked/-/hexo-renderer-marked-0.3.2.tgz", "integrity": "sha512-joSLeHB0YRkuViIPQlRz4A+zfJKPNHT+rABFgPHiT1zL9eeTUPxoLL4h7kcgOwRLAontVScaxP2Sie15mNitFg==", "requires": { - "hexo-util": "0.6.3", - "marked": "0.3.19", - "object-assign": "4.1.1", - "strip-indent": "2.0.0" + "hexo-util": "^0.6.2", + "marked": "^0.3.9", + "object-assign": "^4.1.1", + "strip-indent": "^2.0.0" } }, "hexo-renderer-stylus": { @@ -1846,8 +1846,8 @@ "resolved": "https://registry.npmjs.org/hexo-renderer-stylus/-/hexo-renderer-stylus-0.3.3.tgz", "integrity": "sha1-xU6ifh/Y48ipp6hM+6itNUEiyn8=", "requires": { - "nib": "1.1.2", - "stylus": "0.54.5" + "nib": "^1.1.2", + "stylus": "^0.54.5" } }, "hexo-server": { @@ -1855,15 +1855,15 @@ "resolved": "https://registry.npmjs.org/hexo-server/-/hexo-server-0.2.2.tgz", "integrity": "sha512-/KkOYMIGylNoMtnlgas84Kw18A60WU3BVfo8ZnTHy8omCsAz2Z+aK6ddR4PpSmTdLeKDsiZj4ZSg86ZQ+FZzrA==", "requires": { - "bluebird": "3.5.1", - "chalk": "1.1.3", - "compression": "1.7.2", - "connect": "3.6.6", - "mime": "1.6.0", - "morgan": "1.9.0", - "object-assign": "4.1.1", - "opn": "4.0.2", - "serve-static": "1.13.2" + "bluebird": "^3.0.6", + "chalk": "^1.1.1", + "compression": "^1.6.0", + "connect": "3.x", + "mime": "^1.3.4", + "morgan": "^1.6.1", + "object-assign": "^4.0.1", + "opn": "^4.0.0", + "serve-static": "^1.10.0" }, "dependencies": { "ansi-styles": { @@ -1876,11 +1876,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { @@ -1888,7 +1888,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -1908,10 +1908,10 @@ "resolved": "https://registry.npmjs.org/hexo-tag-dplayer/-/hexo-tag-dplayer-0.3.3.tgz", "integrity": "sha512-Y2sweNkcYNr9cLt2J35V0R40P7rriPiW/99shfEdWy5xYxXNzCBKKuDC/YAr2XzzZk29WM5YPID9f2w3veaqdA==", "requires": { - "dplayer": "1.22.2", - "hexo-fs": "0.2.3", - "hexo-log": "0.2.0", - "hexo-util": "0.6.3" + "dplayer": "^1.6.0", + "hexo-fs": "^0.2.2", + "hexo-log": "^0.2.0", + "hexo-util": "^0.6.2" } }, "hexo-util": { @@ -1919,12 +1919,12 @@ "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-0.6.3.tgz", "integrity": "sha512-zPxaqCWZz3/25SAB4FlrRtWktJ+Pr+vBiv/nyHpXKgXPt1m70liViKlRwWLqDmRjJ72x6/k4qCEeXHajvcGHUw==", "requires": { - "bluebird": "3.5.1", - "camel-case": "3.0.0", - "cross-spawn": "4.0.2", - "highlight.js": "9.12.0", - "html-entities": "1.2.1", - "striptags": "2.2.1" + "bluebird": "^3.4.0", + "camel-case": "^3.0.0", + "cross-spawn": "^4.0.0", + "highlight.js": "^9.4.0", + "html-entities": "^1.2.0", + "striptags": "^2.1.1" } }, "highlight.js": { @@ -1942,12 +1942,12 @@ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.2", - "domutils": "1.5.1", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" } }, "http-errors": { @@ -1955,10 +1955,10 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "depd": "1.1.2", + "depd": "~1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": "1.5.0" + "statuses": ">= 1.4.0 < 2" }, "dependencies": { "statuses": { @@ -1973,7 +1973,7 @@ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", "requires": { - "ms": "2.0.0" + "ms": "^2.0.0" } }, "iconv-lite": { @@ -1981,7 +1981,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, "inflight": { @@ -1989,8 +1989,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -2003,7 +2003,7 @@ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "invert-kv": { @@ -2016,7 +2016,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "requires": { - "binary-extensions": "1.11.0" + "binary-extensions": "^1.0.0" } }, "is-buffer": { @@ -2034,7 +2034,7 @@ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -2052,7 +2052,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-glob": { @@ -2060,7 +2060,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-number": { @@ -2068,7 +2068,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-plain-object": { @@ -2076,7 +2076,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" }, "dependencies": { "isobject": { @@ -2129,8 +2129,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsonparse": { @@ -2143,7 +2143,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "lazy-cache": { @@ -2156,7 +2156,7 @@ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "leancloud-realtime": { @@ -2164,16 +2164,16 @@ "resolved": "https://registry.npmjs.org/leancloud-realtime/-/leancloud-realtime-4.0.0-beta.5.tgz", "integrity": "sha512-SMfxjexc7d36AChg//XRS+uVdY9C/Id3NaXW8yQSdlQGLR07EwiDvD8Vns/aER4Kvsx8kWYtQ0tOmo3LZkOhDA==", "requires": { - "axios": "0.18.0", - "babel-runtime": "6.26.0", - "base64-arraybuffer": "0.1.5", - "debug": "3.1.0", - "eventemitter3": "3.1.0", - "javascript-state-machine": "2.4.0", - "lodash": "4.17.10", - "protobufjs": "5.0.2", - "uuid": "3.2.1", - "ws": "4.1.0" + "axios": "^0.18.0", + "babel-runtime": "^6.6.1", + "base64-arraybuffer": "^0.1.5", + "debug": "^3.0.0", + "eventemitter3": "^3.0.0", + "javascript-state-machine": "^2.3.5", + "lodash": "^4.6.0", + "protobufjs": "^5.0.1", + "uuid": "^3.0.0", + "ws": "^4.0.0" }, "dependencies": { "eventemitter3": { @@ -2193,15 +2193,15 @@ "resolved": "https://registry.npmjs.org/leancloud-storage/-/leancloud-storage-3.6.8.tgz", "integrity": "sha512-Wp7GoqhSyaWFqHa0UzLn0YekYz/HGEFJJq2f1Sgv6EPCh9EsD6IXkpvdqEr7cgdZM11831ZCU+6nAamx5m/LEg==", "requires": { - "debug": "3.1.0", + "debug": "^3.1.0", "es6-promise": "4.2.3", - "eventemitter3": "2.0.3", - "leancloud-realtime": "4.0.0-beta.5", - "leancloud-realtime-plugin-live-query": "1.1.1", - "localstorage-memory": "1.0.2", - "md5": "2.2.1", - "superagent": "3.8.2", - "underscore": "1.9.0" + "eventemitter3": "^2.0.3", + "leancloud-realtime": "^4.0.0-beta.5", + "leancloud-realtime-plugin-live-query": "^1.1.1", + "localstorage-memory": "^1.0.1", + "md5": "^2.0.0", + "superagent": "^3.3.1", + "underscore": "^1.8.3" } }, "localstorage-memory": { @@ -2289,7 +2289,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0" } }, "lower-case": { @@ -2302,8 +2302,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "markdown": { @@ -2311,7 +2311,7 @@ "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=", "requires": { - "nopt": "2.1.2" + "nopt": "~2.1.1" } }, "marked": { @@ -2324,9 +2324,9 @@ "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", "requires": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "1.1.6" + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" } }, "media-typer": { @@ -2344,19 +2344,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, "mime": { @@ -2374,7 +2374,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "1.33.0" + "mime-db": "~1.33.0" } }, "minimatch": { @@ -2382,7 +2382,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -2420,7 +2420,7 @@ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.17.tgz", "integrity": "sha512-Y/JpVEWIOA9Gho4vO15MTnW1FCmHi3ypprrkUaxsZ1TKg3uqC8q/qMBjTddkHoiwwZN3qvZSr4zJP7x9V3LpXA==", "requires": { - "moment": "2.22.1" + "moment": ">= 2.9.0" } }, "morgan": { @@ -2428,11 +2428,11 @@ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", "requires": { - "basic-auth": "2.0.0", + "basic-auth": "~2.0.0", "debug": "2.6.9", - "depd": "1.1.2", - "on-finished": "2.3.0", - "on-headers": "1.0.1" + "depd": "~1.1.1", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" }, "dependencies": { "debug": { @@ -2456,9 +2456,9 @@ "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", "optional": true, "requires": { - "mkdirp": "0.5.1", - "ncp": "2.0.0", - "rimraf": "2.4.5" + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" } }, "nan": { @@ -2491,7 +2491,7 @@ "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "requires": { - "lower-case": "1.1.4" + "lower-case": "^1.1.1" } }, "node-fingerprint": { @@ -2504,7 +2504,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "normalize-path": { @@ -2512,7 +2512,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "nth-check": { @@ -2520,7 +2520,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", "requires": { - "boolbase": "1.0.0" + "boolbase": "~1.0.0" } }, "number-is-nan": { @@ -2533,11 +2533,11 @@ "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.1.2.tgz", "integrity": "sha512-pJXncV07mmiuIDL9OqdNkcpvifuDMzMq9qBQT9SHasAS7AEwzNp/r/jHNl+9O0+zsldcdWG9ZtXo/nwu2cTqXA==", "requires": { - "a-sync-waterfall": "1.0.0", - "asap": "2.0.6", - "chokidar": "1.7.0", - "postinstall-build": "5.0.1", - "yargs": "3.32.0" + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "chokidar": "^1.6.0", + "postinstall-build": "^5.0.1", + "yargs": "^3.32.0" } }, "object-assign": { @@ -2550,8 +2550,8 @@ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "on-finished": { @@ -2572,7 +2572,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "opn": { @@ -2580,8 +2580,8 @@ "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", "requires": { - "object-assign": "4.1.1", - "pinkie-promise": "2.0.1" + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" } }, "optimist": { @@ -2589,8 +2589,8 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" }, "dependencies": { "minimist": { @@ -2615,7 +2615,7 @@ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "requires": { - "lcid": "1.0.0" + "lcid": "^1.0.0" } }, "os-name": { @@ -2623,8 +2623,8 @@ "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", "integrity": "sha1-GzefZINa98Wn9JizV8uVIVwVnt8=", "requires": { - "osx-release": "1.1.0", - "win-release": "1.1.1" + "osx-release": "^1.0.0", + "win-release": "^1.0.0" } }, "osx-release": { @@ -2632,7 +2632,7 @@ "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", "integrity": "sha1-8heRGigTaUmvG/kwiyQeJzfTzWw=", "requires": { - "minimist": "1.2.0" + "minimist": "^1.1.0" } }, "parse-glob": { @@ -2640,10 +2640,10 @@ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, "parseurl": { @@ -2656,8 +2656,8 @@ "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", "requires": { - "process": "0.11.10", - "util": "0.10.3" + "process": "^0.11.1", + "util": "^0.10.3" } }, "path-is-absolute": { @@ -2680,7 +2680,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "postinstall-build": { @@ -2718,10 +2718,10 @@ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.2.tgz", "integrity": "sha1-WXSNfc8D0tsiwT2p/rAk4Wq4DJE=", "requires": { - "ascli": "1.0.1", - "bytebuffer": "5.0.1", - "glob": "7.1.2", - "yargs": "3.32.0" + "ascli": "~1", + "bytebuffer": "~5", + "glob": "^7.0.5", + "yargs": "^3.10.0" }, "dependencies": { "glob": { @@ -2729,12 +2729,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } } } @@ -2754,8 +2754,8 @@ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { @@ -2763,7 +2763,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2771,7 +2771,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2781,7 +2781,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2796,13 +2796,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "readdirp": { @@ -2810,10 +2810,10 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.6", - "set-immediate-shim": "1.0.1" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" } }, "readline-sync": { @@ -2831,7 +2831,7 @@ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "remove-trailing-separator": { @@ -2854,7 +2854,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "right-align": { @@ -2862,7 +2862,7 @@ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "rimraf": { @@ -2871,7 +2871,7 @@ "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", "optional": true, "requires": { - "glob": "6.0.4" + "glob": "^6.0.1" } }, "safe-buffer": { @@ -2906,18 +2906,18 @@ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "requires": { "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.6.3", + "http-errors": "~1.6.2", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.4.0" + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" }, "dependencies": { "debug": { @@ -2945,9 +2945,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", "send": "0.16.2" } }, @@ -2981,9 +2981,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" }, "dependencies": { "strip-ansi": { @@ -2991,7 +2991,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -3001,7 +3001,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -3009,7 +3009,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" }, "dependencies": { "ansi-regex": { @@ -3034,12 +3034,12 @@ "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", "requires": { - "css-parse": "1.7.0", - "debug": "3.1.0", - "glob": "7.0.6", - "mkdirp": "0.5.1", - "sax": "0.5.8", - "source-map": "0.1.43" + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" }, "dependencies": { "glob": { @@ -3047,12 +3047,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "source-map": { @@ -3060,7 +3060,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -3070,16 +3070,16 @@ "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", "requires": { - "component-emitter": "1.2.1", - "cookiejar": "2.1.1", - "debug": "3.1.0", - "extend": "3.0.1", - "form-data": "2.3.2", - "formidable": "1.2.1", - "methods": "1.1.2", - "mime": "1.6.0", - "qs": "6.5.1", - "readable-stream": "2.3.6" + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.1.1", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.0.5" } }, "supports-color": { @@ -3087,7 +3087,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "swig-extras": { @@ -3095,7 +3095,7 @@ "resolved": "https://registry.npmjs.org/swig-extras/-/swig-extras-0.0.1.tgz", "integrity": "sha1-tQP+3jcqucJMasaMr2VrzvGHIyg=", "requires": { - "markdown": "0.5.0" + "markdown": "~0.5.0" } }, "swig-templates": { @@ -3103,7 +3103,7 @@ "resolved": "https://registry.npmjs.org/swig-templates/-/swig-templates-2.0.2.tgz", "integrity": "sha1-0lAqcwMBk1b06nbqkGXU9Yr2q3U=", "requires": { - "optimist": "0.6.1", + "optimist": "~0.6", "uglify-js": "2.6.0" } }, @@ -3122,7 +3122,7 @@ "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", "requires": { - "os-homedir": "1.0.2" + "os-homedir": "^1.0.0" } }, "titlecase": { @@ -3140,10 +3140,10 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.0.tgz", "integrity": "sha1-JeqhzDVQ45QQzu+v0c+7a20V8AE=", "requires": { - "async": "0.2.10", - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "async": "~0.2.6", + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "camelcase": { @@ -3156,8 +3156,8 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" } }, @@ -3176,9 +3176,9 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } @@ -3209,14 +3209,14 @@ "resolved": "https://registry.npmjs.org/urllib/-/urllib-2.11.1.tgz", "integrity": "sha1-5F1Xnxu+Qsn64hzf9yVo88jIyUU=", "requires": { - "any-promise": "1.3.0", - "debug": "2.6.9", - "default-user-agent": "1.0.0", - "digest-header": "0.0.1", - "humanize-ms": "1.2.1", - "iconv-lite": "0.4.23", - "media-typer": "0.3.0", - "statuses": "1.3.1" + "any-promise": "^1.2.0", + "debug": "^2.2.0", + "default-user-agent": "^1.0.0", + "digest-header": "^0.0.1", + "humanize-ms": "^1.2.0", + "iconv-lite": "^0.4.13", + "media-typer": "^0.3.0", + "statuses": "^1.3.0" }, "dependencies": { "debug": { @@ -3234,8 +3234,8 @@ "resolved": "https://registry.npmjs.org/urllib-sync/-/urllib-sync-1.1.4.tgz", "integrity": "sha1-yRMI9JkaZe5iDWc85g/dJLvRjMo=", "requires": { - "urllib": "2.11.1", - "utility": "1.7.1" + "urllib": "~2.11.0", + "utility": "~1.7.1" } }, "util": { @@ -3263,8 +3263,8 @@ "resolved": "https://registry.npmjs.org/utility/-/utility-1.7.1.tgz", "integrity": "sha1-+3TN3IFqQRJ2ym6MqZMkfyPusKc=", "requires": { - "copy-to": "2.0.1", - "escape-html": "1.0.3" + "copy-to": "~2.0.1", + "escape-html": "~1.0.3" } }, "utils-merge": { @@ -3287,12 +3287,12 @@ "resolved": "https://registry.npmjs.org/warehouse/-/warehouse-2.2.0.tgz", "integrity": "sha1-XQnWSUKZK+Zn2PfIagnCuK6gQGI=", "requires": { - "JSONStream": "1.3.2", - "bluebird": "3.5.1", - "cuid": "1.3.8", - "graceful-fs": "4.1.11", - "is-plain-object": "2.0.4", - "lodash": "4.17.10" + "JSONStream": "^1.0.7", + "bluebird": "^3.2.2", + "cuid": "~1.3.8", + "graceful-fs": "^4.1.3", + "is-plain-object": "^2.0.1", + "lodash": "^4.2.1" } }, "which": { @@ -3300,7 +3300,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "win-release": { @@ -3308,7 +3308,7 @@ "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", "requires": { - "semver": "5.5.0" + "semver": "^5.0.1" } }, "window-size": { @@ -3326,8 +3326,8 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "strip-ansi": { @@ -3335,7 +3335,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -3350,8 +3350,8 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", "requires": { - "async-limiter": "1.0.0", - "safe-buffer": "5.1.2" + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0" } }, "xmldom": { @@ -3379,13 +3379,13 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", "requires": { - "camelcase": "2.1.1", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "os-locale": "1.4.0", - "string-width": "1.0.2", - "window-size": "0.1.4", - "y18n": "3.2.1" + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" } } } diff --git a/source/_posts/linux-build.md b/source/_posts/linux-build.md index abe11f82b..609734363 100644 --- a/source/_posts/linux-build.md +++ b/source/_posts/linux-build.md @@ -21,21 +21,261 @@ tag: Build 查看当前系统版本信息 ```bash -cat /etc/redhat-release +lsb_release -a ``` +以下软件版本,请下载对应支持系统的软件 ## Java +[官方下载地址](http://www.oracle.com/technetwork/java/javase/downloads/index.html),选择需要的版本下载安装包 +>官方提供了`.rpm`,`.gz`两种格式安装包 + +```bash +# 1.下载安装包 +# 拷贝安装包到需要安装的服务器 +# 2.解压并安装 +# `.rpm`格式安装(jdk-xxx.rpm更换成对应的文件名) +sudo rpm -ivh jdk-xxx.rpm +# `.gz`格式安装(解压到指定目录,常存放`/usr/java/`路径) +tar zxvf jdk-xxx.tar.gz -C /usr/java/ +# 3.设置环境变量 +vim /etc/profile +# JAVA_HOME=/usr/java/jdk1.8.0_172 (修改这里路径,指向jdk安装路径) +# PATH=$JAVA_HOME/bin:$PATH +# CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar +# export JAVA_HOME PATH CLASSPATH +# 4.编译配置文件,使修改生效 +source /etc/profile +# 5.验证jdk是否安装成功 +java –version +``` + ## Tomcat +[官方下载地址](http://tomcat.apache.org),选择需要的版本下载安装包 +>官方提供了`.zip`,`.gz`两种格式安装包,Linux服务器下载`Core`类即可 + +```bash +# 1.下载安装文件 +wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.8/bin/apache-tomcat-9.0.8.tar.gz +# 2.解压安装文件(解压到指定目录,常存放`/usr/tomcat/`路径) +tar -zxvf apache-tomcat-9.0.8.tar.gz -C /usr/tomcat/ +# 3.启动tomcat +cd /usr/local/tomcat/bin +./startup.sh +# 4.关闭tomcat +./shutdown.sh +``` + +### 配置Web管理账号 +* 修改文件conf/tomcat-users.xml,在元素中添加帐号密码,需要指定角色 +```bash +vim /usr/local/tomcat/conf/tomcat-users.xml +# +# +# +``` + +### 配置端口 +* 可以修改conf目录下的文件server.xml,修改Connector元素(Tomcat的默认端口是8080),需要重新启动Tomcat服务生效 +```bash +vim /usr/local/tomcat/conf/server.xml +# +``` + +### 应用部署 +* 放置需部署包到容器中`webapps`路径 +```bash +cd /usr/local/tomcat/webapps +``` +* 启动服务 +```bash +cd /usr/local/tomcat/bin +./startup.sh +``` + ## Apache +一般系统中以及包含apache应用 +[官方下载地址](http://httpd.apache.org/download.cgi),选择需要的版本下载安装包 +>官方提供了`.bz2`,`.gz`两种格式安装包 + +### 安装 +查看系统中是否已包含httpd应用 +``` +rpm -qa | grep httpd 或 yum list | grep httpd +``` + +* 方式一 +```bash +# 1.下载需要的版本文件 +wget http://apache.claz.org//httpd/httpd-2.4.33.tar.gz +# 2.解压安装文件(解压到指定目录,常存放`/usr/local/httpd/`路径) +tar -zxvf httpd-2.4.33.tar.gz -C /usr/local/httpd/ +``` + +* 方式二(推荐) +```bash +# 1.下载安装httpd +yum install httpd +``` + +### 卸载 +```bash +yum erase httpd.x86_64 或 rpm -e httpd.x86_64 +``` + +### 常用命令 +```bash +# 查看服务运行状态 +systemctl status httpd.service +# 启动apache服务 +systemctl start httpd.service +# 停止apache服务 +systemctl stop httpd.service +``` + +RPM默认安装路径: + +| 路径 | 说明 | +| ---------- | --- | +| /etc | 一些设置文件放置的目录如/etc/crontab | +| /usr/bin | 一些可执行文件 | +| /usr/lib | 一些程序使用的动态函数库 | +| /usr/share/doc | 一些基本的软件使用手册与帮助文档 | +| /usr/share/man | 一些man page文件 | ## Nginx +[官方下载地址](http://nginx.org/download),选择需要的版本下载安装包(最新安装版本1.14.0) +>官方提供了`.zip`,`.gz`两种格式安装包 + +### 安装 + +* 方式一 +```bash +# 1.下载安装文件 +wget http://nginx.org/download/nginx-1.14.0.tar.gz +# 2.解压安装文件(解压到指定目录,常存放`/usr/local/`路径) +tar -zxvf nginx-1.14.0.tar.gz -C /usr/local/ +# 3. 编译安装依赖库 +cd /usr/local/nginx/ +./configure +``` + +* 方式二 +```bash +# 默认安装路径/etc/nginx/ +yum install nginx +``` + +### 常用命令 +* 加压文件安装常用命令 +```bash +# 停止ngix +/usr/local/nginx/sbin/nginx -s quit +# 重新载入nginx(当配置信息发生修改时) +/usr/local/nginx/sbin/nginx -s reload +# 查看版本 +/usr/local/nginx/sbin/nginx -v +# 查看nginx的配置文件的目录 +/usr/local/nginx/sbin/nginx -t +# 查看帮助信息 +/usr/local/nginx/sbin/nginx -h +``` +* yum安装常用命令 +```bash +# 启动 +systemctl start nginx +# 停止 +systemctl stop nginx +# 重启 +systemctl restart nginx +# 查看运行状态 +systemctl status nginx +# 开机启动 +systemctl enable nginx +``` ## Node +一般系统中以及包含apache应用 +[官方下载地址](https://nodejs.org),选择需要的版本下载安装包 +>官方提供了`.gz`,`.7z`,`zip`等多种格式安装包 + +### 安装 +```bash +# 1.下载安装文件 +wget https://nodejs.org/download/chakracore-release/v8.6.0/node-v8.6.0-linux-x64.tar.gz +# 2.解压安装文件(解压到当前目录) +tar -zxf node-v8.6.0-linux-x64.tar.gz +# 3.建立软链接,实现全局访问 +ln -s /root/node-v8.6.0-linux-x64/bin/node /usr/local/bin/node +ln -s /root/node-v8.6.0-linux-x64/bin/npm /usr/local/bin/npm +``` ## Swagger -## YApi +comming soon~ ## Docker +comming soon~ + +## 常用命令 + +### 文件查找 +#### find +find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。 +* 基本格式: +find path expression +* 示例: + * 在根目录下查找文件httpd.conf,表示在整个硬盘查找 + find / -name httpd.conf + * 表示当前目录下查找文件名开头是字符串‘srm’的文件 + find . -name 'srm*' + * 查找在系统中最后10分钟访问的文件(access time) + find / -amin -10 + * 查找在系统中属于fred这个用户的文件 + find / -user fred + * 查找出小于1000KB的文件 + find / -size -1000k + +#### grep +grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。 +* 基本格式: +find expression +* 主要参数: + -c:只输出匹配行的计数。 + -i:不区分大小写 + -h:查询多文件时不显示文件名。 + -l:查询多文件时只输出包含匹配字符的文件名。 + -n:显示匹配行及行号。 + -s:不显示不存在或无匹配文本的错误信息。 + -v:显示不包含匹配文本的所有行。 +* 示例: + * 显示所有包含每行字符串至少有5个连续小写字符的字符串的行 + grep ‘[a-z]\{5\}’ aa + * 显示所有以d开头的文件中包含 test的行 + grep 'test' d* + +### 进程相关 +* 查看指定服务进程 +```bash +# 查看httpd服务进程 +ps -ef | grep httpd +# UID PID PPID C STIME TTY TIME CMD +# root 7192 7103 0 19:59 pts/3 00:00:00 grep --color=auto httpd +``` + {% note info %} + * UID:用户ID + * PID:进程ID + * PPID:父进程ID + * C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高 + * STIME:进程启动的时间 + * TTY:完整的终端名称 + * TIME:CPU时间 + * CMD:完整的启动进程所用的命令和参数 + {% endnote %} + +* 杀死指定进程 +```bash +kill -9 pid(逐个都删除) +``` +> \ No newline at end of file diff --git a/source/_posts/travel-zjj.md b/source/_posts/travel-zjj.md index d04f35c98..76fe6a62c 100644 --- a/source/_posts/travel-zjj.md +++ b/source/_posts/travel-zjj.md @@ -77,7 +77,7 @@ Day3:玻璃桥-大峡谷 路线Day4:玻璃栈道-天门山寺-天门洞(坐索道上山顶——走西线——再到天门翻水处坐自动扶梯到天门洞——爬999级阶梯——最终坐环保车返回至市区) **自备中午餐** -![天门山景区路线图](https://pic4.zhimg.com/80/v2-a2a1e0165e89d9610dfbfb465bee1765_hd.jpg) +![天门山景区路线图](https://res.cloudinary.com/incoder/image/upload/v1528189150/blog/gitpages-zjj-tms.png.jpg) ## 住宿 现在还未确定路线,个人推荐路线二;其次,16,17,18号需要住宿,要提前预定旅店 From 517ed96bc93ac8d0fa9e79ae6d464026057d90c9 Mon Sep 17 00:00:00 2001 From: Jerry Date: Mon, 11 Jun 2018 00:23:36 +0800 Subject: [PATCH 018/163] add ssm --- _config.yml | 4 +-- source/_data/next.yml | 2 +- source/_posts/memory-hz1.md | 2 +- source/_posts/ssm.md | 52 +++++++++++++++++++++++++++++++++++++ source/about/index.md | 2 +- 5 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 source/_posts/ssm.md diff --git a/_config.yml b/_config.yml index 0820b29ea..371273758 100644 --- a/_config.yml +++ b/_config.yml @@ -88,10 +88,10 @@ theme: next # Deployment ## Docs: https://hexo.io/docs/deployment.html deploy: - type: git +- type: git +- type: leancloud_counter_security_sync repo: https://github.com/BladeCode/BladeCode.github.io.git branch: master - # - type: leancloud_counter_security_sync githubEmojis: enable: true diff --git a/source/_data/next.yml b/source/_data/next.yml index acd7b4710..1646c4078 100644 --- a/source/_data/next.yml +++ b/source/_data/next.yml @@ -649,7 +649,7 @@ leancloud_visitors: # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security # If you don't care about security in lc counter and just want to use it directly # (without hexo-leancloud-counter-security plugin), set the `security` to `false`. - security: false + security: true betterPerformance: false # Another tool to show number of visitors to each article. diff --git a/source/_posts/memory-hz1.md b/source/_posts/memory-hz1.md index a93474c62..44feaa58b 100644 --- a/source/_posts/memory-hz1.md +++ b/source/_posts/memory-hz1.md @@ -10,7 +10,7 @@ tag: 杭州 18年是一个动荡的一年,一起的伙伴渐渐的离开了昔日的团队,这两年中,有的人毕业,有的人结婚,有的人生子,有的人成长,感谢我能成为你们生命中的一个过客,和你们一起经历生活百态 -不管你们在何方,从事着什么样的工作,过着什么样的生活,都别忘记初心,我会想你们,愿你们的一切顺利 +不管你们在何方,从事着什么样的工作,过着什么样的生活,我会想你们,愿你们的一切顺利 粗略的剪影,请异步[优酷](http://v.youku.com/v_show/id_XMzU4NTgyMDE0NA==.html?spm=a2hzp.8244740.0.0) diff --git a/source/_posts/ssm.md b/source/_posts/ssm.md new file mode 100644 index 000000000..82e177d0e --- /dev/null +++ b/source/_posts/ssm.md @@ -0,0 +1,52 @@ +--- +title: 构建基础SSM框架 +date: 2018-05-20 09:39:10 +categories: Frame +tag: + - Spring + - SpringMVC + - Mybatis +--- + +## SSM结构 + +![SSM](https://res.cloudinary.com/incoder/image/upload/v1528039004/blog/ssm-structure.png) + +## SSM框架整合 +所谓的SSM即:Spring,SpringMVC,Mybatis +* [Spring](https://spring.io):一个轻量级的框架,有很多的拓展功能,最主要的我们一般项目使用的就是IOC和AOP。 +* [SpringMVC](https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html):Spring实现的一个Web层,相当于Struts的框架,但是比Struts更加灵活和强大. +* [Mybatis](http://www.mybatis.org/mybatis-3):一个持久层的框架,在使用上相比Hibernate更加灵活,可以控制SQL的编写,使用 XML或注解进行相关的配置. + +## 实战项目 +![ssm-practice](https://res.cloudinary.com/incoder/image/upload/v1528647074/blog/ssm-practice.png) + +项目功能: +1. Spring,SpringMVC,Mybatis框架整合 +2. Create Features +3. Retrieve Features +4. Update Features +5. Delete Features + +> 项目示例:[rc-ssm](https://github.com/RootCluster/rc-ssm/tree/example) + +## 其他 +### ajax之PUT请求 +客户端ajax方式发送PUT请求,Tomcat默认不会对请求进行处理; +Tomcat: +1. 将请求体中的数据,封装成一个map +2. request.getParameter("fileName")就会从这个map中取值 +3. springMVC封装POJO对象时,会把POJO中的属性的值,request.getParameter("fileName") + + 解决方式: + - 方式一:Ajax发送POST请求 + Ajax中type:"POST" + data: $("").serialize()+"&_method=PUT" + + - 方式二:web配置中添加HttpPutFormContentFilter过滤器 + 1.HttpPutFormContentFilter将请求体中的数据解析包装成一个map + 2.request被重新包装,request.getParameter()被重写,从自己封装的map中取出数据 + +### 获取属性的值 +prop修改和读取DOM原生属性的值 +attr修改和读取自定义属性的值 diff --git a/source/about/index.md b/source/about/index.md index 8cc8a7186..7f3d0431c 100644 --- a/source/about/index.md +++ b/source/about/index.md @@ -14,7 +14,7 @@ comments: false 机械制造与自动化专业,14年毕业后投奔于互联网世界 16年开始自学Android开发,现从事Android开发工作 -喜欢音乐,电影,coding +喜欢Coding,音乐,电影 ## 关于本站 From 9775f7cc4114860a5a481e004f5e14e8290d7a77 Mon Sep 17 00:00:00 2001 From: Jerry Date: Mon, 11 Jun 2018 00:30:14 +0800 Subject: [PATCH 019/163] modify leancloud security settings --- source/_data/next.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_data/next.yml b/source/_data/next.yml index 1646c4078..acd7b4710 100644 --- a/source/_data/next.yml +++ b/source/_data/next.yml @@ -649,7 +649,7 @@ leancloud_visitors: # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security # If you don't care about security in lc counter and just want to use it directly # (without hexo-leancloud-counter-security plugin), set the `security` to `false`. - security: true + security: false betterPerformance: false # Another tool to show number of visitors to each article. From acf35eac4009804aa8df0c0f5f33bf64bbfe3574 Mon Sep 17 00:00:00 2001 From: Jerry Date: Mon, 25 Jun 2018 04:45:38 +0800 Subject: [PATCH 020/163] add http --- source/_posts/network-http.md | 179 +++++++++++++++++++++++++++++++ source/_posts/network-okhttp1.md | 45 ++++++++ 2 files changed, 224 insertions(+) create mode 100644 source/_posts/network-http.md create mode 100644 source/_posts/network-okhttp1.md diff --git a/source/_posts/network-http.md b/source/_posts/network-http.md new file mode 100644 index 000000000..73b5461ac --- /dev/null +++ b/source/_posts/network-http.md @@ -0,0 +1,179 @@ +--- +title: Http VS Https +date: 2018-06-22 01:14:25 +categories: Network +tag: [Http,Https] +--- +## 基础名称 +### 请求报文 +客户端发送一个HTTP请求到服务器的请求消息包括以下格式: +请求行(request line)、请求头(header)、请求内容组成,如下请求报文的一般格式。 +![请求报文](https://user-gold-cdn.xitu.io/2018/4/16/162cdac93015af8f?imageView2/0/w/1280/h/960/format/webp/ignore-error/1) + +#### 请求行 +1. 方法: + * GET: 获取资源 + * POST: 向服务器端发送数据,传输实体主体 + * PUT: 传输文件 + * HEAD: 获取报文首部 + * DELETE: 删除文件 + * OPTIONS: 询问支持的方法 + * TRACE: 追踪路径 +2. URL: + `scheme://host:port/path?query` + * scheme: 表示协议,如Http, Https, Ftp等 + * host: 表示所访问资源所在的主机名:如:www.baidu.com + * port: 表示端口号,Http默认为80,Https默认为443 + * path: 表示所访问的资源在目标主机上的储存路径 + * query: 表示查询条件 + +3. 协议/版本号: + +#### 请求头 +1. 通用首部(General Header) +2. 请求首部(Request Header) +3. 实体首部(Entity Header Fields) + +#### 请求内容 +如: 客户端POST的数据就放在这里(对比:GET的数据放在请求行的URL里) + +例如: +![请求示例](https://res.cloudinary.com/incoder/image/upload/v1529805798/blog/http-request.png) + +### 响应报文 +服务端响应一个HTTP请求消息包括以下格式: +响应行(response line)、响应头(header)、响应内容组成 + +#### 响应行 +1. 状态码: + * 1XX:Informational(信息性状态码) + * 2XX:Success(成功状态码) + * 3XX:Redirection(重定向) + * 4XX:Client Error(客户端错误状态码) + * 5XX:Server Error(服务器错误状态吗) +2. 状态码描述: +3. 协议/版本号: + +#### 响应头 +1. 通用首部(General Header) +2. 响应首部(Response Header) +3. 实体首部(Entity Header Fields) + +#### 响应内容 +如:服务器返回的HTML、JSON等数据 + +![响应示例](https://res.cloudinary.com/incoder/image/upload/v1529805798/blog/http-response.png) + +## Http +### 概念 +* [HTTP](https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE):超文本传输协议(HyperText Transfer Protocol)是一种用于分布式、协作式和超媒体信息系统的应用层协议. +* HTTP是万维网的数据通信的基础. + +### 通信 +1. 建立TCP连接 +在HTTP工作开始之前,Client首先要通过网络与Service建立连接,该连接是通过TCP来完成的,HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行更高层协议的连接,因此,首先要建立TCP连接 +2. Client发起HTTP请求(Request) +Requset通常包含请求行,请求头,请求内容这三部风组成的请求报文 +3. Service发送HTTP响应(Response) +Response通常包含响应行,响应头,响应内容这三部风组成的响应报文 +4. Client关闭TCP连接 + +### 特点 +1. 无状态 + * 每个请求结束后都会被关闭,每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况 + * 服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器 +2. 明文传输,可能被窃听 +3. 不验证通信方的身份,可能遭遇伪装 + * HTTP 协议中的请求和响应不会对通信方进行确认。也就是说存在“服务器是否就是发送请求中 URI 真正指定的主机,返回的响应是否真的返回到实际提出请求的客户端”等类似问题 + * HTTP 协议通信时,由于不存在确认通信方的处理步骤,任何人都可以发起请求 +4. 无法证明报文的完整性,可能遭遇篡改 + * 在请求或响应送出之后直到对方接收之前的这段时间内,即使请求或响应的内容遭到篡改,也没有办法获悉 + +## Https +### 概念 +* [HTTPS](https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%AE%89%E5%85%A8%E5%8D%8F%E8%AE%AE):超文本传输安全协议(Hypertext Transfer Protocol Secure,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议. +* HTTPS经由HTTP进行通信,但利用`SSL/TLS`来加密数据包. + +> HTTP+加密+认证+完整性保护 = HTTPS + +![HTTP VS HTTPS](https://res.cloudinary.com/incoder/image/upload/v1529822573/HTTPS.png) + +### 通信 +#### SSL/TLS +SSL/TLS:安全传输层协议(Transport Layer Security), 是介于TCP和HTTP之间的一层安全协议,TLS的前身是SSL(Secure Sockets Layer) + +>TLS/SSL关系 +* SSL2.0 +* SSL3.0 +* TLS1.0(SSL3.1) +* TLS1.1(SSL3.2) +* TLS1.2(SSL3.3) + +#### SSL/TLS工作原理 +HTTPS协议的主要功能都依赖于SSL/TLS协议,SSL/TLS的功能实现主要依赖于三类算法:`对称加密`,`非对称加密`,`散列函数Hash` +* 非对称加密实现身份认证和密钥协商, +* 对称加密算法采用协商的密钥对数据加密, +* 基于散列函数验证信息的完整性 + +#### SSL/TLS协议实现 +TLS以记录协议(record protocol)实现。记录协议负责在传输连接上交换所有的底层消息,并可以配置加密。每一条TLS记录以一个短标头起始。标头包含记录内容的类型(或子协议)、协议版本和长度 + +TLS的主规格说明书定义了四个核心子协议: + +* 握手协议(handshake protocol); +* 密钥规格变更协议(change cipher spec protocol); +* 应用数据协议(application data protocol); +* 警报协议(alert protocol); + +#### 握手协议 +握手是TLS协议中最精密复杂的部分。在这个过程中,通信双方协商连接参数,并且完成身份验证。根据使用的功能的不同,整个过程通常需要交换6~10条消息。根据配置和支持的协议扩展的不同,交换过程可能有许多变种,在使用中经常可以观察到以下三种流程: +* 单向验证(完整的握手,对服务器进行身份验证) +* 双向验证(对客户端和服务器都进行身份验证的握手) +* 简短握手(恢复之前的会话) + +##### 单向验证 +![单向验证](https://blog-10039692.file.myqcloud.com/1494841223417_6503_1494841223715.png) +1. Handshake:ClentHello +客户端通过发送 Client Hello 报文开始 SSL通信。报文中包含客户端支持的 SSL的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法及密钥长度等)。 +2. Handshake:ServerHello +服务器可进行 SSL通信时,会以 ServerHello 报文作为应答。和客户端一样,在报文中包含 SSL版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。 +3. Handshake:Certificate +之后服务器发送 Certificate 报文。报文中包含公开密钥证书。 +4. Handshake:ServerHelloDone +最后服务器发送 ServerHelloDone 报文通知客户端,最初阶段的 SSL握手协商部分结束。 +5. Handshake:ClientKeyExchange +SSL第一次握手结束之后,客户端以 ClientKeyExchange 报文作为回应。报文中包含通信加密中使用的一种被称为 Pre-mastersecret 的随机密码串。该报文已用3 中的公开密钥进行加密。 +6. ChangeCipherSpec +接着客户端继续发送 ChangeCipherSpec 报文。该报文会提示服务器,在此报文之后的通信会采用 Pre-master secret 密钥加密。 +7. Handshake:Finished +客户端发送 Finished 报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。 +8. ChangeCipherSpec +服务器同样发送 ChangeCipherSpec 报文。 +9. Handshake:Finished +服务器同样发送 Finished 报文。 +10. Application Data(HTTP) +服务器和客户端的 Finished 报文交换完毕之后,SSL连接就算建立完成。当然,通信会受到 SSL的保护。从此处开始进行应用层协议的通信,即发送 HTTP 请求。 +11. Application Data(HTTP) +应用层协议通信,即发送 HTTP 响应。 +12. Alert:warning,close notify +最后由客户端断开连接。断开连接时,发送 close_notify 报文(上图做了一些省略,实际到这一步还需要发送TCP FIN报文关闭TCP链接) + +##### 双向验证 +![双向验证](https://blog-10039692.file.myqcloud.com/1494841503771_6933_1494841504095.png) +同单向验证流程相比,双向验证多了如下两条消息:`CertificateRequest`与`CertificateVerify`,其余流程大致相同 +* CertificateRequest +CertificateRequest是TLS规定的一个可选功能,用于服务器认证客户端的身份。通过服务器要求客户端发送一个证书实现,服务器应该在ServerKeyExchange之后立即发送CertificateRequest消息 +* CertificateVerify +当需要做客户端认证时,客户端发送CertificateVerify消息,来证明自己确实拥有客户端证书的私钥。这条消息仅仅在客户端证书有签名能力的情况下发送 + +#### 应用数据协议(application data protocol) +应用数据协议携带着应用消息,只以TLS的角度考虑的话,这些就是数据缓冲区。记录层使用当前连接安全参数对这些消息进行打包、碎片整理和加密 + +#### 警报协议(alert protocol) +警报的目的是以简单的通知机制告知对端通信出现异常状况。它通常会携带close_notify异常,在连接关闭时使用,报告错误 + +## 附录 +* 《图解HTTP》 +* [HTTP | MDN](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Overview) +* [数字证书及CA的扫盲介绍](https://kb.cnblogs.com/page/194742) +* [HTTPS 原理浅析及其在 Android 中的使用](https://cloud.tencent.com/developer/article/1005073) \ No newline at end of file diff --git a/source/_posts/network-okhttp1.md b/source/_posts/network-okhttp1.md new file mode 100644 index 000000000..776dc1ba2 --- /dev/null +++ b/source/_posts/network-okhttp1.md @@ -0,0 +1,45 @@ +--- +title: Network(一) 之OkHttp 入门 +date: 2018-06-23 12:44:25 +categories: Network +tag: OkHttp +--- + +自从Android4.4的源码中可以看到`HttpURLConnection`已经替换成`OkHttp`开始([JakeWharton曾在Twitter表示](https://twitter.com/JakeWharton/status/482563299511250944) ) ,`OkHttp`+`Retrofit`+`RxJava`的组合网络请求一直经久不衰,主流app的网络架构基本都是这样的组合模式,存在即合理,说明`OkHttp`+`Retrofit`+`RxJava`的方式确实给开发,用户体验等带来可观的优势,那么这个系列文章围绕Android的网络展开. + +OkHttp:An HTTP & HTTP/2 client for Android and Java applications + +>Android 历史网络库 +* `HttpClient` 是 Apache 提供的HTTP网络访问接口,从一开始的时候就被引入到了Android的API中; +* `HttpURLConnection` 是一种多用途, 轻量极的HTTP客户端, 提供的API比较简单, 可以容易地去使用和扩展. + +## OkHttp优势 +* 支持HTTP/2, HTTP/2通过使用多路复用技术在一个单独的TCP连接上支持并发, 通过在一个连接上一次性发送多个请求来发送或接收数据 +* 如果HTTP/2不可用, 连接池复用技术也可以极大减少延时 +* 支持GZIP, 可以压缩下载体积 +* 响应缓存可以直接避免重复请求 +* 会从很多常用的连接问题中自动恢复 +* 如果您的服务器配置了多个IP地址, 当第一个IP连接失败的时候, OkHttp会自动尝试下一个IP +* OkHttp还处理了代理服务器问题和SSL握手失败问题 + +## 基本使用 +### OkHttp请求 +### 同步请求 +### 异步请求 +### OkHttp响应 +## OkHttp Get +## OkHttp Post +### 提交String +### 提交流 +### 提交文件 +### 提交表单 +### 提交分块请求 +## 其他用法 +### 提取响应头 +### Gson解析JSON响应 +### 响应缓存 +### 取消一个Call +### 超时 +### 每个Call的配置 +### 处理验证 + From d2ae5281e23cb07cf0510c85187c273201cb2f8b Mon Sep 17 00:00:00 2001 From: Jerry xu Date: Mon, 2 Jul 2018 18:30:02 +0800 Subject: [PATCH 021/163] update network --- source/_posts/network-okhttp1.md | 265 +++++++++++++++++++++++++++++-- 1 file changed, 253 insertions(+), 12 deletions(-) diff --git a/source/_posts/network-okhttp1.md b/source/_posts/network-okhttp1.md index 776dc1ba2..119b7ef10 100644 --- a/source/_posts/network-okhttp1.md +++ b/source/_posts/network-okhttp1.md @@ -5,7 +5,7 @@ categories: Network tag: OkHttp --- -自从Android4.4的源码中可以看到`HttpURLConnection`已经替换成`OkHttp`开始([JakeWharton曾在Twitter表示](https://twitter.com/JakeWharton/status/482563299511250944) ) ,`OkHttp`+`Retrofit`+`RxJava`的组合网络请求一直经久不衰,主流app的网络架构基本都是这样的组合模式,存在即合理,说明`OkHttp`+`Retrofit`+`RxJava`的方式确实给开发,用户体验等带来可观的优势,那么这个系列文章围绕Android的网络展开. +自从Android4.4的源码中可以看到`HttpURLConnection`已经替换成`OkHttp`开始( [JakeWharton曾在Twitter表示](https://twitter.com/JakeWharton/status/482563299511250944) ) ,`OkHttp`+`Retrofit`+`RxJava`的组合网络请求一直经久不衰,主流app的网络架构基本都是这样的组合模式,存在即合理,说明`OkHttp`+`Retrofit`+`RxJava`的方式确实给开发,用户体验等带来可观的优势,那么这个系列文章围绕Android的网络展开. OkHttp:An HTTP & HTTP/2 client for Android and Java applications @@ -20,26 +20,267 @@ OkHttp:An HTTP & HTTP/2 client for Android and Java applications * 响应缓存可以直接避免重复请求 * 会从很多常用的连接问题中自动恢复 * 如果您的服务器配置了多个IP地址, 当第一个IP连接失败的时候, OkHttp会自动尝试下一个IP -* OkHttp还处理了代理服务器问题和SSL握手失败问题 +* OkHttp还处理了代理服务器问题和SSL握手失败问题,等等... ## 基本使用 +该系列版本说明 +* OkHttp版本统一:**3.10.0** +* JDK:**1.8+** + +Gradle包导入 +```groovy +// okhttp核心库 +implementation 'com.squareup.okhttp3:okhttp:3.10.0' +// okhttp网络请求拦截日志库 +implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0' +``` ### OkHttp请求 -### 同步请求 -### 异步请求 +已在[Http VS Https](https://incoder.org/2018/06/22/network-http/#%E8%AF%B7%E6%B1%82%E6%8A%A5%E6%96%87)文章中介绍了,HTTP请求相关内容 + ### OkHttp响应 +已在[Http VS Https](https://incoder.org/2018/06/22/network-http/#%E5%93%8D%E5%BA%94%E6%8A%A5%E6%96%87)文章中介绍了,HTTP响应相关内容 + +## 同步与异步 +`同步`和`异步`关注的是消息通信机制 (synchronous communication/ asynchronous communication) +### 同步 +就是在发出一个 **调用** 时,在没有得到结果之前,该 **调用** 就不返回,但是一旦调用返回,就得到返回值了。 +换句话说,就是由 **调用者** 主动等待这个 **调用** 的结果。 +Okhttp同步(`execute()`):Invokes the request immediately, and blocks until the response can be processed or is in error. + +```java +OkHttpClient client = new OkHttpClient(); + +String run(String url) throws IOException { + Request request = new Request.Builder().url(url).build(); + // 执行同步操作 + Response response = client.newCall(request).execute(); + if (response.isSuccessful()) { + return response.body().string(); + } else { + throw new IOException("Unexpected code " + response); + } +} +``` +### 异步 +**异步** 则与同步相反,**调用** 在发出之后,这个调用就直接返回了,所以没有返回结果。 +换句话说,当一个异步过程调用发出后,**调用者** 不会立刻得到结果。而是在 **调用** 发出后,**被调用者** 通过状态、通知来通知 **调用者**,或通过回调函数处理这个调用。 +Okhttp同步(`enqueue(Callback responseCallback)`):Schedules the request to be executed at some point in the future. + +```java +String url = "https://api.github.com/users/BladeCode"; +OkHttpClient client = new OkHttpClient(); + +Request request = new Request.Builder().url(url).build(); +// 返回response 对象 +Response response = client.newCall(request).enqueue(new Callback() { + + @Override + public void onFailure(Call call, IOException e) { + System.out.println(e.toString()); + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + // 字符串形式表达响应 + System.out.println(response.body().string()); + // 或流的形式表达响应 + System.out.println(response.body().charStream()); + System.out.println(response.body().byteStream()); + } +}); +``` +>注意: +* 响应体太大(超过1MB), 应避免使用 string()方法, 因为它会将把整个文档加载到内存中. +* 对于超过1MB的响应body, 应使用流的方式来处理响应body. 这和我们处理xml文档的逻辑是一致的, 小文件可以载入内存树状解析, 大文件就必须流式解析 + ## OkHttp Get +```java +OkHttpClient client = new OkHttpClient(); + +String run(String url) throws IOException { + Request request = new Request.Builder().url(url).build(); + Response response = client.newCall(request).execute(); + + if (response.isSuccessful()) { + return response.body().string(); + } else { + throw new IOException("Unexpected code " + response); + } +} +``` + ## OkHttp Post +```java +public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); + +OkHttpClient client = new OkHttpClient(); + +String post(String url, String json) throws IOException { + RequestBody body = RequestBody.create(JSON, json); + Request request = new Request.Builder() + .url(url) + .post(body) + .build(); + + Response response = client.newCall(request).execute(); + + if (response.isSuccessful()) { + return response.body().string(); + } else { + throw new IOException("Unexpected code " + response); + } + +} +``` + ### 提交String +```java +public static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown; charset=utf-8"); + +private final OkHttpClient client = new OkHttpClient(); + +public void run() throws Exception { + String postBody = "" + + "Releases\n" + + "--------\n" + + "\n" + + " * _1.0_ May 6, 2013\n" + + " * _1.1_ June 15, 2013\n" + + " * _1.2_ August 11, 2013\n"; + + Request request = new Request.Builder() + .url("https://api.github.com/markdown/raw") + .post(RequestBody.create(MEDIA_TYPE_MARKDOWN, postBody)) + .build(); + + Response response = client.newCall(request).execute(); + if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); + + System.out.println(response.body().string()); +} +``` +> 注意:当提交数据大于1MB,请使用流的方式 + ### 提交流 +```java +public static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown; charset=utf-8"); + +private final OkHttpClient client = new OkHttpClient(); + +public void run() throws Exception { + RequestBody requestBody = new RequestBody() { + @Override + public MediaType contentType() { + return MEDIA_TYPE_MARKDOWN; + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + sink.writeUtf8("Numbers\n"); + sink.writeUtf8("-------\n"); + for (int i = 2; i <= 997; i++) { + sink.writeUtf8(String.format(" * %s = %s\n", i, factor(i))); + } + } + + private String factor(int n) { + for (int i = 2; i < n; i++) { + int x = n / i; + if (x * i == n) return factor(x) + " × " + i; + } + return Integer.toString(n); + } + }; + + Request request = new Request.Builder() + .url("https://api.github.com/markdown/raw") + .post(requestBody) + .build(); + + Response response = client.newCall(request).execute(); + if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); + + System.out.println(response.body().string()); +} +``` + ### 提交文件 +```java +public static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown; charset=utf-8"); + +private final OkHttpClient client = new OkHttpClient(); + +public void run() throws Exception { + File file = new File("README.md"); + + Request request = new Request.Builder() + .url("https://api.github.com/BladeCode/raw") + .post(RequestBody.create(MEDIA_TYPE_MARKDOWN, file)) + .build(); + + Response response = client.newCall(request).execute(); + if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); + + System.out.println(response.body().string()); +} +``` + ### 提交表单 +使用`FormEncodingBuilder`来构建和HTML
      标签相同效果的请求体。键值对将使用一种HTML兼容形式的URL编码来进行编码 + +```java +private final OkHttpClient client = new OkHttpClient(); + +public void run() throws Exception { + RequestBody formBody = new FormEncodingBuilder() + .add("search", "Jurassic Park") + .build(); + Request request = new Request.Builder() + .url("https://en.wikipedia.org/w/index.php") + .post(formBody) + .build(); + + Response response = client.newCall(request).execute(); + if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); + + System.out.println(response.body().string()); +} +``` + ### 提交分块请求 -## 其他用法 -### 提取响应头 -### Gson解析JSON响应 -### 响应缓存 -### 取消一个Call -### 超时 -### 每个Call的配置 -### 处理验证 +`MultipartBuilder`可以构建复杂的请求体,与HTML文件上传形式兼容。多块请求体中每块请求都是一个请求体,可以定义自己的请求头。这些请求头可以用来描述这块请求,例如他的`Content-Disposition`。如果`Content-Length`和`Content-Type`可用的话,他们会被自动添加到请求头中。 + +```java +private static final String IMGUR_CLIENT_ID = "..."; +private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png"); + +private final OkHttpClient client = new OkHttpClient(); + +public void run() throws Exception { + // Use the imgur image upload API as documented at https://api.imgur.com/endpoints/image + RequestBody requestBody = new MultipartBuilder() + .type(MultipartBuilder.FORM) + .addPart( + Headers.of("Content-Disposition", "form-data; name=\"title\""), + RequestBody.create(null, "Square Logo")) + .addPart( + Headers.of("Content-Disposition", "form-data; name=\"image\""), + RequestBody.create(MEDIA_TYPE_PNG, new File("website/static/logo-square.png"))) + .build(); + + Request request = new Request.Builder() + .header("Authorization", "Client-ID " + IMGUR_CLIENT_ID) + .url("https://api.imgur.com/3/image") + .post(requestBody) + .build(); + + Response response = client.newCall(request).execute(); + if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); + + System.out.println(response.body().string()); +} +``` +## 附录 +* [怎样理解阻塞非阻塞与同步异步的区别](https://www.zhihu.com/question/19732473) +* [OkHttp使用教程](http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0106/2275.html) \ No newline at end of file From 85128e324869db237d8ac377f3b4ba521945aa12 Mon Sep 17 00:00:00 2001 From: Jerry xu Date: Wed, 4 Jul 2018 17:18:39 +0800 Subject: [PATCH 022/163] update travel-zjj --- source/_data/next.yml | 1 + source/_posts/travel-zjj.md | 17 +++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/source/_data/next.yml b/source/_data/next.yml index acd7b4710..2290977fa 100644 --- a/source/_data/next.yml +++ b/source/_data/next.yml @@ -162,6 +162,7 @@ social: # Google: https://plus.google.com/101381611051487754759 || google Twitter: https://twitter.com/_incoder || twitter Weibo: http://weibo.com/onblade || weibo + Medium: https://medium.com/@incoder || medium #FB Page: https://www.facebook.com/yourname || facebook #VK Group: https://vk.com/yourname || vk # StackOverflow: https://stackoverflow.com/users/5776993/blade || stack-overflow diff --git a/source/_posts/travel-zjj.md b/source/_posts/travel-zjj.md index 76fe6a62c..baaa56c1f 100644 --- a/source/_posts/travel-zjj.md +++ b/source/_posts/travel-zjj.md @@ -85,15 +85,20 @@ Day3:玻璃桥-大峡谷 ## 美食 ### 胡师傅三下锅 -三下锅,所谓的三下锅其实就是一种很方便的干锅,它是由三种主料做成的,炖着不放汤的火锅,三角坪附近的那个“胡师傅三下锅”味道不错,三下锅50元一份,分量很够吃的,包你吃够吃好!推荐的就是干煸肠子,干煸核桃肉和湘西腊肉三种混在一起炖,吃的同时还可以点一份酸萝卜,又脆又酸。真的是极品哦! +三下锅,所谓的三下锅其实就是一种很方便的干锅,它是由三种主料做成的,炖着不放汤的火锅,三角坪附近的那个“胡师傅三下锅”味道不错,三下锅50元一份,分量很够吃的,包你吃够吃好!推荐的就是干煸肠子,干煸核桃肉和湘西腊肉三种混在一起炖,吃的同时还可以点一份酸萝卜,又脆又酸。真的是极品哦!(吃过后,发现并没有网上说的这么好吃,就是大烩菜,哈哈哈) -### 阿福鱼馆 -喜欢吃鱼的朋友,可以大饱口福啦,位于十字街,自十字街路口往老十字街步行2分钟,左手边;鱼是现称现做的,做法很多,用餐环境不错。步步高超市那一条街上,还有很多好吃的地方!还有就是晚上的夜宵,在肯德基那里十子路口,那一条街都是的,晚上的小吃可是很丰富的。 +等等。。。 ## 汇总 ![汇总](https://res.cloudinary.com/incoder/image/upload/v1527434516/blog/gitpages-zjj-summary.png) ## 游记 -先占坑,事后补 - - +废话不说,**武陵源景区**不用去,虽说是5A景区,除了山还是山,而且商业气息很重,很多地方都不能步行,需要坐缆车,电梯等交通工具,况且这次去森林公园那边在修路,说是在修高铁,建议直接去 **大峡谷风景区** 和 **天门山景区** + +### 武陵源景区 +整个武陵 +![武陵源](https://res.cloudinary.com/incoder/image/upload/v1530682536/blog/travel/travel-zjj-wly.jpg) +### 大峡谷风景区 +![大峡谷](https://res.cloudinary.com/incoder/image/upload/v1530682775/blog/travel/travel-zjj-dxg.jpg) +### 天门山景区 +{% dplayer "url=https://res.cloudinary.com/incoder/video/upload/v1530682876/blog/travel/travel-zjj-tms.mp4" "loop=no" "theme=#FADFA3" "autoplay=false" "token=tokendemo" %} \ No newline at end of file From eb4e18f10283b15b9dbf54c28a0d53e0aa07b14d Mon Sep 17 00:00:00 2001 From: Jerry xu Date: Fri, 6 Jul 2018 22:00:24 +0800 Subject: [PATCH 023/163] add security-rsa --- source/_posts/security-rsa.md | 74 +++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 source/_posts/security-rsa.md diff --git a/source/_posts/security-rsa.md b/source/_posts/security-rsa.md new file mode 100644 index 000000000..17670d14d --- /dev/null +++ b/source/_posts/security-rsa.md @@ -0,0 +1,74 @@ +--- +title: 非对称加密——RSA +date: 2018-07-03 20:28:51 +categories: Security +tag: RSA +--- + +这是常用加密技术的系列文章,主要包含`非对称`,`对称`,`JWT`三类常用技术的应用 + +## RSA +[RSA](https://zh.wikipedia.org/wiki/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95):RSA加密算法是一种 **非对称** 加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。RSA就是他们三人姓氏开头字母拼在一起组成的。 + +### RSA加密解密 +公钥 **加密** 私钥 **解密**,持有公钥(多人持有)可以对数据加密,但是只有持有私钥(一人持有)才可以解密并查看数据 + +### RSA加签验签 +私钥 **加签** 公钥 **验签**,持有私钥(一人持有)可以加签,持有公钥(多人持有)可以验签 + +### RSA过程示意图 + +![security-rsa](https://res.cloudinary.com/incoder/image/upload/v1530793864/blog/security-rsa.png) + +如上图,具体表述两个场景过程 + +#### 结果不需加密 +场景:返回的数据不需要加密(例如:绑定银行卡的时候) +* 客户端`Client A`发送使用服务端`Serve publicKey` **加密** 的密文`cipher A(包含用户的银行卡号,手机号等重要信息)`到服务器 +* 服务器`Serve` 通过 `Serve privateKey`**解密** +* 服务端业务处理完成,直接返回数据(一些普通信息,比如状态码code,提示信息msg,提示操作是成功还是失败)给客户端`Client A` + +#### 结果需加密 +场景:返回的数据需要加密(例如:用户登录) +* 客户端`Client B`发送使用服务端`Serve publicKey` **加密** 的密文`cipher B(包含用户名和密码等重要信息)`以及客户端`Client B`的`Client B publicKey`到服务器 +* 服务器`Serve` 通过 `Serve privateKey`**解密** +* 服务端业务处理完成,直接返回数据(一般为token,token使用客户端`Client B`的`Client B publicKey`加密)给客户端`Client B` +* 客户端`Client B`使用`Client B privateKey`进行 **解密** 获取相应的用户信息等 + +## 密钥对 +在使用RSA加密解密之前,首先要生成密钥对。所谓的密钥对,指的是公钥和私钥。RSA算法的密钥可以通过两个途径生成,一是借助`openssl`命令终端,二是使用`JDK`生成。 +本篇采用`JDK`方式生成密钥对,`openssl`方式可自行尝试 + +### JDK + +#### Serve端密钥对 + +#### Client端密钥对 + +##### Android密钥对 + +##### Web密钥对 + +##### iOS密钥对 + +### OpenSSL + +略... + +## RSA加密 + +## RSA解密 + +## RSA缺点 +虽然RSA是一种较高级别加密机制,但也存在一些缺点 +1. 产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。 +2. 安全性,RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NP问题。 +3. 速度太慢,由于`RSA`的分组长度太大,为保证安全性,n 至少也要 `600 bit` 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。 + +## 附录 +参考学习文章 +* [一张图了解RSA加解密与加验签](https://blog.csdn.net/zhshulin/article/details/71573542) +* [RSA加密解密及RSA加签验签](https://www.cnblogs.com/loveyou/p/7299524.html) +* [RSA加解密和加签验签](https://www.jianshu.com/p/ff9bd897e96a) +* [RSA加密解密样例](https://www.jianshu.com/p/283fff43a948) +* [RSA加密解密实现](https://blog.csdn.net/hustpzb/article/details/72734578) \ No newline at end of file From 51b9bb99e917f664138cfe3df774af7abd87c706 Mon Sep 17 00:00:00 2001 From: Jerry xu Date: Wed, 11 Jul 2018 21:56:20 +0800 Subject: [PATCH 024/163] add hugo --- source/_posts/hugo.md | 55 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 source/_posts/hugo.md diff --git a/source/_posts/hugo.md b/source/_posts/hugo.md new file mode 100644 index 000000000..96beffa72 --- /dev/null +++ b/source/_posts/hugo.md @@ -0,0 +1,55 @@ +--- +title: Hugo 初体验 +date: 2018-07-11 16:34:10 +categories: Hugo +tag: Build +--- + +个人博客使用[Hexo](https://hexo.io/zh-cn/index.html)搭建,使用效果很不错,在Github上创建组织[RootCluster](https://github.com/RootCluster),该组织主要存放自己新技术的学习和一些Demo实验。组织同样也可以使用Github pages服务,因此给RootCluster构建一个静态页面,可用直观清晰的看自己的项目,加之之前已用Hexo,所以这次的静态页面构建选择了新的一个静态页面生成工具,[Hugo](https://gohugo.io)是一款使用Go语言开发的静态页面生成框架。 + +[Hugo](https://gohugo.io)是世界上最快的静态网站引擎。它是用[Go](https://golang.org)(aka Golang)编写的,由[bep](https://github.com/bep),[spf13](https://github.com/spf13)和[朋友](https://github.com/gohugoio/hugo/graphs/contributors)开发 + +## 材料准备 +* SystemOS:Windows 10 +* [Chocolatey](https://chocolatey.org):Windows的包管理器 +* [Hugo](https://gohugo.io/getting-started/installing) + +## 安装 +### Chocolatey安装 +如果已安装,跳过该步骤 +* 使用 PowerShell.exe +```bash +Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) +``` +* 使用 cmd.exe +```bash +@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin" +``` +以上两种方式,选择其一即可 +![PowerShell.exe 演示](https://res.cloudinary.com/incoder/image/upload/v1531314279/blog/hugo_install.png) + +### hugo安装 + +```bash +choco install hugo -confirm +``` + +### 初始化Hugo +* 初始化hugo模板 +```bash +hugo new site project_name +``` + +* 进入项目并启动项目 +```bash +cd project_name +hugo serve +``` + +![hugo_init](https://res.cloudinary.com/incoder/image/upload/v1531314737/blog/hugo_init.png) + +* [主题安装](https://themes.gohugo.io) + +这里选择[Elate](https://themes.gohugo.io/hugo-elate-theme)主题作为组织的网站 + +![主题安装](https://res.cloudinary.com/incoder/image/upload/v1531316293/blog/hugo_theme.png) \ No newline at end of file From 5c78f79b6cdaa8edc632429674ee5bd79f3eb865 Mon Sep 17 00:00:00 2001 From: Jerry Date: Tue, 17 Jul 2018 01:03:27 +0800 Subject: [PATCH 025/163] add treasure --- source/_posts/treasure.md | 122 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 source/_posts/treasure.md diff --git a/source/_posts/treasure.md b/source/_posts/treasure.md new file mode 100644 index 000000000..f9fe1cedb --- /dev/null +++ b/source/_posts/treasure.md @@ -0,0 +1,122 @@ +--- +title: 藏经阁 +date: 2018-07-16 23:00:10 +categories: Resources +tag: DevTool +--- + +{% cq %}

      工欲善其事,必先利其器

      {% endcq %} +记录汇总一些资源库 + +## 导航页 +[Hi World](http://www.shandowsocks.info) +[创造师导航](http://chuangzaoshi.com) +[UI设计师导航](http://so.uigreat.com) +[Devdocs](https://devdocs.io) + +## 开发者网站 + +### 国际大厂 +[Google Developer](https://developers.google.com) +[Apple Developer](https://developer.apple.com) +[Microsoft Developer](https://developer.microsoft.com) +[Facebook Developer](https://developers.facebook.com) +[Twitter Developer](https://developer.twitter.com) +[Github Developer](https://developers.github.com) +[Baidu Developer](https://developer.baidu.com) +[Alibaba Developer](https://dev.aliyun.com) +[Tencent Developer](http://open.qq.com) + +### 手机厂商 +[Android Developer](https://developer.android.com) +[iOS Developer](https://developer.apple.com/ios) +[Samsung Developer](https://developer.samsung.com) +[Huawei Developer](http://developer.huawei.com/cn) +[XiaoMi Developer](https://dev.mi.com) +[HTC Developer](https://www.htcdev.com/) +[Flyme Developer](https://open.flyme.cn/) +[Oppo Developer](https://open.oppomobile.com) +[Vivo Developer](https://dev.vivo.com.cn) +[Smartisan Developer](http://dev.smartisan.com) +[360 Developer](http://dev.360.cn) + +### 应用市场 +[Google Play](https://play.google.com) +[App Store]() +[XiaoMi 应用市场](http://app.mi.com) +[Huawei 应用市场](http://developer.huawei.com/consumer/cn/devunion/ui/server/appMarket.html) +[360 应用市场](http://zhushou.360.cn) +[酷安市场](https://www.coolapk.com) +[应用宝](http://sj.qq.com) + +### 小程序 + +[PWA](https://developers.google.cn/web/progressive-web-apps) +[微信小程序](https://mp.weixin.qq.com/cgi-bin/wx) +[支付宝小程序](https://docs.alipay.com/mini/developer/getting-started) +[快应用](https://www.quickapp.cn) + +### ROM与论坛 +[LineageOS](https://lineageos.org) +[XDA](https://forum.xda-developers.com) +[Mokee](https://www.mokeedev.com) +[MoDaCo](https://www.modaco.com) +[机锋](http://bbs.gfan.com/forum.php) +[智友](http://bbs.zhiyoo.com) +[MiUi](http://rom.xiaomi.cn) +[0pengApps](https://opengapps.org) + +## DevTools + +### IDE +[Jetbrains 全家桶](http://www.jetbrains.com) +[Android Studio](https://developer.android.google.cn/studio) +[Xcode](https://developer.apple.com/xcode/ide) +[Eclipse](http://www.eclipse.org/downloads/eclipse-packages) +[Visual Studio Code](https://code.visualstudio.com) +[Sublime](http://www.sublimetext.com) +[PostMan](https://www.getpostman.com/apps) +[Xshell Xftp](http://www.netsarang.com/products/xsh_overview.html) + +### Plugin +[Alibaba Java Coding Guidelines](https://github.com/alibaba/p3c) +[Android ButterKnife Zelezny](https://github.com/avast/android-butterknife-zelezny) +[Android Material Design Icon Generator](https://github.com/konifar/android-material-design-icon-generator-plugin) +[Android Parcelable code generator](https://github.com/mcharmas/android-parcelable-intellij-plugin) +[Android Postfix Completion](https://plugins.jetbrains.com/plugin/7775-android-postfix-completion) +[Android Resource Usage Count](https://github.com/niorgai/Android-Resource-Usage-Count) +[Android Studio Prettify](https://github.com/Haehnchen/idea-android-studio-plugin) +[ADB Idea](http://www.developerphil.com/renaming-your-gradle-build-files) +[EventBus3 Intellij Plugin](https://plugins.jetbrains.com/plugin/8603-eventbus3-intellij-plugin) +[GrepConsole](https://github.com/krasa/GrepConsole) +[GsonFormat](https://github.com/zzz40500/GsonFormat) +[Jetbrains Plugins](https://plugins.jetbrains.com/) +[Jrebel](https://zeroturnaround.com/software/jrebel) +[ignore](http://ignore.hsz.mobi) +[LayoutFormatter](https://github.com/drakeet/LayoutFormatter) +[Markdown Navigator](https://github.com/vsch/idea-multimarkdown) +[PlantUML integration](https://github.com/esteinberg/plantuml4idea) +[SQLScout](https://plugins.jetbrains.com/plugin/8322-sqlscout-sqlite-support-) +[Translation](http://yiiguxing.github.io/TranslationPlugin) + +### Managed code +[Github](https://www.github.com) +[Gitlab](https://www.gitlab.com) +[Bitbucket](https://bitbucket.org) +[Gitee](https://www.gitee.com) +[Coding](https://coding.net) + +## Yun +[Google Cloud](https://console.cloud.google.com) +[Microsoft Azure](https://azure.microsoft.com) +[Amazon Web Services](https://aws.amazon.com) +[Aliyun](https://www.aliyun.com) +[Tencent Cloud](https://cloud.tencent.com) +[DiDi Cloud](https://www.didiyun.com) +[MT Cloud](https://www.mtyun.com) +[NetEase Cloud](https://www.163yun.com) + +## Mirror +[Tsinghua](https://mirrors.tuna.tsinghua.edu.cn) +[Gradle](http://services.gradle.org/distributions) +[Firfox](https://download-installer.cdn.mozilla.net/pub/firefox/releases) \ No newline at end of file From 516fc477187fba41a4128cb6c44f28fde7a82c6b Mon Sep 17 00:00:00 2001 From: Jerry Date: Tue, 24 Jul 2018 01:15:46 +0800 Subject: [PATCH 026/163] add mysql --- source/_posts/gitlab1.md | 2 +- source/_posts/linux-build.md | 7 --- source/_posts/linux-mysql.md | 101 +++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+), 8 deletions(-) create mode 100644 source/_posts/linux-mysql.md diff --git a/source/_posts/gitlab1.md b/source/_posts/gitlab1.md index 259001bc8..c57b9a057 100644 --- a/source/_posts/gitlab1.md +++ b/source/_posts/gitlab1.md @@ -89,7 +89,7 @@ cd /opt/gitlab/bin ``` 6. 启动服务 ```bash -./gitlab-ctr start +./gitlab-ctl start ``` >* 成功启动服务,默认路径访问:http://localhost:80 diff --git a/source/_posts/linux-build.md b/source/_posts/linux-build.md index 609734363..2656c9ea1 100644 --- a/source/_posts/linux-build.md +++ b/source/_posts/linux-build.md @@ -211,13 +211,6 @@ ln -s /root/node-v8.6.0-linux-x64/bin/node /usr/local/bin/node ln -s /root/node-v8.6.0-linux-x64/bin/npm /usr/local/bin/npm ``` -## Swagger - -comming soon~ - -## Docker -comming soon~ - ## 常用命令 ### 文件查找 diff --git a/source/_posts/linux-mysql.md b/source/_posts/linux-mysql.md new file mode 100644 index 000000000..04748313c --- /dev/null +++ b/source/_posts/linux-mysql.md @@ -0,0 +1,101 @@ +--- +title: Linux 之 MySQL +date: 2018-07-23 22:30:10 +categories: Linux +tag: MySQL +--- + +之前粗略的接触了Linux的基础使用和安装,这次准备在自购的服务器上跑些应用,纯属娱乐,废话不说,上来就先仍数据库。 +数据库常用的`Oracle`,`MySQL`,`SQL Server`,`MongoDB`等,排名不分先后,自己平时接触最多的也就是`MySQL`,`MongoDB`,好`MySQL`先来一份。 + +## 介绍 +MySQL是一个开源数据库管理系统,通常作为流行的LEMP(Linux,Nginx,MySQL / MariaDB,PHP / Python / Perl)堆栈的一部分安装。它使用关系数据库和SQL(结构化查询语言)来管理其数据。 + +[CentOS 7](https://www.centos.org)更喜欢[MariaDB](https://mariadb.org),它是由原始`MySQL`开发人员管理的`MySQL`分支,旨在替代MySQL。如果你在CentOS 7上运行`yum install mysql`,那么安装的是MariaDB,而不是MySQL。 + +## 清单 +* OS: CentOS 7 +* DataBase:MySQL 8.0.11 + +## 安装 + +```bash +# 1. 获取官方yum源安装包 mysql80-community-release-el7-1.noarch.rpm 是根据官网提供的版本信息 +wget wget https://dev.mysql.com/get/`mysql80-community-release-el7-1.noarch.rpm` +# 2. 安装rpm包 +rpm -ivh mysql80-community-release-el7-1.noarch.rpm +# 3. 安装mysql-server +yum install -y mysql-server +# 4. 启动mysqld服务 +systemctl start mysqld +# 5. 查看是否成功启动 +ps aux|grep mysqld +# 6. 设置mysqld服务开机自启动 +systemctl enable mysqld +``` + +## 配置 + +由于MySQL从5.7开始不允许在首次安装后,使用空密码进行登录,系统会随机生成一个密码以供管理员首次登录使用,这个密码记录在`/var/log/mysqld.log`文件中 + +```bash +# 1. 查看系统提供密码 +cat /var/log/mysqld.log|grep 'A temporary password' +# 2. 使用获取到的密码登录MySQL +mysql -u root -p +# 3. 切换数据库 +use mysql; +# 4. 修改root密码 your_password 替换成你自己的密码就可以了,这个密码是强密码,要求密码包含大小写字母、数字及标点符号,长度大于6 +alter user 'root'@'localhost' identified by 'your_password'; +``` + +## 链接 +自己平时习惯使用 [Navicat](https://www.navicat.com.cn) 进行数据库操作,因此这里进行配置链接已在云端刚刚安装的MySQL服务 +![linux-mysql](https://res.cloudinary.com/incoder/image/upload/v1532362215/blog/linux-mysql.png) +### ERROR 1130 +按照上图图的配置信息链接MySQL,发现错误提示:`ERROR 1130: Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server` + +#### 原因 +不允许从远程登陆MySQL服务,只能在localhost + +#### 解决方法 +```bash +# 切换数据库 +use mysql; +# 修改user 指定的host 为 % +update user set host = '%' where user = 'root'; +# 成功修改 ++-----------+------------------+ +| host | user | ++-----------+------------------+ +| % | root | +| localhost | mysql.infoschema | +| localhost | mysql.session | +| localhost | mysql.sys | ++-----------+------------------+ +4 rows in set (0.00 sec) +``` + +### ERROR 2059 +继续重试链接,错误提示:`ERROR 2059: Authentication plugin 'caching_sha2_password' cannot be loaded:The specified module could not be found.` + +#### 原因 +MySQL 8不支持动态修改密码验证方式 + +#### 解决方法 +```bash +# 停止mysql +systemctl stop mysqld.service +# my.cnf文件中默认有下面的语句,删除前面的#号即可,没有的话就把它添加到my.cnf中 ,默认路径`/etc/my.cnf` +default-authentication-plugin=mysql_native_password +# 切换数据库 +use mysql +# 给指定用户设置密码,这里`%`是因为之前已经将远程没有特殊指定,用%代替了localhost +ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password'; +``` + +## 附录 +* [安装过程Pdf]() +* [How To Install MySQL on CentOS 7](https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-centos-7) +* [ERROR 1130](https://blog.csdn.net/nyist327/article/details/45074559) +* [ERROR 2059](https://blog.csdn.net/airt_xiang/article/details/80261674) \ No newline at end of file From 351f3158d78654abde2729cc2cc63911f787c1d7 Mon Sep 17 00:00:00 2001 From: Jerry xu Date: Wed, 1 Aug 2018 19:49:00 +0800 Subject: [PATCH 027/163] add syncing-a-fork --- source/_data/next.yml | 5 +-- source/_posts/linux-build.md | 40 +++++++++++++++++++++ source/_posts/rap2.md | 50 ++++++++++++++++++++------ source/_posts/syncing-a-fork.md | 64 +++++++++++++++++++++++++++++++++ 4 files changed, 147 insertions(+), 12 deletions(-) create mode 100644 source/_posts/syncing-a-fork.md diff --git a/source/_data/next.yml b/source/_data/next.yml index 2290977fa..2ed0a3feb 100644 --- a/source/_data/next.yml +++ b/source/_data/next.yml @@ -190,8 +190,9 @@ links_icon: link links_title: Links links_layout: block #links_layout: inline -#links: -# Title: https://incoder.org/ +links: + TwoDragonLake: http://www.twodragonlake.com + RootCluster: https://rootcluster.github.io # Sidebar Avatar avatar: diff --git a/source/_posts/linux-build.md b/source/_posts/linux-build.md index 2656c9ea1..4577fb620 100644 --- a/source/_posts/linux-build.md +++ b/source/_posts/linux-build.md @@ -211,6 +211,41 @@ ln -s /root/node-v8.6.0-linux-x64/bin/node /usr/local/bin/node ln -s /root/node-v8.6.0-linux-x64/bin/npm /usr/local/bin/npm ``` +## Redis +[官方下载地址](https://redis.io/download),选择需要的版本下载安装包 +>官方提供了`.gz`格式安装包 + +### 安装 +```bash +# 1.下载安装文件 +wget wget http://download.redis.io/releases/redis-4.0.10.tar.gz +# 2.解压安装文件(解压到当前目录) +tar xzf redis-4.0.10.tar.gz +# 3.编译安装 +cd redis-4.0.10 +make +# 4.启动服务 +src/redis-server +``` + +## 配置 +```bash +# 1.修改redis.conf文件中daemonize属性 为 yes +vim /you_install_path/redis.conf +``` +> 其他配置根据自身需要调整修改 + +## 其他命令 +1. 关闭服务 +```bash +redis-cli -h 127.0.0.1 -p 6379 shutdown +``` +2. 非安全模式启动 +```bash +# 后台以非安全模式启动 +nohup /usr/local/bin/redis-server --protected-mode no & +``` + ## 常用命令 ### 文件查找 @@ -271,4 +306,9 @@ ps -ef | grep httpd ```bash kill -9 pid(逐个都删除) ``` +* 查看指定端口 +```bash +# 检测6379端口是否在监听 +netstat -lntp | grep 6379 +``` > \ No newline at end of file diff --git a/source/_posts/rap2.md b/source/_posts/rap2.md index 54186135c..322007e22 100644 --- a/source/_posts/rap2.md +++ b/source/_posts/rap2.md @@ -1,36 +1,41 @@ --- title: Api 文档管理系统 RAP2环境搭建 date: 2018-03-27 10:20:10 +update: 2018-08-01 22:10:11 categories: Api tag: RAP --- -RAP2是采用前后端分离的形式,因此搭建完整的RAP2需要**服务端:**[rap2-delos](https://github.com/thx/rap2-delos),**客户端:**[rap2-dolores](https://github.com/thx/rap2-dolores) 同时部署 +RAP2是采用前后端分离的形式,因此搭建完整的RAP2需要 **服务端:**[rap2-delos](https://github.com/thx/rap2-delos),**客户端:**[rap2-dolores](https://github.com/thx/rap2-dolores) 同时部署 部署RAP2需要亲具有Node+Linux+MySQL的运维知识,如果亲对此不是很了解,建议用[http://rap2.taobao.org](http://rap2.taobao.org) 线上版本就可以 -由于**客户端:**[rap2-dolores](https://github.com/thx/rap2-dolores) 是建立在 **服务端:**[rap2-delos](https://github.com/thx/rap2-delos) 基础上,因此先搭建服务端应用 +由于 **客户端:**[rap2-dolores](https://github.com/thx/rap2-dolores) 是建立在 **服务端:**[rap2-delos](https://github.com/thx/rap2-delos) 基础上,因此先搭建服务端应用 + +> * 截至到2018-08-01 delos 并没有发布Tag版本,应该还处于功能开发前期阶段吧。本教程是在CentOS机器上实战部署 +> * 然而安装部署并不是顺利,因此记录踩过的坑(别问我为啥不用Docker,因为我司分配的机器无法满足Docker的最低内核版本),安装环境介绍:Redis,delos,dolores均在一台服务器,MySQL使用已存在的服务 ## 安装基本工具 * [Git](https://git-scm.com/downloads) * [Node 8.9.4+](https://nodejs.org/zh-cn/download) +* [Redis 4.0+](https://redis.io/download) * [MySQL 5.7+](https://www.mysql.com/cn/downloads) -* [VS Code](https://code.visualstudio.com/download)(非必需) 以上基本工具请根据自身需要,下载对应系统安装包,请自行解决安装配置等问题,这里不做过多说明 +> Redis 安装可参考[Linux 常用应用安装](https://incoder.org/2018/05/15/linux-build); +Redis 最好用非安全模式启动 + ## 服务端delos环境搭建 ### 构建项目 -#### 获取源代码 +> 构建项目前,请确认Node,Redis,MySQL服务均能正常使用 + ``` sh git clone https://github.com/thx/rap2-delos.git ``` -#### 导入VS Code -这里的开发编辑工具推荐,当然你也可以用自己熟悉的开发工具 - ### 环境配置 #### 创建数据库 @@ -58,7 +63,10 @@ git clone https://github.com/thx/rap2-delos.git 项目根目录下执行 ```sh +# 安装项目所需依赖 npm install +# 全局安装PM2 +npm install -g pm2 ``` #### 安装TypeScript编译包 @@ -73,7 +81,7 @@ npm install typescript -g 项目根目录下执行(该过程比较慢,耐心等待初始化完成) -```sh +```npm npm run create-db ``` @@ -116,6 +124,23 @@ npm run check 3. 执行`npm run dev`命令,提示`Error: listen EADDRINUSE :::8080` 原因:8080端口被占用 解决方法:杀掉占用8080端口的应用 +4. 执行`npm install` 命令,提示`hiredis` 编译无法通过 + 原因:无权限操作`rap2-delos/node_modules/hiredis`路径 + 解决方法:`sudo npm install` + > 如果提示`sudo: npm: command not found`,请参考[stackoverflow-npm](https://stackoverflow.com/questions/31472755/sudo-npm-command-not-found),[stackoverflow-node](https://stackoverflow.com/questions/4976658/on-ec2-sudo-node-command-not-found-but-node-without-sudo-is-ok) +5. 执行`npm run dev`可以正常启动,`npm start`命令无法正常启动服务 + 原因:请使用`pm2 logs`查看日志具体定位 + 示例:由于Redis的安全模式,不能正常使用 + ```bash + ReplyError: Ready check failed: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: + + 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. + 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. + 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. + 4) Setup a bind address or an authentication password. + NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside. + ``` + 解决方法: 使用`--protected-mode no`方式启动 ## 客户端dolores环境搭建 @@ -131,7 +156,7 @@ git clone https://github.com/thx/rap2-dolores.git 目录:rap2-dolores/src/config 文件:`config.dev.ts`;其中dev,表示开发环境,其他同理 -修改:`config.dev.ts`文件,`serve`地址是**服务端**[rap2-delos]()部署成功后的地址,默认:`'http://localhost:8080'` +修改:`config.dev.ts`文件,`serve`地址是 **服务端** `rap2-delos` 部署成功后的地址,默认:`'http://localhost:8080'` ### 启动项目 @@ -205,4 +230,9 @@ npm install 解决方法:先登录用root数据库,密码具体看自己数据库当时设置的密码 ### 如何获取更新 -目前请选择`master`分支源码,后续其他分支请看相应分支说明文档。在开发环境中git pull来获取最新的源码更新,每一期更新都会有对应的update.md请关注并按照上面的指示进行升级工作。 \ No newline at end of file +目前请选择`master`分支源码,后续其他分支请看相应分支说明文档。在开发环境中git pull来获取最新的源码更新,每一期更新都会有对应的update.md请关注并按照上面的指示进行升级工作。 + +## 附录 +* [redis如何后台启动](https://blog.csdn.net/ksdb0468473/article/details/52126009) +* [Redis配置文件介绍](http://www.cnblogs.com/ysocean/p/9074787.html) +* [PM2实用入门指南](https://www.cnblogs.com/chyingp/p/pm2-documentation.html) \ No newline at end of file diff --git a/source/_posts/syncing-a-fork.md b/source/_posts/syncing-a-fork.md new file mode 100644 index 000000000..5aeaf737d --- /dev/null +++ b/source/_posts/syncing-a-fork.md @@ -0,0 +1,64 @@ +--- +title: Git 同步 Fork 项目 +date: 2018-08-01 16:09:50 +categories: Git +tag: Syncing +--- + +[Github](https://www.github.com) 全球最大的同性交友网站,这里拥有最前沿的IT技术创新,拥有最流行的开源项目,等等...,总之这里是我的知识仓库,每天都会在上面寻找,学习知识 + +扯远了,本篇解决对于fork的项目,如何进行源项目的更新和同步问题 + +## 远程仓库 +1. 查看fork项目的远程仓库信息 +```bash +git remote -v +origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) +origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push) +``` +2. 设置源项目仓库地址 +```bash +git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git +``` +3. 检查远程地址信息 +```bash +git remote -v +origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) +origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push) +upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch) +upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push) +``` + +## 同步源仓库信息 + +1. 获取源仓库更新 +```bash +git fetch upstream +remote: Counting objects: 75, done. +remote: Compressing objects: 100% (53/53), done. +remote: Total 62 (delta 27), reused 44 (delta 9) +Unpacking objects: 100% (62/62), done. +From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY + * [new branch] master -> upstream/master +``` +2. 查看本地master分支 +```bash +git checkout master +Switched to branch 'master' +``` +3. 合并源仓库更新到本地master分支 +```bash +git merge upstream/master +Updating a422352..5fdff0f +Fast-forward + README | 9 ------- + README.md | 7 ++++++ + 2 files changed, 7 insertions(+), 9 deletions(-) + delete mode 100644 README + create mode 100644 README.md +``` + +## 附录 +* [同步你的 Fork 仓库](http://wiki.jikexueyuan.com/project/github-basics/fork-synced.html) +* [Configuring a remote for a fork](https://help.github.com/articles/configuring-a-remote-for-a-fork/) +* [Syncing a fork](https://help.github.com/articles/syncing-a-fork) \ No newline at end of file From 59b3e8ee1650b670d12633db98783bdc22eeb506 Mon Sep 17 00:00:00 2001 From: Jerry Date: Sun, 7 Oct 2018 01:27:47 +0800 Subject: [PATCH 028/163] add rxjava --- source/_posts/git-sub.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_posts/git-sub.md b/source/_posts/git-sub.md index 519b66dba..e5e6d08eb 100644 --- a/source/_posts/git-sub.md +++ b/source/_posts/git-sub.md @@ -30,12 +30,12 @@ $ git clone https://github.com/theme-next/hexo-theme-next themes/next [hexo-theme-next](https://github.com/theme-next/hexo-theme-next)项目右上角`Fork`按钮即可 2. Clone Repository ```bash -git clone git@github.com:RootCluster/hexo-theme-next.git +git clone git@github.com:RootCluster/hexo-theme-test.git ``` 3. Add Submodule ```bash # 进入项目 -cd hexo-theme-next +cd hexo-theme-test # 注册next项目是一个submodule,并把数据拷贝到`themes/next`路径 git submodule add git@github.com:RootCluster/hexo-theme-next.git themes/next ``` From b7779a00d393bb33dcd09e678302ca4f0e52242c Mon Sep 17 00:00:00 2001 From: Jerry Date: Sun, 7 Oct 2018 01:47:54 +0800 Subject: [PATCH 029/163] add rxjava --- source/_posts/rxjava.md | 370 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 370 insertions(+) create mode 100644 source/_posts/rxjava.md diff --git a/source/_posts/rxjava.md b/source/_posts/rxjava.md new file mode 100644 index 000000000..c62e927b3 --- /dev/null +++ b/source/_posts/rxjava.md @@ -0,0 +1,370 @@ +--- +title: RxJava 入门 +date: 2018-10-02 10:02:00 +categories: RxJava +tag: [RxJava] +--- + +RxJava – Reactive Extensions for the JVM – a library for composing **asynchronous** and **event-based** programs using **observable** sequences for the Java VM.(一个在 Java VM 上使用可观测的序列( **观察者模式** )来组成 **异步** 的、**基于事件**的程序的库). + +在实际开发过程中,RxJava已是一个不可或缺的组件,因此对于RxJava的学习和思考,记录分享是很重要的一个环节 + +本系列文章主要: +1. [RxJava 入门](https://incoder.org/2018/10/02/rxjava/) +2. RxJava 实际应用 +3. RxJava 源码剖析 + +目前来说,RxJava有两个版本,RxJava1 与 RxJava2 两个版本之间虽然存在很多不同,但它们的本质是相同,由于对于RxJava1 **已废弃**,因此建议没有学习或者是使用过,可直接上手学习RxJava2(在学习过程中部分地方还是会有RxJava1相关的说明,但这不是重点) + +文章使用RxJava版本如下: +* `implementation 'io.reactivex:rxjava:1.3.0'` +* `implementation 'io.reactivex.rxjava2:rxjava:2.2.1'` +* 项目示例:[rc-cluster-network](https://github.com/RootCluster/rc-cluster-network) + +>由于一个项目中RxJava1与RxJava2并不能共存,因此实际参考项目中仅RxJava2示例 + +## RxJava 基础 + +### RxJava1 VS RxJava2 + +![rxjava1 vs rxjava2](https://res.cloudinary.com/incoder/image/upload/v1538815280/blog/RxJava1_vs_RxJava2.png) +>以上是列举出不同版本间主要的变换,其它更细节部分,请查看官方[Wiki](https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0) + +### 关键词 + +#### RxJava1 +* Observable (可观察者,即被观察者) +* Observer (观察者) +* subscribe (订阅) +* 事件 + +>Observable和Observer通过subscribe()方法实现订阅关系,从而Observable可以在需要的时候发出事件来通知Observer + +#### RxJava2 +* Observable (可观察者,即被观察者) +* Observer (观察者) +* ObservableEmitter (发射器) +* 事件 + +>RxJava2中`Subscrber`被`ObservableEmitter`取代,`Observer`中多了一个回调方法 `onSubscribe()`,传递参数为`Disposable` + +* ObservableEmitter:Emitter是发射器的意思,这个就是用来发出事件,它可以发出三种类型的事件,通过调用`emitter`的`onNext(T value)`,`onComplete()`和`onError(Throwable e)`就可以分别发出`next`事件,`complete`事件和`error`事件 +* Disposable:字面意思是一次性用品,用完即可丢弃。在RxJava中可以理解成两根管道间的阀门,当调用它的的`dispose()`方法时,它就将两根管道切断,从而导致下游收不到事件,即相当于`Subsciption` + +### 基本实现 + +#### Create Observable +![operators](https://raw.githubusercontent.com/wiki/ReactiveX/RxJava/images/rx-operators/legend.png) + +##### RxJava1 + +```java +Observable observable = Observable.unsafeCreate(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + subscriber.onNext("Hello"); + subscriber.onNext("World"); + subscriber.onNext("RxJava1"); + subscriber.onCompleted(); + } +}); +``` +>1.2.7版本后,Observable的`create()`方法已被废弃,如果没有特殊需求,可以使用`unsafeCreate()`代替,构造Obaservable实例 + +##### RxJava2 + +```java +Observable observable = Observable.create(new ObservableOnSubscribe() { + @Override + public void subscribe(ObservableEmitter emitter) throws Exception { + emitter.onNext("Hello"); + emitter.onNext("World"); + emitter.onNext("RxJava2"); + emitter.onComplete(); + } +}); +``` +`unsafeCreate()/create()`方法是RxJava最基本创建时间序列的方法。基于这个方法,RxJava还提供了一些方法来快捷创建事件队列 +* just(T...):将传入的参数依次发送出来 +```java +Observable observable = Observable.just("Hello", "World", "RxJava"); +// 将会依次调用: +// onNext("Hello"); +// onNext("World"); +// onNext("RxJava"); +// onCompleted(); +``` +* from(T[])/from(Iierabble):将传入的数组或Iterable拆分成具体对象后,依次发送出来 +```java +String[] words = {"Hello", "World", "RxJava"}; +Observable observable = Observable.from(words); +// 将会依次调用: +// onNext("Hello"); +// onNext("World"); +// onNext("RxJava"); +// onCompleted(); +``` + +##### Flowable +Flowable是RxJava2中新增的类,专门应对背压(Backpressure)问题,但这个概念并不是RxJava2中引入的概念。 + +出现Flowable的原因:即生产者(被观察者发送事件)的速度与消费者(观察者接收所有事件)的速度不匹配,从而导致观察者无法及时响应/处理所有发送过来的事件问题,最终导致缓冲区溢出,事件丢失 & OOM等问题。 + +一般情况,被观察者发送事件速度 > 观察者接收事件速度。比如:点击过快造成等 + +```java +Flowable.create(new FlowableOnSubscribe() { + + @Override + public void subscribe(FlowableEmitter emitter) throws Exception { + emitter.onNext("Hello"); + emitter.onNext("World"); + emitter.onNext("RxJava2"); + emitter.onComplete(); + } +}, BackpressureStrategy.ERROR) + .subscribeOn(Schedulers.computation()) + .observeOn(Schedulers.newThread()) + .subscribe(new Consumer() { + @Override + public void accept(String s) throws Exception { + // 相当于onNext + Thread.sleep(1000); + System.out.println("accept"); + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + // 相当于onError + System.out.println("accept" + throwable.toString()); + } + }); +``` +Flowable并不是订阅就开始发送数据,而是需等到执行`Subscription.request()`才开始发送数据 + +#### Create Observer + +##### RxJava1 +```java +Observer observer = new Observer() { + @Override + public void onCompleted() { + System.out.println("Completed!"); + } + + @Override + public void onError(Throwable e) { + System.out.println("Error" + e); + } + + @Override + public void onNext(String s) { + System.out.println("Next" + s); + } +}; +``` +除了`Observer`接口之外,RxJava内置了一个实现`Observer`的抽象类`Subscriber`,`Subscriber`对`Observer`接口进行了一些扩展,但它们的基本使用方式是完全一样 +```java +Subscriber subscriber = new Subscriber() { + @Override + public void onCompleted() { + System.out.println("Completed!"); + } + + @Override + public void onError(Throwable e) { + System.out.println("Error" + e); + } + + @Override + public void onNext(String s) { + System.out.println("Next" + s); + } +}; +``` +实际,在RxJava的subscribe过程中,`Observer`也总是会先被转成一个`Subscriber`再使用。对于使用者来说`Observer`与`Subscriber`的主要区别是: +1. onStart():这是`Subscriber`增加的方法。它会再subscribe刚开始,而事件还未发送之前被调用,可以用于做一些准备工作,例如:数据的重置等操作。这是一个可选方法,默认情况下它的实现为空。 +>注意:对于准备工作有线程要求,`onStart()`就不适用,因为它总是再subscribe所发生的线程被调用,而不能指定线程。要指定线程来准备工作,可以使用`doOnSubscribe()`方法 +2. unsubscribe():`Subscriber`所实现的另一个接口`Subscription`的方法,用于取消订阅。在这个方法被调用后,`Subscriber`将不再接收事件。 +>注意: +>* 一般需要在调用`unsubscribe()`方法前,需要使用`isUnsubscribed()`先判断状态。 +>* 不再使用的时候尽快在合适的地方调用`unsubscribe()`来解除引用关系,以避免内存泄漏 + +##### RxJava2 +```java +Observer observer = new Observer() { + @Override + public void onSubscribe(Disposable d) { + System.out.println("Subscribe: " + d); + } + + @Override + public void onNext(String s) { + System.out.println("Next: " + s); + } + + @Override + public void onError(Throwable e) { + System.out.println("Error: " + e); + } + + @Override + public void onComplete() { + System.out.println("Complete !"); + } +}; +``` + +#### Subscribe +创建好`Observable`和`Observer`之后,再用`subscribe()`方法将它们联结起来 +```java +observable.subscribe(observer); +// 或者(仅支持RxJava1) +observable.subscribe(subscriber); +``` + +#### chain calls +以上三步是使用RxJava进行异步操作的基本过程,创建`被观察者`,创建`观察者`,`被观察者`订阅`观察者`,我们可以通过链式调用形式完成操作 + +```java +Observable.unsafeCreate(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + subscriber.onNext("Hello"); + subscriber.onNext("World"); + subscriber.onNext("RxJava1"); + subscriber.onCompleted(); + } +}).subscribe(new Observer() { + @Override + public void onCompleted() { + System.out.println("Completed!"); + } + + @Override + public void onError(Throwable e) { + System.out.println("Error" + e); + } + + @Override + public void onNext(String s) { + System.out.println("Next" + s); + } +}); +``` +#### 简化订阅 +除了`subscribe(Observer)`和`subscribe(Subscriber)(仅支持RxJava1)`,`subscribe()`还支持不完整的简化订阅回调 + +```java +// RxJava1 +Action1 onNextAction = new Action1() { + @Override + public void call(String s) { + System.out.println("onNext" + s); + } +}; + +Action1 onErrorAction = new Action1() { + @Override + public void call(Throwable throwable) { + System.out.println("onError" + throwable); + } +}; + +Action0 onCompletedAction = new Action0() { + @Override + public void call() { + System.out.println("completed"); + } +}; + +// RxJava2 +Consumer onNextAction = new Consumer() { + @Override + public void accept(String s) throws Exception { + System.out.println("onNext" + s); + } +}; + +Consumer onErrorAction = new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + System.out.println("onError" + throwable); + } +}; + +Action onCompleteAction = new Action() { + @Override + public void run() throws Exception { + System.out.println("complete"); + } +}; + +// 自动创建 Subscriber ,并使用 onNextAction 来定义 onNext() +observable.subscribe(onNextAction); +// 自动创建 Subscriber ,并使用 onNextAction 和 onErrorAction 来定义 onNext() 和 onError() +observable.subscribe(onNextAction, onErrorAction); +// 自动创建 Subscriber ,并使用 onNextAction、 onErrorAction 和 onCompletedAction 来定义 onNext()、 onError() 和 onCompleted() +observable.subscribe(onNextAction, onErrorAction, onCompletedAction/onCompleteAction); + +``` + +## RxJava 线程 +在RxJava的默认规则中,事件的发出和消费都是在同一个线程(在哪个线程条用`subscriber()`,就在哪个线程生产事件;在哪个线程生产事件,就在哪个线程消费事件),也就是说,以上RxJava基本操作,实现出来的只是一个`同步`的观察者模式。而观察者模式本身的目的是“后台处理,前台回调”的`异步`机制,因此在RxJava中通过`Scheduler`来对线程进行管理 + +### Scheduler API +Scheduler相当于线程控制器,RxJava通过它指定代码应该运行在什么样的线程,其中RxJava中内置了几个Scheduler +* Schedulers.computation():计算所使用的`Scheduler`。这个计算值的是CPU密集型计算,即不会被I/O操作等限制性能的操作。不要把I/O操作放在`computation()`中,否则I/O操作的等待时间会浪费CPU。 +* Schedulers.form(Executor): +* Schedulers.immediate():直接在当前线程运行,相当于不指定线程,这也是默认的Scheduler. +* Schedulers.io():I/O操作(读写文件,读写数据库,网络信息交换等)所使用的Scheduler。行为模式和newThread()差不多,区别在于io()的内部实现是一个无数量上限的线程池,可以重用空闲的线程,因此多数情况下io()比newThread()更高效 +* Schedulers.newThread():总是启用新线程,并在新线程执行操作 +* Schedulers.single()『仅RxJava2中存在』: +* Schedulers.test()『仅RxJava1中存在』:顾名思义,这是一个测试 +* Schedulers.trampoline(): +* AndoroidSchedulers.mainThread():指定操作在Android的主线程 + +有了Scheduler,我们可以使用`subscribeOn()`和`observeOn()`方法来对线程进行控制 +* subscribeOn():指定subscribe()所发生的线程,即Observable.OnSubscribe被激活时所处的线程,或者叫做事件的产生的线程 +* observeOn():指定Subscriber所运行的线程。或者叫做事件的消费线程 + +```java +// RxJava2 +Observable.create(new ObservableOnSubscribe() { + @Override + public void subscribe(ObservableEmitter emitter) throws Exception { + emitter.onNext("Hello"); + emitter.onNext("World"); + emitter.onNext("RxJava2"); + emitter.onComplete(); + } +}) + // 指定 subscribe() 发生在 IO 线程 + .subscribeOn(Schedulers.io()) + // 指定 Subscriber 的回调发生在主线程 + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer() { + @Override + public void accept(String s) throws Exception { + System.out.println(s); + } + }); +``` + +## 操作符 +说RxJava好用,还有一个原因是RxJava提供了大量的操作符,这些操作符保证了在面都复杂的逻辑下,依旧可以是逻辑清晰的链式调用 + +![RxJava_action](https://res.cloudinary.com/incoder/image/upload/v1538815494/blog/RxJava_action.png) + +## 总结 +本篇文章作为RxJava系列的学习的入门,不会讲解相关操作的原理等 +学习目的 +* 了解RxJava1与RxJava2之间的不同点, +* 了解RxJava的线程管理, +* 掌握完成RxJava的基本操作, +* 清楚RxJava操作符,以及分别适用于什么样的场景 + +## 附录 +文章中部分原话引用了参考学习文章的原话,在这里向那些无私分享的大佬致敬 +* [给 Android 开发者的 RxJava 详解](https://gank.io/post/560e15be2dca930e00da1083) +* [RxJava系列教程](https://www.jianshu.com/nb/14302692) \ No newline at end of file From b2143431a24fa28af1cf425d33a4cfea51cfbb41 Mon Sep 17 00:00:00 2001 From: Jerry Date: Sun, 7 Oct 2018 16:33:11 +0800 Subject: [PATCH 030/163] fix some bug and add git articles --- _config.yml | 9 +-- source/_data/next.yml | 9 +-- source/_posts/git-account.md | 70 +++++++++++++++++++++++ source/_posts/git-bash.md | 107 +++++++++++++++++++++++++++++++++++ source/_posts/rxjava.md | 3 +- 5 files changed, 185 insertions(+), 13 deletions(-) create mode 100644 source/_posts/git-account.md create mode 100644 source/_posts/git-bash.md diff --git a/_config.yml b/_config.yml index 371273758..f9624c86c 100644 --- a/_config.yml +++ b/_config.yml @@ -100,13 +100,6 @@ githubEmojis: styles: localEmojis: -leancloud_counter_security: - enable: true - app_id: fAWWlD5N0zGklmW8OBweP1kl-gzGzoHsz - app_key: 7Jd3g9Ux1jhtWour5UFUPQuV - username: incoder # Will be asked while deploying if is left blank - password: coder@root,. # Recommmended to be left blank. Will be asked while deploying if is left blank - # hexo-symbols-count-time symbols_count_time: symbols: true @@ -131,4 +124,4 @@ douban: game: title: '那时候太年轻' quote: '游戏可以重来,人生呢?' - timeout: 10000 #optional \ No newline at end of file + timeout: 10000 # optional \ No newline at end of file diff --git a/source/_data/next.yml b/source/_data/next.yml index 2ed0a3feb..9a4877a07 100644 --- a/source/_data/next.yml +++ b/source/_data/next.yml @@ -193,6 +193,7 @@ links_layout: block links: TwoDragonLake: http://www.twodragonlake.com RootCluster: https://rootcluster.github.io + 南贺神社: https://1156721874.github.io # Sidebar Avatar avatar: @@ -276,8 +277,8 @@ auto_excerpt: post_meta: item_text: true created_at: true - updated_at: - enabled: false + updated_at: + enabled: true # If true, show updated date label only if `updated date` different from 'created date' (post edited in another day than was created). # And if post will edited in same day as created, edited time will show in popup title under created time label. # If false show anyway, but if post edited in same day, show only edited time. @@ -646,8 +647,8 @@ rating: # You can visit https://leancloud.cn get AppID and AppKey. leancloud_visitors: enable: true - app_id: fAWWlD5N0zGklmW8OBweP1kl-gzGzoHsz - app_key: 7Jd3g9Ux1jhtWour5UFUPQuV + app_id: 3ShrIGfQL4TLamd48UtbdDEK-gzGzoHsz + app_key: cW8VJrB2yJiIBLtYA0KdE8vW # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security # If you don't care about security in lc counter and just want to use it directly # (without hexo-leancloud-counter-security plugin), set the `security` to `false`. diff --git a/source/_posts/git-account.md b/source/_posts/git-account.md new file mode 100644 index 000000000..5da330130 --- /dev/null +++ b/source/_posts/git-account.md @@ -0,0 +1,70 @@ +--- +title: Git 多账号 +date: 2018-10-06 10:54:50 +categories: Git +tag: [git account] +--- + +以前,git的账号只用来在Github上操作,随着积累Git管理的项目不仅仅只来自Github,还有一些其它Git项目托管的平台,例如:[Bitbucket](https://bitbucket.org),[Coding](https://coding.net),[Gitee](https://gitee.com),[Gitlib](https://gitlab.com),以及公司内Git仓库 + +不同的托管平台有着不同的Git账号,无法用一个账号来管理其它的仓库,而且由于不同的托管平台账号不同,因此需要添加不同账号的公钥,这样我们再能在对应平台用对应的账号进行操作 + +## 环境 +* Windows 10 x64 +* Git version 2.16.0 + +>这里Git的安装不在赘述 + +## 生成对应账号的密钥 +```sh +# 进入到`your_pc_name/.ssh`, +cd .ssh +# Jerry.x@outlook.com 是我的Github的邮箱,这里需要替换成自己的邮箱 +ssh-keygen -t rsa -C "Jerry.x@outlook.com" +# 命名文件名称或指定文件存放路径等 +# 其它可以回车键进行确认,进行下一步 +``` +![git-account](https://res.cloudinary.com/incoder/image/upload/v1538887180/blog/git-account.png) + +>完成后,将会生成`id_rsa_company.pub`(存放公钥)与`id_rsa_company`(存放私钥)两个文件 + +## 添加公钥到托管平台 +* 在`.ssh`路径下,用文本编辑器打开`id_rsa_company.pub`文件,复制内容 +* 在托管平台上添加ssh public key +以下以GitHub添加为例,其它平台类似 +![git-add-key](https://res.cloudinary.com/incoder/image/upload/v1538887180/blog/git-add-key.png) + +## 添加配置文件 +在`.ssh`路径下,创建`config`文件,无文件后缀名,如下示例 + +```sh +# 配置github.com +Host github.com + HostName github.com + IdentityFile C:\\Users\\Jerry\\.ssh\\id_rsa + PreferredAuthentications publickey + User BladeCode + +# 配置 company.domain.com +Host company.domain.com + HostName company.domain.com + IdentityFile C:\\Users\\Jerry\\.ssh\\id_rsa_company + PreferredAuthentications publickey + User Jerry xu +``` + +* `Host`:的名字可以取为自己喜欢的名字 +* `HostName`:这个是真实的域名地址 +例如:https://github.com/BladeCode/BladeCode.github.io.git,红色标注字段 +* `IdentityFile`:这里是id_rsa的地址 +* `PreferredAuthentications`:配置登录时用什么权限认证 +可设为publickey,password publickey,keyboard-interactive等 +* `User`:配置使用用户名 + +## 测试 +```sh +ssh -T git@github.com +``` +![git-test](https://res.cloudinary.com/incoder/image/upload/v1538887180/blog/git-test.png) + +>git@github.com,github.com就是上一步中`config`文件中配置的`HostName`字段内容 \ No newline at end of file diff --git a/source/_posts/git-bash.md b/source/_posts/git-bash.md new file mode 100644 index 000000000..c9534216a --- /dev/null +++ b/source/_posts/git-bash.md @@ -0,0 +1,107 @@ +--- +title: Git 常用命令 +date: 2018-10-07 12:43:50 +categories: Git +tag: [git bash] +--- + +记录 Git 日常操作常用命令 + +## git config +Git级别:system() < global(当前用户) < local(当前仓库) +* 新增或修改 +```sh +git config --global user.name xxxxx +git config --global user.email xxx@xxxx.com +``` +* 删除用品配置信息 +```sh +# 如果当前只有一个用户,就不用加入xxxx +git config --global --unset user.name xxxx +``` + +## git clone +* clone +```sh +git clone url +``` +* clone 指定分支 +```sh +git clone -b branch_name url +``` +* clone 指定tag +```sh +# clone +git clone url +# checkout tag +git checkout tag_name +``` +* clone 指定commit +```sh +# 查看git commit 历史的 +git log +# 指定 commit SHA +git clone commit_sha_value +``` + +## git commit +```sh +git commit -m "注释" +``` + +## git branch +* 创建分支 +```sh +# 创建分支 +git branch branch_name +# 创建并切换到新分支 +git checkout -b branch_name +``` +* 切换分支 +```sh +git checkout branch_name +``` +* 删除分支 +```sh +# 删除本地分支 +git branch -d branch_name +# 删除远程指定分支 +git push origin --delete branch_name +``` +* 重命名分支 +```sh +git branch -m old_branch_name new_branch_name +``` +* 查看分支 +```sh +# 查看本地所有分支 +git branch +# 查看远程所有分支 +git branch -r +# 查看本地和远程所有分支 +git branch -a +``` + +## git tag +* 新增tag +```sh +git tag -a tag_name -m "注释" +``` +* 查看tag +```sh +git tag -l +``` +* 删除tag +```sh +# 删除本地tag +git tag -d tag_name +# 删除远程指定tag +git push origin --delete tag tag_name +``` +## git help +更多命令 +```sh +git --help +``` +## 附录 +* [Git Docs](https://git-scm.com/docs) diff --git a/source/_posts/rxjava.md b/source/_posts/rxjava.md index c62e927b3..1e9a5adf9 100644 --- a/source/_posts/rxjava.md +++ b/source/_posts/rxjava.md @@ -184,7 +184,8 @@ Subscriber subscriber = new Subscriber() { ``` 实际,在RxJava的subscribe过程中,`Observer`也总是会先被转成一个`Subscriber`再使用。对于使用者来说`Observer`与`Subscriber`的主要区别是: 1. onStart():这是`Subscriber`增加的方法。它会再subscribe刚开始,而事件还未发送之前被调用,可以用于做一些准备工作,例如:数据的重置等操作。这是一个可选方法,默认情况下它的实现为空。 ->注意:对于准备工作有线程要求,`onStart()`就不适用,因为它总是再subscribe所发生的线程被调用,而不能指定线程。要指定线程来准备工作,可以使用`doOnSubscribe()`方法 +>注意: +>对于准备工作有线程要求,`onStart()`就不适用,因为它总是再subscribe所发生的线程被调用,而不能指定线程。要指定线程来准备工作,可以使用`doOnSubscribe()`方法 2. unsubscribe():`Subscriber`所实现的另一个接口`Subscription`的方法,用于取消订阅。在这个方法被调用后,`Subscriber`将不再接收事件。 >注意: >* 一般需要在调用`unsubscribe()`方法前,需要使用`isUnsubscribed()`先判断状态。 From 6d929fafacbd75fb35ce9a176ae0662798f4d18a Mon Sep 17 00:00:00 2001 From: Jerry Date: Sun, 7 Oct 2018 16:50:56 +0800 Subject: [PATCH 031/163] uninstall hexo-leancloud-counter-security --- package-lock.json | 1148 +++++++++++++++++---------------------------- package.json | 1 - 2 files changed, 435 insertions(+), 714 deletions(-) diff --git a/package-lock.json b/package-lock.json index 551579967..9c98cd655 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" + "jsonparse": "1.3.1", + "through": "2.3.8" } }, "a-sync-waterfall": { @@ -28,7 +28,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "~2.1.18", + "mime-types": "2.1.18", "negotiator": "0.6.1" } }, @@ -42,9 +42,9 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" } }, "amdefine": { @@ -62,7 +62,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.1" } }, "any-promise": { @@ -75,8 +75,8 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" + "micromatch": "2.3.11", + "normalize-path": "2.1.1" } }, "archy": { @@ -89,7 +89,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "~1.0.2" + "sprintf-js": "1.0.3" } }, "arr-diff": { @@ -97,7 +97,7 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "requires": { - "arr-flatten": "^1.0.1" + "arr-flatten": "1.1.0" } }, "arr-flatten": { @@ -115,15 +115,6 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, - "ascli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", - "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", - "requires": { - "colour": "~0.7.1", - "optjs": "~3.2.2" - } - }, "async": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", @@ -134,33 +125,14 @@ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "axios": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", - "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" }, "dependencies": { "ansi-styles": { @@ -173,11 +145,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "strip-ansi": { @@ -185,7 +157,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -200,10 +172,10 @@ "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", "requires": { - "babel-code-frame": "^6.22.0", - "babel-traverse": "^6.23.1", - "babel-types": "^6.23.0", - "babylon": "^6.17.0" + "babel-code-frame": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0" } }, "babel-messages": { @@ -211,7 +183,7 @@ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-runtime": { @@ -219,8 +191,8 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "core-js": "2.5.5", + "regenerator-runtime": "0.11.1" }, "dependencies": { "core-js": { @@ -235,15 +207,15 @@ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.10" }, "dependencies": { "debug": { @@ -261,10 +233,10 @@ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "1.0.3" } }, "babylon": { @@ -282,11 +254,6 @@ "resolved": "https://registry.npmjs.org/balloon-css/-/balloon-css-0.5.0.tgz", "integrity": "sha1-ajwGXvq56l9QmpXUMV3wCq4RT6M=" }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" - }, "basic-auth": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", @@ -322,7 +289,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -331,9 +298,9 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" } }, "browser-fingerprint": { @@ -341,14 +308,6 @@ "resolved": "https://registry.npmjs.org/browser-fingerprint/-/browser-fingerprint-0.0.1.tgz", "integrity": "sha1-jfPNyiW/fVs1QtYVRdcwBT/OYEo=" }, - "bytebuffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", - "requires": { - "long": "~3" - } - }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -359,8 +318,8 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" + "no-case": "2.3.2", + "upper-case": "1.1.3" } }, "camelcase": { @@ -373,8 +332,8 @@ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" + "align-text": "0.1.4", + "lazy-cache": "1.0.4" } }, "chalk": { @@ -382,37 +341,32 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" } }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" - }, "cheerio": { "version": "0.22.0", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash.assignin": "^4.0.9", - "lodash.bind": "^4.1.4", - "lodash.defaults": "^4.0.1", - "lodash.filter": "^4.4.0", - "lodash.flatten": "^4.2.0", - "lodash.foreach": "^4.3.0", - "lodash.map": "^4.4.0", - "lodash.merge": "^4.4.0", - "lodash.pick": "^4.2.1", - "lodash.reduce": "^4.4.0", - "lodash.reject": "^4.4.0", - "lodash.some": "^4.4.0" + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash.assignin": "4.2.0", + "lodash.bind": "4.2.1", + "lodash.defaults": "4.2.0", + "lodash.filter": "4.6.0", + "lodash.flatten": "4.4.0", + "lodash.foreach": "4.5.0", + "lodash.map": "4.6.0", + "lodash.merge": "4.6.1", + "lodash.pick": "4.4.0", + "lodash.reduce": "4.6.0", + "lodash.reject": "4.6.0", + "lodash.some": "4.6.0" } }, "chokidar": { @@ -420,15 +374,15 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.2.2", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" } }, "cliui": { @@ -436,9 +390,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" }, "dependencies": { "strip-ansi": { @@ -446,7 +400,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -461,7 +415,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "requires": { - "color-name": "^1.1.1" + "color-name": "1.1.3" } }, "color-name": { @@ -469,35 +423,17 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, - "colour": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", - "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "requires": { - "delayed-stream": "~1.0.0" - } - }, "command-exists": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.6.tgz", "integrity": "sha512-Qst/zUUNmS/z3WziPxyqjrcz09pm+2Knbs5mAZL4VAE0sSrNY1/w8+/YxeHcoBTsO6iojA6BW7eFf27Eg2MRuw==" }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, "compressible": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", "requires": { - "mime-db": ">= 1.33.0 < 2" + "mime-db": "1.33.0" } }, "compression": { @@ -505,13 +441,13 @@ "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", "requires": { - "accepts": "~1.3.4", + "accepts": "1.3.5", "bytes": "3.0.0", - "compressible": "~2.0.13", + "compressible": "2.0.13", "debug": "2.6.9", - "on-headers": "~1.0.1", + "on-headers": "1.0.1", "safe-buffer": "5.1.1", - "vary": "~1.1.2" + "vary": "1.1.2" }, "dependencies": { "debug": { @@ -541,7 +477,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.1.0", - "parseurl": "~1.3.2", + "parseurl": "1.3.2", "utils-merge": "1.0.1" }, "dependencies": { @@ -555,11 +491,6 @@ } } }, - "cookiejar": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", - "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=" - }, "copy-to": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", @@ -580,15 +511,10 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" + "lru-cache": "4.1.2", + "which": "1.3.0" } }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" - }, "css-parse": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", @@ -599,10 +525,10 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", + "boolbase": "1.0.0", + "css-what": "2.1.0", "domutils": "1.5.1", - "nth-check": "~1.0.1" + "nth-check": "1.0.1" } }, "css-what": { @@ -616,7 +542,7 @@ "integrity": "sha1-S4deCWm612T37AcGz0T1+wgx9rc=", "requires": { "browser-fingerprint": "0.0.1", - "core-js": "^1.1.1", + "core-js": "1.2.7", "node-fingerprint": "0.0.2" } }, @@ -638,14 +564,9 @@ "resolved": "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz", "integrity": "sha1-FsRu/cq6PtxF8k8r1IaLAbfCrcY=", "requires": { - "os-name": "~1.0.3" + "os-name": "1.0.3" } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -669,7 +590,7 @@ "resolved": "https://registry.npmjs.org/utility/-/utility-0.1.11.tgz", "integrity": "sha1-/eYM+bTkdRlHoM9dEEzik2ciZxU=", "requires": { - "address": ">=0.0.1" + "address": "1.0.3" } } } @@ -679,8 +600,8 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" + "domelementtype": "1.1.3", + "entities": "1.1.1" }, "dependencies": { "domelementtype": { @@ -700,7 +621,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "requires": { - "domelementtype": "1" + "domelementtype": "1.3.0" } }, "domutils": { @@ -708,8 +629,8 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" } }, "dplayer": { @@ -717,7 +638,7 @@ "resolved": "https://registry.npmjs.org/dplayer/-/dplayer-1.22.2.tgz", "integrity": "sha512-M+rNMwM1walQoiEbWOwlVEj8PGtWRZyS1/kWtxDDbGPTcXBanv27UYiPTC/ukn2lTQ9+oXkd+OhMTWrestc04Q==", "requires": { - "balloon-css": "^0.5.0", + "balloon-css": "0.5.0", "promise-polyfill": "7.1.0" } }, @@ -741,11 +662,6 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" }, - "es6-promise": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.3.tgz", - "integrity": "sha512-vLf5iali3jKqlJoo6SryDwe3nxCmiueNjbjLWDIpNbAcKnQXAsAdZk+pM17nSYp3AQMbTmAQVCQSeDLfA87SNA==" - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -771,17 +687,12 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, - "eventemitter3": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", - "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=" - }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "requires": { - "is-posix-bracket": "^0.1.0" + "is-posix-bracket": "0.1.1" } }, "expand-range": { @@ -789,20 +700,15 @@ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "requires": { - "fill-range": "^2.1.0" + "fill-range": "2.2.3" } }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" - }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "filename-regex": { @@ -815,11 +721,11 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" } }, "finalhandler": { @@ -828,12 +734,12 @@ "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" }, "dependencies": { "debug": { @@ -846,14 +752,6 @@ } } }, - "follow-redirects": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", - "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", - "requires": { - "debug": "^3.1.0" - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -864,24 +762,9 @@ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "requires": { - "for-in": "^1.0.1" - } - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" + "for-in": "1.0.2" } }, - "formidable": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", - "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==" - }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -898,8 +781,8 @@ "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==", "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.9.0" + "nan": "2.10.0", + "node-pre-gyp": "0.9.1" }, "dependencies": { "abbrev": { @@ -1359,7 +1242,7 @@ "resolved": "https://registry.npmjs.org/gitment/-/gitment-0.0.3.tgz", "integrity": "sha1-28y610gLE0W2VpE71w7/eSp7OLg=", "requires": { - "mobx": "^3.1.7" + "mobx": "3.6.2" } }, "glob": { @@ -1368,11 +1251,11 @@ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", "optional": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "glob-base": { @@ -1380,8 +1263,8 @@ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" + "glob-parent": "2.0.0", + "is-glob": "2.0.1" } }, "glob-parent": { @@ -1389,7 +1272,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "requires": { - "is-glob": "^2.0.0" + "is-glob": "2.0.1" } }, "globals": { @@ -1407,7 +1290,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "has-flag": { @@ -1420,33 +1303,33 @@ "resolved": "https://registry.npmjs.org/hexo/-/hexo-3.7.1.tgz", "integrity": "sha512-+RRN4C8oWYzEnW0NtqNrIfIITRTvXpMoE6OrK5aK4nrO+4lzp0JfZkoxnsINVXUPmzHRimLWUzO95x9lt33jEg==", "requires": { - "abbrev": "^1.0.7", - "archy": "^1.0.0", - "bluebird": "^3.4.0", - "chalk": "^2.3.1", + "abbrev": "1.1.1", + "archy": "1.0.0", + "bluebird": "3.5.1", + "chalk": "2.4.1", "cheerio": "0.22.0", - "hexo-cli": "^1.1.0", - "hexo-front-matter": "^0.2.2", - "hexo-fs": "^0.2.0", - "hexo-i18n": "^0.2.1", - "hexo-log": "^0.2.0", - "hexo-util": "^0.6.3", - "js-yaml": "^3.6.1", - "lodash": "^4.17.5", - "minimatch": "^3.0.4", - "moment": "^2.19.4", - "moment-timezone": "^0.5.14", - "nunjucks": "^3.1.2", - "pretty-hrtime": "^1.0.2", - "resolve": "^1.5.0", - "strip-ansi": "^4.0.0", - "strip-indent": "^2.0.0", + "hexo-cli": "1.1.0", + "hexo-front-matter": "0.2.3", + "hexo-fs": "0.2.3", + "hexo-i18n": "0.2.1", + "hexo-log": "0.2.0", + "hexo-util": "0.6.3", + "js-yaml": "3.11.0", + "lodash": "4.17.10", + "minimatch": "3.0.4", + "moment": "2.22.1", + "moment-timezone": "0.5.17", + "nunjucks": "3.1.2", + "pretty-hrtime": "1.0.3", + "resolve": "1.7.1", + "strip-ansi": "4.0.0", + "strip-indent": "2.0.0", "swig-extras": "0.0.1", - "swig-templates": "^2.0.2", - "text-table": "^0.2.0", - "tildify": "^1.2.0", - "titlecase": "^1.1.2", - "warehouse": "^2.2.0" + "swig-templates": "2.0.2", + "text-table": "0.2.0", + "tildify": "1.2.0", + "titlecase": "1.1.2", + "warehouse": "2.2.0" }, "dependencies": { "ansi-styles": { @@ -1459,17 +1342,17 @@ "resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-1.1.0.tgz", "integrity": "sha512-IWQPppwgmj1iBUcP5mpcMg3Tre6a8Qlr8ejXw6naZiJNSepSgh4mS3KiNPKDa2qQIgPDqJYJzNVFLw+RLA9CkA==", "requires": { - "abbrev": "^1.0.7", - "bluebird": "^3.4.0", - "chalk": "^1.1.3", - "command-exists": "^1.2.0", - "hexo-fs": "^0.2.0", - "hexo-log": "^0.2.0", - "hexo-util": "^0.6.0", - "minimist": "^1.2.0", - "object-assign": "^4.1.0", - "resolve": "^1.5.0", - "tildify": "^1.2.0" + "abbrev": "1.1.1", + "bluebird": "3.5.1", + "chalk": "1.1.3", + "command-exists": "1.2.6", + "hexo-fs": "0.2.3", + "hexo-log": "0.2.0", + "hexo-util": "0.6.3", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "resolve": "1.7.1", + "tildify": "1.2.0" }, "dependencies": { "chalk": { @@ -1477,11 +1360,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "strip-ansi": { @@ -1489,7 +1372,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -1506,9 +1389,9 @@ "resolved": "https://registry.npmjs.org/hexo-bunyan/-/hexo-bunyan-1.0.0.tgz", "integrity": "sha512-RymT8Ck+K77mLt9BEYNb4uyfC7RIQnU5N3laXowMrS28jj2h89VHJCOnhV00mmta4fHRqNa07kP1Hrn17nvMkQ==", "requires": { - "moment": "^2.10.6", - "mv": "~2", - "safe-json-stringify": "~1" + "moment": "2.22.1", + "mv": "2.1.1", + "safe-json-stringify": "1.1.0" } }, "hexo-deployer-git": { @@ -1516,13 +1399,13 @@ "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-0.3.1.tgz", "integrity": "sha512-JSwSmTSknGpaiooGXwmP7sAhoSNW3c+xmBiCc5yyrvRSfQ3zIYWjmcqNXSj8m2DmheqQNgt5D4M7quYjw+L6tA==", "requires": { - "babel-eslint": "^7.2.1", - "bluebird": "^3.5.0", - "chalk": "^1.1.3", - "hexo-fs": "^0.2.0", - "hexo-util": "^0.6.0", - "moment": "^2.18.0", - "swig": "^1.4.2" + "babel-eslint": "7.2.3", + "bluebird": "3.5.1", + "chalk": "1.1.3", + "hexo-fs": "0.2.3", + "hexo-util": "0.6.3", + "moment": "2.22.1", + "swig": "1.4.2" }, "dependencies": { "ansi-styles": { @@ -1540,11 +1423,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "source-map": { @@ -1552,7 +1435,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=", "requires": { - "amdefine": ">=0.0.4" + "amdefine": "1.0.1" } }, "strip-ansi": { @@ -1560,7 +1443,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -1573,8 +1456,8 @@ "resolved": "https://registry.npmjs.org/swig/-/swig-1.4.2.tgz", "integrity": "sha1-QIXKBFM2kQS11IPihBs5t64aq6U=", "requires": { - "optimist": "~0.6", - "uglify-js": "~2.4" + "optimist": "0.6.1", + "uglify-js": "2.4.24" } }, "uglify-js": { @@ -1582,10 +1465,10 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=", "requires": { - "async": "~0.2.6", + "async": "0.2.10", "source-map": "0.1.34", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.5.4" + "uglify-to-browserify": "1.0.2", + "yargs": "3.5.4" } }, "window-size": { @@ -1603,8 +1486,8 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=", "requires": { - "camelcase": "^1.0.2", - "decamelize": "^1.0.0", + "camelcase": "1.2.1", + "decamelize": "1.2.0", "window-size": "0.1.0", "wordwrap": "0.0.2" } @@ -1617,13 +1500,13 @@ "integrity": "sha512-xRunvmGgEi4ER+fvwx85xeScyO5ci/gcypa6VwNlydq0alR8dq5tT0QKKnr89QWcJwJYSnlsP/xOjuJPRlj8gw==", "requires": { "ejs": "2.5.6", - "hexo-fs": "^0.2.2", - "hexo-i18n": "^0.2.1", - "hexo-log": "^0.2.0", - "path": "^0.12.7", - "urllib-sync": "^1.0.1", - "xmldom": "^0.1.27", - "xpath": "^0.0.24" + "hexo-fs": "0.2.3", + "hexo-i18n": "0.2.1", + "hexo-log": "0.2.0", + "path": "0.12.7", + "urllib-sync": "1.1.4", + "xmldom": "0.1.27", + "xpath": "0.0.24" }, "dependencies": { "ejs": { @@ -1638,7 +1521,7 @@ "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-0.2.3.tgz", "integrity": "sha1-x8qO9CDqNr2F6ECKLoyb9J76YF4=", "requires": { - "js-yaml": "^3.6.1" + "js-yaml": "3.11.0" } }, "hexo-fs": { @@ -1646,10 +1529,10 @@ "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-0.2.3.tgz", "integrity": "sha512-rLB1rMVUW3csAljvJgHfyjemL0BrmcUZfBf9hJe6S0pA53igFa3ON0PFwomvoLs1Wdmjs9Awnw9Tru4PjWFSlQ==", "requires": { - "bluebird": "^3.4.0", - "chokidar": "^1.5.2", - "escape-string-regexp": "^1.0.5", - "graceful-fs": "^4.1.4" + "bluebird": "3.5.1", + "chokidar": "1.7.0", + "escape-string-regexp": "1.0.5", + "graceful-fs": "4.1.11" } }, "hexo-generator-archive": { @@ -1658,7 +1541,7 @@ "integrity": "sha512-jPbMtibqkJnAX3hCwhYhK3r6cqy9OKQsVEScjk7LDok+iPmFmkKCNdU/OccxGe1CWAZpT+ta4+LknwNeHG2G4w==", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "^2.0.0" + "object-assign": "2.1.1" }, "dependencies": { "object-assign": { @@ -1674,7 +1557,7 @@ "integrity": "sha1-uealhiUwqDvdfaTIGcG58+TMtLI=", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "^2.0.0" + "object-assign": "2.1.1" }, "dependencies": { "object-assign": { @@ -1689,8 +1572,8 @@ "resolved": "https://registry.npmjs.org/hexo-generator-feed/-/hexo-generator-feed-1.2.2.tgz", "integrity": "sha512-4jcvVhFgpEFRJ7A+KhBSfWoQaewRBjcVWEO4OmBgnvaZOm6XwK+b5ZXx/8BpujCLHbjXWzglXhiT7qFFS/nvzw==", "requires": { - "nunjucks": "^3.0.0", - "object-assign": "^4.1.1" + "nunjucks": "3.1.2", + "object-assign": "4.1.1" } }, "hexo-generator-index": { @@ -1699,7 +1582,7 @@ "integrity": "sha1-kEIin8rHmq9wBXXaGTMr8/fuXF0=", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "^4.0.1" + "object-assign": "4.1.1" } }, "hexo-generator-searchdb": { @@ -1707,9 +1590,9 @@ "resolved": "https://registry.npmjs.org/hexo-generator-searchdb/-/hexo-generator-searchdb-1.0.8.tgz", "integrity": "sha1-BCRSVuFBOmYxOTLb8cCn5WhVkwE=", "requires": { - "ejs": "^1.0.0", - "striptags": "latest", - "utils-merge": "^1.0.0" + "ejs": "1.0.0", + "striptags": "3.1.1", + "utils-merge": "1.0.1" }, "dependencies": { "ejs": { @@ -1729,9 +1612,9 @@ "resolved": "https://registry.npmjs.org/hexo-generator-sitemap/-/hexo-generator-sitemap-1.2.0.tgz", "integrity": "sha1-MBj419Hi5Cs/caZacxb/z1g7w/M=", "requires": { - "minimatch": "^3.0.0", - "nunjucks": "^2.3.0", - "object-assign": "^4.0.1" + "minimatch": "3.0.4", + "nunjucks": "2.5.2", + "object-assign": "4.1.1" }, "dependencies": { "nunjucks": { @@ -1739,9 +1622,9 @@ "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-2.5.2.tgz", "integrity": "sha1-6n00bnhbikh0Zmw8yp4YxXf7oiw=", "requires": { - "asap": "^2.0.3", - "chokidar": "^1.6.0", - "yargs": "^3.32.0" + "asap": "2.0.6", + "chokidar": "1.7.0", + "yargs": "3.32.0" } } } @@ -1752,7 +1635,7 @@ "integrity": "sha1-xXFYRrtB5X2cIMHWbX2yGhq/emI=", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "^4.0.1" + "object-assign": "4.1.1" } }, "hexo-i18n": { @@ -1760,16 +1643,7 @@ "resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-0.2.1.tgz", "integrity": "sha1-hPFBQyvwnYtVjth4xygWS20c1t4=", "requires": { - "sprintf-js": "^1.0.2" - } - }, - "hexo-leancloud-counter-security": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/hexo-leancloud-counter-security/-/hexo-leancloud-counter-security-1.3.2.tgz", - "integrity": "sha512-vWxepM1Hz+W/ommkVicaFx7ATUuTWvhVq6A/iyMfmSr05uchKZguPLolv4oLD03BUpY/RU8ZLjeOwrGANLAiYA==", - "requires": { - "leancloud-storage": "^3.5.0", - "readline-sync": "^1.4.7" + "sprintf-js": "1.0.3" } }, "hexo-log": { @@ -1777,8 +1651,8 @@ "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-0.2.0.tgz", "integrity": "sha512-fzoc+GQexxPPILTjoOQILnA3ZG2MFgqMBVel4xvJ11pXptw9+f97ynTgDAExXafyp9Nz2ChXRuqlCYgPtZSlxQ==", "requires": { - "chalk": "^1.1.1", - "hexo-bunyan": "^1.0.0" + "chalk": "1.1.3", + "hexo-bunyan": "1.0.0" }, "dependencies": { "ansi-styles": { @@ -1791,11 +1665,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "strip-ansi": { @@ -1803,7 +1677,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -1818,7 +1692,7 @@ "resolved": "https://registry.npmjs.org/hexo-pagination/-/hexo-pagination-0.0.2.tgz", "integrity": "sha1-jPRwx9sN5bGKOSanbesZQBXffys=", "requires": { - "utils-merge": "^1.0.0" + "utils-merge": "1.0.1" } }, "hexo-renderer-ejs": { @@ -1826,8 +1700,8 @@ "resolved": "https://registry.npmjs.org/hexo-renderer-ejs/-/hexo-renderer-ejs-0.3.1.tgz", "integrity": "sha512-XN8pYJU+Wr3dT8ipqEPRlOBySJpd1C5NUBBzgZpVSVBC/6L36O0YZI/Qd5NxQqwfGfSuKQ8N5iMyjmRXSR1MdA==", "requires": { - "ejs": "^2.3.4", - "object-assign": "^4.0.1" + "ejs": "2.5.9", + "object-assign": "4.1.1" } }, "hexo-renderer-marked": { @@ -1835,10 +1709,10 @@ "resolved": "https://registry.npmjs.org/hexo-renderer-marked/-/hexo-renderer-marked-0.3.2.tgz", "integrity": "sha512-joSLeHB0YRkuViIPQlRz4A+zfJKPNHT+rABFgPHiT1zL9eeTUPxoLL4h7kcgOwRLAontVScaxP2Sie15mNitFg==", "requires": { - "hexo-util": "^0.6.2", - "marked": "^0.3.9", - "object-assign": "^4.1.1", - "strip-indent": "^2.0.0" + "hexo-util": "0.6.3", + "marked": "0.3.19", + "object-assign": "4.1.1", + "strip-indent": "2.0.0" } }, "hexo-renderer-stylus": { @@ -1846,8 +1720,8 @@ "resolved": "https://registry.npmjs.org/hexo-renderer-stylus/-/hexo-renderer-stylus-0.3.3.tgz", "integrity": "sha1-xU6ifh/Y48ipp6hM+6itNUEiyn8=", "requires": { - "nib": "^1.1.2", - "stylus": "^0.54.5" + "nib": "1.1.2", + "stylus": "0.54.5" } }, "hexo-server": { @@ -1855,15 +1729,15 @@ "resolved": "https://registry.npmjs.org/hexo-server/-/hexo-server-0.2.2.tgz", "integrity": "sha512-/KkOYMIGylNoMtnlgas84Kw18A60WU3BVfo8ZnTHy8omCsAz2Z+aK6ddR4PpSmTdLeKDsiZj4ZSg86ZQ+FZzrA==", "requires": { - "bluebird": "^3.0.6", - "chalk": "^1.1.1", - "compression": "^1.6.0", - "connect": "3.x", - "mime": "^1.3.4", - "morgan": "^1.6.1", - "object-assign": "^4.0.1", - "opn": "^4.0.0", - "serve-static": "^1.10.0" + "bluebird": "3.5.1", + "chalk": "1.1.3", + "compression": "1.7.2", + "connect": "3.6.6", + "mime": "1.6.0", + "morgan": "1.9.0", + "object-assign": "4.1.1", + "opn": "4.0.2", + "serve-static": "1.13.2" }, "dependencies": { "ansi-styles": { @@ -1876,11 +1750,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "strip-ansi": { @@ -1888,7 +1762,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -1908,10 +1782,10 @@ "resolved": "https://registry.npmjs.org/hexo-tag-dplayer/-/hexo-tag-dplayer-0.3.3.tgz", "integrity": "sha512-Y2sweNkcYNr9cLt2J35V0R40P7rriPiW/99shfEdWy5xYxXNzCBKKuDC/YAr2XzzZk29WM5YPID9f2w3veaqdA==", "requires": { - "dplayer": "^1.6.0", - "hexo-fs": "^0.2.2", - "hexo-log": "^0.2.0", - "hexo-util": "^0.6.2" + "dplayer": "1.22.2", + "hexo-fs": "0.2.3", + "hexo-log": "0.2.0", + "hexo-util": "0.6.3" } }, "hexo-util": { @@ -1919,12 +1793,12 @@ "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-0.6.3.tgz", "integrity": "sha512-zPxaqCWZz3/25SAB4FlrRtWktJ+Pr+vBiv/nyHpXKgXPt1m70liViKlRwWLqDmRjJ72x6/k4qCEeXHajvcGHUw==", "requires": { - "bluebird": "^3.4.0", - "camel-case": "^3.0.0", - "cross-spawn": "^4.0.0", - "highlight.js": "^9.4.0", - "html-entities": "^1.2.0", - "striptags": "^2.1.1" + "bluebird": "3.5.1", + "camel-case": "3.0.0", + "cross-spawn": "4.0.2", + "highlight.js": "9.12.0", + "html-entities": "1.2.1", + "striptags": "2.2.1" } }, "highlight.js": { @@ -1942,12 +1816,12 @@ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", "requires": { - "domelementtype": "^1.3.0", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" + "domelementtype": "1.3.0", + "domhandler": "2.4.2", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6" } }, "http-errors": { @@ -1955,10 +1829,10 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "depd": "~1.1.2", + "depd": "1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "statuses": "1.5.0" }, "dependencies": { "statuses": { @@ -1973,7 +1847,7 @@ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", "requires": { - "ms": "^2.0.0" + "ms": "2.0.0" } }, "iconv-lite": { @@ -1981,7 +1855,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "inflight": { @@ -1989,8 +1863,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -2003,7 +1877,7 @@ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.3.1" } }, "invert-kv": { @@ -2016,7 +1890,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "requires": { - "binary-extensions": "^1.0.0" + "binary-extensions": "1.11.0" } }, "is-buffer": { @@ -2034,7 +1908,7 @@ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "requires": { - "is-primitive": "^2.0.0" + "is-primitive": "2.0.0" } }, "is-extendable": { @@ -2052,7 +1926,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "is-glob": { @@ -2060,7 +1934,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "is-number": { @@ -2068,7 +1942,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-plain-object": { @@ -2076,7 +1950,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -2114,11 +1988,6 @@ "isarray": "1.0.0" } }, - "javascript-state-machine": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/javascript-state-machine/-/javascript-state-machine-2.4.0.tgz", - "integrity": "sha1-2L4x7DjySsGhgy8LZy/DzV95yW4=" - }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -2129,8 +1998,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.10", + "esprima": "4.0.0" } }, "jsonparse": { @@ -2143,7 +2012,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } }, "lazy-cache": { @@ -2156,59 +2025,9 @@ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "invert-kv": "^1.0.0" - } - }, - "leancloud-realtime": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/leancloud-realtime/-/leancloud-realtime-4.0.0-beta.5.tgz", - "integrity": "sha512-SMfxjexc7d36AChg//XRS+uVdY9C/Id3NaXW8yQSdlQGLR07EwiDvD8Vns/aER4Kvsx8kWYtQ0tOmo3LZkOhDA==", - "requires": { - "axios": "^0.18.0", - "babel-runtime": "^6.6.1", - "base64-arraybuffer": "^0.1.5", - "debug": "^3.0.0", - "eventemitter3": "^3.0.0", - "javascript-state-machine": "^2.3.5", - "lodash": "^4.6.0", - "protobufjs": "^5.0.1", - "uuid": "^3.0.0", - "ws": "^4.0.0" - }, - "dependencies": { - "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" - } + "invert-kv": "1.0.0" } }, - "leancloud-realtime-plugin-live-query": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/leancloud-realtime-plugin-live-query/-/leancloud-realtime-plugin-live-query-1.1.1.tgz", - "integrity": "sha512-XT3IiZ6He1U8AcAuwfVS8iFLRmlzqkJVNcG6bG+8BnbJ1FKe0HxG9poW/WwVxTe9Tlnhbsd9MeFzm/dkMBhfMw==" - }, - "leancloud-storage": { - "version": "3.6.8", - "resolved": "https://registry.npmjs.org/leancloud-storage/-/leancloud-storage-3.6.8.tgz", - "integrity": "sha512-Wp7GoqhSyaWFqHa0UzLn0YekYz/HGEFJJq2f1Sgv6EPCh9EsD6IXkpvdqEr7cgdZM11831ZCU+6nAamx5m/LEg==", - "requires": { - "debug": "^3.1.0", - "es6-promise": "4.2.3", - "eventemitter3": "^2.0.3", - "leancloud-realtime": "^4.0.0-beta.5", - "leancloud-realtime-plugin-live-query": "^1.1.1", - "localstorage-memory": "^1.0.1", - "md5": "^2.0.0", - "superagent": "^3.3.1", - "underscore": "^1.8.3" - } - }, - "localstorage-memory": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/localstorage-memory/-/localstorage-memory-1.0.2.tgz", - "integrity": "sha1-zUqPIQ5V3VGckp9LTMgoKbWPmlE=" - }, "lodash": { "version": "4.17.10", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", @@ -2274,11 +2093,6 @@ "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" }, - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" - }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -2289,7 +2103,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "requires": { - "js-tokens": "^3.0.0" + "js-tokens": "3.0.2" } }, "lower-case": { @@ -2302,8 +2116,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "pseudomap": "1.0.2", + "yallist": "2.1.2" } }, "markdown": { @@ -2311,7 +2125,7 @@ "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=", "requires": { - "nopt": "~2.1.1" + "nopt": "2.1.2" } }, "marked": { @@ -2319,44 +2133,29 @@ "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==" }, - "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", - "requires": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" - } - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, "micromatch": { "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" } }, "mime": { @@ -2374,7 +2173,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "~1.33.0" + "mime-db": "1.33.0" } }, "minimatch": { @@ -2382,7 +2181,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -2420,7 +2219,7 @@ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.17.tgz", "integrity": "sha512-Y/JpVEWIOA9Gho4vO15MTnW1FCmHi3ypprrkUaxsZ1TKg3uqC8q/qMBjTddkHoiwwZN3qvZSr4zJP7x9V3LpXA==", "requires": { - "moment": ">= 2.9.0" + "moment": "2.22.1" } }, "morgan": { @@ -2428,11 +2227,11 @@ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", "requires": { - "basic-auth": "~2.0.0", + "basic-auth": "2.0.0", "debug": "2.6.9", - "depd": "~1.1.1", - "on-finished": "~2.3.0", - "on-headers": "~1.0.1" + "depd": "1.1.2", + "on-finished": "2.3.0", + "on-headers": "1.0.1" }, "dependencies": { "debug": { @@ -2456,9 +2255,9 @@ "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", "optional": true, "requires": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" + "mkdirp": "0.5.1", + "ncp": "2.0.0", + "rimraf": "2.4.5" } }, "nan": { @@ -2491,7 +2290,7 @@ "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "requires": { - "lower-case": "^1.1.1" + "lower-case": "1.1.4" } }, "node-fingerprint": { @@ -2504,7 +2303,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", "requires": { - "abbrev": "1" + "abbrev": "1.1.1" } }, "normalize-path": { @@ -2512,7 +2311,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "^1.0.1" + "remove-trailing-separator": "1.1.0" } }, "nth-check": { @@ -2520,7 +2319,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", "requires": { - "boolbase": "~1.0.0" + "boolbase": "1.0.0" } }, "number-is-nan": { @@ -2533,11 +2332,11 @@ "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.1.2.tgz", "integrity": "sha512-pJXncV07mmiuIDL9OqdNkcpvifuDMzMq9qBQT9SHasAS7AEwzNp/r/jHNl+9O0+zsldcdWG9ZtXo/nwu2cTqXA==", "requires": { - "a-sync-waterfall": "^1.0.0", - "asap": "^2.0.3", - "chokidar": "^1.6.0", - "postinstall-build": "^5.0.1", - "yargs": "^3.32.0" + "a-sync-waterfall": "1.0.0", + "asap": "2.0.6", + "chokidar": "1.7.0", + "postinstall-build": "5.0.1", + "yargs": "3.32.0" } }, "object-assign": { @@ -2550,8 +2349,8 @@ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "for-own": "0.1.5", + "is-extendable": "0.1.1" } }, "on-finished": { @@ -2572,7 +2371,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "opn": { @@ -2580,8 +2379,8 @@ "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" } }, "optimist": { @@ -2589,8 +2388,8 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "minimist": "0.0.10", + "wordwrap": "0.0.3" }, "dependencies": { "minimist": { @@ -2600,11 +2399,6 @@ } } }, - "optjs": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", - "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" - }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -2615,7 +2409,7 @@ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "requires": { - "lcid": "^1.0.0" + "lcid": "1.0.0" } }, "os-name": { @@ -2623,8 +2417,8 @@ "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", "integrity": "sha1-GzefZINa98Wn9JizV8uVIVwVnt8=", "requires": { - "osx-release": "^1.0.0", - "win-release": "^1.0.0" + "osx-release": "1.1.0", + "win-release": "1.1.1" } }, "osx-release": { @@ -2632,7 +2426,7 @@ "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", "integrity": "sha1-8heRGigTaUmvG/kwiyQeJzfTzWw=", "requires": { - "minimist": "^1.1.0" + "minimist": "1.2.0" } }, "parse-glob": { @@ -2640,10 +2434,10 @@ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" } }, "parseurl": { @@ -2656,8 +2450,8 @@ "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", "requires": { - "process": "^0.11.1", - "util": "^0.10.3" + "process": "0.11.10", + "util": "0.10.3" } }, "path-is-absolute": { @@ -2680,7 +2474,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "^2.0.0" + "pinkie": "2.0.4" } }, "postinstall-build": { @@ -2713,49 +2507,18 @@ "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-7.1.0.tgz", "integrity": "sha512-P6NJ2wU/8fac44ENORsuqT8TiolKGB2u0fEClPtXezn7w5cmLIjM/7mhPlTebke2EPr6tmqZbXvnX0TxwykGrg==" }, - "protobufjs": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.2.tgz", - "integrity": "sha1-WXSNfc8D0tsiwT2p/rAk4Wq4DJE=", - "requires": { - "ascli": "~1", - "bytebuffer": "~5", - "glob": "^7.0.5", - "yargs": "^3.10.0" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" - }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "3.0.0", + "kind-of": "4.0.0" }, "dependencies": { "is-number": { @@ -2763,7 +2526,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -2771,7 +2534,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -2781,7 +2544,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -2796,13 +2559,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "readdirp": { @@ -2810,17 +2573,12 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.6", + "set-immediate-shim": "1.0.1" } }, - "readline-sync": { - "version": "1.4.9", - "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.9.tgz", - "integrity": "sha1-PtqOZfI80qF+YTAbHwADOWr17No=" - }, "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", @@ -2831,7 +2589,7 @@ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "requires": { - "is-equal-shallow": "^0.1.3" + "is-equal-shallow": "0.1.3" } }, "remove-trailing-separator": { @@ -2854,7 +2612,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "requires": { - "path-parse": "^1.0.5" + "path-parse": "1.0.5" } }, "right-align": { @@ -2862,7 +2620,7 @@ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "requires": { - "align-text": "^0.1.1" + "align-text": "0.1.4" } }, "rimraf": { @@ -2871,7 +2629,7 @@ "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", "optional": true, "requires": { - "glob": "^6.0.1" + "glob": "6.0.4" } }, "safe-buffer": { @@ -2906,18 +2664,18 @@ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", + "http-errors": "1.6.3", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" }, "dependencies": { "debug": { @@ -2945,9 +2703,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", "send": "0.16.2" } }, @@ -2981,9 +2739,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" }, "dependencies": { "strip-ansi": { @@ -2991,7 +2749,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -3001,7 +2759,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } }, "strip-ansi": { @@ -3009,7 +2767,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" }, "dependencies": { "ansi-regex": { @@ -3034,12 +2792,12 @@ "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", "requires": { - "css-parse": "1.7.x", - "debug": "*", - "glob": "7.0.x", - "mkdirp": "0.5.x", - "sax": "0.5.x", - "source-map": "0.1.x" + "css-parse": "1.7.0", + "debug": "3.1.0", + "glob": "7.0.6", + "mkdirp": "0.5.1", + "sax": "0.5.8", + "source-map": "0.1.43" }, "dependencies": { "glob": { @@ -3047,12 +2805,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "source-map": { @@ -3060,34 +2818,17 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "requires": { - "amdefine": ">=0.0.4" + "amdefine": "1.0.1" } } } }, - "superagent": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", - "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", - "requires": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.1.1", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.0.5" - } - }, "supports-color": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } }, "swig-extras": { @@ -3095,7 +2836,7 @@ "resolved": "https://registry.npmjs.org/swig-extras/-/swig-extras-0.0.1.tgz", "integrity": "sha1-tQP+3jcqucJMasaMr2VrzvGHIyg=", "requires": { - "markdown": "~0.5.0" + "markdown": "0.5.0" } }, "swig-templates": { @@ -3103,7 +2844,7 @@ "resolved": "https://registry.npmjs.org/swig-templates/-/swig-templates-2.0.2.tgz", "integrity": "sha1-0lAqcwMBk1b06nbqkGXU9Yr2q3U=", "requires": { - "optimist": "~0.6", + "optimist": "0.6.1", "uglify-js": "2.6.0" } }, @@ -3122,7 +2863,7 @@ "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", "requires": { - "os-homedir": "^1.0.0" + "os-homedir": "1.0.2" } }, "titlecase": { @@ -3140,10 +2881,10 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.0.tgz", "integrity": "sha1-JeqhzDVQ45QQzu+v0c+7a20V8AE=", "requires": { - "async": "~0.2.6", - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" + "async": "0.2.10", + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" }, "dependencies": { "camelcase": { @@ -3156,8 +2897,8 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", + "center-align": "0.1.3", + "right-align": "0.1.3", "wordwrap": "0.0.2" } }, @@ -3176,9 +2917,9 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", "window-size": "0.1.0" } } @@ -3189,11 +2930,6 @@ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" }, - "underscore": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.0.tgz", - "integrity": "sha512-4IV1DSSxC1QK48j9ONFK1MoIAKKkbE8i7u55w2R6IqBqbT7A/iG7aZBCR2Bi8piF0Uz+i/MG1aeqLwl/5vqF+A==" - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -3209,14 +2945,14 @@ "resolved": "https://registry.npmjs.org/urllib/-/urllib-2.11.1.tgz", "integrity": "sha1-5F1Xnxu+Qsn64hzf9yVo88jIyUU=", "requires": { - "any-promise": "^1.2.0", - "debug": "^2.2.0", - "default-user-agent": "^1.0.0", - "digest-header": "^0.0.1", - "humanize-ms": "^1.2.0", - "iconv-lite": "^0.4.13", - "media-typer": "^0.3.0", - "statuses": "^1.3.0" + "any-promise": "1.3.0", + "debug": "2.6.9", + "default-user-agent": "1.0.0", + "digest-header": "0.0.1", + "humanize-ms": "1.2.1", + "iconv-lite": "0.4.23", + "media-typer": "0.3.0", + "statuses": "1.3.1" }, "dependencies": { "debug": { @@ -3234,8 +2970,8 @@ "resolved": "https://registry.npmjs.org/urllib-sync/-/urllib-sync-1.1.4.tgz", "integrity": "sha1-yRMI9JkaZe5iDWc85g/dJLvRjMo=", "requires": { - "urllib": "~2.11.0", - "utility": "~1.7.1" + "urllib": "2.11.1", + "utility": "1.7.1" } }, "util": { @@ -3263,8 +2999,8 @@ "resolved": "https://registry.npmjs.org/utility/-/utility-1.7.1.tgz", "integrity": "sha1-+3TN3IFqQRJ2ym6MqZMkfyPusKc=", "requires": { - "copy-to": "~2.0.1", - "escape-html": "~1.0.3" + "copy-to": "2.0.1", + "escape-html": "1.0.3" } }, "utils-merge": { @@ -3272,11 +3008,6 @@ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" - }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -3287,12 +3018,12 @@ "resolved": "https://registry.npmjs.org/warehouse/-/warehouse-2.2.0.tgz", "integrity": "sha1-XQnWSUKZK+Zn2PfIagnCuK6gQGI=", "requires": { - "JSONStream": "^1.0.7", - "bluebird": "^3.2.2", - "cuid": "~1.3.8", - "graceful-fs": "^4.1.3", - "is-plain-object": "^2.0.1", - "lodash": "^4.2.1" + "JSONStream": "1.3.2", + "bluebird": "3.5.1", + "cuid": "1.3.8", + "graceful-fs": "4.1.11", + "is-plain-object": "2.0.4", + "lodash": "4.17.10" } }, "which": { @@ -3300,7 +3031,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } }, "win-release": { @@ -3308,7 +3039,7 @@ "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", "requires": { - "semver": "^5.0.1" + "semver": "5.5.0" } }, "window-size": { @@ -3326,8 +3057,8 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "string-width": "1.0.2", + "strip-ansi": "3.0.1" }, "dependencies": { "strip-ansi": { @@ -3335,7 +3066,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -3345,15 +3076,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "ws": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", - "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0" - } - }, "xmldom": { "version": "0.1.27", "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", @@ -3379,13 +3101,13 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" + "camelcase": "2.1.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "string-width": "1.0.2", + "window-size": "0.1.4", + "y18n": "3.2.1" } } } diff --git a/package.json b/package.json index 0a1fe5bf5..0aa35ad9a 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,6 @@ "hexo-generator-searchdb": "^1.0.8", "hexo-generator-sitemap": "^1.2.0", "hexo-generator-tag": "^0.2.0", - "hexo-leancloud-counter-security": "^1.3.2", "hexo-renderer-ejs": "^0.3.0", "hexo-renderer-marked": "^0.3.0", "hexo-renderer-stylus": "^0.3.1", From 2bbae6b1eb67f997b12ccc3b12503bc258a432a1 Mon Sep 17 00:00:00 2001 From: Jerry Date: Mon, 8 Oct 2018 07:59:04 +0800 Subject: [PATCH 032/163] add fierce --- source/_data/next.yml | 2 +- source/_posts/movie-fierce.md | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 source/_posts/movie-fierce.md diff --git a/source/_data/next.yml b/source/_data/next.yml index 9a4877a07..cb9173c00 100644 --- a/source/_data/next.yml +++ b/source/_data/next.yml @@ -278,7 +278,7 @@ post_meta: item_text: true created_at: true updated_at: - enabled: true + enabled: false # If true, show updated date label only if `updated date` different from 'created date' (post edited in another day than was created). # And if post will edited in same day as created, edited time will show in popup title under created time label. # If false show anyway, but if post edited in same day, show only edited time. diff --git a/source/_posts/movie-fierce.md b/source/_posts/movie-fierce.md new file mode 100644 index 000000000..f964d12b2 --- /dev/null +++ b/source/_posts/movie-fierce.md @@ -0,0 +1,22 @@ +--- +title: 《激战》 +date: 2018-10-03 00:02:00 +categories: Movie +tag: 黄山 +--- + +{% cq %}

      怕,你就会输一辈子

      {% endcq %} + +{% dplayer "url=https://vodkgeyttp8.vod.126.net/vodkgeyttp8/er2FM3CV_126646839_hd.mp4?wsSecret=1e98e23b7864a26fae93a384aad1bd3b&wsTime=1538906004" "pic=http://p1.music.126.net/w0PZ_MfRNkwDvBwWhjiCtQ==/109951163572827164.jpg" "loop=no" "theme=#FADFA3" "autoplay=false" "token=tokendemo" %} + +喜欢其中的一些台词,大伙共勉 +* 其实,我每次上台都很怕的,不过每次我都会跟自己说,我能做到 +* 这场比赛我可能会跌倒,但我一定会站起来 +* 怕,你就会输一辈子 + +自己的一些感触: +其实很多时候,道理都懂,但却不能坚持下去,但这些道理都在自己生活中一点点的用生活感悟出来,那这些道理会更浓烈,更让人刻骨铭心 +* 尊重和珍惜,那些愿意为你去花时间的人 +* 要和自己志同道合,有共同目标的伙伴去互相较劲 +* 从哪里跌倒就要从哪里爬起来 +* 一路跌跌撞撞走下去,中间的酸甜苦辣是最美的味道 \ No newline at end of file From a812e0bdacfb9625687fa12f485025ae821fecd1 Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 24 Oct 2018 01:26:48 +0800 Subject: [PATCH 033/163] update fierce --- source/_data/next.yml | 2 +- source/_posts/movie-fierce.md | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/source/_data/next.yml b/source/_data/next.yml index cb9173c00..5e5188061 100644 --- a/source/_data/next.yml +++ b/source/_data/next.yml @@ -589,7 +589,7 @@ needmoreshare2: #google_site_verification: # Google Analytics -# google_analytics: UA-100235665-1 +google_analytics: UA-100235665-1 # Bing Webmaster tools verification setting # See: https://www.bing.com/webmaster/ diff --git a/source/_posts/movie-fierce.md b/source/_posts/movie-fierce.md index f964d12b2..154668d14 100644 --- a/source/_posts/movie-fierce.md +++ b/source/_posts/movie-fierce.md @@ -2,13 +2,11 @@ title: 《激战》 date: 2018-10-03 00:02:00 categories: Movie -tag: 黄山 +tag: Movie --- {% cq %}

      怕,你就会输一辈子

      {% endcq %} -{% dplayer "url=https://vodkgeyttp8.vod.126.net/vodkgeyttp8/er2FM3CV_126646839_hd.mp4?wsSecret=1e98e23b7864a26fae93a384aad1bd3b&wsTime=1538906004" "pic=http://p1.music.126.net/w0PZ_MfRNkwDvBwWhjiCtQ==/109951163572827164.jpg" "loop=no" "theme=#FADFA3" "autoplay=false" "token=tokendemo" %} - 喜欢其中的一些台词,大伙共勉 * 其实,我每次上台都很怕的,不过每次我都会跟自己说,我能做到 * 这场比赛我可能会跌倒,但我一定会站起来 @@ -19,4 +17,6 @@ tag: 黄山 * 尊重和珍惜,那些愿意为你去花时间的人 * 要和自己志同道合,有共同目标的伙伴去互相较劲 * 从哪里跌倒就要从哪里爬起来 -* 一路跌跌撞撞走下去,中间的酸甜苦辣是最美的味道 \ No newline at end of file +* 一路跌跌撞撞走下去,中间的酸甜苦辣是最美的味道 + +{% dplayer "url=https://vodkgeyttp8.vod.126.net/vodkgeyttp8/er2FM3CV_126646839_hd.mp4?wsSecret=1e98e23b7864a26fae93a384aad1bd3b&wsTime=1538906004" "pic=http://p1.music.126.net/w0PZ_MfRNkwDvBwWhjiCtQ==/109951163572827164.jpg" "loop=no" "theme=#FADFA3" "autoplay=false" "token=tokendemo" %} \ No newline at end of file From fb8d27ee2c79eb40ebe3f3a79803fa71bc7ef808 Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 24 Oct 2018 01:27:26 +0800 Subject: [PATCH 034/163] Squashed 'themes/next/' changes from 6cc8d58..2bbae6b MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2bbae6b add fierce 6d929fa uninstall hexo-leancloud-counter-security b214343 fix some bug and add git articles b7779a0 add rxjava 59b3e8e add rxjava 351f315 add syncing-a-fork 516fc47 add mysql 5c78f79 add treasure 51b9bb9 add hugo eb4e18f add security-rsa 85128e3 update travel-zjj d2ae528 update network acf35ea add http 9775f7c modify leancloud security settings ab761e9 Merge branch 'dev' of https://github.com/BladeCode/BladeCode.github.io into dev 517ed96 add ssm cec6ead update linux-build dc9eb3f add memory 4bf7311 add zhangjiajie 7dac8d5 add douban module 1b20a8f update themes and article 8f89374 Merge commit '750a0b0017aff038263cc6d26078b2cd09326188' as 'themes/next' 750a0b0 Squashed 'themes/next/' content from commit 6cc8d58 97cf3bd delete themes 85c1a62 add fancybox reading_progress lib 69fc5b3 git subtree 8db33f9 Merge commit '17c6b50d2beb6fd06a5eb29d65bcbd7ffff20eaf' as 'themes/next' 17c6b50 Squashed 'themes/next/' content from commit 4b78733 19e956c delete next 1a065ee http to https ec956bb add about page 68afddf delete landscape b10e371 change themes next 35102f1 init landscape themes 184bf17 add LICENSE and README.md REVERT: 6cc8d58 Merge commit 'fd3dadf3bdd77ef3cee26675957ed35a6519895c' as 'source/lib/fancybox' REVERT: fd3dadf Squashed 'source/lib/fancybox/' content from commit 899d7a7 REVERT: d430ef4 Merge commit '77cdebe35939e6c7392406c49fa500823dfc8d5a' as 'source/lib/reading_progress' REVERT: 77cdebe Squashed 'source/lib/reading_progress/' content from commit 0136e19 REVERT: 208b245 update readem REVERT: 4b78733 update next readme REVERT: 1f56430 Release 6.3.0 REVERT: 104fd7e New Crowdin translations (#285) REVERT: cc07c43 Force scroll_to_more anchor to be #more (#293) REVERT: 10503cc Allow customized copyright contents (#254) REVERT: 3b2f980 Added custom language support feature. (#253) REVERT: 725d13d Add support for automatic equation numbering for Mathjax, update the related documentation (#275) REVERT: bbb523a Add avatar round & opacity & animation feature (#267) REVERT: ee77a77 Merge pull request #282 from maple3142/master REVERT: 8b5616a support copy result REVERT: a778660 Merge branch 'ivan/disable-houndy' REVERT: d4475e5 Check Stickler CI [6]. REVERT: a490f90 Merge remote-tracking branch 'origin/master' REVERT: 1609b00 Check Stickler CI [5]. REVERT: 4cacb10 Fix logic bug in Han (#260) REVERT: 2eacca2 Temporarily change to LTS node version. REVERT: 2dd686a Check Stickler CI [4]. REVERT: d4d976c Check Stickler CI [3]. REVERT: b7218c6 Check Stickler CI [2]. REVERT: d709641 Update SCI config. REVERT: 0f9d005 Merge branch 'ivan/configure-stickler' REVERT: ec8979f Added ESLint rules & Configured Stickler CI. REVERT: c13d6cb Merge pull request #262 from zhaoyibo/master REVERT: 3afb6eb fixed the font size of post body is too small when using Mist scheme on mobile phone. 12px -> 14px REVERT: d599c4e Update readme's badges (addition to #250). REVERT: d2c74b3 Update rss annotation REVERT: e383523 Remove Houndy and JSHint linter files. REVERT: 1e8670b Merge pull request #256 from theme-next/add-stickler-config REVERT: da6b3f6 Adding .stickler.yml REVERT: 30a8070 Fix errors in lc counter docs (#255) REVERT: 5fac1dd New Crowdin translations (#252) REVERT: bb4f644 Merge branch 'dev' REVERT: 78447a6 Merge branch 'ivan/del-author-lang' into dev REVERT: 20ece25 Removed `author` translated key. REVERT: 0fbe3bb change copy-button position to absolute (#242) REVERT: c7adeac Update readme's badges. (#250) REVERT: 0fec1e6 Align badges in readme's. REVERT: 84d460d Merge branch 'feature/change-telegram-links' into ivan-nginx REVERT: a99777e Change Telegram links. REVERT: fdd65d5 Merge remote-tracking branch 'origin/master' REVERT: 51b6996 New translations en.yml (Russian) (#243) REVERT: 1d63c85 Merge remote-tracking branch 'origin/master' REVERT: 1f9ef9c Added Hexo and NexT environment variables. (#240) REVERT: dbe6be7 Added Hexo and NexT environment variables. REVERT: ac0ab13 New Crowdin translations (#239) REVERT: 206d463 Merge remote-tracking branch 'origin/master' REVERT: 5cea4ef fix css of copycode button (#238) REVERT: a955021 New Crowdin translations (#235) REVERT: aef6527 Release 6.2.0 REVERT: 1d89f8f Remove unused language files. REVERT: da3a914 Option `copy_button` default to false. REVERT: a6f092a add copy codeblock button (#234) REVERT: 2768e5f Merge pull request #228 from jackey8616/date_time_merge REVERT: a9ad0d7 Merge branch 'master' into date_time_merge REVERT: 9f4f014 Final optimization for `another_day` option. REVERT: 9513a11 Fixed bug and replaced `only_diff` by `another_day` option. REVERT: 67881ee Refactored `date_updated` optimization. REVERT: a482a37 Add missed judgment in if statement REVERT: f296b27 Added support for hexo-symbols-count-time v0.4.0 REVERT: 2cd0df2 Merge pull request #233 from theme-next/symbols-count-time-0.4.0 REVERT: e986ddf Added support for hexo-symbols-count-time v0.4.0 REVERT: 44d6307 Adjust time tag's border style REVERT: a595e78 Merge branch 'master' into date_time_merge REVERT: 495738a Add missing updated_at field check REVERT: 05d43f8 Merge pull request #229 from theme-next/ref-menu-items REVERT: afb42df Refactored menu items & badges. REVERT: f8fad53 Lower digits in meta titile REVERT: 4aaa015 Add missed method replacement and under line of time REVERT: 4174f50 Minimal correct support for NexT is Hexo v3.5.0 for now. REVERT: c485862 [Optimization] Rewrite some code logic and method change REVERT: 30bccfc Optimized post edit option. (#214) REVERT: 8c139be Fixed footer powered disabled option. REVERT: 8043ed1 Merge pull request #223 from jackey8616/date_time_merge REVERT: fae8127 [new feature] add post edit button (#208) REVERT: b8ebb32 Add date_time_merge filed into post_meta REVERT: 8fd7b81 Update Crowdin configuration file REVERT: adc76b7 Renamed back `_en.yml` on `en.yml` and setted `default.yml` to link it. REVERT: c5ddac7 Merge pull request #221 from theme-next/refactored-header-components REVERT: 2e39f04 Refactored header components. REVERT: 3dabc16 Update guide for creating releases in CONTRIBUTING.md (#213) REVERT: 7792b06 Merge pull request #214 from theme-next/feature-footer-powered-version REVERT: 81e02da Added `footer.powered.version` option to display Hexo version in footer. REVERT: b4c0c01 New Crowdin translations (#211) REVERT: 9e2b69a Merge pull request #210 from theme-next/fix-default-language REVERT: 775ac15 Fix for default language if no `language` in Hexo config defined. REVERT: 6f787af Increase page loading performance by refactor `menu-item-active` class. REVERT: 50d85ea Release 6.1.0 REVERT: 265af45 New Crowdin translations (#189) REVERT: 96044ca Fix bug in utils.js (#205) REVERT: 3e71b0a Fix image url (#204) REVERT: ca2554b Updated Chinese README.md REVERT: c6aaa42 Updated i18n REVERT: d297cf5 Revert "LeanCloud Counter Security Plugin (beta, currently under the testing)." REVERT: bd6c789 Update links in readme's. REVERT: 2a841a9 Add `backlog` label to exclude labels. REVERT: 56c1281 Add code-of-couduct.md (#198) REVERT: 089d00e Refactor footer icon with animation (#195) REVERT: bcd8a28 Update codeblock style and add border-radius settings (#194) REVERT: 52d3c02 Add contributing.md in EN&CN lang (#192) REVERT: f2a939f Add symbol.colon in meta text (#188) REVERT: 65a8a8d add comment count in mobile (#185) REVERT: 55bb2c7 Add comment text (#186) REVERT: 1975fd0 Merge pull request #177 from LEAFERx/master REVERT: 38b0cf3 shorten docs REVERT: 530474a Fix a typo in LEANCLOUD-COUNTER-SECURITY.md (#175) REVERT: dc48367 Add EN doc for leancloud counter security (#174) REVERT: 29e2e59 LeanCloud Counter Security Plugin (beta, currently under the testing). REVERT: 0972b8c Fix svg confict in algolia vender (#173) REVERT: 67892b2 Remove keywords in Theme-Next (#168) REVERT: 9fc2b20 New Crowdin translations (#167) REVERT: 580a8de Merge pull request #171 from LEAFERx/master REVERT: 8f16ef6 Updated LC security description, again. REVERT: 7852f70 Updated LC security annotation. REVERT: 0a09c5d Add leancloud counter security annotation REVERT: a681671 escape single quotes in lean-analytics.swig REVERT: 65f0a25 Merge pull request #1 from theme-next/master REVERT: e8ad8fa Updated README's. REVERT: 2c3ba4b Merge pull request #115 from Raincal/patch-1 REVERT: 942a9bd Minimal requirements for NexT v6.0.6 is now Hexo v3.3.5 REVERT: 00c8ebc Merge pull request #130 from maple3142/master REVERT: 51f96cc Updated version to 6.0.6 REVERT: 70bd6c1 Merge remote-tracking branch 'origin/master' REVERT: baac829 Merge pull request #156 from theme-next/sub-menu-feature REVERT: 027c710 Merge branch 'master' into sub-menu-feature REVERT: 43b9f25 Merge pull request #166 from geekrainy/update/README REVERT: 523c724 Updated README. REVERT: 83c8167 Merge pull request #161 from sli1989/img_margin REVERT: ac729a4 FIX IMG MARGIN REVERT: 35a87f5 Merge pull request #160 from sli1989/patch REVERT: 2b954ef Update ISSUE_TEMPLATE.md REVERT: 2c6ad1a FIX ISSUE TEMPLATE REVERT: b8b4495 FIX ISSUE TEMPLATE REVERT: 2126a60 Merge remote-tracking branch 'origin/master' REVERT: f85bc00 Added sub-menu feature. REVERT: 25d7a26 Merge pull request #155 from xu-song/patch-1 REVERT: a843533 remove style table-layout: fixed; REVERT: 28696ac Merge pull request #153 from theme-next/github-banner-fixes REVERT: 655c329 Merge branch 'master' into github-banner-fixes REVERT: a3348e7 Fixes for GitHub banner option. REVERT: 51d88df Merge pull request #152 from ywjno/master REVERT: c9a1427 update version number REVERT: 803e10a Merge pull request #149 from dpyzo0o/master REVERT: 441f8a7 fix missing margin for h1 REVERT: d35d219 Merge pull request #148 from dpyzo0o/master REVERT: abe8fcf Merge branch 'master' into master REVERT: 8b2e72a Merge pull request #137 from LEAFERx/master REVERT: 25faacf fix typo in data_updated_diff expression REVERT: c048c4f keep Mist margin settings in consistence with other themes REVERT: 3260799 add betterPerformance in doc REVERT: 066e209 a performance fix REVERT: 8072fc8 fix some err in the doc REVERT: 2fa0a46 add issue & pr link REVERT: 9268493 format the doc REVERT: 1a75e2f Add lc-security doc REVERT: 00e1c89 Update warning message. REVERT: 2d1552a set security config default to true REVERT: 4707ec8 Merge branch 'master' of https://github.com/LEAFERx/hexo-theme-next-ng REVERT: c15bd56 a better error message REVERT: 49b3152 Refactored LC configuration. REVERT: c2a6cf4 Merge branch 'master' into master REVERT: fff01b7 fix readme REVERT: b856dc0 Merge pull request #140 from theme-next/feature-include-raw REVERT: 92a7afc Added `include_raw` tag feature. REVERT: 7ddc761 Add a little readme REVERT: b8baa54 Merge branch 'master' into master REVERT: 9c0859b Merge pull request #139 from tsanie/fix-valine-plugin-syntax REVERT: 4759a66 allow to load ValineJs from a custom CDN server. REVERT: 5d0ff61 fix a syntax issue about IE compatible REVERT: 21ad6c8 Merge branch 'master' into master REVERT: 4537c00 fix leancloud counter security bug REVERT: 95cd9e1 Merge pull request #136 from theme-next/breadcrumbs-feature REVERT: 91249cd Added BreadCrumbs feature. REVERT: 52b754f Refactor some tags. [skip-ci] REVERT: 4f0c7aa Merge remote-tracking branch 'origin/master' REVERT: 750377f Merge pull request #135 from theme-next/i18n REVERT: 415eecc Merge remote-tracking branch 'origin/master' REVERT: c73fd08 Small fix of space in `post-copyright`. REVERT: 0e1933f New translations _en.yml (Russian) REVERT: 7edf894 Merge pull request #134 from theme-next/i18n REVERT: 57fdc6e Merge branch 'master' into i18n REVERT: c65479d New translations _en.yml (Chinese Traditional) REVERT: 69764a2 Merge pull request #132 from theme-next/i18n REVERT: 29f3aea New translations _en.yml (Chinese Traditional) REVERT: a16c0dd New translations _en.yml (Chinese Traditional) REVERT: 55d4dd2 New translations _en.yml (Chinese Traditional, Hong Kong) REVERT: 57c1a80 New translations _en.yml (Chinese Traditional) REVERT: 39c8a74 New translations _en.yml (Chinese Simplified) REVERT: 2c3b830 New translations _en.yml (Chinese Simplified) REVERT: 6a6f904 New translations _en.yml (Vietnamese) REVERT: 3f2af2d New translations _en.yml (French) REVERT: 665c299 New translations _en.yml (Finnish) REVERT: 9fa0d37 New translations _en.yml (Estonian) REVERT: 9b736b4 New translations _en.yml (Dutch) REVERT: 2313ec2 New translations _en.yml (Danish) REVERT: 503bf9e New translations _en.yml (Czech) REVERT: f8a60f0 New translations _en.yml (Croatian) REVERT: 5b99a77 New translations _en.yml (Chinese Traditional, Hong Kong) REVERT: 6bbe455 New translations _en.yml (German) REVERT: 214a6f2 New translations _en.yml (Chinese Traditional) REVERT: 029359d New translations _en.yml (Bulgarian) REVERT: 8b4a8a6 New translations _en.yml (Arabic) REVERT: b349d39 New translations _en.yml (Serbian (Cyrillic)) REVERT: 4ffdb58 New translations _en.yml (Punjabi) REVERT: c70d3fe New translations _en.yml (Malay) REVERT: 18c2357 New translations _en.yml (Javanese) REVERT: c892dd1 New translations _en.yml (Hindi) REVERT: 60198c1 New translations _en.yml (Bengali) REVERT: 4416942 New translations _en.yml (Chinese Simplified) REVERT: d74d71c New translations _en.yml (Turkish) REVERT: 67067ee New translations _en.yml (Greek) REVERT: 36bcafa New translations _en.yml (Hungarian) REVERT: 9cad859 New translations _en.yml (Ukrainian) REVERT: 8ea56b4 New translations _en.yml (Thai) REVERT: 83c9669 New translations _en.yml (Swedish) REVERT: 6087697 New translations _en.yml (Spanish) REVERT: 0266732 New translations _en.yml (Slovenian) REVERT: 8e3c1d0 New translations _en.yml (Russian) REVERT: 26ccc6c New translations _en.yml (Romanian) REVERT: e98e26b New translations _en.yml (Portuguese, Brazilian) REVERT: 3de99d8 New translations _en.yml (Hebrew) REVERT: 829b8be New translations _en.yml (Portuguese) REVERT: d1c0664 New translations _en.yml (Persian) REVERT: 1eee4c7 New translations _en.yml (Norwegian) REVERT: c9a0811 New translations _en.yml (Lithuanian) REVERT: c4c318d New translations _en.yml (Latvian) REVERT: 7915278 New translations _en.yml (Korean) REVERT: 2fbecd5 New translations _en.yml (Italian) REVERT: 528ec39 New translations _en.yml (Indonesian) REVERT: 0e49cef New translations _en.yml (Polish) REVERT: 120f8ab New translations _en.yml (Japanese) REVERT: af901f1 Merge pull request #129 from xu-song/master REVERT: 4e7c3b7 Merge branch 'master' into master REVERT: eb50ef7 Refactor page header for future mata additions. REVERT: 89d5b8f Refactor busuanzi & some language translates. REVERT: 9a3b607 Release 6.0.4 REVERT: 9305a63 Merge pull request #131 from theme-next/fix-justify-toc REVERT: 9d26fbc Fix justify TOC items in sidebar. REVERT: 2ba6b0f add symbol & icon_config REVERT: 55145af Merge pull request #128 from theme-next/i18n REVERT: 357dc1a Update ru.yml REVERT: f0234ef improve accessibility REVERT: 481b0ec suggestion by sli1989 #129 REVERT: d264941 add hover text for PV UV REVERT: 9ac9dd3 New translations _en.yml (Chinese Traditional) REVERT: f6d3e26 New translations _en.yml (Chinese Simplified) REVERT: 2928fc7 New translations _en.yml (Vietnamese) REVERT: c250ef1 New translations _en.yml (French) REVERT: 8897972 New translations _en.yml (Finnish) REVERT: d48a243 New translations _en.yml (Estonian) REVERT: 198b15f New translations _en.yml (Dutch) REVERT: 25daf21 New translations _en.yml (Danish) REVERT: 4de9616 New translations _en.yml (Czech) REVERT: 6dc0112 New translations _en.yml (Croatian) REVERT: 740c7c2 New translations _en.yml (Chinese Traditional, Hong Kong) REVERT: 4863f03 New translations _en.yml (German) REVERT: 2ab509c New translations _en.yml (Chinese Traditional) REVERT: 2ac7ef9 New translations _en.yml (Bulgarian) REVERT: b439f77 New translations _en.yml (Arabic) REVERT: 8c83eb7 New translations _en.yml (Serbian (Cyrillic)) REVERT: 44b1011 New translations _en.yml (Punjabi) REVERT: 30b2d68 New translations _en.yml (Malay) REVERT: e83026d New translations _en.yml (Javanese) REVERT: 45886cb New translations _en.yml (Hindi) REVERT: d924c77 New translations _en.yml (Bengali) REVERT: f2bad59 New translations _en.yml (Chinese Simplified) REVERT: 654a2c6 New translations _en.yml (Turkish) REVERT: 35e1df0 New translations _en.yml (Greek) REVERT: 36803cd New translations _en.yml (Hungarian) REVERT: cc41b16 New translations _en.yml (Ukrainian) REVERT: 14608d3 New translations _en.yml (Thai) REVERT: 3de35e4 New translations _en.yml (Swedish) REVERT: 5aef82d New translations _en.yml (Spanish) REVERT: 00cd9ef New translations _en.yml (Slovenian) REVERT: adcf834 New translations _en.yml (Russian) REVERT: 3217a02 New translations _en.yml (Romanian) REVERT: f4c632b New translations _en.yml (Portuguese, Brazilian) REVERT: d29e311 New translations _en.yml (Hebrew) REVERT: 475ccc4 New translations _en.yml (Portuguese) REVERT: 19cc94e New translations _en.yml (Persian) REVERT: a1d0d4f New translations _en.yml (Norwegian) REVERT: 9e115b9 New translations _en.yml (Lithuanian) REVERT: 0196286 New translations _en.yml (Latvian) REVERT: c78b34c New translations _en.yml (Korean) REVERT: df9177e New translations _en.yml (Italian) REVERT: 851acdd New translations _en.yml (Indonesian) REVERT: 39eb126 New translations _en.yml (Polish) REVERT: 3e1ebdb New translations _en.yml (Japanese) REVERT: e673805 Merge pull request #109 from tsanie/feature-related-posts REVERT: 3c44d16 move the template to the single file. REVERT: 8ddc9d4 fix the default configure REVERT: 822696b using the custom output template. REVERT: 0645368 add a switch to determine whether related posts will be shown in the home page, and add support to i18n. REVERT: 3e3d10a Merge remote-tracking branch 'remotes/remote/master' into feature-related-posts REVERT: 82ac7af Another small config update in description for `highlight_theme`. REVERT: 470f026 Just small update in config descriptions for fonts. REVERT: 77d5d08 Merge pull request #126 from Raincal/fancybox REVERT: c449792 fix(fancybox): add data-fancybox attr for fancybox3 REVERT: 03bd4b4 Merge pull request #111 from tsanie/support-configurable-sidebar-width REVERT: 632908f Merge branch 'master' into support-configurable-sidebar-width REVERT: 5e15974 Merge pull request #125 from theme-next/seo-with-description REVERT: 9793cf1 Merge branch 'master' into seo-with-description REVERT: 956c992 Keep `description` option only when `seo` enabled. REVERT: 9b155fc Merge pull request #119 from sli1989/algolia-search REVERT: 7d95d88 Merge branch 'master' into algolia-search REVERT: 3eab1f7 Fix bug using algolia search's CDN REVERT: 62827db Merge pull request #123 from theme-next/change-code-block-font-size REVERT: 06702a9 Change default font size to 14px for Code Block. REVERT: 457072f Fix CND bug in algolia-instant-search REVERT: 9a0bcea Merge pull request #122 from theme-next/ext-url-mod REVERT: fcb37da If no arguments exists as title, set title as url. REVERT: 266ad62 Merge pull request #120 from Raincal/jquery-related REVERT: 6933a71 Use .length instead of .size() REVERT: 46cff99 Update algolia search docs with vendors REVERT: 9f7ed72 Merge pull request #116 from Raincal/update-creative-commons REVERT: 598c48f Merge pull request #117 from Raincal/update-link REVERT: e798b25 Update link REVERT: c28b0fd Update license version REVERT: ad1dcab fix duplicate meta keywords REVERT: 9b8065a Merge pull request #107 from maple3142/master REVERT: d781c35 change default cdn of reading_progress to min.js version REVERT: 0a73b80 Support to manual configure the sidebar width of the Gemini Scheme. REVERT: b453402 set the default configure REVERT: 7f992ee style adjust REVERT: 85d8f64 initial related-posts REVERT: 44aa136 add reading_progress to vendors REVERT: 0fb3a41 Merge pull request #103 from tsanie/support-gemini-max-width REVERT: 0f6aa83 Merge branch 'master' into support-gemini-max-width REVERT: 9353117 Merge pull request #106 from tsanie/cdn-support-bookmark REVERT: daa6388 let the bookmark support the CDN REVERT: cca2f0f micro adjust REVERT: dee949e move the definitions from variables to the scheme one. REVERT: 04b3cde Merge branch 'master' into support-gemini-max-width REVERT: 21d46da move the definitions into the Gemini.styl REVERT: c3f5c78 Merge pull request #104 from wafer-li/fix-needmoreshare2-vendors REVERT: 9281e3e Fix needmoreshare2 vendors REVERT: b694914 fix the wrong setting about width REVERT: 58e658b Support to manual configure the content max width for Gemini Scheme. REVERT: 802b9a8 Merge pull request #101 from wafer-li/math-use-jsdelivr-cdn REVERT: 0fe5058 Use jsdelivr as default cdn and update docs REVERT: c5b85ea Merge pull request #99 from theme-next/extlink-additions REVERT: 1adb81e Merge branch 'master' into extlink-additions REVERT: 3531f9d Fixed GitHub banner color inverting. REVERT: cb51179 Extlinks additions on GitHub banner (buggy). REVERT: a459bf0 Extlinks additions on sidebar. REVERT: 3a74499 Merge pull request #98 from wafer-li/katex-add-bootcdn-optional REVERT: f598f08 Fix typo REVERT: b1e2497 Fix en doc REVERT: 5a4540e Add bootcdn for katex and add docs REVERT: da65891 Merge pull request #95 from theme-next/i18n REVERT: 483140c New translations _en.yml (Punjabi) REVERT: 445a37b New translations _en.yml (Malay) REVERT: 7f2e445 New translations _en.yml (Javanese) REVERT: b2ed996 New translations _en.yml (Hindi) REVERT: 18de53c New translations _en.yml (Bengali) REVERT: 89f15e8 New translations _en.yml (Turkish) REVERT: 051c6d3 New translations _en.yml (Japanese) REVERT: b0b3b6f Release 6.0.3 REVERT: ef4e429 Merge pull request #91 from sli1989/patch REVERT: 839d659 Merge branch 'master' into patch REVERT: fb373d6 Merge pull request #93 from tsanie/sidebar-settings-in-post REVERT: b2d0f31 avoid an issue when using `hexo g` to generate files. REVERT: 11a6764 Support to set whether the sidebar will be shown in single post. REVERT: 5383d8e update content REVERT: 108284b fix error REVERT: f46d9aa Fix error REVERT: a3b698d fix grammer REVERT: 5e08fb8 Fix grammer REVERT: eb80164 Add EN doc of Algolia search REVERT: 5152e15 update style REVERT: 29cf557 Add apikey REVERT: de764ec Add CN doc of Algolia search REVERT: d34d250 Merge pull request #90 from tsanie/unescape-search-html REVERT: 0981072 add a switch to choice whether it will unescape the HTML strings for searching. REVERT: 987258b Merge pull request #89 from tsanie/algolia-search-overlay REVERT: 6e8d8b7 fix an issue about the algolia search overlay. REVERT: 9cf8a9c Merge pull request #87 from tsanie/sidebar-count-issue REVERT: c5c1eb5 fix: the categories/tags count issue still exists in the sidebar. REVERT: 7bb669f Merge pull request #85 from theme-next/add-more-seo REVERT: 92def14 Refactored footer for add-more-seo feature. REVERT: 7c72ded Fix code format REVERT: 592888c Add more seo things REVERT: e06d4cc Change Crowdin link to invite. REVERT: 980444e New translations _en.yml (Ukrainian) REVERT: 7a28914 New translations _en.yml (Croatian) REVERT: ca9ab1f New translations _en.yml (Czech) REVERT: 6a2beb0 New translations _en.yml (Danish) REVERT: e2f9b99 New translations _en.yml (Estonian) REVERT: 31ec748 New translations _en.yml (Finnish) REVERT: 36e91d3 New translations _en.yml (Greek) REVERT: 7336572 New translations _en.yml (Hebrew) REVERT: 3a2366a New translations _en.yml (Hungarian) REVERT: 8cafb51 New translations _en.yml (Latvian) REVERT: cae18b2 New translations _en.yml (Bulgarian) REVERT: d3ad6e2 New translations _en.yml (Lithuanian) REVERT: bbf0d9b New translations _en.yml (Persian) REVERT: aaf6007 New translations _en.yml (Polish) REVERT: 8d366b6 New translations _en.yml (Romanian) REVERT: d46d7a2 New translations _en.yml (Serbian (Latin)) REVERT: f702c23 New translations _en.yml (Slovenian) REVERT: 883d541 New translations _en.yml (Spanish) REVERT: 46b9895 New translations _en.yml (Swedish) REVERT: dc69e21 New translations _en.yml (Thai) REVERT: d2404e1 New translations _en.yml (Turkish) REVERT: a73b036 New translations _en.yml (Norwegian) REVERT: c2cc818 New translations _en.yml (Arabic) REVERT: 4593c96 Merge pull request #82 from theme-next/i18n REVERT: 9226ad6 New translations _en.yml (Dutch) REVERT: 005a995 New translations _en.yml (Vietnamese) REVERT: 9b58ca4 New translations _en.yml (Portuguese, Brazilian) REVERT: fb54703 New translations _en.yml (Portuguese) REVERT: c3174f1 New translations _en.yml (Korean) REVERT: a13fb30 New translations _en.yml (Japanese) REVERT: 0ddc689 New translations _en.yml (Italian) REVERT: 1f8869f New translations _en.yml (Indonesian) REVERT: 02a9509 New translations _en.yml (German) REVERT: 829fc11 New translations _en.yml (French) REVERT: 9ed5b96 New translations _en.yml (Chinese Traditional, Hong Kong) REVERT: e5e4414 New translations _en.yml (Chinese Traditional) REVERT: 2a69cf1 Merge pull request #81 from theme-next/fix-math-load REVERT: 24340d2 Merge branch 'master' into fix-math-load REVERT: 72558c4 Merge remote-tracking branch 'origin/master' REVERT: 6f8317f Refactored localize badge. REVERT: 49380ba Merge pull request #80 from theme-next/i18n_master REVERT: d3b73e8 Fix #78 REVERT: 3ff1358 New translations _en.yml (Dutch) REVERT: 5852d9d New translations _en.yml (Vietnamese) REVERT: b5c7307 New translations _en.yml (Portuguese, Brazilian) REVERT: c12321e New translations _en.yml (Portuguese) REVERT: eb008f8 New translations _en.yml (Korean) REVERT: 617a406 New translations _en.yml (Japanese) REVERT: 28b52ec New translations _en.yml (Italian) REVERT: a2d5610 New translations _en.yml (Indonesian) REVERT: eb76789 New translations _en.yml (German) REVERT: 26afb3e New translations _en.yml (French) REVERT: c16d634 New translations _en.yml (Chinese Traditional, Hong Kong) REVERT: 09166d4 New translations _en.yml (Chinese Traditional) REVERT: 06d9798 New translations _en.yml (Russian) REVERT: 4fc9254 New translations _en.yml (Chinese Simplified) REVERT: 889e8d3 Original RU language version. Test on old keys without adding new keys. REVERT: 1b58a3e Update Crowdin configuration file REVERT: 3f102ba Update Crowdin configuration file REVERT: 0ad05de Merge remote-tracking branch 'origin/master' REVERT: ec5e9db [Breaking Changes] Rename `fr-FR` and `nl-NL` to `fr` and `nl`. REVERT: ee91573 [Breaking Changes] Rename `fr-FR` and `nl-NL` to `fr` and `nl`. REVERT: bf18387 Update Crowdin configuration file REVERT: 2b865c6 Update Crowdin configuration file REVERT: 5b75a1c Update Crowdin configuration file REVERT: 39ccc39 Update Crowdin configuration file REVERT: bdeb746 Update Crowdin configuration file REVERT: 7214c2c Rename `zh-Hans` on `zh-CN` for better compatability. REVERT: e1e6cf8 [Breaking Changes] Rename `zh-Hans` on `zh-CN` for better compatability. REVERT: 4f97f17 Merge pull request #76 from tsanie/fix-bookmark-issue REVERT: fda5c2b Support to scroll the right position when the visitor open a page by clicking the 'Read More' button. REVERT: 05ee412 Update Crowdin configuration file REVERT: 8b98659 Add `crowdin.yml`. REVERT: d968eed Merge pull request #73 from sli1989/patch REVERT: 15f4e3e Merge branch 'master' into patch REVERT: dd214e0 Replace `Github Pages` with `Coding Pages` and set default style to bold REVERT: 7fd18f2 add annotation of text-align on mobile in Mist&Muse REVERT: f042322 Update ISSUE template. [3] REVERT: 6e956de Update ISSUE template. [2] REVERT: 548332c Update ISSUE template. REVERT: dc6920c Merge pull request #72 from ivan-nginx/gitlocalize-444 REVERT: 0aa42ec Merge branch 'master' into gitlocalize-444 REVERT: 1d605a2 Update GL repo link. REVERT: 160e37a Translate ru.yml via GitLocalize REVERT: a250876 Change quotes. REVERT: 4003a0e Refactored `license_content` & Fixed excess spaces. REVERT: 97a3987 Revert "Update Word Wrap in `_en.yml` for `license_content`." REVERT: 3de826a Update Word Wrap in `_en.yml` for `license_content`. REVERT: 5b01306 Remove `default.yml` language & Update GitLocalize repo link. REVERT: 9d46733 Rename «Words count in article» on «Symbols count in article». REVERT: 03e357b Rename `en.yml` on `_en.yml` to set undefined language as default. REVERT: a5cc603 Merge remote-tracking branch 'origin/master' REVERT: 4e20231 Update INSTALLATION.md on right v6.0.1 commit. REVERT: 7e71b4b Merge pull request #66 from wafer-li/math-flip-perpage REVERT: cf5cc5a Set per_page default to true and update docs REVERT: 930182b Revert "Flip per_page behavior and update docs" REVERT: e3e0bf0 Flip per_page behavior and update docs REVERT: 79582ed Fix a little mistakes in `MATH.md` docs file. [3] REVERT: da29003 Merge branch 'i18n' REVERT: 6582d75 Fix a little mistakes in `MATH.md` docs file. [2] REVERT: a3a2321 Fix a little mistakes in `MATH.md` docs file. REVERT: 8eec69d Merge remote-tracking branch 'origin/master' REVERT: 8f317e2 Merge branch 'i18n' REVERT: 79791a9 Update telegram badges. REVERT: df0c05b Add comments to default paths for `custom_file_path` option. REVERT: 613370d Merge pull request #63 from tsanie/bookmark-feature REVERT: 5c47930 Merge pull request #62 from ivan-nginx/gitlocalize-439 REVERT: 0a8879a Translate ru.yml via GitLocalize REVERT: 45b794f default save trigger to auto REVERT: 8adf8b1 Rename `cn` dir on `zh-Hans` for GitLocalize adaptation. REVERT: dc03394 support the bookmark feature REVERT: a949fb4 Renamed `zh-HK` and `zh-TW` languages for GitLocalize support. REVERT: 0fea095 Merge branch 'master' into i18n REVERT: a963868 Added Telegram badge to main docs. REVERT: d220ad8 Update version (always forgot it, sorry) REVERT: 4489005 Merge branch 'master' into i18n REVERT: ba1f5a4 Update lang badge titles. REVERT: bf6d324 Merge pull request #32 from wafer-li/add-katex-support REVERT: afef184 Merge branch 'master' into add-katex-support REVERT: 96b18f1 Fix misspelling and grammar issues of EN doc REVERT: 5064b32 Add EN doc and fix some issues of CN doc REVERT: e6be004 Fix typo and add more info to docs REVERT: 5a70fd3 Temporairly commented `full-image` expand on > 100%. REVERT: 8744238 Fixed mistake in description. REVERT: 1cb4d08 Remove dotes from paths from custom files paths feature. REVERT: 4482f76 Fix docs to custom paths. REVERT: 90bdf79 Added attention about `../..` paths. REVERT: 12fe131 Fixed `source` path to default. REVERT: f968ffc Added feature to redefine custom files pathes. REVERT: 817c4d5 Add cn doc `MATH.md` REVERT: 3708cc3 Refactored badges styles in menu in Pisces/Gemini. REVERT: 9644bf4 Change CDN to CDNJS REVERT: 139c9e6 Put things into math folder REVERT: 10ff86d Merge pull request #50 from HuntedCodes/updated-diff REVERT: 6ab5e9c Whitespace REVERT: c58775c Handle all cases for post_meta.updated_diff REVERT: 3a24738 Merge remote-tracking branch 'upstream/master' into add-katex-support REVERT: e9250d5 Merge branch 'master' into updated-diff REVERT: 4d205aa Merge branch 'i18n' REVERT: 49a3b37 Refactored localize badges. REVERT: fcd5c2a Merge pull request #56 from wafer-li/add-pangu.js REVERT: da77647 Added localize badge in main docs. REVERT: ae3db40 Merge branch 'master' into add-pangu.js REVERT: 59db093 Refactored RU translate for `DATA-FILES.md`. REVERT: ed0f22c Add dependency description of pangu REVERT: bf13beb Add pangu option in vendors REVERT: 0d46fb4 Fix pangu not enable REVERT: 6666916 Treat pangu as separated lib REVERT: 19138d1 Merge pull request #55 from maple3142/master REVERT: ab58c2c fix reading_progress appear in index REVERT: d61113d Add pangu support REVERT: 156341f Merge pull request #47 from tsanie/translate REVERT: 59996c3 Fixes 'updated_at' without 'created_at' REVERT: 90931ec Adds updated_diff option to post_meta REVERT: 4ccab05 Delete crowdin.yml REVERT: f01bc5a Update Crowdin configuration file REVERT: 1b71492 fix some translation REVERT: 32a56a7 Add translate for the DATA-FILES.md changes. REVERT: de3eea6 Update `DATA-FILES.md` in in accordance with new fixes & features. REVERT: 8b345e7 Move «Plugins» section from INSTALLATION.md to main README.md REVERT: a9e59a7 Merge remote-tracking branch 'origin/master' REVERT: 1b0b53a Improved `override` option & Fixed `theme_config` in Hexo. REVERT: a43cb12 Merge pull request #45 from Albert-Gao/patch-1 REVERT: 595d3c3 Update google-analytics.swig REVERT: 5a3641e Fixed mistake. REVERT: ab19b72 Merge branch 'master' into add-katex-support REVERT: 270484f Merge pull request #43 from HuntedCodes/optional-cheers REVERT: 7588b9e Merge branch 'master' into optional-cheers REVERT: 06bdb89 Merge pull request #42 from tsanie/categories_tags_count_issue REVERT: 6e03d56 fix an issue about the categories/tags count. REVERT: 7ee28e7 Added cheers_enabled config option REVERT: 7d159ab Added Riot badge. REVERT: e650835 Added Riot badge. REVERT: 0513c3b Added Riot badge. REVERT: bad4334 Refactored `head.swig` to right rendering pathes with `cache`. REVERT: d19ad08 Merge pull request #39 from sli1989/pitch1 REVERT: 7e9ea0c Add comment.enable to switch comment conveniently REVERT: 08d35be Fixed excess blank with underline in posts categories meta (#36) . REVERT: fc97b4f Merge branch 'github_banner_on_mist' REVERT: 988722f Merge remote-tracking branch 'origin/master' REVERT: 3337b50 Responsive Github-Banner style for all themes. REVERT: 4111fe9 Fix typo in config description REVERT: 2b94268 Merge pull request #34 from tsanie/async_load_disqus REVERT: c917067 change `async` to `lazyload` REVERT: 3c51c33 support to load disqus comments asynchronous REVERT: 3e788ac Fix typo and add more info about per_page option REVERT: f70f2bb Combine MathJax and Katex together REVERT: 0b89c79 Remove katex js and use 0.7.1 as default REVERT: 4a52f5b Add Katex cdn specifications REVERT: c52c9a8 Add Katex support REVERT: d070a7e Merge branch 'github_banner_on_mist' REVERT: c4e9c9a Fixed menu badges left margin in Muse & Mist after excess spaces fix. REVERT: d2be4fa Added fix when JS turned off with `motion.enable` option. REVERT: cd6ef7b Merge branch 'master' into github_banner_on_mist REVERT: ac44fc4 Merge pull request #28 from wafer-li/patch-1 REVERT: 9976174 Merge branch 'master' into github_banner_on_mist REVERT: 6502981 override REVERT: 4d4e11e fix a position bug on the mobile. REVERT: 9b89bd8 Fix wrong translation in zh-Hans REVERT: 92061f9 Merge pull request #26 from LEAFERx/master REVERT: 24b4815 move needmoreshare_css to head REVERT: 57a03be Merge pull request #22 from wafer-li/patch-1 REVERT: 82e3bf5 Fix misleading description of gitment REVERT: da9cdd2 Release v6.0.1 REVERT: 0e5ab06 Merge branch 'remove-duoshuo' REVERT: 06f9d8b Fixed menu items excess spaces. REVERT: caf0738 Add «Follow me on GitHub» banner option. REVERT: be3528f Updated MathJax CDN links & added short docs to them. REVERT: 91c9919 Revert MathJax CDN on default. REVERT: fd89b29 Update config for FancyBox 2 & 3. REVERT: 6604f07 Fix issue template. [3] REVERT: 466038e Fix issue template. [2] REVERT: 75f80e0 Fixed issue template. REVERT: 8a3f18a Updated github templates. REVERT: 47a385b Merge branch 'master-1' into remove-duoshuo REVERT: bbeaf77 Rolling back `quote` and `label` tags. REVERT: 486a759 Merge branch 'master-1' into remove-duoshuo REVERT: feb1968 Update path on Local Search dependencies. REVERT: 8f9cde1 Merge branch 'master' of https://github.com/zhuzhuyule/hexo-theme-next-1 REVERT: 9e7cc3b Merge pull request #1 from theme-next/master REVERT: 11d551f clear about duoshuo server REVERT: aab1a52 Update HexoEditor link. REVERT: 4610dff Update readme. REVERT: de630c3 Merge pull request #9 from maple3142/master REVERT: aaded5f add message for reading_progress REVERT: 12b1dbe Update some links in readme's. REVERT: 2412fbc Several improvements in main menu on all schemes. REVERT: c0c6ff1 Fix: In mobile, menu content will cover side bar (Muse scheme). REVERT: 4bfbd67 Merge pull request #6 from kuleyu/master REVERT: e847bc5 Update wechat-subscriber.swig REVERT: 8d6049d Update reward.swig REVERT: 1956fa9 Merge pull request #5 from maple3142/master REVERT: 7c7ee9a add reading_progress css conditional loading REVERT: dc7d218 change reading_progress to seperate repo REVERT: 445705e add reading_progress REVERT: d00ecb0 Fixed RU broken links in docs. REVERT: 79568f2 Add Plugins section in RU docs. REVERT: f96dcda Fixed CN and RU broken links. REVERT: a6c7597 Update docs. REVERT: d30530a Added CN language navigation. REVERT: 15b9652 Merge pull request #4 from Blealtan/master REVERT: 23af3c5 Create translation to zh-Hans for UPDATER-FROM-5.1.x.md. REVERT: ba48e7e Update for Plugin section in docs/cn/INSTALLATION.md. REVERT: 1271ac8 Merge remote-tracking branch 'parent/master' REVERT: 3fbb715 Fixed install docs. REVERT: 3eebd5f Update install & update documentation. REVERT: 8b8cd94 Update authors from initial repo. REVERT: c110cf4 Refine punctuations. REVERT: d14235a Add translation for documents in Simplified Chinese. REVERT: 8d2d87a Fill in untranslated words for zh-Hans. REVERT: 896f7db Merge pull request #3 from zhuzhuyule/patch-1 REVERT: 8cedfbc add recommend markdown editor REVERT: 3ff0758 Fix docs. REVERT: ca757f3 Update readme for update NexT. REVERT: f0b5ec8 Update UPDATE-FROM-5.1.X.md REVERT: 5fc9b70 Update docs from 5.1.x REVERT: 790e1ed Add ru Installation translation. REVERT: 1940782 Fix logo to static path. REVERT: cfd5c38 Update DATA-FILES.md. REVERT: 7f7290f Update readme. REVERT: 9a76bc8 Add stale bot. REVERT: e12bb0b Introduce v6.0.0 REVERT: 2dd5c63 Initial commit git-subtree-dir: themes/next git-subtree-split: 2bbae6b1eb67f997b12ccc3b12503bc258a432a1 --- .gitignore | 23 +- .travis.yml | 44 +- LICENSE | 21 + README.md | 144 +- _config.yml | 1092 +----- package-lock.json | 3114 +++++++++++++++++ package.json | 55 +- scaffolds/draft.md | 4 + scaffolds/page.md | 4 + scaffolds/post.md | 5 + source/CNAME | 1 + source/README.md | 10 + source/_data/next.yml | 978 ++++++ source/_posts/git-account.md | 70 + source/_posts/git-bash.md | 107 + source/_posts/git-sub.md | 211 ++ source/_posts/gitignore.md | 44 + source/_posts/gitlab1.md | 142 + source/_posts/hexo-blog.md | 135 + source/_posts/hexo-iterative.md | 102 + source/_posts/hugo.md | 55 + source/_posts/linux-build.md | 314 ++ source/_posts/linux-mysql.md | 101 + source/_posts/memory-hs.md | 34 + source/_posts/memory-hz1.md | 20 + source/_posts/movie-fierce.md | 22 + source/_posts/network-http.md | 179 + source/_posts/network-okhttp1.md | 286 ++ source/_posts/rap1.md | 76 + source/_posts/rap2.md | 238 ++ source/_posts/realm.md | 193 + source/_posts/rxjava.md | 371 ++ source/_posts/security-rsa.md | 74 + source/_posts/ssm.md | 52 + source/_posts/syncing-a-fork.md | 64 + source/_posts/travel-zjj.md | 104 + source/_posts/treasure.md | 122 + source/about/index.md | 31 + source/categories/index.md | 6 + source/tags/index.md | 6 + .bowerrc => themes/next/.bowerrc | 0 .editorconfig => themes/next/.editorconfig | 0 .eslintrc.json => themes/next/.eslintrc.json | 0 .gitattributes => themes/next/.gitattributes | 0 .../next/.github}/CODE_OF_CONDUCT.md | 0 .../next/.github}/CONTRIBUTING.md | 0 .../next/.github}/ISSUE_TEMPLATE.md | 0 .../next/.github}/PULL_REQUEST_TEMPLATE.md | 0 .../next/.github}/browserstack_logo.png | Bin {.github => themes/next/.github}/stale.yml | 0 themes/next/.gitignore | 22 + .stickler.yml => themes/next/.stickler.yml | 0 .stylintrc => themes/next/.stylintrc | 0 themes/next/.travis.yml | 18 + LICENSE.md => themes/next/LICENSE.md | 0 themes/next/README.md | 138 + themes/next/_config.yml | 973 +++++ bower.json => themes/next/bower.json | 0 crowdin.yml => themes/next/crowdin.yml | 0 {docs => themes/next/docs}/AGPL3.md | 0 {docs => themes/next/docs}/ALGOLIA-SEARCH.md | 0 {docs => themes/next/docs}/AUTHORS.md | 0 {docs => themes/next/docs}/DATA-FILES.md | 0 {docs => themes/next/docs}/INSTALLATION.md | 0 .../next/docs}/LEANCLOUD-COUNTER-SECURITY.md | 0 {docs => themes/next/docs}/LICENSE | 0 {docs => themes/next/docs}/MATH.md | 0 .../next/docs}/UPDATE-FROM-5.1.X.md | 0 {docs => themes/next/docs}/ru/DATA-FILES.md | 0 {docs => themes/next/docs}/ru/INSTALLATION.md | 0 {docs => themes/next/docs}/ru/README.md | 0 .../next/docs}/ru/UPDATE-FROM-5.1.X.md | 0 .../next/docs}/zh-CN/ALGOLIA-SEARCH.md | 0 .../next/docs}/zh-CN/CODE_OF_CONDUCT.md | 0 .../next/docs}/zh-CN/CONTRIBUTING.md | 0 .../next/docs}/zh-CN/DATA-FILES.md | 0 .../next/docs}/zh-CN/INSTALLATION.md | 0 .../docs}/zh-CN/LEANCLOUD-COUNTER-SECURITY.md | 0 {docs => themes/next/docs}/zh-CN/MATH.md | 0 {docs => themes/next/docs}/zh-CN/README.md | 0 .../next/docs}/zh-CN/UPDATE-FROM-5.1.X.md | 0 .../next/gulpfile.coffee | 0 {languages => themes/next/languages}/de.yml | 0 .../next/languages}/default.yml | 0 {languages => themes/next/languages}/en.yml | 0 {languages => themes/next/languages}/fr.yml | 0 {languages => themes/next/languages}/id.yml | 0 {languages => themes/next/languages}/it.yml | 0 {languages => themes/next/languages}/ja.yml | 0 {languages => themes/next/languages}/ko.yml | 0 {languages => themes/next/languages}/nl.yml | 0 .../next/languages}/pt-BR.yml | 0 {languages => themes/next/languages}/pt.yml | 0 {languages => themes/next/languages}/ru.yml | 0 {languages => themes/next/languages}/tr.yml | 0 {languages => themes/next/languages}/vi.yml | 0 .../next/languages}/zh-CN.yml | 2 + .../next/languages}/zh-HK.yml | 0 .../next/languages}/zh-TW.yml | 0 .../next/layout}/_custom/head.swig | 0 .../next/layout}/_custom/header.swig | 0 .../next/layout}/_custom/sidebar.swig | 0 {layout => themes/next/layout}/_layout.swig | 0 .../next/layout}/_macro/menu/menu-badge.swig | 0 .../next/layout}/_macro/menu/menu-item.swig | 0 .../next/layout}/_macro/post-collapse.swig | 0 .../next/layout}/_macro/post-copyright.swig | 0 .../next/layout}/_macro/post-related.swig | 0 .../next/layout}/_macro/post.swig | 0 .../next/layout}/_macro/reward.swig | 0 .../next/layout}/_macro/sidebar.swig | 0 .../layout}/_macro/wechat-subscriber.swig | 0 .../next/layout}/_partials/breadcrumb.swig | 0 .../next/layout}/_partials/comments.swig | 0 .../next/layout}/_partials/footer.swig | 0 .../_partials/head/external-fonts.swig | 0 .../layout}/_partials/head/head-unique.swig | 0 .../next/layout}/_partials/head/head.swig | 0 .../next/layout}/_partials/header/brand.swig | 0 .../next/layout}/_partials/header/index.swig | 0 .../next/layout}/_partials/header/menu.swig | 0 .../layout}/_partials/header/sub-menu.swig | 0 .../next/layout}/_partials/page-header.swig | 0 .../next/layout}/_partials/pagination.swig | 0 .../next/layout}/_partials/search/index.swig | 0 .../layout}/_partials/search/localsearch.swig | 0 .../layout}/_partials/search/swiftype.swig | 0 .../layout}/_partials/search/tinysou.swig | 0 .../layout}/_partials/share/add-this.swig | 0 .../layout}/_partials/share/baidushare.swig | 0 .../_partials/share/duoshuo_share.swig | 0 .../next/layout}/_partials/share/jiathis.swig | 0 .../next/layout}/_scripts/boostrap.swig | 0 .../next/layout}/_scripts/commons.swig | 0 .../next/layout}/_scripts/noscript.swig | 0 .../layout}/_scripts/pages/post-details.swig | 0 .../next/layout}/_scripts/schemes/gemini.swig | 0 .../next/layout}/_scripts/schemes/mist.swig | 0 .../next/layout}/_scripts/schemes/muse.swig | 0 .../next/layout}/_scripts/schemes/pisces.swig | 0 .../next/layout}/_scripts/vendors.swig | 0 .../analytics/analytics-with-widget.swig | 0 .../analytics/application-insights.swig | 0 .../analytics/baidu-analytics.swig | 0 .../analytics/busuanzi-counter.swig | 0 .../analytics/cnzz-analytics.swig | 0 .../_third-party/analytics/facebook-sdk.swig | 0 .../_third-party/analytics/firestore.swig | 0 .../analytics/google-analytics.swig | 0 .../layout}/_third-party/analytics/index.swig | 0 .../analytics/lean-analytics.swig | 0 .../analytics/tencent-analytics.swig | 0 .../_third-party/analytics/tencent-mta.swig | 0 .../_third-party/analytics/vkontakte-api.swig | 0 .../next/layout}/_third-party/bookmark.swig | 0 .../_third-party/comments/changyan.swig | 0 .../layout}/_third-party/comments/disqus.swig | 0 .../_third-party/comments/gitment.swig | 0 .../_third-party/comments/hypercomments.swig | 0 .../layout}/_third-party/comments/index.swig | 0 .../layout}/_third-party/comments/livere.swig | 0 .../layout}/_third-party/comments/valine.swig | 0 .../layout}/_third-party/comments/youyan.swig | 0 .../next/layout}/_third-party/copy-code.swig | 0 .../next/layout}/_third-party/exturl.swig | 0 .../layout}/_third-party/github-banner.swig | 0 .../next/layout}/_third-party/math/index.swig | 0 .../next/layout}/_third-party/math/katex.swig | 0 .../layout}/_third-party/math/mathjax.swig | 0 .../layout}/_third-party/needsharebutton.swig | 0 .../next/layout}/_third-party/pangu.swig | 0 .../next/layout}/_third-party/rating.swig | 0 .../next/layout}/_third-party/schedule.swig | 0 .../layout}/_third-party/scroll-cookie.swig | 0 .../search/algolia-search/assets.swig | 0 .../search/algolia-search/dom.swig | 0 .../layout}/_third-party/search/index.swig | 0 .../_third-party/search/localsearch.swig | 0 .../layout}/_third-party/search/tinysou.swig | 0 .../layout}/_third-party/seo/baidu-push.swig | 0 {layout => themes/next/layout}/archive.swig | 0 {layout => themes/next/layout}/category.swig | 0 {layout => themes/next/layout}/index.swig | 0 {layout => themes/next/layout}/page.swig | 0 {layout => themes/next/layout}/post.swig | 0 {layout => themes/next/layout}/schedule.swig | 0 {layout => themes/next/layout}/tag.swig | 0 themes/next/package.json | 36 + {scripts => themes/next/scripts}/helpers.js | 0 .../next/scripts}/merge-configs.js | 0 {scripts => themes/next/scripts}/merge.js | 0 .../next/scripts}/tags/button.js | 0 .../next/scripts}/tags/center-quote.js | 0 .../next/scripts}/tags/exturl.js | 0 .../next/scripts}/tags/full-image.js | 0 .../next/scripts}/tags/group-pictures.js | 0 .../next/scripts}/tags/include-raw.js | 0 .../next/scripts}/tags/label.js | 0 .../next/scripts}/tags/lazy-image.js | 0 {scripts => themes/next/scripts}/tags/note.js | 0 {scripts => themes/next/scripts}/tags/tabs.js | 0 .../components/back-to-top-sidebar.styl | 0 .../css/_common/components/back-to-top.styl | 0 .../css/_common/components/buttons.styl | 0 .../css/_common/components/comments.styl | 0 .../css/_common/components/components.styl | 0 .../css/_common/components/footer/footer.styl | 0 .../components/header/github-banner.styl | 0 .../css/_common/components/header/header.styl | 0 .../_common/components/header/headerband.styl | 0 .../css/_common/components/header/menu.styl | 0 .../_common/components/header/site-meta.styl | 0 .../_common/components/header/site-nav.styl | 0 .../_common/components/highlight/diff.styl | 0 .../components/highlight/highlight.styl | 0 .../_common/components/highlight/theme.styl | 0 .../css/_common/components/pages/archive.styl | 0 .../_common/components/pages/breadcrumb.styl | 0 .../_common/components/pages/categories.styl | 0 .../css/_common/components/pages/pages.styl | 0 .../_common/components/pages/post-detail.styl | 0 .../_common/components/pages/schedule.styl | 0 .../css/_common/components/pagination.styl | 0 .../_common/components/post/post-button.styl | 0 .../components/post/post-collapse.styl | 0 .../components/post/post-copyright.styl | 0 .../css/_common/components/post/post-eof.styl | 0 .../_common/components/post/post-expand.styl | 0 .../_common/components/post/post-gallery.styl | 0 .../_common/components/post/post-meta.styl | 0 .../css/_common/components/post/post-nav.styl | 0 .../post/post-reading_progress.styl | 0 .../_common/components/post/post-reward.styl | 0 .../css/_common/components/post/post-rtl.styl | 0 .../_common/components/post/post-tags.styl | 0 .../_common/components/post/post-title.styl | 0 .../_common/components/post/post-type.styl | 0 .../_common/components/post/post-widgets.styl | 0 .../css/_common/components/post/post.styl | 0 .../sidebar/sidebar-author-links.styl | 0 .../components/sidebar/sidebar-author.styl | 0 .../components/sidebar/sidebar-blogroll.styl | 0 .../components/sidebar/sidebar-dimmer.styl | 0 .../components/sidebar/sidebar-feed-link.styl | 0 .../components/sidebar/sidebar-nav.styl | 0 .../components/sidebar/sidebar-toc.styl | 0 .../components/sidebar/sidebar-toggle.styl | 0 .../_common/components/sidebar/sidebar.styl | 0 .../components/sidebar/site-state.styl | 0 .../css/_common/components/tag-cloud.styl | 0 .../components/tags/blockquote-center.styl | 0 .../css/_common/components/tags/exturl.styl | 0 .../_common/components/tags/full-image.styl | 0 .../components/tags/group-pictures.styl | 0 .../css/_common/components/tags/label.styl | 0 .../_common/components/tags/note-modern.styl | 0 .../css/_common/components/tags/note.styl | 0 .../css/_common/components/tags/tabs.styl | 0 .../css/_common/components/tags/tags.styl | 0 .../third-party/algolia-search.styl | 0 .../components/third-party/baidushare.styl | 0 .../third-party/busuanzi-counter.styl | 0 .../components/third-party/gitment.styl | 0 .../_common/components/third-party/han.styl | 0 .../components/third-party/jiathis.styl | 0 .../components/third-party/localsearch.styl | 0 .../third-party/needsharebutton.styl | 0 .../components/third-party/related-posts.styl | 0 .../components/third-party/third-party.styl | 0 .../source}/css/_common/outline/outline.styl | 0 .../source}/css/_common/scaffolding/base.styl | 0 .../css/_common/scaffolding/helpers.styl | 0 .../css/_common/scaffolding/mobile.styl | 0 .../css/_common/scaffolding/normalize.styl | 0 .../css/_common/scaffolding/scaffolding.styl | 0 .../css/_common/scaffolding/tables.styl | 0 .../next/source}/css/_custom/custom.styl | 0 .../next/source}/css/_mixins/Gemini.styl | 0 .../next/source}/css/_mixins/Mist.styl | 0 .../next/source}/css/_mixins/Muse.styl | 0 .../next/source}/css/_mixins/Pisces.styl | 0 .../next/source}/css/_mixins/base.styl | 0 .../next/source}/css/_mixins/custom.styl | 0 .../source}/css/_schemes/Gemini/index.styl | 0 .../next/source}/css/_schemes/Mist/_base.styl | 0 .../source}/css/_schemes/Mist/_header.styl | 0 .../next/source}/css/_schemes/Mist/_logo.styl | 0 .../next/source}/css/_schemes/Mist/_menu.styl | 0 .../css/_schemes/Mist/_posts-expanded.styl | 0 .../source}/css/_schemes/Mist/_search.styl | 0 .../next/source}/css/_schemes/Mist/index.styl | 0 .../css/_schemes/Mist/outline/outline.styl | 0 .../Mist/sidebar/sidebar-blogroll.styl | 0 .../source}/css/_schemes/Muse/_layout.styl | 0 .../next/source}/css/_schemes/Muse/_logo.styl | 0 .../next/source}/css/_schemes/Muse/_menu.styl | 0 .../source}/css/_schemes/Muse/_search.styl | 0 .../next/source}/css/_schemes/Muse/index.styl | 0 .../Muse/sidebar/sidebar-blogroll.styl | 0 .../source}/css/_schemes/Pisces/_brand.styl | 0 .../source}/css/_schemes/Pisces/_layout.styl | 0 .../source}/css/_schemes/Pisces/_menu.styl | 0 .../source}/css/_schemes/Pisces/_posts.styl | 0 .../source}/css/_schemes/Pisces/_sidebar.styl | 0 .../css/_schemes/Pisces/_sub-menu.styl | 0 .../source}/css/_schemes/Pisces/index.styl | 0 .../next/source}/css/_variables/Gemini.styl | 0 .../next/source}/css/_variables/Mist.styl | 0 .../next/source}/css/_variables/Muse.styl | 0 .../next/source}/css/_variables/Pisces.styl | 0 .../next/source}/css/_variables/base.styl | 0 .../next/source}/css/_variables/custom.styl | 0 {source => themes/next/source}/css/main.styl | 0 {source => themes/next/source}/fonts/.gitkeep | 0 .../next/source}/images/algolia_logo.svg | 0 .../source}/images/apple-touch-icon-next.png | Bin .../next/source}/images/avatar.gif | Bin .../next/source}/images/cc-by-nc-nd.svg | 0 .../next/source}/images/cc-by-nc-sa.svg | 0 .../next/source}/images/cc-by-nc.svg | 0 .../next/source}/images/cc-by-nd.svg | 0 .../next/source}/images/cc-by-sa.svg | 0 .../next/source}/images/cc-by.svg | 0 .../next/source}/images/cc-zero.svg | 0 .../source}/images/favicon-16x16-next.png | Bin .../source}/images/favicon-32x32-next.png | Bin .../next/source}/images/loading.gif | Bin .../next/source}/images/logo.svg | 0 .../next/source}/images/placeholder.gif | Bin .../next/source}/images/quote-l.svg | 0 .../next/source}/images/quote-r.svg | 0 .../next/source}/images/searchicon.png | Bin .../next/source}/js/src/affix.js | 0 .../next/source}/js/src/algolia-search.js | 0 .../next/source}/js/src/bootstrap.js | 0 .../next/source}/js/src/exturl.js | 0 .../next/source}/js/src/js.cookie.js | 0 .../next/source}/js/src/motion.js | 0 .../next/source}/js/src/post-details.js | 0 .../next/source}/js/src/schemes/pisces.js | 0 .../next/source}/js/src/scroll-cookie.js | 0 .../next/source}/js/src/scrollspy.js | 0 .../next/source}/js/src/utils.js | 0 .../next/source}/lib/fancybox/.bower.json | 0 .../next/source}/lib/fancybox/.gitattributes | 0 .../next/source}/lib/fancybox/LICENSE | 0 .../next/source}/lib/fancybox/README.md | 0 .../lib/fancybox/source/jquery.fancybox.css | 0 .../lib/fancybox/source/jquery.fancybox.js | 0 .../fancybox/source/jquery.fancybox.min.css | 0 .../fancybox/source/jquery.fancybox.min.js | 0 .../fancybox/source/jquery.fancybox.pack.js | 0 .../next/source}/lib/font-awesome/.bower.json | 0 .../next/source}/lib/font-awesome/.gitignore | 0 .../next/source}/lib/font-awesome/.npmignore | 0 .../source}/lib/font-awesome/HELP-US-OUT.txt | 0 .../next/source}/lib/font-awesome/bower.json | 0 .../lib/font-awesome/css/font-awesome.css | 0 .../lib/font-awesome/css/font-awesome.css.map | 0 .../lib/font-awesome/css/font-awesome.min.css | 0 .../fonts/fontawesome-webfont.eot | Bin .../fonts/fontawesome-webfont.woff | Bin .../fonts/fontawesome-webfont.woff2 | Bin .../next/source}/lib/jquery/index.js | 0 .../lib/reading_progress/.editorconfig | 0 .../source}/lib/reading_progress/.gitignore | 0 .../next/source}/lib/reading_progress/LICENSE | 0 .../source}/lib/reading_progress/README.md | 0 .../source}/lib/reading_progress/package.json | 0 .../lib/reading_progress/reading_progress.js | 0 .../reading_progress/reading_progress.min.js | 0 .../lib/ua-parser-js/dist/ua-parser.min.js | 0 .../lib/ua-parser-js/dist/ua-parser.pack.js | 0 .../next/source}/lib/velocity/velocity.js | 0 .../next/source}/lib/velocity/velocity.min.js | 0 .../next/source}/lib/velocity/velocity.ui.js | 0 .../source}/lib/velocity/velocity.ui.min.js | 0 {test => themes/next/test}/.jshintrc | 0 {test => themes/next/test}/helpers.js | 0 {test => themes/next/test}/intern.js | 0 380 files changed, 8671 insertions(+), 1172 deletions(-) create mode 100644 LICENSE create mode 100644 package-lock.json create mode 100644 scaffolds/draft.md create mode 100644 scaffolds/page.md create mode 100644 scaffolds/post.md create mode 100644 source/CNAME create mode 100644 source/README.md create mode 100644 source/_data/next.yml create mode 100644 source/_posts/git-account.md create mode 100644 source/_posts/git-bash.md create mode 100644 source/_posts/git-sub.md create mode 100644 source/_posts/gitignore.md create mode 100644 source/_posts/gitlab1.md create mode 100644 source/_posts/hexo-blog.md create mode 100644 source/_posts/hexo-iterative.md create mode 100644 source/_posts/hugo.md create mode 100644 source/_posts/linux-build.md create mode 100644 source/_posts/linux-mysql.md create mode 100644 source/_posts/memory-hs.md create mode 100644 source/_posts/memory-hz1.md create mode 100644 source/_posts/movie-fierce.md create mode 100644 source/_posts/network-http.md create mode 100644 source/_posts/network-okhttp1.md create mode 100644 source/_posts/rap1.md create mode 100644 source/_posts/rap2.md create mode 100644 source/_posts/realm.md create mode 100644 source/_posts/rxjava.md create mode 100644 source/_posts/security-rsa.md create mode 100644 source/_posts/ssm.md create mode 100644 source/_posts/syncing-a-fork.md create mode 100644 source/_posts/travel-zjj.md create mode 100644 source/_posts/treasure.md create mode 100644 source/about/index.md create mode 100644 source/categories/index.md create mode 100644 source/tags/index.md rename .bowerrc => themes/next/.bowerrc (100%) rename .editorconfig => themes/next/.editorconfig (100%) rename .eslintrc.json => themes/next/.eslintrc.json (100%) rename .gitattributes => themes/next/.gitattributes (100%) rename {.github => themes/next/.github}/CODE_OF_CONDUCT.md (100%) rename {.github => themes/next/.github}/CONTRIBUTING.md (100%) rename {.github => themes/next/.github}/ISSUE_TEMPLATE.md (100%) rename {.github => themes/next/.github}/PULL_REQUEST_TEMPLATE.md (100%) rename {.github => themes/next/.github}/browserstack_logo.png (100%) rename {.github => themes/next/.github}/stale.yml (100%) create mode 100644 themes/next/.gitignore rename .stickler.yml => themes/next/.stickler.yml (100%) rename .stylintrc => themes/next/.stylintrc (100%) create mode 100644 themes/next/.travis.yml rename LICENSE.md => themes/next/LICENSE.md (100%) create mode 100644 themes/next/README.md create mode 100644 themes/next/_config.yml rename bower.json => themes/next/bower.json (100%) rename crowdin.yml => themes/next/crowdin.yml (100%) rename {docs => themes/next/docs}/AGPL3.md (100%) rename {docs => themes/next/docs}/ALGOLIA-SEARCH.md (100%) rename {docs => themes/next/docs}/AUTHORS.md (100%) rename {docs => themes/next/docs}/DATA-FILES.md (100%) rename {docs => themes/next/docs}/INSTALLATION.md (100%) rename {docs => themes/next/docs}/LEANCLOUD-COUNTER-SECURITY.md (100%) rename {docs => themes/next/docs}/LICENSE (100%) rename {docs => themes/next/docs}/MATH.md (100%) rename {docs => themes/next/docs}/UPDATE-FROM-5.1.X.md (100%) rename {docs => themes/next/docs}/ru/DATA-FILES.md (100%) rename {docs => themes/next/docs}/ru/INSTALLATION.md (100%) rename {docs => themes/next/docs}/ru/README.md (100%) rename {docs => themes/next/docs}/ru/UPDATE-FROM-5.1.X.md (100%) rename {docs => themes/next/docs}/zh-CN/ALGOLIA-SEARCH.md (100%) rename {docs => themes/next/docs}/zh-CN/CODE_OF_CONDUCT.md (100%) rename {docs => themes/next/docs}/zh-CN/CONTRIBUTING.md (100%) rename {docs => themes/next/docs}/zh-CN/DATA-FILES.md (100%) rename {docs => themes/next/docs}/zh-CN/INSTALLATION.md (100%) rename {docs => themes/next/docs}/zh-CN/LEANCLOUD-COUNTER-SECURITY.md (100%) rename {docs => themes/next/docs}/zh-CN/MATH.md (100%) rename {docs => themes/next/docs}/zh-CN/README.md (100%) rename {docs => themes/next/docs}/zh-CN/UPDATE-FROM-5.1.X.md (100%) rename gulpfile.coffee => themes/next/gulpfile.coffee (100%) rename {languages => themes/next/languages}/de.yml (100%) rename {languages => themes/next/languages}/default.yml (100%) rename {languages => themes/next/languages}/en.yml (100%) rename {languages => themes/next/languages}/fr.yml (100%) rename {languages => themes/next/languages}/id.yml (100%) rename {languages => themes/next/languages}/it.yml (100%) rename {languages => themes/next/languages}/ja.yml (100%) rename {languages => themes/next/languages}/ko.yml (100%) rename {languages => themes/next/languages}/nl.yml (100%) rename {languages => themes/next/languages}/pt-BR.yml (100%) rename {languages => themes/next/languages}/pt.yml (100%) rename {languages => themes/next/languages}/ru.yml (100%) rename {languages => themes/next/languages}/tr.yml (100%) rename {languages => themes/next/languages}/vi.yml (100%) rename {languages => themes/next/languages}/zh-CN.yml (98%) rename {languages => themes/next/languages}/zh-HK.yml (100%) rename {languages => themes/next/languages}/zh-TW.yml (100%) rename {layout => themes/next/layout}/_custom/head.swig (100%) rename {layout => themes/next/layout}/_custom/header.swig (100%) rename {layout => themes/next/layout}/_custom/sidebar.swig (100%) rename {layout => themes/next/layout}/_layout.swig (100%) rename {layout => themes/next/layout}/_macro/menu/menu-badge.swig (100%) rename {layout => themes/next/layout}/_macro/menu/menu-item.swig (100%) rename {layout => themes/next/layout}/_macro/post-collapse.swig (100%) rename {layout => themes/next/layout}/_macro/post-copyright.swig (100%) rename {layout => themes/next/layout}/_macro/post-related.swig (100%) rename {layout => themes/next/layout}/_macro/post.swig (100%) rename {layout => themes/next/layout}/_macro/reward.swig (100%) rename {layout => themes/next/layout}/_macro/sidebar.swig (100%) rename {layout => themes/next/layout}/_macro/wechat-subscriber.swig (100%) rename {layout => themes/next/layout}/_partials/breadcrumb.swig (100%) rename {layout => themes/next/layout}/_partials/comments.swig (100%) rename {layout => themes/next/layout}/_partials/footer.swig (100%) rename {layout => themes/next/layout}/_partials/head/external-fonts.swig (100%) rename {layout => themes/next/layout}/_partials/head/head-unique.swig (100%) rename {layout => themes/next/layout}/_partials/head/head.swig (100%) rename {layout => themes/next/layout}/_partials/header/brand.swig (100%) rename {layout => themes/next/layout}/_partials/header/index.swig (100%) rename {layout => themes/next/layout}/_partials/header/menu.swig (100%) rename {layout => themes/next/layout}/_partials/header/sub-menu.swig (100%) rename {layout => themes/next/layout}/_partials/page-header.swig (100%) rename {layout => themes/next/layout}/_partials/pagination.swig (100%) rename {layout => themes/next/layout}/_partials/search/index.swig (100%) rename {layout => themes/next/layout}/_partials/search/localsearch.swig (100%) rename {layout => themes/next/layout}/_partials/search/swiftype.swig (100%) rename {layout => themes/next/layout}/_partials/search/tinysou.swig (100%) rename {layout => themes/next/layout}/_partials/share/add-this.swig (100%) rename {layout => themes/next/layout}/_partials/share/baidushare.swig (100%) rename {layout => themes/next/layout}/_partials/share/duoshuo_share.swig (100%) rename {layout => themes/next/layout}/_partials/share/jiathis.swig (100%) rename {layout => themes/next/layout}/_scripts/boostrap.swig (100%) rename {layout => themes/next/layout}/_scripts/commons.swig (100%) rename {layout => themes/next/layout}/_scripts/noscript.swig (100%) rename {layout => themes/next/layout}/_scripts/pages/post-details.swig (100%) rename {layout => themes/next/layout}/_scripts/schemes/gemini.swig (100%) rename {layout => themes/next/layout}/_scripts/schemes/mist.swig (100%) rename {layout => themes/next/layout}/_scripts/schemes/muse.swig (100%) rename {layout => themes/next/layout}/_scripts/schemes/pisces.swig (100%) rename {layout => themes/next/layout}/_scripts/vendors.swig (100%) rename {layout => themes/next/layout}/_third-party/analytics/analytics-with-widget.swig (100%) rename {layout => themes/next/layout}/_third-party/analytics/application-insights.swig (100%) rename {layout => themes/next/layout}/_third-party/analytics/baidu-analytics.swig (100%) rename {layout => themes/next/layout}/_third-party/analytics/busuanzi-counter.swig (100%) rename {layout => themes/next/layout}/_third-party/analytics/cnzz-analytics.swig (100%) rename {layout => themes/next/layout}/_third-party/analytics/facebook-sdk.swig (100%) rename {layout => themes/next/layout}/_third-party/analytics/firestore.swig (100%) rename {layout => themes/next/layout}/_third-party/analytics/google-analytics.swig (100%) rename {layout => themes/next/layout}/_third-party/analytics/index.swig (100%) rename {layout => themes/next/layout}/_third-party/analytics/lean-analytics.swig (100%) rename {layout => themes/next/layout}/_third-party/analytics/tencent-analytics.swig (100%) rename {layout => themes/next/layout}/_third-party/analytics/tencent-mta.swig (100%) rename {layout => themes/next/layout}/_third-party/analytics/vkontakte-api.swig (100%) rename {layout => themes/next/layout}/_third-party/bookmark.swig (100%) rename {layout => themes/next/layout}/_third-party/comments/changyan.swig (100%) rename {layout => themes/next/layout}/_third-party/comments/disqus.swig (100%) rename {layout => themes/next/layout}/_third-party/comments/gitment.swig (100%) rename {layout => themes/next/layout}/_third-party/comments/hypercomments.swig (100%) rename {layout => themes/next/layout}/_third-party/comments/index.swig (100%) rename {layout => themes/next/layout}/_third-party/comments/livere.swig (100%) rename {layout => themes/next/layout}/_third-party/comments/valine.swig (100%) rename {layout => themes/next/layout}/_third-party/comments/youyan.swig (100%) rename {layout => themes/next/layout}/_third-party/copy-code.swig (100%) rename {layout => themes/next/layout}/_third-party/exturl.swig (100%) rename {layout => themes/next/layout}/_third-party/github-banner.swig (100%) rename {layout => themes/next/layout}/_third-party/math/index.swig (100%) rename {layout => themes/next/layout}/_third-party/math/katex.swig (100%) rename {layout => themes/next/layout}/_third-party/math/mathjax.swig (100%) rename {layout => themes/next/layout}/_third-party/needsharebutton.swig (100%) rename {layout => themes/next/layout}/_third-party/pangu.swig (100%) rename {layout => themes/next/layout}/_third-party/rating.swig (100%) rename {layout => themes/next/layout}/_third-party/schedule.swig (100%) rename {layout => themes/next/layout}/_third-party/scroll-cookie.swig (100%) rename {layout => themes/next/layout}/_third-party/search/algolia-search/assets.swig (100%) rename {layout => themes/next/layout}/_third-party/search/algolia-search/dom.swig (100%) rename {layout => themes/next/layout}/_third-party/search/index.swig (100%) rename {layout => themes/next/layout}/_third-party/search/localsearch.swig (100%) rename {layout => themes/next/layout}/_third-party/search/tinysou.swig (100%) rename {layout => themes/next/layout}/_third-party/seo/baidu-push.swig (100%) rename {layout => themes/next/layout}/archive.swig (100%) rename {layout => themes/next/layout}/category.swig (100%) rename {layout => themes/next/layout}/index.swig (100%) rename {layout => themes/next/layout}/page.swig (100%) rename {layout => themes/next/layout}/post.swig (100%) rename {layout => themes/next/layout}/schedule.swig (100%) rename {layout => themes/next/layout}/tag.swig (100%) create mode 100644 themes/next/package.json rename {scripts => themes/next/scripts}/helpers.js (100%) rename {scripts => themes/next/scripts}/merge-configs.js (100%) rename {scripts => themes/next/scripts}/merge.js (100%) rename {scripts => themes/next/scripts}/tags/button.js (100%) rename {scripts => themes/next/scripts}/tags/center-quote.js (100%) rename {scripts => themes/next/scripts}/tags/exturl.js (100%) rename {scripts => themes/next/scripts}/tags/full-image.js (100%) rename {scripts => themes/next/scripts}/tags/group-pictures.js (100%) rename {scripts => themes/next/scripts}/tags/include-raw.js (100%) rename {scripts => themes/next/scripts}/tags/label.js (100%) rename {scripts => themes/next/scripts}/tags/lazy-image.js (100%) rename {scripts => themes/next/scripts}/tags/note.js (100%) rename {scripts => themes/next/scripts}/tags/tabs.js (100%) rename {source => themes/next/source}/css/_common/components/back-to-top-sidebar.styl (100%) rename {source => themes/next/source}/css/_common/components/back-to-top.styl (100%) rename {source => themes/next/source}/css/_common/components/buttons.styl (100%) rename {source => themes/next/source}/css/_common/components/comments.styl (100%) rename {source => themes/next/source}/css/_common/components/components.styl (100%) rename {source => themes/next/source}/css/_common/components/footer/footer.styl (100%) rename {source => themes/next/source}/css/_common/components/header/github-banner.styl (100%) rename {source => themes/next/source}/css/_common/components/header/header.styl (100%) rename {source => themes/next/source}/css/_common/components/header/headerband.styl (100%) rename {source => themes/next/source}/css/_common/components/header/menu.styl (100%) rename {source => themes/next/source}/css/_common/components/header/site-meta.styl (100%) rename {source => themes/next/source}/css/_common/components/header/site-nav.styl (100%) rename {source => themes/next/source}/css/_common/components/highlight/diff.styl (100%) rename {source => themes/next/source}/css/_common/components/highlight/highlight.styl (100%) rename {source => themes/next/source}/css/_common/components/highlight/theme.styl (100%) rename {source => themes/next/source}/css/_common/components/pages/archive.styl (100%) rename {source => themes/next/source}/css/_common/components/pages/breadcrumb.styl (100%) rename {source => themes/next/source}/css/_common/components/pages/categories.styl (100%) rename {source => themes/next/source}/css/_common/components/pages/pages.styl (100%) rename {source => themes/next/source}/css/_common/components/pages/post-detail.styl (100%) rename {source => themes/next/source}/css/_common/components/pages/schedule.styl (100%) rename {source => themes/next/source}/css/_common/components/pagination.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post-button.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post-collapse.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post-copyright.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post-eof.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post-expand.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post-gallery.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post-meta.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post-nav.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post-reading_progress.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post-reward.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post-rtl.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post-tags.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post-title.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post-type.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post-widgets.styl (100%) rename {source => themes/next/source}/css/_common/components/post/post.styl (100%) rename {source => themes/next/source}/css/_common/components/sidebar/sidebar-author-links.styl (100%) rename {source => themes/next/source}/css/_common/components/sidebar/sidebar-author.styl (100%) rename {source => themes/next/source}/css/_common/components/sidebar/sidebar-blogroll.styl (100%) rename {source => themes/next/source}/css/_common/components/sidebar/sidebar-dimmer.styl (100%) rename {source => themes/next/source}/css/_common/components/sidebar/sidebar-feed-link.styl (100%) rename {source => themes/next/source}/css/_common/components/sidebar/sidebar-nav.styl (100%) rename {source => themes/next/source}/css/_common/components/sidebar/sidebar-toc.styl (100%) rename {source => themes/next/source}/css/_common/components/sidebar/sidebar-toggle.styl (100%) rename {source => themes/next/source}/css/_common/components/sidebar/sidebar.styl (100%) rename {source => themes/next/source}/css/_common/components/sidebar/site-state.styl (100%) rename {source => themes/next/source}/css/_common/components/tag-cloud.styl (100%) rename {source => themes/next/source}/css/_common/components/tags/blockquote-center.styl (100%) rename {source => themes/next/source}/css/_common/components/tags/exturl.styl (100%) rename {source => themes/next/source}/css/_common/components/tags/full-image.styl (100%) rename {source => themes/next/source}/css/_common/components/tags/group-pictures.styl (100%) rename {source => themes/next/source}/css/_common/components/tags/label.styl (100%) rename {source => themes/next/source}/css/_common/components/tags/note-modern.styl (100%) rename {source => themes/next/source}/css/_common/components/tags/note.styl (100%) rename {source => themes/next/source}/css/_common/components/tags/tabs.styl (100%) rename {source => themes/next/source}/css/_common/components/tags/tags.styl (100%) rename {source => themes/next/source}/css/_common/components/third-party/algolia-search.styl (100%) rename {source => themes/next/source}/css/_common/components/third-party/baidushare.styl (100%) rename {source => themes/next/source}/css/_common/components/third-party/busuanzi-counter.styl (100%) rename {source => themes/next/source}/css/_common/components/third-party/gitment.styl (100%) rename {source => themes/next/source}/css/_common/components/third-party/han.styl (100%) rename {source => themes/next/source}/css/_common/components/third-party/jiathis.styl (100%) rename {source => themes/next/source}/css/_common/components/third-party/localsearch.styl (100%) rename {source => themes/next/source}/css/_common/components/third-party/needsharebutton.styl (100%) rename {source => themes/next/source}/css/_common/components/third-party/related-posts.styl (100%) rename {source => themes/next/source}/css/_common/components/third-party/third-party.styl (100%) rename {source => themes/next/source}/css/_common/outline/outline.styl (100%) rename {source => themes/next/source}/css/_common/scaffolding/base.styl (100%) rename {source => themes/next/source}/css/_common/scaffolding/helpers.styl (100%) rename {source => themes/next/source}/css/_common/scaffolding/mobile.styl (100%) rename {source => themes/next/source}/css/_common/scaffolding/normalize.styl (100%) rename {source => themes/next/source}/css/_common/scaffolding/scaffolding.styl (100%) rename {source => themes/next/source}/css/_common/scaffolding/tables.styl (100%) rename {source => themes/next/source}/css/_custom/custom.styl (100%) rename {source => themes/next/source}/css/_mixins/Gemini.styl (100%) rename {source => themes/next/source}/css/_mixins/Mist.styl (100%) rename {source => themes/next/source}/css/_mixins/Muse.styl (100%) rename {source => themes/next/source}/css/_mixins/Pisces.styl (100%) rename {source => themes/next/source}/css/_mixins/base.styl (100%) rename {source => themes/next/source}/css/_mixins/custom.styl (100%) rename {source => themes/next/source}/css/_schemes/Gemini/index.styl (100%) rename {source => themes/next/source}/css/_schemes/Mist/_base.styl (100%) rename {source => themes/next/source}/css/_schemes/Mist/_header.styl (100%) rename {source => themes/next/source}/css/_schemes/Mist/_logo.styl (100%) rename {source => themes/next/source}/css/_schemes/Mist/_menu.styl (100%) rename {source => themes/next/source}/css/_schemes/Mist/_posts-expanded.styl (100%) rename {source => themes/next/source}/css/_schemes/Mist/_search.styl (100%) rename {source => themes/next/source}/css/_schemes/Mist/index.styl (100%) rename {source => themes/next/source}/css/_schemes/Mist/outline/outline.styl (100%) rename {source => themes/next/source}/css/_schemes/Mist/sidebar/sidebar-blogroll.styl (100%) rename {source => themes/next/source}/css/_schemes/Muse/_layout.styl (100%) rename {source => themes/next/source}/css/_schemes/Muse/_logo.styl (100%) rename {source => themes/next/source}/css/_schemes/Muse/_menu.styl (100%) rename {source => themes/next/source}/css/_schemes/Muse/_search.styl (100%) rename {source => themes/next/source}/css/_schemes/Muse/index.styl (100%) rename {source => themes/next/source}/css/_schemes/Muse/sidebar/sidebar-blogroll.styl (100%) rename {source => themes/next/source}/css/_schemes/Pisces/_brand.styl (100%) rename {source => themes/next/source}/css/_schemes/Pisces/_layout.styl (100%) rename {source => themes/next/source}/css/_schemes/Pisces/_menu.styl (100%) rename {source => themes/next/source}/css/_schemes/Pisces/_posts.styl (100%) rename {source => themes/next/source}/css/_schemes/Pisces/_sidebar.styl (100%) rename {source => themes/next/source}/css/_schemes/Pisces/_sub-menu.styl (100%) rename {source => themes/next/source}/css/_schemes/Pisces/index.styl (100%) rename {source => themes/next/source}/css/_variables/Gemini.styl (100%) rename {source => themes/next/source}/css/_variables/Mist.styl (100%) rename {source => themes/next/source}/css/_variables/Muse.styl (100%) rename {source => themes/next/source}/css/_variables/Pisces.styl (100%) rename {source => themes/next/source}/css/_variables/base.styl (100%) rename {source => themes/next/source}/css/_variables/custom.styl (100%) rename {source => themes/next/source}/css/main.styl (100%) rename {source => themes/next/source}/fonts/.gitkeep (100%) rename {source => themes/next/source}/images/algolia_logo.svg (100%) rename {source => themes/next/source}/images/apple-touch-icon-next.png (100%) rename {source => themes/next/source}/images/avatar.gif (100%) rename {source => themes/next/source}/images/cc-by-nc-nd.svg (100%) rename {source => themes/next/source}/images/cc-by-nc-sa.svg (100%) rename {source => themes/next/source}/images/cc-by-nc.svg (100%) rename {source => themes/next/source}/images/cc-by-nd.svg (100%) rename {source => themes/next/source}/images/cc-by-sa.svg (100%) rename {source => themes/next/source}/images/cc-by.svg (100%) rename {source => themes/next/source}/images/cc-zero.svg (100%) rename {source => themes/next/source}/images/favicon-16x16-next.png (100%) rename {source => themes/next/source}/images/favicon-32x32-next.png (100%) rename {source => themes/next/source}/images/loading.gif (100%) rename {source => themes/next/source}/images/logo.svg (100%) rename {source => themes/next/source}/images/placeholder.gif (100%) rename {source => themes/next/source}/images/quote-l.svg (100%) rename {source => themes/next/source}/images/quote-r.svg (100%) rename {source => themes/next/source}/images/searchicon.png (100%) rename {source => themes/next/source}/js/src/affix.js (100%) rename {source => themes/next/source}/js/src/algolia-search.js (100%) rename {source => themes/next/source}/js/src/bootstrap.js (100%) rename {source => themes/next/source}/js/src/exturl.js (100%) rename {source => themes/next/source}/js/src/js.cookie.js (100%) rename {source => themes/next/source}/js/src/motion.js (100%) rename {source => themes/next/source}/js/src/post-details.js (100%) rename {source => themes/next/source}/js/src/schemes/pisces.js (100%) rename {source => themes/next/source}/js/src/scroll-cookie.js (100%) rename {source => themes/next/source}/js/src/scrollspy.js (100%) rename {source => themes/next/source}/js/src/utils.js (100%) rename {source => themes/next/source}/lib/fancybox/.bower.json (100%) rename {source => themes/next/source}/lib/fancybox/.gitattributes (100%) rename {source => themes/next/source}/lib/fancybox/LICENSE (100%) rename {source => themes/next/source}/lib/fancybox/README.md (100%) rename {source => themes/next/source}/lib/fancybox/source/jquery.fancybox.css (100%) rename {source => themes/next/source}/lib/fancybox/source/jquery.fancybox.js (100%) rename {source => themes/next/source}/lib/fancybox/source/jquery.fancybox.min.css (100%) rename {source => themes/next/source}/lib/fancybox/source/jquery.fancybox.min.js (100%) rename {source => themes/next/source}/lib/fancybox/source/jquery.fancybox.pack.js (100%) rename {source => themes/next/source}/lib/font-awesome/.bower.json (100%) rename {source => themes/next/source}/lib/font-awesome/.gitignore (100%) rename {source => themes/next/source}/lib/font-awesome/.npmignore (100%) rename {source => themes/next/source}/lib/font-awesome/HELP-US-OUT.txt (100%) rename {source => themes/next/source}/lib/font-awesome/bower.json (100%) rename {source => themes/next/source}/lib/font-awesome/css/font-awesome.css (100%) rename {source => themes/next/source}/lib/font-awesome/css/font-awesome.css.map (100%) rename {source => themes/next/source}/lib/font-awesome/css/font-awesome.min.css (100%) rename {source => themes/next/source}/lib/font-awesome/fonts/fontawesome-webfont.eot (100%) rename {source => themes/next/source}/lib/font-awesome/fonts/fontawesome-webfont.woff (100%) rename {source => themes/next/source}/lib/font-awesome/fonts/fontawesome-webfont.woff2 (100%) rename {source => themes/next/source}/lib/jquery/index.js (100%) rename {source => themes/next/source}/lib/reading_progress/.editorconfig (100%) rename {source => themes/next/source}/lib/reading_progress/.gitignore (100%) rename {source => themes/next/source}/lib/reading_progress/LICENSE (100%) rename {source => themes/next/source}/lib/reading_progress/README.md (100%) rename {source => themes/next/source}/lib/reading_progress/package.json (100%) rename {source => themes/next/source}/lib/reading_progress/reading_progress.js (100%) rename {source => themes/next/source}/lib/reading_progress/reading_progress.min.js (100%) rename {source => themes/next/source}/lib/ua-parser-js/dist/ua-parser.min.js (100%) rename {source => themes/next/source}/lib/ua-parser-js/dist/ua-parser.pack.js (100%) rename {source => themes/next/source}/lib/velocity/velocity.js (100%) rename {source => themes/next/source}/lib/velocity/velocity.min.js (100%) rename {source => themes/next/source}/lib/velocity/velocity.ui.js (100%) rename {source => themes/next/source}/lib/velocity/velocity.ui.min.js (100%) rename {test => themes/next/test}/.jshintrc (100%) rename {test => themes/next/test}/helpers.js (100%) rename {test => themes/next/test}/intern.js (100%) diff --git a/.gitignore b/.gitignore index 26b5eab0b..063b0e4ce 100644 --- a/.gitignore +++ b/.gitignore @@ -1,22 +1,7 @@ .DS_Store -.idea/ +Thumbs.db +db.json *.log -*.iml -yarn.lock -package-lock.json node_modules/ - -# Ignore optional external libraries -source/lib/* - -# Track internal libraries & Ignore unused verdors files -source/lib/font-awesome/less/ -source/lib/font-awesome/scss/ -!source/lib/font-awesome/* - -!source/lib/jquery/ - -source/lib/ua-parser-js/* -!source/lib/ua-parser-js/dist/ - -!source/lib/velocity/ +public/ +.deploy*/ \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 9591f0b23..74b71d1d3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,18 +1,30 @@ -language: node_js -#node_js: node -node_js: lts/* - +language: node_js # 设置语言 +node_js: stable # 设置相应的版本 cache: - directories: - - node_modules - -install: npm install - + directories: + - node_modules # 据说可以减少travis构建时间 +before_install: + - npm install -g hexo + - npm install -g hexo-cli +install: + - npm install # 安装hexo及插件 before_script: - - npm install -g gulp - -addons: - browserstack: - username: "ivannginx1" - access_key: - secure: "NutOhdgtUdBUXMPZhy8X1F1Jq+tan1LeNOV0FArBt15SNlxtNArqhiyTi4XnG9MPruX4306aGF2RBrKso+OiGNRdGtRGngH613Q0GWNtlC/boMqnI7fHqLIyCs6S12y2uA8PK4Ifxg9bZ0VtCTYYbMy+p1KvBM//L12vmtfdnby8z5Qvex3tB3dLoPOR50CKkINHJVDLm+iVRFrdz4/83oDsulZSRRGIaxu5taDWPIcp3fYZtre2Nc+RXcsyFDyjN7U0Hvr5tKBbloJxXEQEBv2xLkMOtp85nmCPD06s1Il8Wus1ux3raVsfUyaW5FpNX37Jeb5e00RQUM1wgU5m75H6qiGwDvQswbugJG0i/a2nNfsgVmbrSZdMnkHcx2Uxmrw4ejyEP5NSrJSBi05Ck1fQ4UsZ4Qkdf1fd04SI0LpLWt43eoNO/7rHKsQoP4LCX9gxKUuC075NEBLODyJ529RYfA6dKKwwH6o0ZbOgASmCoAWaM65g4+FHRnJcKL/Kj9ZWklQtRa7/ynlHaA65jefFS2lB8Ut6d3rXDDBih9mIrwV1uUaEH96xgAN42bgU/vY6FGzNkDOYZqj4YfsepDM0wbOsslFie7JZq7iFjsYvrXqLvYUMk37AZwQ2Sb6uH4tIT4Qw/4oZfDzA1En3/8HdZJ28nKW/lzjwMSqheIY=" + - npm install -g mocha + - git clone --branch master https://github.com/BladeCode/BladeCode.github.io.git public +script: + - hexo cl # 清除 + - hexo g # 生成 +after_script: + - cd ./public + - git init + - git config user.name "BladeCode" # 修改成自己的github用户名 + - git config user.email "Jerry.x@outlook.com" # 修改成自己的GitHub邮箱 + - git add . + - git commit -m "update by Travis-CI" + - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master # GH_token就是在travis中设置的token +branches: + only: + - dev # 只监测这个分支,一有动静就开始构建 +env: + global: + - GH_REF: github.com/BladeCode/BladeCode.github.io.git \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..80f46a893 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Jerry xu + +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 index ac8019351..545862920 100644 --- a/README.md +++ b/README.md @@ -1,138 +1,10 @@ -
      Language: :us: -:cn: -:ru:
      +

      + BladeCode +

      -#
      e x T
      +![BladeCode](https://travis-ci.com/BladeCode/BladeCode.github.io.svg?branch=dev) -

      «NexT» is a high quality elegant Hexo theme. It is crafted from scratch, with love.

      - -[![gitter-image]][gitter-url] -[![riot-image]][riot-url] -[![t-chat-image]][t-chat-url] -[![t-news-image]][t-news-url] -[![lang-image]][lang-url] -[![travis-image]][travis-url] -[![rel-image]][releases-url] -[![hexo-image]][hexo-url] -[![lic-image]][lic-url] - -## Live Preview - -* :heart_decoration: Muse scheme: [LEAFERx](https://leaferx.online) | [XiaMo](https://notes.wanghao.work) | [OAwan](https://oawan.me) -* :six_pointed_star: Mist scheme: [Jeff](https://blog.zzbd.org) | [uchuhimo](http://uchuhimo.me) | [xirong](http://www.ixirong.com) -* :pisces: Pisces scheme: [Vi](http://notes.iissnan.com) | [Acris](https://acris.me) | [Rainy](https://rainylog.com) -* :gemini: Gemini scheme: [Ivan.Nginx](https://almostover.ru) | [Raincal](https://raincal.com) | [Dandy](https://dandyxu.me) - -More «NexT» examples [here](https://github.com/iissnan/hexo-theme-next/issues/119). - -## Installation - -Simplest way to install is by cloning whole repository: - - ```sh - $ cd hexo - $ git clone https://github.com/theme-next/hexo-theme-next themes/next - ``` - -Or you can see [detailed installation instructions][docs-installation-url] if you want any other variant. - -## Plugins - -In NexT config now you can find dependencies on each module which was moved to external repositories which can be found by [main organization link](https://github.com/theme-next). - -For example, you want to use `fancybox` in your site. Go to NexT config and see: - -```yml -# Fancybox -# Dependencies: https://github.com/theme-next/theme-next-fancybox -fancybox: false -``` - -Then turn on `fancybox` and go to «Dependencies» link with installation instructions of this module. - -### Exceptions - -If you use cdn for any plugins, you need to replace your cdn link. - -For example, you want to use `fancybox` and you configured a cdn link. Go to NexT config and see: - -```yml -vendors: - # ... - # Some contents... - # ... - fancybox: # Set or update fancybox cdn url. - fancybox_css: # Set or update fancybox cdn url. -``` - -Instead of defining [main organization link](https://github.com/theme-next) for updates. - -## Update - -You can update to latest master branch by the following command: - -```sh -$ cd themes/next -$ git pull -``` - -And if you see any error message during update (something like **«Commit your changes or stash them before you can merge»**), recommended to learn [Hexo data files][docs-data-files-url] feature.\ -Howbeit, you can bypass update errors by `Commit`, `Stash` or `Discard` local changes. See [here](https://stackoverflow.com/a/15745424/5861495) how to do it. - -**If you want to update from v5.1.x to v6.0.x, read [here][docs-update-5-1-x-url].** - -## Known Bugs - -For those who also encounter **«[Error: Cannot find module 'hexo-util'](https://github.com/iissnan/hexo-theme-next/issues/1490)»**, please check your NPM version. - -* `> 3`: Still not work? Please remove `node_modules` directory and reinstall using `npm install`. -* `< 3`: Please add `hexo-util` explicitly via `npm install --save-dev hexo-util` to you site package deps. - -## Contributing - -Contribution is welcome, feel free to open an issue and fork. Waiting for your pull request. - -## Third party applications - -* :triangular_flag_on_post: HexoEditor - -[browser-image]: https://img.shields.io/badge/browser-%20chrome%20%7C%20firefox%20%7C%20opera%20%7C%20safari%20%7C%20ie%20%3E%3D%209-lightgrey.svg -[browser-url]: https://www.browserstack.com - -[lang-image]: https://d322cqt584bo4o.cloudfront.net/theme-next/localized.svg "Add or improve translation in few seconds!" -[lang-url]: https://crwd.in/theme-next - -[gitter-image]: https://img.shields.io/badge/gitter-chat-orange.svg "Join to our Gitter room" -[gitter-url]: https://gitter.im/theme-next - -[riot-image]: https://img.shields.io/badge/riot-chat-DCAB08.svg "Join to our Riot room" -[riot-url]: https://riot.im/app/#/room/#NexT:matrix.org - -[t-chat-image]: https://img.shields.io/badge/telegram-chat-BAB210.svg "Join to our Telegram group" -[t-chat-url]: https://t.me/theme_next - -[t-news-image]: https://img.shields.io/badge/telegram-news-98B919.svg "Join to our Telegram news channel" -[t-news-url]: https://t.me/theme_next_news - -[travis-image]: https://travis-ci.org/theme-next/hexo-theme-next.svg?branch=master -[travis-url]: https://travis-ci.org/theme-next/hexo-theme-next?branch=master "Travis CI [Linux]" - -[hexo-image]: https://img.shields.io/badge/hexo-%3E%3D%203.5.0-blue.svg -[hexo-url]: http://hexo.io - -[lic-image]: https://img.shields.io/badge/license-%20AGPL-blue.svg -[lic-url]: https://github.com/theme-next/hexo-theme-next/blob/master/LICENSE.md - - -[rel-image]: https://badge.fury.io/gh/theme-next%2Fhexo-theme-next.svg - - -[download-latest-url]: https://github.com/theme-next/hexo-theme-next/archive/master.zip -[releases-latest-url]: https://github.com/theme-next/hexo-theme-next/releases/latest -[releases-url]: https://github.com/theme-next/hexo-theme-next/releases -[tags-url]: https://github.com/theme-next/hexo-theme-next/tags -[commits-url]: https://github.com/theme-next/hexo-theme-next/commits/master - -[docs-installation-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/INSTALLATION.md -[docs-data-files-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/DATA-FILES.md -[docs-update-5-1-x-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/UPDATE-FROM-5.1.X.md +### Thanks +1. [Node](https://nodejs.org) +2. [Hexo](https://hexo.io) +3. [Next](https://github.com/theme-next/hexo-theme-next) \ No newline at end of file diff --git a/_config.yml b/_config.yml index 7b3107c58..f9624c86c 100644 --- a/_config.yml +++ b/_config.yml @@ -1,973 +1,127 @@ -# --------------------------------------------------------------- -# Theme Core Configuration Settings -# --------------------------------------------------------------- - -# If false, merge configs from `_data/next.yml` into default configuration (rewrite). -# If true, will fully override default configuration by options from `_data/next.yml` (override). Only for NexT settings. -# And if true, all config from default NexT `_config.yml` must be copied into `next.yml`. Use if you know what you are doing. -# Useful if you want to comment some options from NexT `_config.yml` by `next.yml` without editing default config. -override: false - -# Allow to cache content generation. Introduced in NexT v6.0.0. -cache: +# Hexo Configuration +## Docs: https://hexo.io/docs/configuration.html +## Source: https://github.com/hexojs/hexo/ + +# Site +title: BladeCode +subtitle: Life's a struggle! +description: +keywords: +author: Jerry xu +language: zh-CN +timezone: + +# URL +## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/' +url: https://www.incoder.org +root: / +permalink: :year/:month/:day/:title/ +permalink_defaults: + +# Directory +source_dir: source +public_dir: public +tag_dir: tags +archive_dir: archives +category_dir: categories +code_dir: downloads/code +i18n_dir: :lang +skip_render: README.md + +# Writing +new_post_name: :title.md # File name of new posts +default_layout: post +titlecase: false # Transform title into titlecase +external_link: true # Open external links in new tab +filename_case: 0 +render_drafts: false +post_asset_folder: false +relative_link: false +future: true +highlight: enable: true - -# Redefine custom file paths. Introduced in NexT v6.0.2. -# If commented, will be used default custom file paths. - -# For example, you want to put your custom styles file -# outside theme directory in root `source/_data`, set -# `styles: source/_data/styles.styl` -#custom_file_path: - # Default paths: layout/_custom/* - #head: source/_data/head.swig - #header: source/_data/header.swig - #sidebar: source/_data/sidebar.swig - - # Default path: source/css/_variables/custom.styl - #variables: source/_data/variables.styl - # Default path: source/css/_mixins/custom.styl - #mixins: source/_data/mixins.styl - # Default path: source/css/_custom/custom.styl - #styles: source/_data/styles.styl - - -# --------------------------------------------------------------- -# Site Information Settings -# --------------------------------------------------------------- - -# To get or check favicons visit: https://realfavicongenerator.net -# Put your favicons into `hexo-site/source/` (recommend) or `hexo-site/themes/next/source/images/` directory. - -# Default NexT favicons placed in `hexo-site/themes/next/source/images/` directory. -# And if you want to place your icons in `hexo-site/source/` root directory, you must remove `/images` prefix from pathes. - -# For example, you put your favicons into `hexo-site/source/images` directory. -# Then need to rename & redefine they on any other names, otherwise icons from Next will rewrite your custom icons in Hexo. -favicon: - small: /images/favicon-16x16-next.png - medium: /images/favicon-32x32-next.png - apple_touch_icon: /images/apple-touch-icon-next.png - safari_pinned_tab: /images/logo.svg - #android_manifest: /images/manifest.json - #ms_browserconfig: /images/browserconfig.xml - -# Set rss to false to disable feed link. -# Leave rss as empty to use site's feed link, and install hexo-generator-feed: `npm install hexo-generator-feed --save`. -# Set rss to specific value if you have burned your feed already. -rss: - -footer: - # Specify the date when the site was setup. - # If not defined, current year will be used. - #since: 2015 - - # Icon between year and copyright info. - icon: - # Icon name in fontawesome, see: https://fontawesome.com/v4.7.0/icons - # `heart` is recommended with animation in red (#ff0000). - name: user - # If you want to animate the icon, set it to true. - animated: false - # Change the color of icon, using Hex Code. - color: "#808080" - - # If not defined, will be used `author` from Hexo main config. - copyright: - # ------------------------------------------------------------- - powered: - # Hexo link (Powered by Hexo). - enable: true - # Version info of Hexo after Hexo link (vX.X.X). - version: true - - theme: - # Theme & scheme info link (Theme - NexT.scheme). - enable: true - # Version info of NexT after scheme info (vX.X.X). - version: true - # ------------------------------------------------------------- - # Any custom text can be defined here. - #custom_text: Hosted by Coding Pages - -# --------------------------------------------------------------- -# SEO Settings -# --------------------------------------------------------------- - -# Canonical, set a canonical link tag in your hexo, you could use it for your SEO of blog. -# See: https://support.google.com/webmasters/answer/139066 -# Tips: Before you open this tag, remember set up your URL in hexo _config.yml ( ex. url: http://yourdomain.com ) -canonical: true - -# Change headers hierarchy on site-subtitle (will be main site description) and on all post/pages titles for better SEO-optimization. -seo: false - -# If true, will add site-subtitle to index page, added in main hexo config. -# subtitle: Subtitle -index_with_subtitle: false - - -# --------------------------------------------------------------- -# Menu Settings -# --------------------------------------------------------------- - -# When running the site in a subdirectory (e.g. domain.tld/blog), remove the leading slash from link value (/archives -> archives). -# Usage: `Key: /link/ || icon` -# Key is the name of menu item. If translate for this menu will find in languages - this translate will be loaded; if not - Key name will be used. Key is case-senstive. -# Value before `||` delimeter is the target link. -# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, question icon will be loaded. -menu: - home: / || home - #about: /about/ || user - #tags: /tags/ || tags - #categories: /categories/ || th - archives: /archives/ || archive - #schedule: /schedule/ || calendar - #sitemap: /sitemap.xml || sitemap - #commonweal: /404/ || heartbeat - -# Enable/Disable menu icons / item badges. -menu_settings: - icons: true - badges: false - -# --------------------------------------------------------------- -# Scheme Settings -# --------------------------------------------------------------- - -# Schemes -scheme: Muse -#scheme: Mist -#scheme: Pisces -#scheme: Gemini - - -# --------------------------------------------------------------- -# Sidebar Settings -# --------------------------------------------------------------- - -# Posts / Categories / Tags in sidebar. -site_state: true - -# Social Links. -# Usage: `Key: permalink || icon` -# Key is the link label showing to end users. -# Value before `||` delimeter is the target permalink. -# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, globe icon will be loaded. -#social: - #GitHub: https://github.com/yourname || github - #E-Mail: mailto:yourname@gmail.com || envelope - #Google: https://plus.google.com/yourname || google - #Twitter: https://twitter.com/yourname || twitter - #FB Page: https://www.facebook.com/yourname || facebook - #VK Group: https://vk.com/yourname || vk - #StackOverflow: https://stackoverflow.com/yourname || stack-overflow - #YouTube: https://youtube.com/yourname || youtube - #Instagram: https://instagram.com/yourname || instagram - #Skype: skype:yourname?call|chat || skype - -social_icons: - enable: true - icons_only: false - transition: false - # Dependencies: exturl: true in Tags Settings section below. - # To encrypt links above use https://www.base64encode.org - # Example encoded link: `GitHub: aHR0cHM6Ly9naXRodWIuY29tL3RoZW1lLW5leHQ= || github` - exturl: false - -# Follow me on GitHub banner in right-top corner. -# Usage: `permalink || title` -# Value before `||` delimeter is the target permalink. -# Value after `||` delimeter is the title and aria-label name. -#github_banner: https://github.com/yourname || Follow me on GitHub - -# Blog rolls -links_icon: link -links_title: Links -links_layout: block -#links_layout: inline -#links: - #Title: http://example.com/ - -# Sidebar Avatar -avatar: - # in theme directory(source/images): /images/avatar.gif - # in site directory(source/uploads): /uploads/avatar.gif - # You can also use other linking images. - url: #/images/avatar.gif - # If true, the avatar would be dispalyed in circle. - rounded: false - # The value of opacity should be choose from 0 to 1 to set the opacity of the avatar. - opacity: 1 - # If true, the avatar would be rotated with the cursor. - rotated: false - -# Table Of Contents in the Sidebar -toc: + line_number: true + auto_detect: false + tab_replace: + +# Home page setting +# path: Root path for your blogs index page. (default = '') +# per_page: Posts displayed per page. (0 = disable pagination) +# order_by: Posts order. (Order by date descending by default) +index_generator: + path: '' + per_page: 10 + order_by: -date + +# Category & Tag +default_category: uncategorized +category_map: +tag_map: + +# Date / Time format +## Hexo uses Moment.js to parse and display date +## You can customize the date format as defined in +## http://momentjs.com/docs/#/displaying/format/ +date_format: YYYY-MM-DD +time_format: HH:mm:ss + +# Pagination +## Set per_page to 0 to disable pagination +per_page: 10 +pagination_dir: page + +# Extensions +## Plugins: https://hexo.io/plugins/ + +# RSS订阅支持 +plugin: +- hexo-generator-feed +# Feed Atom +feed: + type: atom + path: atom.xml + limit: 20 + +## Themes: https://hexo.io/themes/ +theme: next + +# Deployment +## Docs: https://hexo.io/docs/deployment.html +deploy: +- type: git +- type: leancloud_counter_security_sync + repo: https://github.com/BladeCode/BladeCode.github.io.git + branch: master + +githubEmojis: enable: true + className: github-emoji + unicode: false + styles: + localEmojis: - # Automatically add list number to toc. - number: true - - # If true, all words will placed on next lines if header width longer then sidebar width. - wrap: false - -# Creative Commons 4.0 International License. -# http://creativecommons.org/ -# Available: by | by-nc | by-nc-nd | by-nc-sa | by-nd | by-sa | zero -#creative_commons: by-nc-sa -#creative_commons: - -sidebar: - # Sidebar Position, available value: left | right (only for Pisces | Gemini). - position: left - #position: right - - # Sidebar Display, available value (only for Muse | Mist): - # - post expand on posts automatically. Default. - # - always expand for all pages automatically - # - hide expand only when click on the sidebar toggle icon. - # - remove Totally remove sidebar including sidebar toggle. - display: post - #display: always - #display: hide - #display: remove - - # Sidebar offset from top menubar in pixels (only for Pisces | Gemini). - offset: 12 - - # Back to top in sidebar (only for Pisces | Gemini). - b2t: false - - # Scroll percent label in b2t button. - scrollpercent: false - - # Enable sidebar on narrow view (only for Muse | Mist). - onmobile: false - - -# --------------------------------------------------------------- -# Post Settings -# --------------------------------------------------------------- - -# Automatically scroll page to section which is under mark. -scroll_to_more: true - -# Automatically saving scroll position on each post/page in cookies. -save_scroll: false - -# Automatically excerpt description in homepage as preamble text. -excerpt_description: true - -# Automatically Excerpt. Not recommend. -# Please use in the post to control excerpt accurately. -auto_excerpt: - enable: false - length: 150 - -# Post meta display settings -post_meta: - item_text: true - created_at: true - updated_at: - enabled: true - # If true, show updated date label only if `updated date` different from 'created date' (post edited in another day than was created). - # And if post will edited in same day as created, edited time will show in popup title under created time label. - # If false show anyway, but if post edited in same day, show only edited time. - another_day: true - categories: true - -# Post wordcount display settings -# Dependencies: https://github.com/theme-next/hexo-symbols-count-time +# hexo-symbols-count-time symbols_count_time: - separated_meta: true - item_text_post: true - item_text_total: false - awl: 4 - wpm: 275 - -codeblock: - # Manual define the border radius in codeblock - # Leave it empty for the default 1 - border_radius: - # Add copy button on codeblock - copy_button: - enable: false - # Show text copy result - show_result: false - -# Wechat Subscriber -#wechat_subscriber: - #enabled: true - #qcode: /path/to/your/wechatqcode ex. /uploads/wechat-qcode.jpg - #description: ex. subscribe to my blog by scanning my public wechat account - -# Reward -#reward_comment: Donate comment here -#wechatpay: /images/wechatpay.jpg -#alipay: /images/alipay.jpg -#bitcoin: /images/bitcoin.png - -# Related popular posts -# Dependencies: https://github.com/tea3/hexo-related-popular-posts -related_posts: - enable: false - title: # custom header, leave empty to use the default one - display_in_home: false - params: - maxCount: 5 - #PPMixingRate: 0.0 - #isDate: false - #isImage: false - #isExcerpt: false - -# Declare license on posts -post_copyright: - enable: false - license: CC BY-NC-SA 4.0 - -# Post edit -# Dependencies: https://github.com/hexojs/hexo-deployer-git -post_edit: - enable: false - url: https://github.com/theme-next/theme-next.org/_posts/tree/master/ # Link for view source. -# url: https://github.com/theme-next/theme-next.org/_posts/edit/master/ # Link for fork & edit. - - -# --------------------------------------------------------------- -# Misc Theme Settings -# --------------------------------------------------------------- - -# Reduce padding / margin indents on devices with narrow width. -mobile_layout_economy: false - -# Android Chrome header panel color ($brand-bg / $headband-bg => $black-deep). -android_chrome_color: "#222" - -# Custom Logo. -# !!Only available for Default Scheme currently. -# Options: -# enabled: [true/false] - Replace with specific image -# image: url-of-image - Images's url -custom_logo: - enabled: false - image: - -# Code Highlight theme -# Available values: normal | night | night eighties | night blue | night bright -# https://github.com/chriskempson/tomorrow-theme -highlight_theme: normal - -# Enable "cheers" for archive page. -cheers_enabled: true - -# Manual define the max content width -# !!Only available for Gemini Scheme currently -# Leave it empty for the default 75% (suggest not less than 1000px) -#max_content_width: 1000px - -# Manual define the sidebar width -# !!Only available for Gemini Scheme currently -# Leave it empty for the default 240 -sidebar_width: - -# --------------------------------------------------------------- -# Font Settings -# - Find fonts on Google Fonts (https://www.google.com/fonts) -# - All fonts set here will have the following styles: -# light, light italic, normal, normal italic, bold, bold italic -# - Be aware that setting too much fonts will cause site running slowly -# - Introduce in 5.0.1 -# --------------------------------------------------------------- -# CAUTION! Safari Version 10.1.2 bug: https://github.com/iissnan/hexo-theme-next/issues/1844 -# To avoid space between header and sidebar in Pisces / Gemini themes recommended to use Web Safe fonts for `global` (and `logo`): -# Arial | Tahoma | Helvetica | Times New Roman | Courier New | Verdana | Georgia | Palatino | Garamond | Comic Sans MS | Trebuchet MS -# --------------------------------------------------------------- -font: - enable: false - - # Uri of fonts host. E.g. //fonts.googleapis.com (Default). - host: - - # Font options: - # `external: true` will load this font family from `host` above. - # `family: Times New Roman`. Without any quotes. - # `size: xx`. Use `px` as unit. - - # Global font settings used for all elements in . - global: - external: true - family: Lato - size: - - # Font settings for Headlines (H1, H2, H3, H4, H5, H6). - # Fallback to `global` font settings. - headings: - external: true - family: - size: - - # Font settings for posts. - # Fallback to `global` font settings. - posts: - external: true - family: - - # Font settings for Logo. - # Fallback to `global` font settings. - logo: - external: true - family: - size: - - # Font settings for and code blocks. - codes: - external: true - family: - size: - - -# --------------------------------------------------------------- -# Third Party Services Settings -# --------------------------------------------------------------- - -# Math Equations Render Support -math: - enable: false - - # Default(true) will load mathjax/katex script on demand - # That is it only render those page who has 'mathjax: true' in Front Matter. - # If you set it to false, it will load mathjax/katex srcipt EVERY PAGE. - per_page: true - - engine: mathjax - #engine: katex - - # hexo-rendering-pandoc (or hexo-renderer-kramed) needed to full MathJax support. - mathjax: - # Use 2.7.1 as default, jsdelivr as default CDN, works everywhere even in China - cdn: //cdn.jsdelivr.net/npm/mathjax@2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML - # For newMathJax CDN (cdnjs.cloudflare.com) with fallback to oldMathJax (cdn.mathjax.org). - #cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML - # For direct link to MathJax.js with CloudFlare CDN (cdnjs.cloudflare.com). - #cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML - # For automatic detect latest version link to MathJax.js and get from Bootcss. - #cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML - - # hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin) - # needed to full Katex support. - katex: - # Use 0.7.1 as default, jsdelivr as default CDN, works everywhere even in China - cdn: //cdn.jsdelivr.net/npm/katex@0.7.1/dist/katex.min.css - # CDNJS, provided by cloudflare, maybe the best CDN, but not works in China - #cdn: //cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css - # Bootcss, works great in China, but not so well in other region - #cdn: //cdn.bootcss.com/KaTeX/0.7.1/katex.min.css - -# Han Support -# Dependencies: https://github.com/theme-next/theme-next-han -han: false - -# Pangu Support -# Dependencies: https://github.com/theme-next/theme-next-pangu -# For more information: https://github.com/vinta/pangu.js -pangu: false - -# Swiftype Search API Key -#swiftype_key: - -# Baidu Analytics ID -#baidu_analytics: - -# Disqus -disqus: - enable: false - shortname: - count: true - lazyload: false - -# Hypercomments -#hypercomments_id: - -# changyan -changyan: - enable: false - appid: - appkey: - - -# Valine. -# You can get your appid and appkey from https://leancloud.cn -# more info please open https://valine.js.org -valine: - enable: false - appid: # your leancloud application appid - appkey: # your leancloud application appkey - notify: false # mail notifier , https://github.com/xCss/Valine/wiki - verify: false # Verification code - placeholder: Just go go # comment box placeholder - avatar: mm # gravatar style - guest_info: nick,mail,link # custom comment header - pageSize: 10 # pagination size - - -# Support for youyan comments system. -# You can get your uid from http://www.uyan.cc -#youyan_uid: your uid - -# Support for LiveRe comments system. -# You can get your uid from https://livere.com/insight/myCode (General web site) -#livere_uid: your uid - -# Gitment -# Introduction: https://imsun.net/posts/gitment-introduction/ -gitment: - enable: false - mint: true # RECOMMEND, A mint on Gitment, to support count, language and proxy_gateway - count: true # Show comments count in post meta area - lazy: false # Comments lazy loading with a button - cleanly: false # Hide 'Powered by ...' on footer, and more - language: # Force language, or auto switch by theme - github_user: # MUST HAVE, Your Github Username - github_repo: # MUST HAVE, The name of the repo you use to store Gitment comments - client_id: # MUST HAVE, Github client id for the Gitment - client_secret: # EITHER this or proxy_gateway, Github access secret token for the Gitment - proxy_gateway: # Address of api proxy, See: https://github.com/aimingoo/intersect - redirect_protocol: # Protocol of redirect_uri with force_redirect_protocol when mint enabled - -# Baidu Share -# Available value: -# button | slide -# Warning: Baidu Share does not support https. -#baidushare: -## type: button - -# Share -# This plugin is more useful in China, make sure you known how to use it. -# And you can find the use guide at official webiste: http://www.jiathis.com/. -# Warning: JiaThis does not support https. -#jiathis: - ##uid: Get this uid from http://www.jiathis.com/ - -#add_this_id: - -# NeedMoreShare2 -# Dependencies: https://github.com/theme-next/theme-next-needmoreshare2 -# See: https://github.com/revir/need-more-share2 -# Also see: https://github.com/DzmVasileusky/needShareButton -# iconStyle: default | box -# boxForm: horizontal | vertical -# position: top / middle / bottom + Left / Center / Right -# networks: Weibo,Wechat,Douban,QQZone,Twitter,Linkedin,Mailto,Reddit, -# Delicious,StumbleUpon,Pinterest,Facebook,GooglePlus,Slashdot, -# Technorati,Posterous,Tumblr,GoogleBookmarks,Newsvine, -# Evernote,Friendfeed,Vkontakte,Odnoklassniki,Mailru -needmoreshare2: - enable: false - postbottom: - enable: false - options: - iconStyle: box - boxForm: horizontal - position: bottomCenter - networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook - float: - enable: false - options: - iconStyle: box - boxForm: horizontal - position: middleRight - networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook - -# Google Webmaster tools verification setting -# See: https://www.google.com/webmasters/ -#google_site_verification: - -# Google Analytics -#google_analytics: - -# Bing Webmaster tools verification setting -# See: https://www.bing.com/webmaster/ -#bing_site_verification: - -# Yandex Webmaster tools verification setting -# See: https://webmaster.yandex.ru/ -#yandex_site_verification: - -# CNZZ count -#cnzz_siteid: - -# Application Insights -# See https://azure.microsoft.com/en-us/services/application-insights/ -# application_insights: - -# Post widgets & FB/VK comments settings. -# --------------------------------------------------------------- -# Facebook SDK Support. -# https://github.com/iissnan/hexo-theme-next/pull/410 -facebook_sdk: - enable: false - app_id: # - fb_admin: # - like_button: #true - webmaster: #true - -# Facebook comments plugin -# This plugin depends on Facebook SDK. -# If facebook_sdk.enable is false, Facebook comments plugin is unavailable. -facebook_comments_plugin: - enable: false - num_of_posts: 10 # min posts num is 1 - width: 100% # default width is 550px - scheme: light # default scheme is light (light or dark) - -# VKontakte API Support. -# To get your AppID visit https://vk.com/editapp?act=create -vkontakte_api: - enable: false - app_id: # - like: true - comments: true - num_of_posts: 10 - -# Star rating support to each article. -# To get your ID visit https://widgetpack.com -rating: - enable: false - id: # - color: fc6423 -# --------------------------------------------------------------- - -# Show number of visitors to each article. -# You can visit https://leancloud.cn get AppID and AppKey. -leancloud_visitors: - enable: false - app_id: # - app_key: # - # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security - # If you don't care about security in lc counter and just want to use it directly - # (without hexo-leancloud-counter-security plugin), set the `security` to `false`. - security: true - betterPerformance: false - -# Another tool to show number of visitors to each article. -# visit https://console.firebase.google.com/u/0/ to get apiKey and projectId -# visit https://firebase.google.com/docs/firestore/ to get more information about firestore -firestore: - enable: false - collection: articles #required, a string collection name to access firestore database - apiKey: #required - projectId: #required - bluebird: false #enable this if you want to include bluebird 3.5.1(core version) Promise polyfill - -# Show Views/Visitors of the website/page with busuanzi. -# Get more information on http://ibruce.info/2015/04/04/busuanzi/ -busuanzi_count: - enable: false - total_visitors: true - total_visitors_icon: user - total_views: true - total_views_icon: eye - post_views: true - post_views_icon: eye - - -# Tencent analytics ID -# tencent_analytics: - -# Tencent MTA ID -# tencent_mta: - - -# Enable baidu push so that the blog will push the url to baidu automatically which is very helpful for SEO -baidu_push: false - -# Google Calendar -# Share your recent schedule to others via calendar page -# -# API Documentation: -# https://developers.google.com/google-apps/calendar/v3/reference/events/list -calendar: - enable: false - calendar_id: - api_key: - orderBy: startTime - offsetMax: 24 - offsetMin: 4 - timeZone: - showDeleted: false - singleEvents: true - maxResults: 250 - -# Algolia Search -# See: https://github.com/theme-next/hexo-theme-next/blob/master/docs/ALGOLIA-SEARCH.md -# Dependencies: https://github.com/theme-next/theme-next-algolia-instant-search -algolia_search: - enable: false - hits: - per_page: 10 - labels: - input_placeholder: Search for Posts - hits_empty: "We didn't find any results for the search: ${query}" - hits_stats: "${hits} results found in ${time} ms" - -# Local search -# Dependencies: https://github.com/theme-next/hexo-generator-searchdb -local_search: - enable: false - # if auto, trigger search by changing input - # if manual, trigger search by pressing enter key or search button - trigger: auto - # show top n results per article, show all results by setting to -1 - top_n_per_article: 1 - # unescape html strings to the readable one - unescape: false - -# Bookmark Support -# Dependencies: https://github.com/theme-next/theme-next-bookmark -bookmark: - enable: false - # if auto - # - save the reading position when closing the page - # - or clicking the bookmark-icon - # if manual, only save it by clicking the bookmark-icon - save: auto - - -# --------------------------------------------------------------- -# Tags Settings -# --------------------------------------------------------------- - -# External URL with BASE64 encrypt & decrypt. -# Usage: {% exturl text url "title" %} -# Alias: {% extlink text url "title" %} -exturl: false - -# Note tag (bs-callout). -note: - # Note tag style values: - # - simple bs-callout old alert style. Default. - # - modern bs-callout new (v2-v3) alert style. - # - flat flat callout style with background, like on Mozilla or StackOverflow. - # - disabled disable all CSS styles import of note tag. - style: simple - icons: false - border_radius: 3 - # Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6). - # Offset also applied to label tag variables. This option can work with disabled note tag. - light_bg_offset: 0 - -# Label tag. -label: true - -# Tabs tag. -tabs: - enable: true - transition: - tabs: false - labels: true - border_radius: 0 - -# Reading progress bar -# Dependencies: https://github.com/theme-next/theme-next-reading-progress -reading_progress: - enable: false - color: "#37c6c0" - height: 2px - - -#! --------------------------------------------------------------- -#! DO NOT EDIT THE FOLLOWING SETTINGS -#! UNLESS YOU KNOW WHAT YOU ARE DOING -#! --------------------------------------------------------------- - -# Use velocity to animate everything. -motion: - enable: true - async: false - transition: - # Transition variants: - # fadeIn | fadeOut | flipXIn | flipXOut | flipYIn | flipYOut | flipBounceXIn | flipBounceXOut | flipBounceYIn | flipBounceYOut - # swoopIn | swoopOut | whirlIn | whirlOut | shrinkIn | shrinkOut | expandIn | expandOut - # bounceIn | bounceOut | bounceUpIn | bounceUpOut | bounceDownIn | bounceDownOut | bounceLeftIn | bounceLeftOut | bounceRightIn | bounceRightOut - # slideUpIn | slideUpOut | slideDownIn | slideDownOut | slideLeftIn | slideLeftOut | slideRightIn | slideRightOut - # slideUpBigIn | slideUpBigOut | slideDownBigIn | slideDownBigOut | slideLeftBigIn | slideLeftBigOut | slideRightBigIn | slideRightBigOut - # perspectiveUpIn | perspectiveUpOut | perspectiveDownIn | perspectiveDownOut | perspectiveLeftIn | perspectiveLeftOut | perspectiveRightIn | perspectiveRightOut - post_block: fadeIn - post_header: slideDownIn - post_body: slideDownIn - coll_header: slideLeftIn - # Only for Pisces | Gemini. - sidebar: slideUpIn - -# Fancybox. There is support for old version 2 and new version 3. -# Please, choose only any one variant, do not need to install both. -# For install 2.x: https://github.com/theme-next/theme-next-fancybox -# For install 3.x: https://github.com/theme-next/theme-next-fancybox3 -fancybox: false - -# Added switch option for separated repo in 6.0.0. -# Dependencies: https://github.com/theme-next/theme-next-fastclick -fastclick: false - -# Added switch option for separated repo in 6.0.0. -# Dependencies: https://github.com/theme-next/theme-next-jquery-lazyload -lazyload: false - -# Progress bar in the top during page loading. -# Dependencies: https://github.com/theme-next/theme-next-pace -pace: false -# Themes list: -#pace-theme-big-counter -#pace-theme-bounce -#pace-theme-barber-shop -#pace-theme-center-atom -#pace-theme-center-circle -#pace-theme-center-radar -#pace-theme-center-simple -#pace-theme-corner-indicator -#pace-theme-fill-left -#pace-theme-flash -#pace-theme-loading-bar -#pace-theme-mac-osx -#pace-theme-minimal -# For example -# pace_theme: pace-theme-center-simple -pace_theme: pace-theme-minimal - -# Canvas-nest -# Dependencies: https://github.com/theme-next/theme-next-canvas-nest -canvas_nest: false - -# JavaScript 3D library. -# Dependencies: https://github.com/theme-next/theme-next-three -# three_waves -three_waves: false -# canvas_lines -canvas_lines: false -# canvas_sphere -canvas_sphere: false - -# Only fit scheme Pisces -# Dependencies: https://github.com/theme-next/theme-next-canvas-ribbon -# Canvas-ribbon -# size: The width of the ribbon. -# alpha: The transparency of the ribbon. -# zIndex: The display level of the ribbon. -canvas_ribbon: - enable: false - size: 300 - alpha: 0.6 - zIndex: -1 - -# Script Vendors. -# Set a CDN address for the vendor you want to customize. -# For example -# jquery: https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js -# Be aware that you should use the same version as internal ones to avoid potential problems. -# Please use the https protocol of CDN files when you enable https on your site. -vendors: - # Internal path prefix. Please do not edit it. - _internal: lib - - # Internal version: 2.1.3 - jquery: - - # Internal version: 2.1.5 - # See: http://fancyapps.com/fancybox/ - fancybox: - fancybox_css: - - # Internal version: 1.0.6 - # See: https://github.com/ftlabs/fastclick - fastclick: - - # Internal version: 1.9.7 - # See: https://github.com/tuupola/jquery_lazyload - lazyload: - - # Internal version: 1.2.1 - # See: http://VelocityJS.org - velocity: - - # Internal version: 1.2.1 - # See: http://VelocityJS.org - velocity_ui: - - # Internal version: 0.7.9 - # See: https://faisalman.github.io/ua-parser-js/ - ua_parser: - - # Internal version: 4.6.2 - # See: http://fontawesome.io/ - fontawesome: - - # Internal version: 1 - # https://www.algolia.com - algolia_instant_js: - algolia_instant_css: - - # Internal version: 1.0.2 - # See: https://github.com/HubSpot/pace - # Or use direct links below: - # pace: //cdn.bootcss.com/pace/1.0.2/pace.min.js - # pace_css: //cdn.bootcss.com/pace/1.0.2/themes/blue/pace-theme-flash.min.css - pace: - pace_css: - - # Internal version: 1.0.0 - # https://github.com/hustcc/canvas-nest.js - canvas_nest: - - # three - three: - - # three_waves - # https://github.com/jjandxa/three_waves - three_waves: - - # three_waves - # https://github.com/jjandxa/canvas_lines - canvas_lines: - - # three_waves - # https://github.com/jjandxa/canvas_sphere - canvas_sphere: - - # Internal version: 1.0.0 - # https://github.com/zproo/canvas-ribbon - canvas_ribbon: - - # Internal version: 3.3.0 - # https://github.com/ethantw/Han - Han: - - # Internal version: 3.3.0 - # https://github.com/vinta/pangu.js - pangu: - - # needMoreShare2 - # https://github.com/revir/need-more-share2 - needmoreshare2_js: - needmoreshare2_css: - - # bookmark - # Internal version: 1.0.0 - # https://github.com/theme-next/theme-next-bookmark - bookmark: - - # reading_progress - # Internal version: 1.0 - # https://github.com/theme-next/theme-next-reading-progress - # Example: https://cdn.jsdelivr.net/gh/theme-next/theme-next-reading-progress@1.1/reading_progress.min.js - reading_progress: - - # valine comment - # Example: https://cdn.jsdelivr.net/npm/valine@1.1.8/dist/Valine.min.js - valine: - - -# Assets -css: css -js: js -images: images + symbols: true + time: true + total_symbols: true + total_time: true + +search: + path: search.xml + field: post + format: html + limit: 10000 + +douban: + user: incoder + book: + title: '书中自有黄金屋' + quote: '只有学习才能让我快乐~' + movie: + title: '有人的地方,就有江湖' + quote: '时光追忆!' + game: + title: '那时候太年轻' + quote: '游戏可以重来,人生呢?' + timeout: 10000 # optional \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..9c98cd655 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3114 @@ +{ + "name": "hexo-site", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "JSONStream": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", + "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } + }, + "a-sync-waterfall": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.0.tgz", + "integrity": "sha1-OOgxnXk3niRiiEW1O5ZyKyng5Hw=" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "requires": { + "mime-types": "2.1.18", + "negotiator": "0.6.1" + } + }, + "address": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", + "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==" + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "1.9.1" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "babel-eslint": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.5", + "regenerator-runtime": "0.11.1" + }, + "dependencies": { + "core-js": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", + "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=" + } + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.10" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "balloon-css": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/balloon-css/-/balloon-css-0.5.0.tgz", + "integrity": "sha1-ajwGXvq56l9QmpXUMV3wCq4RT6M=" + }, + "basic-auth": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", + "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", + "requires": { + "safe-buffer": "5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + } + } + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "browser-fingerprint": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/browser-fingerprint/-/browser-fingerprint-0.0.1.tgz", + "integrity": "sha1-jfPNyiW/fVs1QtYVRdcwBT/OYEo=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash.assignin": "4.2.0", + "lodash.bind": "4.2.1", + "lodash.defaults": "4.2.0", + "lodash.filter": "4.6.0", + "lodash.flatten": "4.4.0", + "lodash.foreach": "4.5.0", + "lodash.map": "4.6.0", + "lodash.merge": "4.6.1", + "lodash.pick": "4.4.0", + "lodash.reduce": "4.6.0", + "lodash.reject": "4.6.0", + "lodash.some": "4.6.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.2.2", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "command-exists": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.6.tgz", + "integrity": "sha512-Qst/zUUNmS/z3WziPxyqjrcz09pm+2Knbs5mAZL4VAE0sSrNY1/w8+/YxeHcoBTsO6iojA6BW7eFf27Eg2MRuw==" + }, + "compressible": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", + "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", + "requires": { + "mime-db": "1.33.0" + } + }, + "compression": { + "version": "1.7.2", + "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", + "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", + "requires": { + "accepts": "1.3.5", + "bytes": "3.0.0", + "compressible": "2.0.13", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "copy-to": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", + "integrity": "sha1-JoD7uAaKSNCGVrYJgJK9r8kG9KU=" + }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "requires": { + "lru-cache": "4.1.2", + "which": "1.3.0" + } + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=" + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" + }, + "cuid": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/cuid/-/cuid-1.3.8.tgz", + "integrity": "sha1-S4deCWm612T37AcGz0T1+wgx9rc=", + "requires": { + "browser-fingerprint": "0.0.1", + "core-js": "1.2.7", + "node-fingerprint": "0.0.2" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "default-user-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz", + "integrity": "sha1-FsRu/cq6PtxF8k8r1IaLAbfCrcY=", + "requires": { + "os-name": "1.0.3" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "digest-header": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/digest-header/-/digest-header-0.0.1.tgz", + "integrity": "sha1-Ecz23uxXZqw3l0TZAcEsuklRS+Y=", + "requires": { + "utility": "0.1.11" + }, + "dependencies": { + "utility": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/utility/-/utility-0.1.11.tgz", + "integrity": "sha1-/eYM+bTkdRlHoM9dEEzik2ciZxU=", + "requires": { + "address": "1.0.3" + } + } + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "dplayer": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/dplayer/-/dplayer-1.22.2.tgz", + "integrity": "sha512-M+rNMwM1walQoiEbWOwlVEj8PGtWRZyS1/kWtxDDbGPTcXBanv27UYiPTC/ukn2lTQ9+oXkd+OhMTWrestc04Q==", + "requires": { + "balloon-css": "0.5.0", + "promise-polyfill": "7.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "2.5.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.9.tgz", + "integrity": "sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "1.0.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.2.tgz", + "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==", + "optional": true, + "requires": { + "nan": "2.10.0", + "node-pre-gyp": "0.9.1" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "2.2.4" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "optional": true, + "requires": { + "minipass": "2.2.4" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.9.1", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.0", + "nopt": "4.0.1", + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.6", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.6", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "optional": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "optional": true, + "requires": { + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true + } + } + }, + "gitment": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/gitment/-/gitment-0.0.3.tgz", + "integrity": "sha1-28y610gLE0W2VpE71w7/eSp7OLg=", + "requires": { + "mobx": "3.6.2" + } + }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "optional": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "hexo": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/hexo/-/hexo-3.7.1.tgz", + "integrity": "sha512-+RRN4C8oWYzEnW0NtqNrIfIITRTvXpMoE6OrK5aK4nrO+4lzp0JfZkoxnsINVXUPmzHRimLWUzO95x9lt33jEg==", + "requires": { + "abbrev": "1.1.1", + "archy": "1.0.0", + "bluebird": "3.5.1", + "chalk": "2.4.1", + "cheerio": "0.22.0", + "hexo-cli": "1.1.0", + "hexo-front-matter": "0.2.3", + "hexo-fs": "0.2.3", + "hexo-i18n": "0.2.1", + "hexo-log": "0.2.0", + "hexo-util": "0.6.3", + "js-yaml": "3.11.0", + "lodash": "4.17.10", + "minimatch": "3.0.4", + "moment": "2.22.1", + "moment-timezone": "0.5.17", + "nunjucks": "3.1.2", + "pretty-hrtime": "1.0.3", + "resolve": "1.7.1", + "strip-ansi": "4.0.0", + "strip-indent": "2.0.0", + "swig-extras": "0.0.1", + "swig-templates": "2.0.2", + "text-table": "0.2.0", + "tildify": "1.2.0", + "titlecase": "1.1.2", + "warehouse": "2.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "hexo-cli": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-1.1.0.tgz", + "integrity": "sha512-IWQPppwgmj1iBUcP5mpcMg3Tre6a8Qlr8ejXw6naZiJNSepSgh4mS3KiNPKDa2qQIgPDqJYJzNVFLw+RLA9CkA==", + "requires": { + "abbrev": "1.1.1", + "bluebird": "3.5.1", + "chalk": "1.1.3", + "command-exists": "1.2.6", + "hexo-fs": "0.2.3", + "hexo-log": "0.2.0", + "hexo-util": "0.6.3", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "resolve": "1.7.1", + "tildify": "1.2.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "hexo-bunyan": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-bunyan/-/hexo-bunyan-1.0.0.tgz", + "integrity": "sha512-RymT8Ck+K77mLt9BEYNb4uyfC7RIQnU5N3laXowMrS28jj2h89VHJCOnhV00mmta4fHRqNa07kP1Hrn17nvMkQ==", + "requires": { + "moment": "2.22.1", + "mv": "2.1.1", + "safe-json-stringify": "1.1.0" + } + }, + "hexo-deployer-git": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-0.3.1.tgz", + "integrity": "sha512-JSwSmTSknGpaiooGXwmP7sAhoSNW3c+xmBiCc5yyrvRSfQ3zIYWjmcqNXSj8m2DmheqQNgt5D4M7quYjw+L6tA==", + "requires": { + "babel-eslint": "7.2.3", + "bluebird": "3.5.1", + "chalk": "1.1.3", + "hexo-fs": "0.2.3", + "hexo-util": "0.6.3", + "moment": "2.22.1", + "swig": "1.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "source-map": { + "version": "0.1.34", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=", + "requires": { + "amdefine": "1.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "swig": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/swig/-/swig-1.4.2.tgz", + "integrity": "sha1-QIXKBFM2kQS11IPihBs5t64aq6U=", + "requires": { + "optimist": "0.6.1", + "uglify-js": "2.4.24" + } + }, + "uglify-js": { + "version": "2.4.24", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=", + "requires": { + "async": "0.2.10", + "source-map": "0.1.34", + "uglify-to-browserify": "1.0.2", + "yargs": "3.5.4" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, + "yargs": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=", + "requires": { + "camelcase": "1.2.1", + "decamelize": "1.2.0", + "window-size": "0.1.0", + "wordwrap": "0.0.2" + } + } + } + }, + "hexo-douban": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/hexo-douban/-/hexo-douban-0.2.16.tgz", + "integrity": "sha512-xRunvmGgEi4ER+fvwx85xeScyO5ci/gcypa6VwNlydq0alR8dq5tT0QKKnr89QWcJwJYSnlsP/xOjuJPRlj8gw==", + "requires": { + "ejs": "2.5.6", + "hexo-fs": "0.2.3", + "hexo-i18n": "0.2.1", + "hexo-log": "0.2.0", + "path": "0.12.7", + "urllib-sync": "1.1.4", + "xmldom": "0.1.27", + "xpath": "0.0.24" + }, + "dependencies": { + "ejs": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.6.tgz", + "integrity": "sha1-R5Y2v6P+Ox3r1SCH8KyyBLTxnIg=" + } + } + }, + "hexo-front-matter": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-0.2.3.tgz", + "integrity": "sha1-x8qO9CDqNr2F6ECKLoyb9J76YF4=", + "requires": { + "js-yaml": "3.11.0" + } + }, + "hexo-fs": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-0.2.3.tgz", + "integrity": "sha512-rLB1rMVUW3csAljvJgHfyjemL0BrmcUZfBf9hJe6S0pA53igFa3ON0PFwomvoLs1Wdmjs9Awnw9Tru4PjWFSlQ==", + "requires": { + "bluebird": "3.5.1", + "chokidar": "1.7.0", + "escape-string-regexp": "1.0.5", + "graceful-fs": "4.1.11" + } + }, + "hexo-generator-archive": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/hexo-generator-archive/-/hexo-generator-archive-0.1.5.tgz", + "integrity": "sha512-jPbMtibqkJnAX3hCwhYhK3r6cqy9OKQsVEScjk7LDok+iPmFmkKCNdU/OccxGe1CWAZpT+ta4+LknwNeHG2G4w==", + "requires": { + "hexo-pagination": "0.0.2", + "object-assign": "2.1.1" + }, + "dependencies": { + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + } + } + }, + "hexo-generator-category": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/hexo-generator-category/-/hexo-generator-category-0.1.3.tgz", + "integrity": "sha1-uealhiUwqDvdfaTIGcG58+TMtLI=", + "requires": { + "hexo-pagination": "0.0.2", + "object-assign": "2.1.1" + }, + "dependencies": { + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + } + } + }, + "hexo-generator-feed": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/hexo-generator-feed/-/hexo-generator-feed-1.2.2.tgz", + "integrity": "sha512-4jcvVhFgpEFRJ7A+KhBSfWoQaewRBjcVWEO4OmBgnvaZOm6XwK+b5ZXx/8BpujCLHbjXWzglXhiT7qFFS/nvzw==", + "requires": { + "nunjucks": "3.1.2", + "object-assign": "4.1.1" + } + }, + "hexo-generator-index": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/hexo-generator-index/-/hexo-generator-index-0.2.1.tgz", + "integrity": "sha1-kEIin8rHmq9wBXXaGTMr8/fuXF0=", + "requires": { + "hexo-pagination": "0.0.2", + "object-assign": "4.1.1" + } + }, + "hexo-generator-searchdb": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hexo-generator-searchdb/-/hexo-generator-searchdb-1.0.8.tgz", + "integrity": "sha1-BCRSVuFBOmYxOTLb8cCn5WhVkwE=", + "requires": { + "ejs": "1.0.0", + "striptags": "3.1.1", + "utils-merge": "1.0.1" + }, + "dependencies": { + "ejs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-1.0.0.tgz", + "integrity": "sha1-ycYKSKRu5FL7MqccMXuV5aofyz0=" + }, + "striptags": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.1.1.tgz", + "integrity": "sha1-yMPn/db7S7OjKjt1LltePjgJPr0=" + } + } + }, + "hexo-generator-sitemap": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hexo-generator-sitemap/-/hexo-generator-sitemap-1.2.0.tgz", + "integrity": "sha1-MBj419Hi5Cs/caZacxb/z1g7w/M=", + "requires": { + "minimatch": "3.0.4", + "nunjucks": "2.5.2", + "object-assign": "4.1.1" + }, + "dependencies": { + "nunjucks": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-2.5.2.tgz", + "integrity": "sha1-6n00bnhbikh0Zmw8yp4YxXf7oiw=", + "requires": { + "asap": "2.0.6", + "chokidar": "1.7.0", + "yargs": "3.32.0" + } + } + } + }, + "hexo-generator-tag": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/hexo-generator-tag/-/hexo-generator-tag-0.2.0.tgz", + "integrity": "sha1-xXFYRrtB5X2cIMHWbX2yGhq/emI=", + "requires": { + "hexo-pagination": "0.0.2", + "object-assign": "4.1.1" + } + }, + "hexo-i18n": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-0.2.1.tgz", + "integrity": "sha1-hPFBQyvwnYtVjth4xygWS20c1t4=", + "requires": { + "sprintf-js": "1.0.3" + } + }, + "hexo-log": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-0.2.0.tgz", + "integrity": "sha512-fzoc+GQexxPPILTjoOQILnA3ZG2MFgqMBVel4xvJ11pXptw9+f97ynTgDAExXafyp9Nz2ChXRuqlCYgPtZSlxQ==", + "requires": { + "chalk": "1.1.3", + "hexo-bunyan": "1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "hexo-pagination": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/hexo-pagination/-/hexo-pagination-0.0.2.tgz", + "integrity": "sha1-jPRwx9sN5bGKOSanbesZQBXffys=", + "requires": { + "utils-merge": "1.0.1" + } + }, + "hexo-renderer-ejs": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/hexo-renderer-ejs/-/hexo-renderer-ejs-0.3.1.tgz", + "integrity": "sha512-XN8pYJU+Wr3dT8ipqEPRlOBySJpd1C5NUBBzgZpVSVBC/6L36O0YZI/Qd5NxQqwfGfSuKQ8N5iMyjmRXSR1MdA==", + "requires": { + "ejs": "2.5.9", + "object-assign": "4.1.1" + } + }, + "hexo-renderer-marked": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/hexo-renderer-marked/-/hexo-renderer-marked-0.3.2.tgz", + "integrity": "sha512-joSLeHB0YRkuViIPQlRz4A+zfJKPNHT+rABFgPHiT1zL9eeTUPxoLL4h7kcgOwRLAontVScaxP2Sie15mNitFg==", + "requires": { + "hexo-util": "0.6.3", + "marked": "0.3.19", + "object-assign": "4.1.1", + "strip-indent": "2.0.0" + } + }, + "hexo-renderer-stylus": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/hexo-renderer-stylus/-/hexo-renderer-stylus-0.3.3.tgz", + "integrity": "sha1-xU6ifh/Y48ipp6hM+6itNUEiyn8=", + "requires": { + "nib": "1.1.2", + "stylus": "0.54.5" + } + }, + "hexo-server": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/hexo-server/-/hexo-server-0.2.2.tgz", + "integrity": "sha512-/KkOYMIGylNoMtnlgas84Kw18A60WU3BVfo8ZnTHy8omCsAz2Z+aK6ddR4PpSmTdLeKDsiZj4ZSg86ZQ+FZzrA==", + "requires": { + "bluebird": "3.5.1", + "chalk": "1.1.3", + "compression": "1.7.2", + "connect": "3.6.6", + "mime": "1.6.0", + "morgan": "1.9.0", + "object-assign": "4.1.1", + "opn": "4.0.2", + "serve-static": "1.13.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "hexo-symbols-count-time": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/hexo-symbols-count-time/-/hexo-symbols-count-time-0.4.2.tgz", + "integrity": "sha1-kbyvaVfhtPfHQVVMKweuXS+o8/s=" + }, + "hexo-tag-dplayer": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/hexo-tag-dplayer/-/hexo-tag-dplayer-0.3.3.tgz", + "integrity": "sha512-Y2sweNkcYNr9cLt2J35V0R40P7rriPiW/99shfEdWy5xYxXNzCBKKuDC/YAr2XzzZk29WM5YPID9f2w3veaqdA==", + "requires": { + "dplayer": "1.22.2", + "hexo-fs": "0.2.3", + "hexo-log": "0.2.0", + "hexo-util": "0.6.3" + } + }, + "hexo-util": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-0.6.3.tgz", + "integrity": "sha512-zPxaqCWZz3/25SAB4FlrRtWktJ+Pr+vBiv/nyHpXKgXPt1m70liViKlRwWLqDmRjJ72x6/k4qCEeXHajvcGHUw==", + "requires": { + "bluebird": "3.5.1", + "camel-case": "3.0.0", + "cross-spawn": "4.0.2", + "highlight.js": "9.12.0", + "html-entities": "1.2.1", + "striptags": "2.2.1" + } + }, + "highlight.js": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", + "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=" + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.2", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": "1.5.0" + }, + "dependencies": { + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + } + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "requires": { + "ms": "2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": "2.1.2" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.0" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "1.0.0" + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" + }, + "lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" + }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" + }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "3.0.2" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + }, + "lru-cache": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "markdown": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", + "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=", + "requires": { + "nopt": "2.1.2" + } + }, + "marked": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", + "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "1.33.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "mobx": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-3.6.2.tgz", + "integrity": "sha512-Dq3boJFLpZEvuh5a/MbHLUIyN9XobKWIb0dBfkNOJffNkE3vtuY0C9kSDVpfH8BB0BPkVw8g22qCv7d05LEhKg==" + }, + "moment": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", + "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==" + }, + "moment-timezone": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.17.tgz", + "integrity": "sha512-Y/JpVEWIOA9Gho4vO15MTnW1FCmHi3ypprrkUaxsZ1TKg3uqC8q/qMBjTddkHoiwwZN3qvZSr4zJP7x9V3LpXA==", + "requires": { + "moment": "2.22.1" + } + }, + "morgan": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", + "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", + "requires": { + "basic-auth": "2.0.0", + "debug": "2.6.9", + "depd": "1.1.2", + "on-finished": "2.3.0", + "on-headers": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "ncp": "2.0.0", + "rimraf": "2.4.5" + } + }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "optional": true + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "optional": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "nib": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", + "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", + "requires": { + "stylus": "0.54.5" + } + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "1.1.4" + } + }, + "node-fingerprint": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/node-fingerprint/-/node-fingerprint-0.0.2.tgz", + "integrity": "sha1-Mcur63GmeufdWn3AQuUcPHWGhQE=" + }, + "nopt": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", + "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", + "requires": { + "abbrev": "1.1.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "requires": { + "boolbase": "1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nunjucks": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.1.2.tgz", + "integrity": "sha512-pJXncV07mmiuIDL9OqdNkcpvifuDMzMq9qBQT9SHasAS7AEwzNp/r/jHNl+9O0+zsldcdWG9ZtXo/nwu2cTqXA==", + "requires": { + "a-sync-waterfall": "1.0.0", + "asap": "2.0.6", + "chokidar": "1.7.0", + "postinstall-build": "5.0.1", + "yargs": "3.32.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "requires": { + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.3" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "1.0.0" + } + }, + "os-name": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", + "integrity": "sha1-GzefZINa98Wn9JizV8uVIVwVnt8=", + "requires": { + "osx-release": "1.1.0", + "win-release": "1.1.1" + } + }, + "osx-release": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", + "integrity": "sha1-8heRGigTaUmvG/kwiyQeJzfTzWw=", + "requires": { + "minimist": "1.2.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "requires": { + "process": "0.11.10", + "util": "0.10.3" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" + } + }, + "postinstall-build": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postinstall-build/-/postinstall-build-5.0.1.tgz", + "integrity": "sha1-uRepB5smF42aJK9aXNjLSpkdEbk=" + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "promise-polyfill": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-7.1.0.tgz", + "integrity": "sha512-P6NJ2wU/8fac44ENORsuqT8TiolKGB2u0fEClPtXezn7w5cmLIjM/7mhPlTebke2EPr6tmqZbXvnX0TxwykGrg==" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.6", + "set-immediate-shim": "1.0.1" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "requires": { + "path-parse": "1.0.5" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "optional": true, + "requires": { + "glob": "6.0.4" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-json-stringify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.1.0.tgz", + "integrity": "sha512-EzBtUaFH9bHYPc69wqjp0efJI/DPNHdFbGE3uIMn4sVbO0zx8vZ8cG4WKxQfOpUOKsQyGBiT2mTqnCw+6nLswA==", + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=" + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.3", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.2" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + } + } + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" + }, + "striptags": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/striptags/-/striptags-2.2.1.tgz", + "integrity": "sha1-TEULcI1BuL85zyTEn/I0/Gqr/TI=" + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "requires": { + "css-parse": "1.7.0", + "debug": "3.1.0", + "glob": "7.0.6", + "mkdirp": "0.5.1", + "sax": "0.5.8", + "source-map": "0.1.43" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "requires": { + "has-flag": "3.0.0" + } + }, + "swig-extras": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/swig-extras/-/swig-extras-0.0.1.tgz", + "integrity": "sha1-tQP+3jcqucJMasaMr2VrzvGHIyg=", + "requires": { + "markdown": "0.5.0" + } + }, + "swig-templates": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/swig-templates/-/swig-templates-2.0.2.tgz", + "integrity": "sha1-0lAqcwMBk1b06nbqkGXU9Yr2q3U=", + "requires": { + "optimist": "0.6.1", + "uglify-js": "2.6.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "tildify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", + "requires": { + "os-homedir": "1.0.2" + } + }, + "titlecase": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/titlecase/-/titlecase-1.1.2.tgz", + "integrity": "sha1-eBE9EQgIa4MmMxoyR96o9aSeqFM=" + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "uglify-js": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.0.tgz", + "integrity": "sha1-JeqhzDVQ45QQzu+v0c+7a20V8AE=", + "requires": { + "async": "0.2.10", + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, + "urllib": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/urllib/-/urllib-2.11.1.tgz", + "integrity": "sha1-5F1Xnxu+Qsn64hzf9yVo88jIyUU=", + "requires": { + "any-promise": "1.3.0", + "debug": "2.6.9", + "default-user-agent": "1.0.0", + "digest-header": "0.0.1", + "humanize-ms": "1.2.1", + "iconv-lite": "0.4.23", + "media-typer": "0.3.0", + "statuses": "1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "urllib-sync": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/urllib-sync/-/urllib-sync-1.1.4.tgz", + "integrity": "sha1-yRMI9JkaZe5iDWc85g/dJLvRjMo=", + "requires": { + "urllib": "2.11.1", + "utility": "1.7.1" + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utility": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/utility/-/utility-1.7.1.tgz", + "integrity": "sha1-+3TN3IFqQRJ2ym6MqZMkfyPusKc=", + "requires": { + "copy-to": "2.0.1", + "escape-html": "1.0.3" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "warehouse": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/warehouse/-/warehouse-2.2.0.tgz", + "integrity": "sha1-XQnWSUKZK+Zn2PfIagnCuK6gQGI=", + "requires": { + "JSONStream": "1.3.2", + "bluebird": "3.5.1", + "cuid": "1.3.8", + "graceful-fs": "4.1.11", + "is-plain-object": "2.0.4", + "lodash": "4.17.10" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "requires": { + "isexe": "2.0.0" + } + }, + "win-release": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", + "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", + "requires": { + "semver": "5.5.0" + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xmldom": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" + }, + "xpath": { + "version": "0.0.24", + "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.24.tgz", + "integrity": "sha1-Gt4WLhzFI8jTn8fQavwW6iFvKfs=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "requires": { + "camelcase": "2.1.1", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "os-locale": "1.4.0", + "string-width": "1.0.2", + "window-size": "0.1.4", + "y18n": "3.2.1" + } + } + } +} diff --git a/package.json b/package.json index dcd68887a..0aa35ad9a 100644 --- a/package.json +++ b/package.json @@ -1,36 +1,27 @@ { - "name": "hexo-theme-next", - "version": "6.3.0", - "description": "Elegant and powerful theme for Hexo", - "main": "index.js", - "directories": { - "test": "test" + "name": "hexo-site", + "version": "0.0.0", + "private": true, + "hexo": { + "version": "3.7.1" }, - "scripts": { - "test": "gulp" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/theme-next/hexo-theme-next.git" - }, - "keywords": [ - "hexo", - "theme", - "next" - ], - "author": "NexT (https://theme-next.org)", - "license": "AGPL", - "bugs": { - "url": "https://github.com/theme-next/hexo-theme-next/issues" - }, - "homepage": "https://theme-next.org", - "devDependencies": { - "coffee-script": "^1.10.0", - "gulp": "^3.9.0", - "gulp-jshint": "^1.12.0", - "gulp-shell": "^0.6.1", - "js-yaml": "^3.8.1", - "jshint-stylish": "^2.1.0", - "stylint": "^1.5.9" + "dependencies": { + "gitment": "0.0.3", + "hexo": "^3.7.1", + "hexo-deployer-git": "^0.3.1", + "hexo-douban": "^0.2.16", + "hexo-generator-archive": "^0.1.4", + "hexo-generator-category": "^0.1.3", + "hexo-generator-feed": "^1.2.2", + "hexo-generator-index": "^0.2.0", + "hexo-generator-searchdb": "^1.0.8", + "hexo-generator-sitemap": "^1.2.0", + "hexo-generator-tag": "^0.2.0", + "hexo-renderer-ejs": "^0.3.0", + "hexo-renderer-marked": "^0.3.0", + "hexo-renderer-stylus": "^0.3.1", + "hexo-server": "^0.2.0", + "hexo-symbols-count-time": "^0.4.2", + "hexo-tag-dplayer": "^0.3.3" } } diff --git a/scaffolds/draft.md b/scaffolds/draft.md new file mode 100644 index 000000000..498e95baf --- /dev/null +++ b/scaffolds/draft.md @@ -0,0 +1,4 @@ +--- +title: {{ title }} +tags: +--- diff --git a/scaffolds/page.md b/scaffolds/page.md new file mode 100644 index 000000000..f01ba3cd8 --- /dev/null +++ b/scaffolds/page.md @@ -0,0 +1,4 @@ +--- +title: {{ title }} +date: {{ date }} +--- diff --git a/scaffolds/post.md b/scaffolds/post.md new file mode 100644 index 000000000..1f9b9a465 --- /dev/null +++ b/scaffolds/post.md @@ -0,0 +1,5 @@ +--- +title: {{ title }} +date: {{ date }} +tags: +--- diff --git a/source/CNAME b/source/CNAME new file mode 100644 index 000000000..c5eb9eade --- /dev/null +++ b/source/CNAME @@ -0,0 +1 @@ +incoder.org \ No newline at end of file diff --git a/source/README.md b/source/README.md new file mode 100644 index 000000000..545862920 --- /dev/null +++ b/source/README.md @@ -0,0 +1,10 @@ +

      + BladeCode +

      + +![BladeCode](https://travis-ci.com/BladeCode/BladeCode.github.io.svg?branch=dev) + +### Thanks +1. [Node](https://nodejs.org) +2. [Hexo](https://hexo.io) +3. [Next](https://github.com/theme-next/hexo-theme-next) \ No newline at end of file diff --git a/source/_data/next.yml b/source/_data/next.yml new file mode 100644 index 000000000..cb9173c00 --- /dev/null +++ b/source/_data/next.yml @@ -0,0 +1,978 @@ +# --------------------------------------------------------------- +# Theme Core Configuration Settings +# --------------------------------------------------------------- + +# If false, merge configs from `_data/next.yml` into default configuration (rewrite). +# If true, will fully override default configuration by options from `_data/next.yml` (override). Only for NexT settings. +# And if true, all config from default NexT `_config.yml` must be copied into `next.yml`. Use if you know what you are doing. +# Useful if you want to comment some options from NexT `_config.yml` by `next.yml` without editing default config. +override: true + +# Allow to cache content generation. Introduced in NexT v6.0.0. +cache: + enable: true + +# Redefine custom file paths. Introduced in NexT v6.0.2. +# If commented, will be used default custom file paths. + +# For example, you want to put your custom styles file +# outside theme directory in root `source/_data`, set +# `styles: source/_data/styles.styl` +#custom_file_path: + # Default paths: layout/_custom/* + #head: source/_data/head.swig + #header: source/_data/header.swig + #sidebar: source/_data/sidebar.swig + + # Default path: source/css/_variables/custom.styl + #variables: source/_data/variables.styl + # Default path: source/css/_mixins/custom.styl + #mixins: source/_data/mixins.styl + # Default path: source/css/_custom/custom.styl + #styles: source/_data/styles.styl + + +# --------------------------------------------------------------- +# Site Information Settings +# --------------------------------------------------------------- + +# To get or check favicons visit: https://realfavicongenerator.net +# Put your favicons into `hexo-site/source/` (recommend) or `hexo-site/themes/next/source/images/` directory. + +# Default NexT favicons placed in `hexo-site/themes/next/source/images/` directory. +# And if you want to place your icons in `hexo-site/source/` root directory, you must remove `/images` prefix from pathes. + +# For example, you put your favicons into `hexo-site/source/images` directory. +# Then need to rename & redefine they on any other names, otherwise icons from Next will rewrite your custom icons in Hexo. +favicon: + small: https://res.cloudinary.com/incoder/image/upload/v1525515979/favicon-16x16.png + medium: https://res.cloudinary.com/incoder/image/upload/v1525515979/favicon-32x32.png + apple_touch_icon: https://res.cloudinary.com/incoder/image/upload/v1525515979/apple-touch-icon.png + safari_pinned_tab: /images/logo.svg + #android_manifest: /images/manifest.json + #ms_browserconfig: /images/browserconfig.xml + +# Set rss to false to disable feed link. +# Leave rss as empty to use site's feed link, and install hexo-generator-feed: `npm install hexo-generator-feed --save`. +# Set rss to specific value if you have burned your feed already. +rss: + +footer: + # Specify the date when the site was setup. + # If not defined, current year will be used. + #since: 2015 + + # Icon between year and copyright info. + icon: + # Icon name in fontawesome, see: https://fontawesome.com/v4.7.0/icons + # `heart` is recommended with animation in red (#ff0000). + name: user + # If you want to animate the icon, set it to true. + animated: false + # Change the color of icon, using Hex Code. + color: "#808080" + + # If not defined, will be used `author` from Hexo main config. + copyright: + # ------------------------------------------------------------- + powered: + # Hexo link (Powered by Hexo). + enable: true + # Version info of Hexo after Hexo link (vX.X.X). + version: true + + theme: + # Theme & scheme info link (Theme - NexT.scheme). + enable: true + # Version info of NexT after scheme info (vX.X.X). + version: true + # ------------------------------------------------------------- + # Any custom text can be defined here. + #custom_text: Hosted by Coding Pages + +# --------------------------------------------------------------- +# SEO Settings +# --------------------------------------------------------------- + +# Canonical, set a canonical link tag in your hexo, you could use it for your SEO of blog. +# See: https://support.google.com/webmasters/answer/139066 +# Tips: Before you open this tag, remember set up your URL in hexo _config.yml ( ex. url: http://yourdomain.com ) +canonical: true + +# Change headers hierarchy on site-subtitle (will be main site description) and on all post/pages titles for better SEO-optimization. +seo: false + +# If true, will add site-subtitle to index page, added in main hexo config. +# subtitle: Subtitle +index_with_subtitle: false + + +# --------------------------------------------------------------- +# Menu Settings +# --------------------------------------------------------------- + +# When running the site in a subdirectory (e.g. domain.tld/blog), remove the leading slash from link value (/archives -> archives). +# Usage: `Key: /link/ || icon` +# Key is the name of menu item. If translate for this menu will find in languages - this translate will be loaded; if not - Key name will be used. Key is case-senstive. +# Value before `||` delimeter is the target link. +# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, question icon will be loaded. +menu: + home: / || home + tags: /tags/ || tags + categories: /categories/ || th + archives: /archives/ || archive + books: /books/ || book + movies: /movies || film + about: /about/ || user + #schedule: /schedule/ || calendar + #sitemap: /sitemap.xml || sitemap + #commonweal: /404/ || heartbeat + +# Enable/Disable menu icons / item badges. +menu_settings: + icons: true + badges: true + +# --------------------------------------------------------------- +# Scheme Settings +# --------------------------------------------------------------- + +# Schemes +scheme: Muse +#scheme: Mist +#scheme: Pisces +#scheme: Gemini + + +# --------------------------------------------------------------- +# Sidebar Settings +# --------------------------------------------------------------- + +# Posts / Categories / Tags in sidebar. +site_state: true + +# Social Links. +# Usage: `Key: permalink || icon` +# Key is the link label showing to end users. +# Value before `||` delimeter is the target permalink. +# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, globe icon will be loaded. +social: + GitHub: https://github.com/BladeCode || github + E-Mail: mailto:incoder.xu@gmail.com || envelope + # Google: https://plus.google.com/101381611051487754759 || google + Twitter: https://twitter.com/_incoder || twitter + Weibo: http://weibo.com/onblade || weibo + Medium: https://medium.com/@incoder || medium + #FB Page: https://www.facebook.com/yourname || facebook + #VK Group: https://vk.com/yourname || vk + # StackOverflow: https://stackoverflow.com/users/5776993/blade || stack-overflow + #YouTube: https://youtube.com/yourname || youtube + #Instagram: https://instagram.com/yourname || instagram + #Skype: skype:yourname?call|chat || skype + +social_icons: + enable: true + icons_only: false + transition: false + # Dependencies: exturl: true in Tags Settings section below. + # To encrypt links above use https://www.base64encode.org + # Example encoded link: `GitHub: aHR0cHM6Ly9naXRodWIuY29tL3RoZW1lLW5leHQ= || github` + exturl: false + +# Follow me on GitHub banner in right-top corner. +# Usage: `permalink || title` +# Value before `||` delimeter is the target permalink. +# Value after `||` delimeter is the title and aria-label name. +#github_banner: https://github.com/yourname || Follow me on GitHub + +# Blog rolls +links_icon: link +links_title: Links +links_layout: block +#links_layout: inline +links: + TwoDragonLake: http://www.twodragonlake.com + RootCluster: https://rootcluster.github.io + 南贺神社: https://1156721874.github.io + +# Sidebar Avatar +avatar: + # in theme directory(source/images): /images/avatar.gif + # in site directory(source/uploads): /uploads/avatar.gif + # You can also use other linking images. + # url: #/images/avatar.gif + url: https://res.cloudinary.com/incoder/image/upload/v1525515979/avatar.png + + # If true, the avatar would be dispalyed in circle. + rounded: false + # The value of opacity should be choose from 0 to 1 to set the opacity of the avatar. + opacity: 1 + # If true, the avatar would be rotated with the cursor. + rotated: false + +# Table Of Contents in the Sidebar +toc: + enable: true + + # Automatically add list number to toc. + number: true + + # If true, all words will placed on next lines if header width longer then sidebar width. + wrap: false + +# Creative Commons 4.0 International License. +# http://creativecommons.org/ +# Available: by | by-nc | by-nc-nd | by-nc-sa | by-nd | by-sa | zero +#creative_commons: by-nc-sa +#creative_commons: + +sidebar: + # Sidebar Position, available value: left | right (only for Pisces | Gemini). + position: left + #position: right + + # Sidebar Display, available value (only for Muse | Mist): + # - post expand on posts automatically. Default. + # - always expand for all pages automatically + # - hide expand only when click on the sidebar toggle icon. + # - remove Totally remove sidebar including sidebar toggle. + display: post + #display: always + #display: hide + #display: remove + + # Sidebar offset from top menubar in pixels (only for Pisces | Gemini). + offset: 12 + + # Back to top in sidebar (only for Pisces | Gemini). + b2t: false + + # Scroll percent label in b2t button. + scrollpercent: false + + # Enable sidebar on narrow view (only for Muse | Mist). + onmobile: false + + +# --------------------------------------------------------------- +# Post Settings +# --------------------------------------------------------------- + +# Automatically scroll page to section which is under mark. +scroll_to_more: false + +# Automatically saving scroll position on each post/page in cookies. +save_scroll: false + +# Automatically excerpt description in homepage as preamble text. +excerpt_description: true + +# Automatically Excerpt. Not recommend. +# Please use in the post to control excerpt accurately. +auto_excerpt: + enable: true + length: 150 + +# Post meta display settings +post_meta: + item_text: true + created_at: true + updated_at: + enabled: false + # If true, show updated date label only if `updated date` different from 'created date' (post edited in another day than was created). + # And if post will edited in same day as created, edited time will show in popup title under created time label. + # If false show anyway, but if post edited in same day, show only edited time. + another_day: true + categories: true + +# Post wordcount display settings +# Dependencies: https://github.com/theme-next/hexo-symbols-count-time +symbols_count_time: + separated_meta: true + item_text_post: true + item_text_total: false + awl: 2 + wpm: 275 + +codeblock: + # Manual define the border radius in codeblock + # Leave it empty for the default 1 + border_radius: + # Add copy button on codeblock + copy_button: false + +# Wechat Subscriber +#wechat_subscriber: + #enabled: true + #qcode: /path/to/your/wechatqcode ex. /uploads/wechat-qcode.jpg + #description: ex. subscribe to my blog by scanning my public wechat account + +# Reward +#reward_comment: Donate comment here +wechatpay: https://res.cloudinary.com/incoder/image/upload/v1525515979/wechatpay.png +alipay: https://res.cloudinary.com/incoder/image/upload/v1525515979/alipay.png +#bitcoin: /images/bitcoin.png + +# Related popular posts +# Dependencies: https://github.com/tea3/hexo-related-popular-posts +related_posts: + enable: false + title: # custom header, leave empty to use the default one + display_in_home: false + params: + maxCount: 5 + #PPMixingRate: 0.0 + #isDate: false + #isImage: false + #isExcerpt: false + +# Declare license on posts +post_copyright: + enable: true + license: CC BY-NC-SA 4.0 + +# Post edit +# Dependencies: https://github.com/hexojs/hexo-deployer-git +post_edit: + enable: false + url: https://github.com/theme-next/theme-next.org/_posts/tree/master/ # Link for view source. +# url: https://github.com/theme-next/theme-next.org/_posts/edit/master/ # Link for fork & edit. + + +# --------------------------------------------------------------- +# Misc Theme Settings +# --------------------------------------------------------------- + +# Reduce padding / margin indents on devices with narrow width. +mobile_layout_economy: false + +# Android Chrome header panel color ($brand-bg / $headband-bg => $black-deep). +android_chrome_color: "#222" + +# Custom Logo. +# !!Only available for Default Scheme currently. +# Options: +# enabled: [true/false] - Replace with specific image +# image: url-of-image - Images's url +custom_logo: + enabled: true + image: https://res.cloudinary.com/incoder/image/upload/v1525515979/favicon-32x32.png + +# Code Highlight theme +# Available values: normal | night | night eighties | night blue | night bright +# https://github.com/chriskempson/tomorrow-theme +highlight_theme: night + +# Enable "cheers" for archive page. +cheers_enabled: true + +# Manual define the max content width +# !!Only available for Gemini Scheme currently +# Leave it empty for the default 75% (suggest not less than 1000px) +#max_content_width: 1000px + +# Manual define the sidebar width +# !!Only available for Gemini Scheme currently +# Leave it empty for the default 240 +sidebar_width: + +# --------------------------------------------------------------- +# Font Settings +# - Find fonts on Google Fonts (https://www.google.com/fonts) +# - All fonts set here will have the following styles: +# light, light italic, normal, normal italic, bold, bold italic +# - Be aware that setting too much fonts will cause site running slowly +# - Introduce in 5.0.1 +# --------------------------------------------------------------- +# CAUTION! Safari Version 10.1.2 bug: https://github.com/iissnan/hexo-theme-next/issues/1844 +# To avoid space between header and sidebar in Pisces / Gemini themes recommended to use Web Safe fonts for `global` (and `logo`): +# Arial | Tahoma | Helvetica | Times New Roman | Courier New | Verdana | Georgia | Palatino | Garamond | Comic Sans MS | Trebuchet MS +# --------------------------------------------------------------- +font: + enable: false + + # Uri of fonts host. E.g. //fonts.googleapis.com (Default). + host: + + # Font options: + # `external: true` will load this font family from `host` above. + # `family: Times New Roman`. Without any quotes. + # `size: xx`. Use `px` as unit. + + # Global font settings used for all elements in . + global: + external: true + family: Lato + size: + + # Font settings for Headlines (H1, H2, H3, H4, H5, H6). + # Fallback to `global` font settings. + headings: + external: true + family: + size: + + # Font settings for posts. + # Fallback to `global` font settings. + posts: + external: true + family: + + # Font settings for Logo. + # Fallback to `global` font settings. + logo: + external: true + family: + size: + + # Font settings for and code blocks. + codes: + external: true + family: + size: + + +# --------------------------------------------------------------- +# Third Party Services Settings +# --------------------------------------------------------------- + +# Math Equations Render Support +math: + enable: false + + # Default(true) will load mathjax/katex script on demand + # That is it only render those page who has 'mathjax: true' in Front Matter. + # If you set it to false, it will load mathjax/katex srcipt EVERY PAGE. + per_page: true + + engine: mathjax + #engine: katex + + # hexo-rendering-pandoc (or hexo-renderer-kramed) needed to full MathJax support. + mathjax: + # Use 2.7.1 as default, jsdelivr as default CDN, works everywhere even in China + cdn: //cdn.jsdelivr.net/npm/mathjax@2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML + # For newMathJax CDN (cdnjs.cloudflare.com) with fallback to oldMathJax (cdn.mathjax.org). + #cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML + # For direct link to MathJax.js with CloudFlare CDN (cdnjs.cloudflare.com). + #cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML + # For automatic detect latest version link to MathJax.js and get from Bootcss. + #cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML + + # hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin) + # needed to full Katex support. + katex: + # Use 0.7.1 as default, jsdelivr as default CDN, works everywhere even in China + cdn: //cdn.jsdelivr.net/npm/katex@0.7.1/dist/katex.min.css + # CDNJS, provided by cloudflare, maybe the best CDN, but not works in China + #cdn: //cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css + # Bootcss, works great in China, but not so well in other region + #cdn: //cdn.bootcss.com/KaTeX/0.7.1/katex.min.css + +# Han Support +# Dependencies: https://github.com/theme-next/theme-next-han +han: false + +# Pangu Support +# Dependencies: https://github.com/theme-next/theme-next-pangu +# For more information: https://github.com/vinta/pangu.js +pangu: false + +# Swiftype Search API Key +#swiftype_key: + +# Baidu Analytics ID +#baidu_analytics: + +# Disqus +disqus: + enable: false + shortname: + count: true + lazyload: false + +# Hypercomments +#hypercomments_id: + +# changyan +changyan: + enable: false + appid: + appkey: + + +# Valine. +# You can get your appid and appkey from https://leancloud.cn +# more info please open https://valine.js.org +valine: + enable: false + appid: # your leancloud application appid + appkey: # your leancloud application appkey + notify: false # mail notifier , https://github.com/xCss/Valine/wiki + verify: false # Verification code + placeholder: Just go go # comment box placeholder + avatar: mm # gravatar style + guest_info: nick,mail,link # custom comment header + pageSize: 10 # pagination size + + +# Support for youyan comments system. +# You can get your uid from http://www.uyan.cc +#youyan_uid: your uid + +# Support for LiveRe comments system. +# You can get your uid from https://livere.com/insight/myCode (General web site) +#livere_uid: your uid + +# Gitment +# Introduction: https://imsun.net/posts/gitment-introduction/ +gitment: + enable: true + mint: true # RECOMMEND, A mint on Gitment, to support count, language and proxy_gateway + count: true # Show comments count in post meta area + lazy: false # Comments lazy loading with a button + cleanly: false # Hide 'Powered by ...' on footer, and more + language: # Force language, or auto switch by theme + github_user: BladeCode # MUST HAVE, Your Github Username + github_repo: BladeCode.github.io # MUST HAVE, The name of the repo you use to store Gitment comments + client_id: 2e3028f6ae11f92b2c38 # MUST HAVE, Github client id for the Gitment + client_secret: 97aa93b198112873842f608c0feb14c3740ac491 # EITHER this or proxy_gateway, Github access secret token for the Gitment + proxy_gateway: # Address of api proxy, See: https://github.com/aimingoo/intersect + redirect_protocol: # Protocol of redirect_uri with force_redirect_protocol when mint enabled + +# Baidu Share +# Available value: +# button | slide +# Warning: Baidu Share does not support https. +#baidushare: +## type: button + +# Share +# This plugin is more useful in China, make sure you known how to use it. +# And you can find the use guide at official webiste: http://www.jiathis.com/. +# Warning: JiaThis does not support https. +#jiathis: + ##uid: Get this uid from http://www.jiathis.com/ + +#add_this_id: + +# NeedMoreShare2 +# Dependencies: https://github.com/theme-next/theme-next-needmoreshare2 +# See: https://github.com/revir/need-more-share2 +# Also see: https://github.com/DzmVasileusky/needShareButton +# iconStyle: default | box +# boxForm: horizontal | vertical +# position: top / middle / bottom + Left / Center / Right +# networks: Weibo,Wechat,Douban,QQZone,Twitter,Linkedin,Mailto,Reddit, +# Delicious,StumbleUpon,Pinterest,Facebook,GooglePlus,Slashdot, +# Technorati,Posterous,Tumblr,GoogleBookmarks,Newsvine, +# Evernote,Friendfeed,Vkontakte,Odnoklassniki,Mailru +needmoreshare2: + enable: false + postbottom: + enable: false + options: + iconStyle: box + boxForm: horizontal + position: bottomCenter + networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook + float: + enable: false + options: + iconStyle: box + boxForm: horizontal + position: middleRight + networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook + +# Google Webmaster tools verification setting +# See: https://www.google.com/webmasters/ +#google_site_verification: + +# Google Analytics +# google_analytics: UA-100235665-1 + +# Bing Webmaster tools verification setting +# See: https://www.bing.com/webmaster/ +#bing_site_verification: + +# Yandex Webmaster tools verification setting +# See: https://webmaster.yandex.ru/ +#yandex_site_verification: + +# CNZZ count +#cnzz_siteid: + +# Application Insights +# See https://azure.microsoft.com/en-us/services/application-insights/ +# application_insights: + +# Post widgets & FB/VK comments settings. +# --------------------------------------------------------------- +# Facebook SDK Support. +# https://github.com/iissnan/hexo-theme-next/pull/410 +facebook_sdk: + enable: false + app_id: # + fb_admin: # + like_button: #true + webmaster: #true + +# Facebook comments plugin +# This plugin depends on Facebook SDK. +# If facebook_sdk.enable is false, Facebook comments plugin is unavailable. +facebook_comments_plugin: + enable: false + num_of_posts: 10 # min posts num is 1 + width: 100% # default width is 550px + scheme: light # default scheme is light (light or dark) + +# VKontakte API Support. +# To get your AppID visit https://vk.com/editapp?act=create +vkontakte_api: + enable: false + app_id: # + like: true + comments: true + num_of_posts: 10 + +# Star rating support to each article. +# To get your ID visit https://widgetpack.com +rating: + enable: false + id: # + color: fc6423 +# --------------------------------------------------------------- + +# Show number of visitors to each article. +# You can visit https://leancloud.cn get AppID and AppKey. +leancloud_visitors: + enable: true + app_id: 3ShrIGfQL4TLamd48UtbdDEK-gzGzoHsz + app_key: cW8VJrB2yJiIBLtYA0KdE8vW + # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security + # If you don't care about security in lc counter and just want to use it directly + # (without hexo-leancloud-counter-security plugin), set the `security` to `false`. + security: false + betterPerformance: false + +# Another tool to show number of visitors to each article. +# visit https://console.firebase.google.com/u/0/ to get apiKey and projectId +# visit https://firebase.google.com/docs/firestore/ to get more information about firestore +firestore: + enable: false + collection: articles #required, a string collection name to access firestore database + apiKey: #required + projectId: #required + bluebird: false #enable this if you want to include bluebird 3.5.1(core version) Promise polyfill + +# Show Views/Visitors of the website/page with busuanzi. +# Get more information on http://ibruce.info/2015/04/04/busuanzi/ +busuanzi_count: + enable: false + total_visitors: true + total_visitors_icon: user + total_views: true + total_views_icon: eye + post_views: true + post_views_icon: eye + + +# Tencent analytics ID +# tencent_analytics: + +# Tencent MTA ID +# tencent_mta: + + +# Enable baidu push so that the blog will push the url to baidu automatically which is very helpful for SEO +baidu_push: false + +# Google Calendar +# Share your recent schedule to others via calendar page +# +# API Documentation: +# https://developers.google.com/google-apps/calendar/v3/reference/events/list +calendar: + enable: false + calendar_id: + api_key: + orderBy: startTime + offsetMax: 24 + offsetMin: 4 + timeZone: + showDeleted: false + singleEvents: true + maxResults: 250 + +# Algolia Search +# See: https://github.com/theme-next/hexo-theme-next/blob/master/docs/ALGOLIA-SEARCH.md +# Dependencies: https://github.com/theme-next/theme-next-algolia-instant-search +algolia_search: + enable: false + hits: + per_page: 10 + labels: + input_placeholder: Search for Posts + hits_empty: "We didn't find any results for the search: ${query}" + hits_stats: "${hits} results found in ${time} ms" + +# Local search +# Dependencies: https://github.com/theme-next/hexo-generator-searchdb +local_search: + enable: true + # if auto, trigger search by changing input + # if manual, trigger search by pressing enter key or search button + trigger: auto + # show top n results per article, show all results by setting to -1 + top_n_per_article: 1 + # unescape html strings to the readable one + unescape: false + +# Bookmark Support +# Dependencies: https://github.com/theme-next/theme-next-bookmark +bookmark: + enable: false + # if auto + # - save the reading position when closing the page + # - or clicking the bookmark-icon + # if manual, only save it by clicking the bookmark-icon + save: auto + + +# --------------------------------------------------------------- +# Tags Settings +# --------------------------------------------------------------- + +# External URL with BASE64 encrypt & decrypt. +# Usage: {% exturl text url "title" %} +# Alias: {% extlink text url "title" %} +exturl: true + +# Note tag (bs-callout). +note: + # Note tag style values: + # - simple bs-callout old alert style. Default. + # - modern bs-callout new (v2-v3) alert style. + # - flat flat callout style with background, like on Mozilla or StackOverflow. + # - disabled disable all CSS styles import of note tag. + style: simple + icons: false + border_radius: 3 + # Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6). + # Offset also applied to label tag variables. This option can work with disabled note tag. + light_bg_offset: 0 + +# Label tag. +label: true + +# Tabs tag. +tabs: + enable: true + transition: + tabs: false + labels: true + border_radius: 0 + +# Reading progress bar +# Dependencies: https://github.com/theme-next/theme-next-reading-progress +reading_progress: + enable: true + color: "#37c6c0" + height: 2px + + +#! --------------------------------------------------------------- +#! DO NOT EDIT THE FOLLOWING SETTINGS +#! UNLESS YOU KNOW WHAT YOU ARE DOING +#! --------------------------------------------------------------- + +# Use velocity to animate everything. +motion: + enable: true + async: true + transition: + # Transition variants: + # fadeIn | fadeOut | flipXIn | flipXOut | flipYIn | flipYOut | flipBounceXIn | flipBounceXOut | flipBounceYIn | flipBounceYOut + # swoopIn | swoopOut | whirlIn | whirlOut | shrinkIn | shrinkOut | expandIn | expandOut + # bounceIn | bounceOut | bounceUpIn | bounceUpOut | bounceDownIn | bounceDownOut | bounceLeftIn | bounceLeftOut | bounceRightIn | bounceRightOut + # slideUpIn | slideUpOut | slideDownIn | slideDownOut | slideLeftIn | slideLeftOut | slideRightIn | slideRightOut + # slideUpBigIn | slideUpBigOut | slideDownBigIn | slideDownBigOut | slideLeftBigIn | slideLeftBigOut | slideRightBigIn | slideRightBigOut + # perspectiveUpIn | perspectiveUpOut | perspectiveDownIn | perspectiveDownOut | perspectiveLeftIn | perspectiveLeftOut | perspectiveRightIn | perspectiveRightOut + post_block: fadeIn + post_header: slideDownIn + post_body: slideDownIn + coll_header: slideLeftIn + # Only for Pisces | Gemini. + sidebar: slideUpIn + +# Fancybox. There is support for old version 2 and new version 3. +# Please, choose only any one variant, do not need to install both. +# For install 2.x: https://github.com/theme-next/theme-next-fancybox +# For install 3.x: https://github.com/theme-next/theme-next-fancybox3 +fancybox: true + +# Added switch option for separated repo in 6.0.0. +# Dependencies: https://github.com/theme-next/theme-next-fastclick +fastclick: false + +# Added switch option for separated repo in 6.0.0. +# Dependencies: https://github.com/theme-next/theme-next-jquery-lazyload +lazyload: false + +# Progress bar in the top during page loading. +# Dependencies: https://github.com/theme-next/theme-next-pace +pace: false +# Themes list: +#pace-theme-big-counter +#pace-theme-bounce +#pace-theme-barber-shop +#pace-theme-center-atom +#pace-theme-center-circle +#pace-theme-center-radar +#pace-theme-center-simple +#pace-theme-corner-indicator +#pace-theme-fill-left +#pace-theme-flash +#pace-theme-loading-bar +#pace-theme-mac-osx +#pace-theme-minimal +# For example +# pace_theme: pace-theme-center-simple +pace_theme: pace-theme-minimal + +# Canvas-nest +# Dependencies: https://github.com/theme-next/theme-next-canvas-nest +canvas_nest: false + +# JavaScript 3D library. +# Dependencies: https://github.com/theme-next/theme-next-three +# three_waves +three_waves: false +# canvas_lines +canvas_lines: false +# canvas_sphere +canvas_sphere: false + +# Only fit scheme Pisces +# Dependencies: https://github.com/theme-next/theme-next-canvas-ribbon +# Canvas-ribbon +# size: The width of the ribbon. +# alpha: The transparency of the ribbon. +# zIndex: The display level of the ribbon. +canvas_ribbon: + enable: false + size: 300 + alpha: 0.6 + zIndex: -1 + +# Script Vendors. +# Set a CDN address for the vendor you want to customize. +# For example +# jquery: https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js +# Be aware that you should use the same version as internal ones to avoid potential problems. +# Please use the https protocol of CDN files when you enable https on your site. +vendors: + # Internal path prefix. Please do not edit it. + _internal: lib + + # Internal version: 2.1.3 + jquery: + + # Internal version: 2.1.5 + # See: http://fancyapps.com/fancybox/ + fancybox: + fancybox_css: + + # Internal version: 1.0.6 + # See: https://github.com/ftlabs/fastclick + fastclick: + + # Internal version: 1.9.7 + # See: https://github.com/tuupola/jquery_lazyload + lazyload: + + # Internal version: 1.2.1 + # See: http://VelocityJS.org + velocity: + + # Internal version: 1.2.1 + # See: http://VelocityJS.org + velocity_ui: + + # Internal version: 0.7.9 + # See: https://faisalman.github.io/ua-parser-js/ + ua_parser: + + # Internal version: 4.6.2 + # See: http://fontawesome.io/ + fontawesome: + + # Internal version: 1 + # https://www.algolia.com + algolia_instant_js: + algolia_instant_css: + + # Internal version: 1.0.2 + # See: https://github.com/HubSpot/pace + # Or use direct links below: + # pace: //cdn.bootcss.com/pace/1.0.2/pace.min.js + # pace_css: //cdn.bootcss.com/pace/1.0.2/themes/blue/pace-theme-flash.min.css + pace: + pace_css: + + # Internal version: 1.0.0 + # https://github.com/hustcc/canvas-nest.js + canvas_nest: + + # three + three: + + # three_waves + # https://github.com/jjandxa/three_waves + three_waves: + + # three_waves + # https://github.com/jjandxa/canvas_lines + canvas_lines: + + # three_waves + # https://github.com/jjandxa/canvas_sphere + canvas_sphere: + + # Internal version: 1.0.0 + # https://github.com/zproo/canvas-ribbon + canvas_ribbon: + + # Internal version: 3.3.0 + # https://github.com/ethantw/Han + han: + + # Internal version: 3.3.0 + # https://github.com/vinta/pangu.js + pangu: + + # needMoreShare2 + # https://github.com/revir/need-more-share2 + needmoreshare2_js: + needmoreshare2_css: + + # bookmark + # Internal version: 1.0.0 + # https://github.com/theme-next/theme-next-bookmark + bookmark: + + # reading_progress + # Internal version: 1.0 + # https://github.com/theme-next/theme-next-reading-progress + # Example: https://cdn.jsdelivr.net/gh/theme-next/theme-next-reading-progress@1.1/reading_progress.min.js + reading_progress: + + # valine comment + # Example: https://cdn.jsdelivr.net/npm/valine@1.1.8/dist/Valine.min.js + valine: + + +# Assets +css: css +js: js +images: images \ No newline at end of file diff --git a/source/_posts/git-account.md b/source/_posts/git-account.md new file mode 100644 index 000000000..5da330130 --- /dev/null +++ b/source/_posts/git-account.md @@ -0,0 +1,70 @@ +--- +title: Git 多账号 +date: 2018-10-06 10:54:50 +categories: Git +tag: [git account] +--- + +以前,git的账号只用来在Github上操作,随着积累Git管理的项目不仅仅只来自Github,还有一些其它Git项目托管的平台,例如:[Bitbucket](https://bitbucket.org),[Coding](https://coding.net),[Gitee](https://gitee.com),[Gitlib](https://gitlab.com),以及公司内Git仓库 + +不同的托管平台有着不同的Git账号,无法用一个账号来管理其它的仓库,而且由于不同的托管平台账号不同,因此需要添加不同账号的公钥,这样我们再能在对应平台用对应的账号进行操作 + +## 环境 +* Windows 10 x64 +* Git version 2.16.0 + +>这里Git的安装不在赘述 + +## 生成对应账号的密钥 +```sh +# 进入到`your_pc_name/.ssh`, +cd .ssh +# Jerry.x@outlook.com 是我的Github的邮箱,这里需要替换成自己的邮箱 +ssh-keygen -t rsa -C "Jerry.x@outlook.com" +# 命名文件名称或指定文件存放路径等 +# 其它可以回车键进行确认,进行下一步 +``` +![git-account](https://res.cloudinary.com/incoder/image/upload/v1538887180/blog/git-account.png) + +>完成后,将会生成`id_rsa_company.pub`(存放公钥)与`id_rsa_company`(存放私钥)两个文件 + +## 添加公钥到托管平台 +* 在`.ssh`路径下,用文本编辑器打开`id_rsa_company.pub`文件,复制内容 +* 在托管平台上添加ssh public key +以下以GitHub添加为例,其它平台类似 +![git-add-key](https://res.cloudinary.com/incoder/image/upload/v1538887180/blog/git-add-key.png) + +## 添加配置文件 +在`.ssh`路径下,创建`config`文件,无文件后缀名,如下示例 + +```sh +# 配置github.com +Host github.com + HostName github.com + IdentityFile C:\\Users\\Jerry\\.ssh\\id_rsa + PreferredAuthentications publickey + User BladeCode + +# 配置 company.domain.com +Host company.domain.com + HostName company.domain.com + IdentityFile C:\\Users\\Jerry\\.ssh\\id_rsa_company + PreferredAuthentications publickey + User Jerry xu +``` + +* `Host`:的名字可以取为自己喜欢的名字 +* `HostName`:这个是真实的域名地址 +例如:https://github.com/BladeCode/BladeCode.github.io.git,红色标注字段 +* `IdentityFile`:这里是id_rsa的地址 +* `PreferredAuthentications`:配置登录时用什么权限认证 +可设为publickey,password publickey,keyboard-interactive等 +* `User`:配置使用用户名 + +## 测试 +```sh +ssh -T git@github.com +``` +![git-test](https://res.cloudinary.com/incoder/image/upload/v1538887180/blog/git-test.png) + +>git@github.com,github.com就是上一步中`config`文件中配置的`HostName`字段内容 \ No newline at end of file diff --git a/source/_posts/git-bash.md b/source/_posts/git-bash.md new file mode 100644 index 000000000..c9534216a --- /dev/null +++ b/source/_posts/git-bash.md @@ -0,0 +1,107 @@ +--- +title: Git 常用命令 +date: 2018-10-07 12:43:50 +categories: Git +tag: [git bash] +--- + +记录 Git 日常操作常用命令 + +## git config +Git级别:system() < global(当前用户) < local(当前仓库) +* 新增或修改 +```sh +git config --global user.name xxxxx +git config --global user.email xxx@xxxx.com +``` +* 删除用品配置信息 +```sh +# 如果当前只有一个用户,就不用加入xxxx +git config --global --unset user.name xxxx +``` + +## git clone +* clone +```sh +git clone url +``` +* clone 指定分支 +```sh +git clone -b branch_name url +``` +* clone 指定tag +```sh +# clone +git clone url +# checkout tag +git checkout tag_name +``` +* clone 指定commit +```sh +# 查看git commit 历史的 +git log +# 指定 commit SHA +git clone commit_sha_value +``` + +## git commit +```sh +git commit -m "注释" +``` + +## git branch +* 创建分支 +```sh +# 创建分支 +git branch branch_name +# 创建并切换到新分支 +git checkout -b branch_name +``` +* 切换分支 +```sh +git checkout branch_name +``` +* 删除分支 +```sh +# 删除本地分支 +git branch -d branch_name +# 删除远程指定分支 +git push origin --delete branch_name +``` +* 重命名分支 +```sh +git branch -m old_branch_name new_branch_name +``` +* 查看分支 +```sh +# 查看本地所有分支 +git branch +# 查看远程所有分支 +git branch -r +# 查看本地和远程所有分支 +git branch -a +``` + +## git tag +* 新增tag +```sh +git tag -a tag_name -m "注释" +``` +* 查看tag +```sh +git tag -l +``` +* 删除tag +```sh +# 删除本地tag +git tag -d tag_name +# 删除远程指定tag +git push origin --delete tag tag_name +``` +## git help +更多命令 +```sh +git --help +``` +## 附录 +* [Git Docs](https://git-scm.com/docs) diff --git a/source/_posts/git-sub.md b/source/_posts/git-sub.md new file mode 100644 index 000000000..e5e6d08eb --- /dev/null +++ b/source/_posts/git-sub.md @@ -0,0 +1,211 @@ +--- +title: Git 子仓库管理 +date: 2018-05-17 10:30:50 +categories: Git +tag: [git subtree, git submodule] +--- + +在使用NexT作为Hexo博客的主题时,不能 **友好** 的支持其主题的更新,以及 **多设备** 之间的主题同步。 +按照官方提供的导入主题操作指引 +```bash +$ cd hexo +$ git clone https://github.com/theme-next/hexo-theme-next themes/next +``` +发现commit并push到GitHub的远程服务器上,发现`themes/next`路径下并不能打开和查看该路径下的文件,原因是NexT是当前项目的一个子仓库(项目),在Github上对于之仓库项目的引用,推荐使用`git subtree`命令来进行对子仓库的管理,不推荐直接拷贝需要子仓库的代码到自己的项目中 + +原因是我是使用Travis CI来部署自己的项目,具体的[构建脚本和介绍](https://incoder.org/2018/05/02/hexo-iterative)请看,下面分别使用 `git submodule`、`git subtree`的方式进行NexT主题的管理 + +## git submodule 与 git subtree +* `git submodule`、`git subtree`都可以实现一个仓库作为其他仓库的子仓库的管理 +* `git submodule`:是Git官方以前的推荐方案 +* `git subtree`:Git [1.5.2](https://lwn.net/Articles/235109) 开始,Git 新增并推荐使用这个功能来管理子项目 +* `git subtree`与`git submodule`不同,它不增加任何像`.gitmodule`这样的新的元数据文件 +* `git subtree`对于项目中的其他成员透明,意味着可以不知道`git subtree`的存在 + +## git submodule 常用操作 +[Git Submodule](https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97)功能官方操作指引 + +### add 一个submodule +1. Fork Repository +[hexo-theme-next](https://github.com/theme-next/hexo-theme-next)项目右上角`Fork`按钮即可 +2. Clone Repository +```bash +git clone git@github.com:RootCluster/hexo-theme-test.git +``` +3. Add Submodule +```bash +# 进入项目 +cd hexo-theme-test +# 注册next项目是一个submodule,并把数据拷贝到`themes/next`路径 +git submodule add git@github.com:RootCluster/hexo-theme-next.git themes/next +``` +4. status +```bash +# 当前submodule已被注册并指向了某个commit +git submodule status + 1f5643061ec5257269673bd6159403c24015c53d themes/next (v6.3.0) +``` + + ```bash + # 查看在父仓库中有哪些变化被注册 + git status + On branch submodule + Changes to be committed: + (use "git reset HEAD ..." to unstage) + + new file: .gitmodules + new file: themes/next + ``` + 有2个文件被修改过:`.gitmodules`,`themes/next`,当在父仓库时,Git不会跟踪submodule中的文件,Git只把它当成一个单一的文件 + * `.gitmodules`:存有submodule的信息 + * `themes/next`:submodule它自己 + +5. commint +```bash +# 推送到远程submodule分支 +git commit -am "add next submodule" +[submodule a5a612b] add next submodule + 2 files changed, 4 insertions(+) + create mode 100644 .gitmodules + create mode 160000 themes/next +``` +6. push +```bash +git push origin submodule +Counting objects: 4, done. +Delta compression using up to 4 threads. +Compressing objects: 100% (4/4), done. +Writing objects: 100% (4/4), 451 bytes | 451.00 KiB/s, done. +Total 4 (delta 1), reused 0 (delta 0) +remote: Resolving deltas: 100% (1/1), completed with 1 local object. +To github.com:RootCluster/hexo-themes-test.git + 71879a8..a5a612b submodule -> submodule +``` +查看Github上的仓库,发现父仓库里有一个指向submodule的链接,表示你已经成功添加了一个submodule + +### clone 带 submodule的项目 +新路径下,clone项目,submodule分支 +```bash +# clone项目 +git clone -b submodule git@github.com:RootCluster/hexo-themes-test.git +# 进入项目路径 +cd hexo-themes-test/ +# 项目注册submodule +git submodule init +# clone submodule代码 +git submodule update + +``` + +### update 带 submodule的项目 +只要在submodule路径下,所有的常规Git操作,如`push`,`pull`,`reset`,`status`等,都可以正常工作,如果要保证submodule和远程仓库保存同步,在submodule路径下运行`git pull` + +* 如果你得到一个错误信息, 说你不在任何分支之上, 只要运行`git checkout master`就可修复 +* 如果你在`pull`后 `submodule` 有一些更新, 父仓库会告诉你有一些变动需要 `commit` 了. `submodule`自身指向一个指定的 `commit`, 并且如果这个 `commit` 改变了, 父仓库会得知这个改变. 如果你的 `submodule` 需要在一个指定 `commit` 上工作, 可用`git reset`来设置 + +例如:我需要把NexT的版本改变到上一个Tag 6.2.0 (目前是6.3.0) +> git reset --hard (commit hash) + +```bash +# 进入项目路径 +cd hexo-themes-test/ +# 重新指向submodule关联的commit记录 +git reset --hard 206d463 +# 回到父目录 +cd .. +# commit本次的修改 +git commit -am "set next version to 6.2.0" +``` + +{% note info %} 推送到远程仓库后,`submodule` 会和指定的`commit` 关联起来。如果你和别人一起工作在同一个项目,别人也可以在`submodule`下`pull`并且`commit`,因此改变了`submodule`的`commit`指向,这个问题,可以通过`git reset` 来解决{% endnote %} + +### remove 项目中的 submodule +* 项目的根目录下(不是 submodule 的目录),编辑 .gitmodules 文件,删除submodule配置 +```bash +[submodule "themes/next"] + path = themes/next + url = https://github.com/RootCluster/hexo-theme-next.git +``` +* 项目根目录下,编辑`.git`文件夹下`config`文件,删除submodule配置 +```bash +[submodule "themes/next"] + url = https://github.com/RootCluster/hexo-theme-next.git +``` +* 清除submodule缓存 +```bash +git rm --cached themes/next +``` + +## git subtree 常用操作(重点) + +### add一个subtree +* 在父仓库中新增子仓库 +```bash +# 添加子仓库 +git subtree add --prefix=themes/next https://github.com/RootCluster/hexo-theme-next.git master --squash +git fetch https://github.com/RootCluster/hexo-theme-next.git master +warning: no common commits +remote: Counting objects: 3407, done. +remote: Total 3407 (delta 0), reused 0 (delta 0), pack-reused 3406 +Receiving objects: 100% (3407/3407), 1.21 MiB | 36.00 KiB/s, done. +Resolving deltas: 100% (2192/2192), done. +From https://github.com/RootCluster/hexo-theme-next + * branch master -> FETCH_HEAD +Added dir 'themes/next' +``` +>`--squash`参数表示不拉取历史信息,而只生成一条commit信息 + +* 查看项目状态 +```bash +# 查看项目状态 +git status +On branch subtree +Your branch is ahead of 'origin/subtree' by 2 commits. + (use "git push" to publish your local commits) + +nothing to commit, working tree clean +``` + +* 推送更改到远程仓库 +```bash +git push origin subtree +Counting objects: 381, done. +Delta compression using up to 4 threads. +Compressing objects: 100% (334/334), done. +Writing objects: 100% (381/381), 650.26 KiB | 34.22 MiB/s, done. +Total 381 (delta 23), reused 225 (delta 19) +remote: Resolving deltas: 100% (23/23), completed with 1 local object. +To https://github.com/RootCluster/hexo-themes-test.git + 8ed2e2e..405af42 subtree -> subtree +``` + +### pull 子仓库更新 +```bash +# 更新子仓库 +git subtree pull --prefix=themes/next https://github.com/RootCluster/hexo-theme-next.git master --squash +From https://github.com/RootCluster/hexo-theme-next + * branch master -> FETCH_HEAD +Subtree is already at commit 1f5643061ec5257269673bd6159403c24015c53d. +``` + +### push 子仓库修改 +在引用子仓库的项目中修改了子仓库的相关代码,推送修改到源仓库 +* commit 修改记录 +* push 到源仓库 +```bash +# 推送子仓库修改到源仓库master分支 +git subtree push --prefix=themes/next https://github.com/RootCluster/hexo-theme-next.git master +``` + +### subtree 常用命令 +```bash +git subtree add --prefix= +git subtree add --prefix= +git subtree pull --prefix= +git subtree push --prefix= +git subtree merge --prefix= +git subtree split --prefix= [OPTIONS] [] +``` +> 学习参考附录: +* [如何使用 Git Submodule](http://linlexus.com/git-submodule-usage) +* [git subtree教程](https://www.jianshu.com/p/d42d330bfead) \ No newline at end of file diff --git a/source/_posts/gitignore.md b/source/_posts/gitignore.md new file mode 100644 index 000000000..ebd190039 --- /dev/null +++ b/source/_posts/gitignore.md @@ -0,0 +1,44 @@ +--- +title: .gitignore 基础知识 +date: 2018-04-13 00:30:50 +categories: Git +tag: ignore +--- + +.gitignore顾名思义是Git中用来管理所需要忽略或者说不用纳入版本控制文件 + +## 基本配置语法 +1. “#“:表示注释 +2. “/“:表示目录 +3. “*“:表示通配符,用来通配多个字符 +4. “?“:表示通配单个字符 +5. “[]“:表示包含单个字符的匹配列表 +6. “!“:表示不忽略匹配到的文件或者目录 + +>注意:Git对.gitignore配置文件是从上往下进行规则匹配,这也意味如果:前(limit)>后(limit),则后面的规则不会被执行 + +## 全局与局部 +.gitignore分为: **全局** ignore,**局部** ignore + +### 全局ignore设置 +* 在用户账户文件夹(C:\Users\<'YourName'>)路径下新建一个命名为`.gitignore_global`的文件 +* 使用Git Bash(需要切换路径到C:\Users\<'YourName'>)或者Git CMD命令行工具输入: +``` bash +git config --global core.excludesfile ~/.gitignore_global +``` +* 此时全局ignore已经设置完成,你只需要修改`.gitignore_global`文件内需要忽略的文件类型就可以全局控制忽略不需要纳入版本控制的文件或文件夹 +* 不难发现,其实是往 `.gitconfig`中加入如下内容来指名Git忽略不纳入版本控制的文件,当然如果你不想用命令行完成全局设置,你也可以直接在`.gitconfig`文件中加入`[core] excludesfile= ~/.gitignore_global`内容即可 + +### 局部ignore设置 +* 只需要在Git控制版本控制项目的根目录中加入.gitignore文件,在.gitignore文件中写明忽略不纳入版本控制的文件即可 + +## 参考示例 + +>你可以查看参考[Github](https://github.com/github/gitignore)官方所写好的示例 + +## 插件.ignore +支持Android Studio,JetBrains系列 +安装方法 + +* `Settings` > `Plugs` > `Browse repositories` > `.ignore` > `Install plugin` +* 里面有已经写好的模板,只需适当修改 \ No newline at end of file diff --git a/source/_posts/gitlab1.md b/source/_posts/gitlab1.md new file mode 100644 index 000000000..c57b9a057 --- /dev/null +++ b/source/_posts/gitlab1.md @@ -0,0 +1,142 @@ +--- +title: Gitlab 应用搭建 +date: 2018-04-24 21:11:10 +categories: Git +tag: Gitlab +--- + +我司团队之前一直使用SVN来进行代码托管,主要问题 +1. 每次来个新人都需要找对应的[SVN](https://tortoisesvn.net/index.zh.html)管理员进行授权分配指定的仓库操作权限,有时候需要多个项目切换,还得再次提出进行仓库的指定 +2. SVN都是以中文命名,这其实没啥,但是在[eclipse](https://eclipse.org) 以及[IDEA](https://www.jetbrains.com/idea/?fromMenu) ,[Xcode](https://developer.apple.com/xcode)等开发工具,链接地址都会把中文字进行编码,造成路径非常的长,强迫症的我这怎么忍得了 +3. 产品相关的,设计相关的啥也都放在SVN里面,搞得SVN里面鱼龙混杂 + +因此在我提出及建议下,部门经理同意了对代码的管理进行隔离方便有效的对代码的授权监管,并同时制定代码的相关规范和服务的自动化部署等,提高团队的开发效率和代码质量。 + +本节主要介绍Gitlab的环境搭建和基础的功能配置 + +目的: +1. 搭建Gitlab服务 +2. 和公司AD域账号关联,用域账号直接登录Gitlab +3. 挂载Gitlab 仓库到指定存储位置 + +## Gitlab安装 + +### 环境 +* OS:CentOS 7 +* Gitlab:[Gitlab CE 10.6.4](https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.6.4-ce.0.el7.x86_64.rpm) + +>Gitlab 版本 +* Gitlab Community Edition (CE):社区版,免费,用户自行托管,通过社区提供技术支持 +* Gitlab Enterprise Edition (EE):企业版,付费,用户自行托管,提供附加的功能以及技术支持 +* Gitlab.com:免费的SaaS服务,可以创建共有以及私有的版本库,可以购买额外的技术支持 +* GitHost.io:由Gitlab提供的用户私有的独享服务 + +### Gitlab部署 +1. 系统防火墙中打开HTTP和SSH访问 +```bash +sudo yum install -y curl policycoreutils-python openssh-server +sudo systemctl enable sshd +sudo systemctl start sshd + +sudo firewall-cmd --permanent --add-service=http +sudo systemctl reload firewalld + +``` +2. 安装Postfix发送通知邮件。如果您想使用其他解决方案发送电子邮件,请跳过此步骤并在安装GitLab后配置外部SMTP服务器 +```bash +sudo yum install postfix +sudo systemctl enable postfix +sudo systemctl start postfix + +``` +3. 添加GitLab软件包存储库 +```bash +curl -LJO https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm +``` +4. 安装软件包 +```bash +rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm +``` + 完成安装如下日志显示: + + ``` + *. *. + *** *** + ***** ***** + .****** ******* + ******** ******** + ,,,,,,,,,***********,,,,,,,,, + ,,,,,,,,,,,*********,,,,,,,,,,, + .,,,,,,,,,,,*******,,,,,,,,,,,, + ,,,,,,,,,*****,,,,,,,,,. + ,,,,,,,****,,,,,, + .,,,***,,,, + ,*,. + + + + _______ __ __ __ + / ____(_) /_/ / ____ _/ /_ + / / __/ / __/ / / __ \`/ __ \ + / /_/ / / /_/ /___/ /_/ / /_/ / + \____/_/\__/_____/\__,_/_.___/ + + ``` +5. 编译配置文件 +```bash +cd /opt/gitlab/bin +./gitlab-ctr reconfigure +``` +6. 启动服务 +```bash +./gitlab-ctl start +``` + +>* 成功启动服务,默认路径访问:http://localhost:80 +* 默认安装位置 `/opt/gitlab/` +* 配置文件默认路径 `/etc/gitlab/gitlab.rb` +* 默认账号:root,密码:5iveL!fe + +## 常用配置项修改 +以下配置项的修改,完成后**均需要重新编译**文件(配置文件默认路径 `/etc/gitlab/gitlab.rb`),默认,**并重启Gitlab**服务 + +### 访问地址 +修改`external_url`为Gitlab对应机器IP所配置的域名 +![gitlab-url](https://res.cloudinary.com/incoder/image/upload/v1525517587/blog/gitpages-gitlab-url.png) + +### LDAP启用 +修改`host`,`port`,`bind_dn`,`password`,`base`参数即可 +![gitlab-ladp](https://res.cloudinary.com/incoder/image/upload/v1525517612/blog/gitpages-gitlab-ldap.png) + +各参数解释: +* `host` 和 `port` 是 LDAP 服务的主机地址及端口 +* `bind_d`n 和 `password` 是一个管理 LDAP 的 dn 及密码 +* `base` 表示 LDAP 将以该 dn 为 节点,向下查找用户 +* `user_filter` 表示以某种过滤条件筛选用户 +* `attributes` 表示 GitLab 中的字段与 LDAP 中哪些字段可以相互对应,比如可以用 LDAP 中的 uid 来作为 GitLab 用户名 + +编译重启后,查看登录是否已经显示LDAP登录入口 + +![gitlab-ldap-login](https://res.cloudinary.com/incoder/image/upload/v1525517639/blog/gitpages-gitlab-ldap-login.png) + +为了安全我们需要关闭 GitLab 自己的注册功能,这样新用户只能通过 LDAP 认证的方式进行登陆。 + +![gitlab-sign-up](https://res.cloudinary.com/incoder/image/upload/v1525517671/blog/gitpages-gitlab-sign-up.png) + +### 存储仓库修改 +默认仓库存储位置:`/var/opt/gitlab/git-data/repositories/` +![gitlab-dirs](https://res.cloudinary.com/incoder/image/upload/v1525517697/blog/gitpages-gitlab-dirs.png) + +### Gitlab日志 +默认日志位置: `/var/log/gitlab` + +```bash +cd /opt/gitlab/bin +gitlab-ctl tail -f nginx/gitlab_access.log +``` +或者在Gitlab服务的系统设置中查看 +![gitlab-logs](https://res.cloudinary.com/incoder/image/upload/v1525517725/blog/gitpages-gitlab-logs.png) + +## 附录 +* [官方安装教程](https://about.gitlab.com/installation) +* [官方配置文件](https://docs.gitlab.com.cn/omnibus/settings/README.html) \ No newline at end of file diff --git a/source/_posts/hexo-blog.md b/source/_posts/hexo-blog.md new file mode 100644 index 000000000..fe44545ec --- /dev/null +++ b/source/_posts/hexo-blog.md @@ -0,0 +1,135 @@ +--- +title: Hexo Blog 搭建 +date: 2018-03-25 01:18:26 +categories: Hexo +tag: Build +--- + +之前一直纠结用[Jekyll](https://jekyllrb.com)还是[Hexo](https://hexo.io)来搭建[GitHub Page](https://pages.github.com)博客,原本一直想搭建一个[Material Design](https://material.io/guidelines)主题风格,从[Hexo Themes](https://hexo.io/themes)中寻找到一款不错的主题,[indigo](https://github.com/yscoder/hexo-theme-indigo)是一款支持IE10+,评论,目录导航,分享等功能的轻量Blog主题。 + +简单的修改了该主题之后,本地预览都没有什么问题,但是部署到[Github]()上,样式什么的都无法加载,应该是我的操作姿势不对吧,调整了半天没有解决,烦躁中找到之前star的另一款很受欢迎的[Next](https://github.com/iissnan/hexo-theme-next)主题。 + +既然自己修改的无法正常部署预览,那就用别人写好的吧,刚好赶上[Next](https://github.com/theme-next/hexo-theme-next)新版本V6.0系列的推出,那就不废话,直接开干 + +## 材料准备 +* [Node LTS](https://nodejs.org/en/download) +* [Git](https://git-scm.com/downloads) +* [Hexo](https://hexo.io) +* [Next](https://github.com/theme-next/hexo-theme-next) + +## 安装 +`Node`,`Git`的安装过程略 + +### Hexo +1. Hexo 安装 +``` bash +$ npm install hexo-cli -g +``` +2. 初始化 +``` bash +$ hexo init +``` +3. 安装依赖包 +``` bash +$ cd +$ npm install +``` +4. 启动服务预览 +``` bash +$ hexo serve +``` + +### Next +1. 安装Next 主题 +``` bash +$ git clone https://github.com/theme-next/hexo-theme-next themes/next +``` + > 当前操作在 `blog`的根目录下执行 + +2. 修改Blog 配置 +`you blog name` 根目录 `_config.yml` + * theme: 由原来默认`landscape`更改位`next`(大约:76行) + * 其他配置项,根据自己的需求进行更改,我这里更改了`title`,`subtitle`,`author`,`language`,`url`配置,其中`language`如果没有修改,默认为英文语言,在V6.0系列由原来`zh-Hans`更新为`zh-CN` + * 添加部署到Github配置 +``` bash +deploy: + type: git + repo: https://github.com/BladeCode/BladeCode.github.io.git # 用户名仓库 + branch: master # 用户名仓库的分支应该指定master,master分支也可以不用写 +``` + +3. 修改Theme 配置 +路径:`you blog name`/Themes/next/_config.yml +这里不罗嗦了,其配置可参考[hexo-theme-next](https://github.com/iissnan/hexo-theme-next)项目`README`文件 + +### 部署 +上面已经配置好了部署的目标仓库,那么这里直接使用Hexo提供的部署命令即可 +``` bash +$ hexo d +``` +相关命令介绍等,请查看[官方文档说明](https://hexo.io/docs) + +部署完成后,可以直接访问 http://`you blog name`/github.io + +## 自定义域名 +虽然现在blog可以使用Githug提供的项目二级域名来访问,为了个性化以及方便等,配置自己的域名 +1. 登录域名所属的管理网站(这里以阿里云域名服务为例) + ![gitpages-domain-manger](https://res.cloudinary.com/incoder/image/upload/v1525516603/blog/gitpages-domain-manger.png) +2. 添加解析 +``` bash +$ # 解析一 +记录类型:CNAME +主机记录:www +记录值:bladecode.github.io +解析路线:default + +$ # 解析二 +记录类型:A +主机记录:@ +记录值:192.30.252.153 +解析路线:default + +$ # 解析三 +记录类型:A +主机记录:@ +记录值:192.30.252.154 +解析路线:default +``` + > 192.30.252.153是GitHub的地址,你也可以ping你的 http://xxxx.github.io 的ip地址,填入进去 + +3. 修改Github上项目的domain设置 + ![gitpages-domain-custom](https://res.cloudinary.com/incoder/image/upload/v1525516630/blog/gitpages-domain-custom.png) +4. 添加CNAME文件 +保存路径:`you blog name`/source +新增文件:CNAME 文件 (格式要求:`保存成所有文件而不是txt文件`) +CNAME 文件内容:`incoder.org` +> 如果带有www,那么以后访问的时候必须带有www完整的域名才可以访问,但如果不带有www,以后访问的时候带不带www都可以访问。所以建议,不要带有www + +## Https开启 +开启Https 需要借助[Cloudflare](https://www.cloudflare.com),关于Cloudflare的介绍等不在这里展开 +1. 注册账号 +2. Add website + ![site](https://res.cloudinary.com/incoder/image/upload/v1525516650/blog/gitpages-https-add-site.png) +3. Querying your DNS + ![query](https://res.cloudinary.com/incoder/image/upload/v1525516664/blog/gitpages-https-dns-query.png) +4. Select Plan + ![plan](https://res.cloudinary.com/incoder/image/upload/v1525516681/blog/gitpages-https-select-plan.png) +5. 域名解析记录获取 + ![continue](https://res.cloudinary.com/incoder/image/upload/v1525516694/blog/gitpages-https-continue.png) +6. DNS 对比,并修改[Cloudflare]()提供的DNS来解析 + ![change](https://res.cloudinary.com/incoder/image/upload/v1525516714/blog/gitpages-https-change-dns.png) +7. 域名管理后台,修改DNS + ![dns](https://res.cloudinary.com/incoder/image/upload/v1525516733/blog/gitpages-https-wanwang-dns.png) + > 阿里云服务相关域名DNS修改帮助[文档](https://help.aliyun.com/knowledge_detail/39844.html) +8. 成功激活 + ![active](https://res.cloudinary.com/incoder/image/upload/v1525516756/blog/gitpages-https-active.png) +9. SSL证书申请提醒 + ![cer](https://res.cloudinary.com/incoder/image/upload/v1525516994/blog/gitpages-https-ssl-cer.png) +10. 添加强制HTTPS规则 + ![rule](https://res.cloudinary.com/incoder/image/upload/v1525517025/blog/gitpages-https-page-rule.png) +11. 规则制定 + ![deploy](https://res.cloudinary.com/incoder/image/upload/v1525517045/blog/gitpages-https-deploy-https.png) + +好了剩下的就是等证书颁发,可能要等上一些时间,具体每个人不尽相同,这里就不多做解释了。 + +Let's all,本次的Hexo的相关初级教程就到这里 diff --git a/source/_posts/hexo-iterative.md b/source/_posts/hexo-iterative.md new file mode 100644 index 000000000..6b17bc2bf --- /dev/null +++ b/source/_posts/hexo-iterative.md @@ -0,0 +1,102 @@ +--- +title: Hexo Blog 迭代 +date: 2018-05-02 18:18:18 +categories: Hexo +tag: Build +--- + +最初博客通过[Cloudflare](https://www.cloudflare.com)反向代理进行HTTPS解析,放完五一假期,Github官方开始支持[自定义域名的HTTPS解析](https://blog.github.com/2018-05-01-github-pages-custom-domains-https),在使用Cloudflare期间,经常性的521等问题烦恼,这次也可以名正言顺的弃用CloudFlare + +**本次迭代内容** +* 弃用Cloudflare +* 自动化部署 +* 常用设置 +* 常用插件安装 + +## 弃用Cloudflare +1. 关闭Cloudflare中设置Page Rules +2. 删除Cloudflare的DNS记录 +3. 还原域名配置中的DNS解析 +4. 添加Github提供的IP解析 + +[官方自定义域名设置](https://help.github.com/articles/setting-up-an-apex-domain/#configuring-an-alias-or-aname-record-with-your-dns-provider) + +## 自动化部署 +>[Github Pages](https://pages.github.com)是Github 提供一个渲染静态的Web页面服务 +* `{username}.github.io`仓库默认`master`分支 +* 其他项目仓库,默认`gh-pages`分支 +* [官方说明文档](https://help.github.com/articles/user-organization-and-project-pages) + +因此`{username}.github.io`仓库,dev分支用来存储网站的源码,`master`分支存放生成的静态文件,这样一个仓库就可以管理整个项目。每次`push`新的功能,然而每次都需要先`push`到`dev`分支,然后生成静态文件,再`push`到`master`分支,这种重复性的操作,实在太不优雅,所以采用[Travis CI](https://travis-ci.org)进行自动化部署 + +接着Github支持自定义域名开启HTTPS的好消息,Travis CI (https://travis-ci.com) 也支持开源项目啦 + +> Travis CI 区别 +* Travis-CI(https://travis-ci.org) :GitHub公开项目 +* Travis-CI(https://travis-ci.com) :~~私有付费项目~~,[2018.05.02也开始支持开源项目](https://blog.travis-ci.com/2018-05-02-open-source-projects-on-travis-ci-com-with-github-apps?utm_source=Broadcast&utm_campaign=2may_release) + +[GitHub Services are being deprecated](https://developer.github.com/changes/2018-04-25-github-services-deprecation),因此本节的自动化部署就开启Travis CI (https://travis-ci.com) 集成方案 + +### 准备 +1. 使用GitHub账号登录Travis-CI,并确认接受访问 +2. 同步了GitHub存储库,转到您的配置文件页面并启用您想要构建的存储库 +3. 添加 `.travis.yml` 文件到构建部署项目的根目录下 + +### Hexo 自动部署 +部署流程 +![部署流程](https://res.cloudinary.com/incoder/image/upload/v1525517765/blog/gitpages-travis-ci-branch-deploy.png) + +Hexo 部署脚本示例 +```bash +language: node_js # 设置语言 +node_js: stable # 设置相应的版本 +cache: + directories: + - node_modules +before_install: + - npm install -g hexo + - npm install -g hexo-cli +install: + - npm install # 安装hexo及插件 +before_script: + - npm install -g mocha + - git clone --branch master https://github.com/BladeCode/BladeCode.github.io.git public +script: + - hexo cl # 清除 + - hexo g # 生成 +after_script: + - cd ./public + - git init + - git config user.name "BladeCode" # 修改成自己的github用户名 + - git config user.email "Jerry.x@outlook.com" # 修改成自己的GitHub邮箱 + - git add . + - git commit -m "update by Travis-CI" # 更新日志 + - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master # GH_token就是在travis中设置的token +branches: + only: + - dev # 只监测dev分支,一有动静就开始构建 +env: + global: + - GH_REF: github.com/BladeCode/BladeCode.github.io.git +``` + +## 常用设置 +[NexT 配置使用手册](http://theme-next.iissnan.com) + +### NexT主题更新 + +[官方说明](https://github.com/theme-next/hexo-theme-next/blob/master/docs/zh-CN/DATA-FILES.md) + +## 常用插件安装 + +* 文章字符统计 [hexo-symbols-count-time](https://github.com/theme-next/hexo-symbols-count-time) +* 修复LeanCloud访客计数器中的严重安全漏洞 [hexo-leancloud-counter-security](https://github.com/theme-next/hexo-leancloud-counter-security) +* 图片灯箱 [theme-next-fancybox3](https://github.com/theme-next/theme-next-fancybox3) +* 本地检索 [hexo-generator-searchdb](https://github.com/theme-next/hexo-generator-searchdb) + +## 其他 + +### 图床选择 +* [个人网站中的静态文件云存储选择](https://jimmysong.io/posts/static-website-storage) +* [嗯,图片就交给它了](https://sspai.com/post/40499) +* [NexT主题无法备份解决方式](https://github.com/iissnan/hexo-theme-next/issues/932) diff --git a/source/_posts/hugo.md b/source/_posts/hugo.md new file mode 100644 index 000000000..96beffa72 --- /dev/null +++ b/source/_posts/hugo.md @@ -0,0 +1,55 @@ +--- +title: Hugo 初体验 +date: 2018-07-11 16:34:10 +categories: Hugo +tag: Build +--- + +个人博客使用[Hexo](https://hexo.io/zh-cn/index.html)搭建,使用效果很不错,在Github上创建组织[RootCluster](https://github.com/RootCluster),该组织主要存放自己新技术的学习和一些Demo实验。组织同样也可以使用Github pages服务,因此给RootCluster构建一个静态页面,可用直观清晰的看自己的项目,加之之前已用Hexo,所以这次的静态页面构建选择了新的一个静态页面生成工具,[Hugo](https://gohugo.io)是一款使用Go语言开发的静态页面生成框架。 + +[Hugo](https://gohugo.io)是世界上最快的静态网站引擎。它是用[Go](https://golang.org)(aka Golang)编写的,由[bep](https://github.com/bep),[spf13](https://github.com/spf13)和[朋友](https://github.com/gohugoio/hugo/graphs/contributors)开发 + +## 材料准备 +* SystemOS:Windows 10 +* [Chocolatey](https://chocolatey.org):Windows的包管理器 +* [Hugo](https://gohugo.io/getting-started/installing) + +## 安装 +### Chocolatey安装 +如果已安装,跳过该步骤 +* 使用 PowerShell.exe +```bash +Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) +``` +* 使用 cmd.exe +```bash +@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin" +``` +以上两种方式,选择其一即可 +![PowerShell.exe 演示](https://res.cloudinary.com/incoder/image/upload/v1531314279/blog/hugo_install.png) + +### hugo安装 + +```bash +choco install hugo -confirm +``` + +### 初始化Hugo +* 初始化hugo模板 +```bash +hugo new site project_name +``` + +* 进入项目并启动项目 +```bash +cd project_name +hugo serve +``` + +![hugo_init](https://res.cloudinary.com/incoder/image/upload/v1531314737/blog/hugo_init.png) + +* [主题安装](https://themes.gohugo.io) + +这里选择[Elate](https://themes.gohugo.io/hugo-elate-theme)主题作为组织的网站 + +![主题安装](https://res.cloudinary.com/incoder/image/upload/v1531316293/blog/hugo_theme.png) \ No newline at end of file diff --git a/source/_posts/linux-build.md b/source/_posts/linux-build.md new file mode 100644 index 000000000..4577fb620 --- /dev/null +++ b/source/_posts/linux-build.md @@ -0,0 +1,314 @@ +--- +title: Linux 常用应用安装 +date: 2018-05-15 00:32:10 +categories: Linux +tag: Build +--- + +作为Android开发者,目标主要是在客户端,平时也就是和服务端对接数据接口,很少直接干到服务端的Linux机器,随着这波推动团队技术平台基础开发工具模块的完善,拿到了一台Linux机器,重新构建移动端的测试服务器。 + +该机器主要功能: +1. 提供移动端服务Api接口 +2. 提供移动端通讯录管理授权服务 +3. 提供企业微信通讯录同步服务 +4. 管理移动端服务器Api接口文档 + +也是第一次正式的从头开始安装所需软件及应用部署,虽然这些工作可以完全找运维去处理,难得这样的机会从头开始去熟悉Linux。 + +**安卓,是一个基于Linux内核的开放源代码移动操作系统**,因此多了解Linux是一件双赢的事情,基于当前机器需要提供的服务,安装部署需要的软件应用 + +
      废话不多说,上来就是干
      + +查看当前系统版本信息 +```bash +lsb_release -a +``` +以下软件版本,请下载对应支持系统的软件 + +## Java + +[官方下载地址](http://www.oracle.com/technetwork/java/javase/downloads/index.html),选择需要的版本下载安装包 +>官方提供了`.rpm`,`.gz`两种格式安装包 + +```bash +# 1.下载安装包 +# 拷贝安装包到需要安装的服务器 +# 2.解压并安装 +# `.rpm`格式安装(jdk-xxx.rpm更换成对应的文件名) +sudo rpm -ivh jdk-xxx.rpm +# `.gz`格式安装(解压到指定目录,常存放`/usr/java/`路径) +tar zxvf jdk-xxx.tar.gz -C /usr/java/ +# 3.设置环境变量 +vim /etc/profile +# JAVA_HOME=/usr/java/jdk1.8.0_172 (修改这里路径,指向jdk安装路径) +# PATH=$JAVA_HOME/bin:$PATH +# CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar +# export JAVA_HOME PATH CLASSPATH +# 4.编译配置文件,使修改生效 +source /etc/profile +# 5.验证jdk是否安装成功 +java –version +``` + +## Tomcat + +[官方下载地址](http://tomcat.apache.org),选择需要的版本下载安装包 +>官方提供了`.zip`,`.gz`两种格式安装包,Linux服务器下载`Core`类即可 + +```bash +# 1.下载安装文件 +wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.8/bin/apache-tomcat-9.0.8.tar.gz +# 2.解压安装文件(解压到指定目录,常存放`/usr/tomcat/`路径) +tar -zxvf apache-tomcat-9.0.8.tar.gz -C /usr/tomcat/ +# 3.启动tomcat +cd /usr/local/tomcat/bin +./startup.sh +# 4.关闭tomcat +./shutdown.sh +``` + +### 配置Web管理账号 +* 修改文件conf/tomcat-users.xml,在元素中添加帐号密码,需要指定角色 +```bash +vim /usr/local/tomcat/conf/tomcat-users.xml +# +# +# +``` + +### 配置端口 +* 可以修改conf目录下的文件server.xml,修改Connector元素(Tomcat的默认端口是8080),需要重新启动Tomcat服务生效 +```bash +vim /usr/local/tomcat/conf/server.xml +# +``` + +### 应用部署 +* 放置需部署包到容器中`webapps`路径 +```bash +cd /usr/local/tomcat/webapps +``` +* 启动服务 +```bash +cd /usr/local/tomcat/bin +./startup.sh +``` + +## Apache +一般系统中以及包含apache应用 +[官方下载地址](http://httpd.apache.org/download.cgi),选择需要的版本下载安装包 +>官方提供了`.bz2`,`.gz`两种格式安装包 + +### 安装 +查看系统中是否已包含httpd应用 +``` +rpm -qa | grep httpd 或 yum list | grep httpd +``` + +* 方式一 +```bash +# 1.下载需要的版本文件 +wget http://apache.claz.org//httpd/httpd-2.4.33.tar.gz +# 2.解压安装文件(解压到指定目录,常存放`/usr/local/httpd/`路径) +tar -zxvf httpd-2.4.33.tar.gz -C /usr/local/httpd/ +``` + +* 方式二(推荐) +```bash +# 1.下载安装httpd +yum install httpd +``` + +### 卸载 +```bash +yum erase httpd.x86_64 或 rpm -e httpd.x86_64 +``` + +### 常用命令 +```bash +# 查看服务运行状态 +systemctl status httpd.service +# 启动apache服务 +systemctl start httpd.service +# 停止apache服务 +systemctl stop httpd.service +``` + +RPM默认安装路径: + +| 路径 | 说明 | +| ---------- | --- | +| /etc | 一些设置文件放置的目录如/etc/crontab | +| /usr/bin | 一些可执行文件 | +| /usr/lib | 一些程序使用的动态函数库 | +| /usr/share/doc | 一些基本的软件使用手册与帮助文档 | +| /usr/share/man | 一些man page文件 | + +## Nginx +[官方下载地址](http://nginx.org/download),选择需要的版本下载安装包(最新安装版本1.14.0) +>官方提供了`.zip`,`.gz`两种格式安装包 + +### 安装 + +* 方式一 +```bash +# 1.下载安装文件 +wget http://nginx.org/download/nginx-1.14.0.tar.gz +# 2.解压安装文件(解压到指定目录,常存放`/usr/local/`路径) +tar -zxvf nginx-1.14.0.tar.gz -C /usr/local/ +# 3. 编译安装依赖库 +cd /usr/local/nginx/ +./configure +``` + +* 方式二 +```bash +# 默认安装路径/etc/nginx/ +yum install nginx +``` + +### 常用命令 +* 加压文件安装常用命令 +```bash +# 停止ngix +/usr/local/nginx/sbin/nginx -s quit +# 重新载入nginx(当配置信息发生修改时) +/usr/local/nginx/sbin/nginx -s reload +# 查看版本 +/usr/local/nginx/sbin/nginx -v +# 查看nginx的配置文件的目录 +/usr/local/nginx/sbin/nginx -t +# 查看帮助信息 +/usr/local/nginx/sbin/nginx -h +``` +* yum安装常用命令 +```bash +# 启动 +systemctl start nginx +# 停止 +systemctl stop nginx +# 重启 +systemctl restart nginx +# 查看运行状态 +systemctl status nginx +# 开机启动 +systemctl enable nginx +``` + +## Node +一般系统中以及包含apache应用 +[官方下载地址](https://nodejs.org),选择需要的版本下载安装包 +>官方提供了`.gz`,`.7z`,`zip`等多种格式安装包 + +### 安装 +```bash +# 1.下载安装文件 +wget https://nodejs.org/download/chakracore-release/v8.6.0/node-v8.6.0-linux-x64.tar.gz +# 2.解压安装文件(解压到当前目录) +tar -zxf node-v8.6.0-linux-x64.tar.gz +# 3.建立软链接,实现全局访问 +ln -s /root/node-v8.6.0-linux-x64/bin/node /usr/local/bin/node +ln -s /root/node-v8.6.0-linux-x64/bin/npm /usr/local/bin/npm +``` + +## Redis +[官方下载地址](https://redis.io/download),选择需要的版本下载安装包 +>官方提供了`.gz`格式安装包 + +### 安装 +```bash +# 1.下载安装文件 +wget wget http://download.redis.io/releases/redis-4.0.10.tar.gz +# 2.解压安装文件(解压到当前目录) +tar xzf redis-4.0.10.tar.gz +# 3.编译安装 +cd redis-4.0.10 +make +# 4.启动服务 +src/redis-server +``` + +## 配置 +```bash +# 1.修改redis.conf文件中daemonize属性 为 yes +vim /you_install_path/redis.conf +``` +> 其他配置根据自身需要调整修改 + +## 其他命令 +1. 关闭服务 +```bash +redis-cli -h 127.0.0.1 -p 6379 shutdown +``` +2. 非安全模式启动 +```bash +# 后台以非安全模式启动 +nohup /usr/local/bin/redis-server --protected-mode no & +``` + +## 常用命令 + +### 文件查找 +#### find +find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。 +* 基本格式: +find path expression +* 示例: + * 在根目录下查找文件httpd.conf,表示在整个硬盘查找 + find / -name httpd.conf + * 表示当前目录下查找文件名开头是字符串‘srm’的文件 + find . -name 'srm*' + * 查找在系统中最后10分钟访问的文件(access time) + find / -amin -10 + * 查找在系统中属于fred这个用户的文件 + find / -user fred + * 查找出小于1000KB的文件 + find / -size -1000k + +#### grep +grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。 +* 基本格式: +find expression +* 主要参数: + -c:只输出匹配行的计数。 + -i:不区分大小写 + -h:查询多文件时不显示文件名。 + -l:查询多文件时只输出包含匹配字符的文件名。 + -n:显示匹配行及行号。 + -s:不显示不存在或无匹配文本的错误信息。 + -v:显示不包含匹配文本的所有行。 +* 示例: + * 显示所有包含每行字符串至少有5个连续小写字符的字符串的行 + grep ‘[a-z]\{5\}’ aa + * 显示所有以d开头的文件中包含 test的行 + grep 'test' d* + +### 进程相关 +* 查看指定服务进程 +```bash +# 查看httpd服务进程 +ps -ef | grep httpd +# UID PID PPID C STIME TTY TIME CMD +# root 7192 7103 0 19:59 pts/3 00:00:00 grep --color=auto httpd +``` + {% note info %} + * UID:用户ID + * PID:进程ID + * PPID:父进程ID + * C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高 + * STIME:进程启动的时间 + * TTY:完整的终端名称 + * TIME:CPU时间 + * CMD:完整的启动进程所用的命令和参数 + {% endnote %} + +* 杀死指定进程 +```bash +kill -9 pid(逐个都删除) +``` +* 查看指定端口 +```bash +# 检测6379端口是否在监听 +netstat -lntp | grep 6379 +``` +> \ No newline at end of file diff --git a/source/_posts/linux-mysql.md b/source/_posts/linux-mysql.md new file mode 100644 index 000000000..04748313c --- /dev/null +++ b/source/_posts/linux-mysql.md @@ -0,0 +1,101 @@ +--- +title: Linux 之 MySQL +date: 2018-07-23 22:30:10 +categories: Linux +tag: MySQL +--- + +之前粗略的接触了Linux的基础使用和安装,这次准备在自购的服务器上跑些应用,纯属娱乐,废话不说,上来就先仍数据库。 +数据库常用的`Oracle`,`MySQL`,`SQL Server`,`MongoDB`等,排名不分先后,自己平时接触最多的也就是`MySQL`,`MongoDB`,好`MySQL`先来一份。 + +## 介绍 +MySQL是一个开源数据库管理系统,通常作为流行的LEMP(Linux,Nginx,MySQL / MariaDB,PHP / Python / Perl)堆栈的一部分安装。它使用关系数据库和SQL(结构化查询语言)来管理其数据。 + +[CentOS 7](https://www.centos.org)更喜欢[MariaDB](https://mariadb.org),它是由原始`MySQL`开发人员管理的`MySQL`分支,旨在替代MySQL。如果你在CentOS 7上运行`yum install mysql`,那么安装的是MariaDB,而不是MySQL。 + +## 清单 +* OS: CentOS 7 +* DataBase:MySQL 8.0.11 + +## 安装 + +```bash +# 1. 获取官方yum源安装包 mysql80-community-release-el7-1.noarch.rpm 是根据官网提供的版本信息 +wget wget https://dev.mysql.com/get/`mysql80-community-release-el7-1.noarch.rpm` +# 2. 安装rpm包 +rpm -ivh mysql80-community-release-el7-1.noarch.rpm +# 3. 安装mysql-server +yum install -y mysql-server +# 4. 启动mysqld服务 +systemctl start mysqld +# 5. 查看是否成功启动 +ps aux|grep mysqld +# 6. 设置mysqld服务开机自启动 +systemctl enable mysqld +``` + +## 配置 + +由于MySQL从5.7开始不允许在首次安装后,使用空密码进行登录,系统会随机生成一个密码以供管理员首次登录使用,这个密码记录在`/var/log/mysqld.log`文件中 + +```bash +# 1. 查看系统提供密码 +cat /var/log/mysqld.log|grep 'A temporary password' +# 2. 使用获取到的密码登录MySQL +mysql -u root -p +# 3. 切换数据库 +use mysql; +# 4. 修改root密码 your_password 替换成你自己的密码就可以了,这个密码是强密码,要求密码包含大小写字母、数字及标点符号,长度大于6 +alter user 'root'@'localhost' identified by 'your_password'; +``` + +## 链接 +自己平时习惯使用 [Navicat](https://www.navicat.com.cn) 进行数据库操作,因此这里进行配置链接已在云端刚刚安装的MySQL服务 +![linux-mysql](https://res.cloudinary.com/incoder/image/upload/v1532362215/blog/linux-mysql.png) +### ERROR 1130 +按照上图图的配置信息链接MySQL,发现错误提示:`ERROR 1130: Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server` + +#### 原因 +不允许从远程登陆MySQL服务,只能在localhost + +#### 解决方法 +```bash +# 切换数据库 +use mysql; +# 修改user 指定的host 为 % +update user set host = '%' where user = 'root'; +# 成功修改 ++-----------+------------------+ +| host | user | ++-----------+------------------+ +| % | root | +| localhost | mysql.infoschema | +| localhost | mysql.session | +| localhost | mysql.sys | ++-----------+------------------+ +4 rows in set (0.00 sec) +``` + +### ERROR 2059 +继续重试链接,错误提示:`ERROR 2059: Authentication plugin 'caching_sha2_password' cannot be loaded:The specified module could not be found.` + +#### 原因 +MySQL 8不支持动态修改密码验证方式 + +#### 解决方法 +```bash +# 停止mysql +systemctl stop mysqld.service +# my.cnf文件中默认有下面的语句,删除前面的#号即可,没有的话就把它添加到my.cnf中 ,默认路径`/etc/my.cnf` +default-authentication-plugin=mysql_native_password +# 切换数据库 +use mysql +# 给指定用户设置密码,这里`%`是因为之前已经将远程没有特殊指定,用%代替了localhost +ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password'; +``` + +## 附录 +* [安装过程Pdf]() +* [How To Install MySQL on CentOS 7](https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-centos-7) +* [ERROR 1130](https://blog.csdn.net/nyist327/article/details/45074559) +* [ERROR 2059](https://blog.csdn.net/airt_xiang/article/details/80261674) \ No newline at end of file diff --git a/source/_posts/memory-hs.md b/source/_posts/memory-hs.md new file mode 100644 index 000000000..c1755d56c --- /dev/null +++ b/source/_posts/memory-hs.md @@ -0,0 +1,34 @@ +--- +title: 忆·黄山 +date: 2018-05-01 00:02:00 +categories: Memory +tag: 黄山 +--- + +{% cq %}

      黄山归来不看岳

      {% endcq %} + +五岳未归,先品黄山。以前看黄山还是小学课本《黄山》一文介绍黄山的美,黄山的秀丽,黄山的与众不同,这次是亲身去体验黄山的姿态;趁着五一,趁着年轻,趁着...。废话不多讲,先看黄山日出美景 + +{% dplayer "url=https://res.cloudinary.com/incoder/video/upload/v1528018149/blog/video/HuangShan-Sunrise.mp4" "pic=https://res.cloudinary.com/incoder/image/upload/v1528024134/blog/travel/travel-huangshan-back.jpg" "loop=no" "theme=#FADFA3" "autoplay=false" "token=tokendemo" %} +>别问我为啥抖,没有支撑点,全程手持...逃 + +这次黄山之行并没有做任何功课,计划到实施前后不超过15天,抱着走一步,看一点的心态去玩,没想到五一节假日,来黄山的人不是很多。 + +## 出行方式 +杭州 **城西客运站** 做大巴直达黄山景区,票价:¥110,时间:大约4小时左右到达 +## 攻略 +逃,没有...... +由于到达黄山游客集散中心已是14:00,由于距离黄山还有10多公里,你可以走路去黄山山脚下,而且16:00之后没有大巴去黄山景区。因此随便找了个地吃完中午饭,就往乘大巴车黄山景区去了(¥12/人),由于上山的入口有好几个,我们也没有去研究,大巴到 **云谷寺** 景区,我们也就下车从这里出发往山上去了,你可以坐缆车去往山顶,我们一行三人,选择了徒步上山,对了门票:¥230/人 + +一路说说笑笑,也没有预订上山的旅店,我们心真大,刚走了没多久,就看到了两个人被交椅抬着下山了,其中一个应该是摔了,头破血流的样子,还没开始,就...;没多管,一路还是很轻松,毕竟都是年轻人,体力不错,走到 **白鹅岭** 已经开始下雨,雨越下越大,因为在边走边看的路上,我们决定来黄山当然是去 **迎客松** 的景点,然后我们顺着 **白鹅岭** 前往 **白鹅山庄旅游商场** 去避雨,然后是人多的无法挪开脚,此时天色已晚,我们稍作休息,找了半天也没有能睡得地,那床都是人挤人。我们找了个茶馆,吃了些带着的食品,喝了一小时茶,大约20:00左右,我们决定,今晚夜行到 **迎客松** + +雨后起了大雾,山顶那时雾色正浓,能见度大约在3米。我们三人也紧随其形,在 **光明顶** 片区玩了一会,这里看日出不错,当我们并没有这里等日出,毕竟这里离 **迎客松** 有一小时多的行程,我们要明天早早的在 **迎客松** 那里拍照装逼,拍完照然后回走去最高峰 **莲花峰** ,然而到了 **迎客松** 才发现,并不像电视上看到的,是在山的悬崖边。好了,这会才23:00多,怎么办,还有好几小时,又没有帐篷什么地可住,三人就在这 **迎客松** 前的广场上,发现了超大遮阳伞两把,哈哈哈,我们就用遮阳伞前后堵住,加上自己的雨伞,构建了一个堡垒,这下,我们三可用在里面睡觉了,雨后的山上很潮湿,就这样半将半究的,坚持到4点多。 + +天快要亮了,要找地儿去拍日出,我答应别人了,要发日出照片给她,往回走去 **莲花峰** 那里并不合适,更重要的是山路也被封,不上上去,只好找到 **玉屏索道** 的另一条路上,这里刚刚好可用看到日出 + +![日出](https://res.cloudinary.com/incoder/image/upload/v1528023909/blog/travel/travel-huangshan-sunrise.jpg) + +拍完日出,我们快速折回到 **迎客松** ,那里已经开始有三三两两的人了,我们动作要快,否则等会从索道上来大批人马,嗯,快速装逼完成,迅速撤离战场 + +![迎客松](https://res.cloudinary.com/incoder/image/upload/v1528023881/blog/travel/travel-huangshan-yks.jpg) + diff --git a/source/_posts/memory-hz1.md b/source/_posts/memory-hz1.md new file mode 100644 index 000000000..44feaa58b --- /dev/null +++ b/source/_posts/memory-hz1.md @@ -0,0 +1,20 @@ +--- +title: 品·杭州 +date: 2018-04-29 00:11:01 +categories: Memory +tag: 杭州 +--- + +上有天堂,下游苏杭,杭州,一个温文尔雅,一个记忆中天堂,一个南方姑娘的城市。 +杭州:毕业后的第二个城市,很开心在这样的城市生活,工作,结识这里的人,杭州和家乡的气候非常相似,因此在杭州有种在家的感觉,在这里遇到的的人,我都会记着你们美丽帅气的脸庞 + +18年是一个动荡的一年,一起的伙伴渐渐的离开了昔日的团队,这两年中,有的人毕业,有的人结婚,有的人生子,有的人成长,感谢我能成为你们生命中的一个过客,和你们一起经历生活百态 + +不管你们在何方,从事着什么样的工作,过着什么样的生活,我会想你们,愿你们的一切顺利 + +粗略的剪影,请异步[优酷](http://v.youku.com/v_show/id_XMzU4NTgyMDE0NA==.html?spm=a2hzp.8244740.0.0) + +{% note default %} +不遵守规则的人,我们叫他废物,但是,不珍惜同伴的人,连废物都不如 +——宁智波·带土 +{% endnote %} \ No newline at end of file diff --git a/source/_posts/movie-fierce.md b/source/_posts/movie-fierce.md new file mode 100644 index 000000000..f964d12b2 --- /dev/null +++ b/source/_posts/movie-fierce.md @@ -0,0 +1,22 @@ +--- +title: 《激战》 +date: 2018-10-03 00:02:00 +categories: Movie +tag: 黄山 +--- + +{% cq %}

      怕,你就会输一辈子

      {% endcq %} + +{% dplayer "url=https://vodkgeyttp8.vod.126.net/vodkgeyttp8/er2FM3CV_126646839_hd.mp4?wsSecret=1e98e23b7864a26fae93a384aad1bd3b&wsTime=1538906004" "pic=http://p1.music.126.net/w0PZ_MfRNkwDvBwWhjiCtQ==/109951163572827164.jpg" "loop=no" "theme=#FADFA3" "autoplay=false" "token=tokendemo" %} + +喜欢其中的一些台词,大伙共勉 +* 其实,我每次上台都很怕的,不过每次我都会跟自己说,我能做到 +* 这场比赛我可能会跌倒,但我一定会站起来 +* 怕,你就会输一辈子 + +自己的一些感触: +其实很多时候,道理都懂,但却不能坚持下去,但这些道理都在自己生活中一点点的用生活感悟出来,那这些道理会更浓烈,更让人刻骨铭心 +* 尊重和珍惜,那些愿意为你去花时间的人 +* 要和自己志同道合,有共同目标的伙伴去互相较劲 +* 从哪里跌倒就要从哪里爬起来 +* 一路跌跌撞撞走下去,中间的酸甜苦辣是最美的味道 \ No newline at end of file diff --git a/source/_posts/network-http.md b/source/_posts/network-http.md new file mode 100644 index 000000000..73b5461ac --- /dev/null +++ b/source/_posts/network-http.md @@ -0,0 +1,179 @@ +--- +title: Http VS Https +date: 2018-06-22 01:14:25 +categories: Network +tag: [Http,Https] +--- +## 基础名称 +### 请求报文 +客户端发送一个HTTP请求到服务器的请求消息包括以下格式: +请求行(request line)、请求头(header)、请求内容组成,如下请求报文的一般格式。 +![请求报文](https://user-gold-cdn.xitu.io/2018/4/16/162cdac93015af8f?imageView2/0/w/1280/h/960/format/webp/ignore-error/1) + +#### 请求行 +1. 方法: + * GET: 获取资源 + * POST: 向服务器端发送数据,传输实体主体 + * PUT: 传输文件 + * HEAD: 获取报文首部 + * DELETE: 删除文件 + * OPTIONS: 询问支持的方法 + * TRACE: 追踪路径 +2. URL: + `scheme://host:port/path?query` + * scheme: 表示协议,如Http, Https, Ftp等 + * host: 表示所访问资源所在的主机名:如:www.baidu.com + * port: 表示端口号,Http默认为80,Https默认为443 + * path: 表示所访问的资源在目标主机上的储存路径 + * query: 表示查询条件 + +3. 协议/版本号: + +#### 请求头 +1. 通用首部(General Header) +2. 请求首部(Request Header) +3. 实体首部(Entity Header Fields) + +#### 请求内容 +如: 客户端POST的数据就放在这里(对比:GET的数据放在请求行的URL里) + +例如: +![请求示例](https://res.cloudinary.com/incoder/image/upload/v1529805798/blog/http-request.png) + +### 响应报文 +服务端响应一个HTTP请求消息包括以下格式: +响应行(response line)、响应头(header)、响应内容组成 + +#### 响应行 +1. 状态码: + * 1XX:Informational(信息性状态码) + * 2XX:Success(成功状态码) + * 3XX:Redirection(重定向) + * 4XX:Client Error(客户端错误状态码) + * 5XX:Server Error(服务器错误状态吗) +2. 状态码描述: +3. 协议/版本号: + +#### 响应头 +1. 通用首部(General Header) +2. 响应首部(Response Header) +3. 实体首部(Entity Header Fields) + +#### 响应内容 +如:服务器返回的HTML、JSON等数据 + +![响应示例](https://res.cloudinary.com/incoder/image/upload/v1529805798/blog/http-response.png) + +## Http +### 概念 +* [HTTP](https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE):超文本传输协议(HyperText Transfer Protocol)是一种用于分布式、协作式和超媒体信息系统的应用层协议. +* HTTP是万维网的数据通信的基础. + +### 通信 +1. 建立TCP连接 +在HTTP工作开始之前,Client首先要通过网络与Service建立连接,该连接是通过TCP来完成的,HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行更高层协议的连接,因此,首先要建立TCP连接 +2. Client发起HTTP请求(Request) +Requset通常包含请求行,请求头,请求内容这三部风组成的请求报文 +3. Service发送HTTP响应(Response) +Response通常包含响应行,响应头,响应内容这三部风组成的响应报文 +4. Client关闭TCP连接 + +### 特点 +1. 无状态 + * 每个请求结束后都会被关闭,每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况 + * 服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器 +2. 明文传输,可能被窃听 +3. 不验证通信方的身份,可能遭遇伪装 + * HTTP 协议中的请求和响应不会对通信方进行确认。也就是说存在“服务器是否就是发送请求中 URI 真正指定的主机,返回的响应是否真的返回到实际提出请求的客户端”等类似问题 + * HTTP 协议通信时,由于不存在确认通信方的处理步骤,任何人都可以发起请求 +4. 无法证明报文的完整性,可能遭遇篡改 + * 在请求或响应送出之后直到对方接收之前的这段时间内,即使请求或响应的内容遭到篡改,也没有办法获悉 + +## Https +### 概念 +* [HTTPS](https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%AE%89%E5%85%A8%E5%8D%8F%E8%AE%AE):超文本传输安全协议(Hypertext Transfer Protocol Secure,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议. +* HTTPS经由HTTP进行通信,但利用`SSL/TLS`来加密数据包. + +> HTTP+加密+认证+完整性保护 = HTTPS + +![HTTP VS HTTPS](https://res.cloudinary.com/incoder/image/upload/v1529822573/HTTPS.png) + +### 通信 +#### SSL/TLS +SSL/TLS:安全传输层协议(Transport Layer Security), 是介于TCP和HTTP之间的一层安全协议,TLS的前身是SSL(Secure Sockets Layer) + +>TLS/SSL关系 +* SSL2.0 +* SSL3.0 +* TLS1.0(SSL3.1) +* TLS1.1(SSL3.2) +* TLS1.2(SSL3.3) + +#### SSL/TLS工作原理 +HTTPS协议的主要功能都依赖于SSL/TLS协议,SSL/TLS的功能实现主要依赖于三类算法:`对称加密`,`非对称加密`,`散列函数Hash` +* 非对称加密实现身份认证和密钥协商, +* 对称加密算法采用协商的密钥对数据加密, +* 基于散列函数验证信息的完整性 + +#### SSL/TLS协议实现 +TLS以记录协议(record protocol)实现。记录协议负责在传输连接上交换所有的底层消息,并可以配置加密。每一条TLS记录以一个短标头起始。标头包含记录内容的类型(或子协议)、协议版本和长度 + +TLS的主规格说明书定义了四个核心子协议: + +* 握手协议(handshake protocol); +* 密钥规格变更协议(change cipher spec protocol); +* 应用数据协议(application data protocol); +* 警报协议(alert protocol); + +#### 握手协议 +握手是TLS协议中最精密复杂的部分。在这个过程中,通信双方协商连接参数,并且完成身份验证。根据使用的功能的不同,整个过程通常需要交换6~10条消息。根据配置和支持的协议扩展的不同,交换过程可能有许多变种,在使用中经常可以观察到以下三种流程: +* 单向验证(完整的握手,对服务器进行身份验证) +* 双向验证(对客户端和服务器都进行身份验证的握手) +* 简短握手(恢复之前的会话) + +##### 单向验证 +![单向验证](https://blog-10039692.file.myqcloud.com/1494841223417_6503_1494841223715.png) +1. Handshake:ClentHello +客户端通过发送 Client Hello 报文开始 SSL通信。报文中包含客户端支持的 SSL的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法及密钥长度等)。 +2. Handshake:ServerHello +服务器可进行 SSL通信时,会以 ServerHello 报文作为应答。和客户端一样,在报文中包含 SSL版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。 +3. Handshake:Certificate +之后服务器发送 Certificate 报文。报文中包含公开密钥证书。 +4. Handshake:ServerHelloDone +最后服务器发送 ServerHelloDone 报文通知客户端,最初阶段的 SSL握手协商部分结束。 +5. Handshake:ClientKeyExchange +SSL第一次握手结束之后,客户端以 ClientKeyExchange 报文作为回应。报文中包含通信加密中使用的一种被称为 Pre-mastersecret 的随机密码串。该报文已用3 中的公开密钥进行加密。 +6. ChangeCipherSpec +接着客户端继续发送 ChangeCipherSpec 报文。该报文会提示服务器,在此报文之后的通信会采用 Pre-master secret 密钥加密。 +7. Handshake:Finished +客户端发送 Finished 报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。 +8. ChangeCipherSpec +服务器同样发送 ChangeCipherSpec 报文。 +9. Handshake:Finished +服务器同样发送 Finished 报文。 +10. Application Data(HTTP) +服务器和客户端的 Finished 报文交换完毕之后,SSL连接就算建立完成。当然,通信会受到 SSL的保护。从此处开始进行应用层协议的通信,即发送 HTTP 请求。 +11. Application Data(HTTP) +应用层协议通信,即发送 HTTP 响应。 +12. Alert:warning,close notify +最后由客户端断开连接。断开连接时,发送 close_notify 报文(上图做了一些省略,实际到这一步还需要发送TCP FIN报文关闭TCP链接) + +##### 双向验证 +![双向验证](https://blog-10039692.file.myqcloud.com/1494841503771_6933_1494841504095.png) +同单向验证流程相比,双向验证多了如下两条消息:`CertificateRequest`与`CertificateVerify`,其余流程大致相同 +* CertificateRequest +CertificateRequest是TLS规定的一个可选功能,用于服务器认证客户端的身份。通过服务器要求客户端发送一个证书实现,服务器应该在ServerKeyExchange之后立即发送CertificateRequest消息 +* CertificateVerify +当需要做客户端认证时,客户端发送CertificateVerify消息,来证明自己确实拥有客户端证书的私钥。这条消息仅仅在客户端证书有签名能力的情况下发送 + +#### 应用数据协议(application data protocol) +应用数据协议携带着应用消息,只以TLS的角度考虑的话,这些就是数据缓冲区。记录层使用当前连接安全参数对这些消息进行打包、碎片整理和加密 + +#### 警报协议(alert protocol) +警报的目的是以简单的通知机制告知对端通信出现异常状况。它通常会携带close_notify异常,在连接关闭时使用,报告错误 + +## 附录 +* 《图解HTTP》 +* [HTTP | MDN](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Overview) +* [数字证书及CA的扫盲介绍](https://kb.cnblogs.com/page/194742) +* [HTTPS 原理浅析及其在 Android 中的使用](https://cloud.tencent.com/developer/article/1005073) \ No newline at end of file diff --git a/source/_posts/network-okhttp1.md b/source/_posts/network-okhttp1.md new file mode 100644 index 000000000..119b7ef10 --- /dev/null +++ b/source/_posts/network-okhttp1.md @@ -0,0 +1,286 @@ +--- +title: Network(一) 之OkHttp 入门 +date: 2018-06-23 12:44:25 +categories: Network +tag: OkHttp +--- + +自从Android4.4的源码中可以看到`HttpURLConnection`已经替换成`OkHttp`开始( [JakeWharton曾在Twitter表示](https://twitter.com/JakeWharton/status/482563299511250944) ) ,`OkHttp`+`Retrofit`+`RxJava`的组合网络请求一直经久不衰,主流app的网络架构基本都是这样的组合模式,存在即合理,说明`OkHttp`+`Retrofit`+`RxJava`的方式确实给开发,用户体验等带来可观的优势,那么这个系列文章围绕Android的网络展开. + +OkHttp:An HTTP & HTTP/2 client for Android and Java applications + +>Android 历史网络库 +* `HttpClient` 是 Apache 提供的HTTP网络访问接口,从一开始的时候就被引入到了Android的API中; +* `HttpURLConnection` 是一种多用途, 轻量极的HTTP客户端, 提供的API比较简单, 可以容易地去使用和扩展. + +## OkHttp优势 +* 支持HTTP/2, HTTP/2通过使用多路复用技术在一个单独的TCP连接上支持并发, 通过在一个连接上一次性发送多个请求来发送或接收数据 +* 如果HTTP/2不可用, 连接池复用技术也可以极大减少延时 +* 支持GZIP, 可以压缩下载体积 +* 响应缓存可以直接避免重复请求 +* 会从很多常用的连接问题中自动恢复 +* 如果您的服务器配置了多个IP地址, 当第一个IP连接失败的时候, OkHttp会自动尝试下一个IP +* OkHttp还处理了代理服务器问题和SSL握手失败问题,等等... + +## 基本使用 +该系列版本说明 +* OkHttp版本统一:**3.10.0** +* JDK:**1.8+** + +Gradle包导入 +```groovy +// okhttp核心库 +implementation 'com.squareup.okhttp3:okhttp:3.10.0' +// okhttp网络请求拦截日志库 +implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0' +``` +### OkHttp请求 +已在[Http VS Https](https://incoder.org/2018/06/22/network-http/#%E8%AF%B7%E6%B1%82%E6%8A%A5%E6%96%87)文章中介绍了,HTTP请求相关内容 + +### OkHttp响应 +已在[Http VS Https](https://incoder.org/2018/06/22/network-http/#%E5%93%8D%E5%BA%94%E6%8A%A5%E6%96%87)文章中介绍了,HTTP响应相关内容 + +## 同步与异步 +`同步`和`异步`关注的是消息通信机制 (synchronous communication/ asynchronous communication) +### 同步 +就是在发出一个 **调用** 时,在没有得到结果之前,该 **调用** 就不返回,但是一旦调用返回,就得到返回值了。 +换句话说,就是由 **调用者** 主动等待这个 **调用** 的结果。 +Okhttp同步(`execute()`):Invokes the request immediately, and blocks until the response can be processed or is in error. + +```java +OkHttpClient client = new OkHttpClient(); + +String run(String url) throws IOException { + Request request = new Request.Builder().url(url).build(); + // 执行同步操作 + Response response = client.newCall(request).execute(); + if (response.isSuccessful()) { + return response.body().string(); + } else { + throw new IOException("Unexpected code " + response); + } +} +``` +### 异步 +**异步** 则与同步相反,**调用** 在发出之后,这个调用就直接返回了,所以没有返回结果。 +换句话说,当一个异步过程调用发出后,**调用者** 不会立刻得到结果。而是在 **调用** 发出后,**被调用者** 通过状态、通知来通知 **调用者**,或通过回调函数处理这个调用。 +Okhttp同步(`enqueue(Callback responseCallback)`):Schedules the request to be executed at some point in the future. + +```java +String url = "https://api.github.com/users/BladeCode"; +OkHttpClient client = new OkHttpClient(); + +Request request = new Request.Builder().url(url).build(); +// 返回response 对象 +Response response = client.newCall(request).enqueue(new Callback() { + + @Override + public void onFailure(Call call, IOException e) { + System.out.println(e.toString()); + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + // 字符串形式表达响应 + System.out.println(response.body().string()); + // 或流的形式表达响应 + System.out.println(response.body().charStream()); + System.out.println(response.body().byteStream()); + } +}); +``` +>注意: +* 响应体太大(超过1MB), 应避免使用 string()方法, 因为它会将把整个文档加载到内存中. +* 对于超过1MB的响应body, 应使用流的方式来处理响应body. 这和我们处理xml文档的逻辑是一致的, 小文件可以载入内存树状解析, 大文件就必须流式解析 + +## OkHttp Get +```java +OkHttpClient client = new OkHttpClient(); + +String run(String url) throws IOException { + Request request = new Request.Builder().url(url).build(); + Response response = client.newCall(request).execute(); + + if (response.isSuccessful()) { + return response.body().string(); + } else { + throw new IOException("Unexpected code " + response); + } +} +``` + +## OkHttp Post +```java +public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); + +OkHttpClient client = new OkHttpClient(); + +String post(String url, String json) throws IOException { + RequestBody body = RequestBody.create(JSON, json); + Request request = new Request.Builder() + .url(url) + .post(body) + .build(); + + Response response = client.newCall(request).execute(); + + if (response.isSuccessful()) { + return response.body().string(); + } else { + throw new IOException("Unexpected code " + response); + } + +} +``` + +### 提交String +```java +public static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown; charset=utf-8"); + +private final OkHttpClient client = new OkHttpClient(); + +public void run() throws Exception { + String postBody = "" + + "Releases\n" + + "--------\n" + + "\n" + + " * _1.0_ May 6, 2013\n" + + " * _1.1_ June 15, 2013\n" + + " * _1.2_ August 11, 2013\n"; + + Request request = new Request.Builder() + .url("https://api.github.com/markdown/raw") + .post(RequestBody.create(MEDIA_TYPE_MARKDOWN, postBody)) + .build(); + + Response response = client.newCall(request).execute(); + if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); + + System.out.println(response.body().string()); +} +``` +> 注意:当提交数据大于1MB,请使用流的方式 + +### 提交流 +```java +public static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown; charset=utf-8"); + +private final OkHttpClient client = new OkHttpClient(); + +public void run() throws Exception { + RequestBody requestBody = new RequestBody() { + @Override + public MediaType contentType() { + return MEDIA_TYPE_MARKDOWN; + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + sink.writeUtf8("Numbers\n"); + sink.writeUtf8("-------\n"); + for (int i = 2; i <= 997; i++) { + sink.writeUtf8(String.format(" * %s = %s\n", i, factor(i))); + } + } + + private String factor(int n) { + for (int i = 2; i < n; i++) { + int x = n / i; + if (x * i == n) return factor(x) + " × " + i; + } + return Integer.toString(n); + } + }; + + Request request = new Request.Builder() + .url("https://api.github.com/markdown/raw") + .post(requestBody) + .build(); + + Response response = client.newCall(request).execute(); + if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); + + System.out.println(response.body().string()); +} +``` + +### 提交文件 +```java +public static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown; charset=utf-8"); + +private final OkHttpClient client = new OkHttpClient(); + +public void run() throws Exception { + File file = new File("README.md"); + + Request request = new Request.Builder() + .url("https://api.github.com/BladeCode/raw") + .post(RequestBody.create(MEDIA_TYPE_MARKDOWN, file)) + .build(); + + Response response = client.newCall(request).execute(); + if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); + + System.out.println(response.body().string()); +} +``` + +### 提交表单 +使用`FormEncodingBuilder`来构建和HTML标签相同效果的请求体。键值对将使用一种HTML兼容形式的URL编码来进行编码 + +```java +private final OkHttpClient client = new OkHttpClient(); + +public void run() throws Exception { + RequestBody formBody = new FormEncodingBuilder() + .add("search", "Jurassic Park") + .build(); + Request request = new Request.Builder() + .url("https://en.wikipedia.org/w/index.php") + .post(formBody) + .build(); + + Response response = client.newCall(request).execute(); + if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); + + System.out.println(response.body().string()); +} +``` + +### 提交分块请求 +`MultipartBuilder`可以构建复杂的请求体,与HTML文件上传形式兼容。多块请求体中每块请求都是一个请求体,可以定义自己的请求头。这些请求头可以用来描述这块请求,例如他的`Content-Disposition`。如果`Content-Length`和`Content-Type`可用的话,他们会被自动添加到请求头中。 + +```java +private static final String IMGUR_CLIENT_ID = "..."; +private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png"); + +private final OkHttpClient client = new OkHttpClient(); + +public void run() throws Exception { + // Use the imgur image upload API as documented at https://api.imgur.com/endpoints/image + RequestBody requestBody = new MultipartBuilder() + .type(MultipartBuilder.FORM) + .addPart( + Headers.of("Content-Disposition", "form-data; name=\"title\""), + RequestBody.create(null, "Square Logo")) + .addPart( + Headers.of("Content-Disposition", "form-data; name=\"image\""), + RequestBody.create(MEDIA_TYPE_PNG, new File("website/static/logo-square.png"))) + .build(); + + Request request = new Request.Builder() + .header("Authorization", "Client-ID " + IMGUR_CLIENT_ID) + .url("https://api.imgur.com/3/image") + .post(requestBody) + .build(); + + Response response = client.newCall(request).execute(); + if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); + + System.out.println(response.body().string()); +} +``` + +## 附录 +* [怎样理解阻塞非阻塞与同步异步的区别](https://www.zhihu.com/question/19732473) +* [OkHttp使用教程](http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0106/2275.html) \ No newline at end of file diff --git a/source/_posts/rap1.md b/source/_posts/rap1.md new file mode 100644 index 000000000..c157095c2 --- /dev/null +++ b/source/_posts/rap1.md @@ -0,0 +1,76 @@ +--- +title: Api 文档管理系统 RAP1环境搭建 +date: 2018-03-27 10:19:25 +categories: Api +tag: RAP +--- + +前后端分离的路上,一款强大的API管理工具,可以降低沟通成本,大大提高开发效率,节省的时间,我们来做更有意义的事情。 + +API管理工具又很多,选择适合自身需求的就是最好 + +这里以[阿里妈妈](https://thx.github.io)出品的[RAP](https://thx.github.io/RAP)产品;目前RAP分为: ~~[RAP1](https://github.com/thx/RAP)~~,[RAP2](https://github.com/thx/rap2-delos) + +>虽然RAP1不再添加新功能,只做维护工作,介于RAP2目前还不是很成熟,本篇文章先讲RAP1的搭建过程(虽然官方[Wiki](https://github.com/thx/RAP/wiki)已经有很详细的部署教程,但在部署过程中还是遇到一些问题,因此就记录下来) + +如果你不需要搭建,可以直接访问RAP1提供的服务[http://rapapi.org](http://rapapi.org) + +## 项目构建 + +* 安装环境:Windows 10 x64 +* 准备工具:[Git](https://git-scm.com/downloads),[IDEA](https://www.jetbrains.com/idea/download),[JDK1.8+](https://www.java.com/zh_CN/download/manual.jsp),[Tomcat8*](https://tomcat.apache.org/download-80.cgi),[MySQL](https://www.mysql.com/cn/downloads),[Redis3+](https://redis.io/download) + +这里Git,IDEA,JDK1.8,Tomcat8*,MySQL不再赘述安装步骤以及环境配置 + +### 安装基本工具 +#### Redis +由于Redis 官方并未支持Windows系统,因此借助MicrosoftArchive团队所提供的[Windows Redis安装包](https://github.com/MicrosoftArchive/redis/releases),这里下载最新的`Redis-x64-3.2.100.msi` + +* 以管理员身份运行安装包`Redis-x64-3.2.100.msi` + 1. 添加环境变量 + ![env](https://res.cloudinary.com/incoder/image/upload/v1525517089/blog/gitpages-redis-env-var.png) + 2. 默认`6379`端口 + ![port](https://res.cloudinary.com/incoder/image/upload/v1525517270/blog/gitpages-redis-port.png) + 3. 检查Redis服务,是否已经启动 + ![serve](https://res.cloudinary.com/incoder/image/upload/v1525517284/blog/gitpages-redis-serve.png) + + >其他默认即可,不要设置Memory Limit + +## 构建项目 +### 获取源代码 +```sh +git clone git@github.com:thx/RAP.git +git checkout release +``` + +>确保您正确的切换到release分支,否则会出现少包,因为master分支引用一些不对外公开的内部组件,不提供给外部用户使用 +### 导入到IDEA +IDEA==>Open==>RAP + +### 初始化数据库 +执行脚本文件:RAP\src\main\resources\database\\`initialize.sql` + +### 修改配置文件 +文件:RAP\src\main\resources\database\\`config.properties` +修改:数据库`用户名`及`密码` +![update](https://res.cloudinary.com/incoder/image/upload/v1525517302/blog/gitpages-rap1-update-database-config.png) +## 启动项目 +1. Edit config +![config](https://res.cloudinary.com/incoder/image/upload/v1525517326/blog/gitpages-rap1-tomcat-config.png) +2. Create Tomcat +![create](https://res.cloudinary.com/incoder/image/upload/v1525517350/blog/gitpages-rap1-tomcat-create.png) +3. Deploy war +![deploy](https://res.cloudinary.com/incoder/image/upload/v1525517364/blog/gitpages-rap1-tomcat-deploy.png) +4. Deploy success +![success](https://res.cloudinary.com/incoder/image/upload/v1525517384/blog/gitpages-rap1-deploy-success.png) + +注意成功部署后,请`注册`新账号登录 + +至此,RAP1的本机部署已经完成。 + +## 其他 +* [RAP1学习中心](http://thx.github.io/RAP/study.html) + 部分同学无法查看视频,请异步至[issues](https://github.com/thx/RAP/issues/935) +* [RAP1 Wiki](https://github.com/thx/RAP/wiki)文档 +* [Mockjs](http://mockjs.com) +* [RAP2环境搭建教程](https://www.incoder.org/2018/03/27/rap2) \ No newline at end of file diff --git a/source/_posts/rap2.md b/source/_posts/rap2.md new file mode 100644 index 000000000..322007e22 --- /dev/null +++ b/source/_posts/rap2.md @@ -0,0 +1,238 @@ +--- +title: Api 文档管理系统 RAP2环境搭建 +date: 2018-03-27 10:20:10 +update: 2018-08-01 22:10:11 +categories: Api +tag: RAP +--- + +RAP2是采用前后端分离的形式,因此搭建完整的RAP2需要 **服务端:**[rap2-delos](https://github.com/thx/rap2-delos),**客户端:**[rap2-dolores](https://github.com/thx/rap2-dolores) 同时部署 + +部署RAP2需要亲具有Node+Linux+MySQL的运维知识,如果亲对此不是很了解,建议用[http://rap2.taobao.org](http://rap2.taobao.org) 线上版本就可以 + +由于 **客户端:**[rap2-dolores](https://github.com/thx/rap2-dolores) 是建立在 **服务端:**[rap2-delos](https://github.com/thx/rap2-delos) 基础上,因此先搭建服务端应用 + +> * 截至到2018-08-01 delos 并没有发布Tag版本,应该还处于功能开发前期阶段吧。本教程是在CentOS机器上实战部署 +> * 然而安装部署并不是顺利,因此记录踩过的坑(别问我为啥不用Docker,因为我司分配的机器无法满足Docker的最低内核版本),安装环境介绍:Redis,delos,dolores均在一台服务器,MySQL使用已存在的服务 + +## 安装基本工具 +* [Git](https://git-scm.com/downloads) +* [Node 8.9.4+](https://nodejs.org/zh-cn/download) +* [Redis 4.0+](https://redis.io/download) +* [MySQL 5.7+](https://www.mysql.com/cn/downloads) + +以上基本工具请根据自身需要,下载对应系统安装包,请自行解决安装配置等问题,这里不做过多说明 + +> Redis 安装可参考[Linux 常用应用安装](https://incoder.org/2018/05/15/linux-build); +Redis 最好用非安全模式启动 + +## 服务端delos环境搭建 + +### 构建项目 + +> 构建项目前,请确认Node,Redis,MySQL服务均能正常使用 + +``` sh +git clone https://github.com/thx/rap2-delos.git +``` + +### 环境配置 + +#### 创建数据库 + +* Mac or Linux + ```sql + mysql -e 'CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci'; + ``` +* Windows 环境 + + 进入mysql命令后执行 + ```sql + CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci; + ``` +#### 配置文件 + +目录:rap2-delos/src/config +文件:`config.dev.ts`;其中dev,表示开发环境,其他同理 +修改:`config.dev.ts`文件中`db`对象中`username`,`password`参数与**本地**或者**开发环境**的数据库信息匹配 + +### 启动项目 + +#### 安装项目依赖包 + +项目根目录下执行 + +```sh +# 安装项目所需依赖 +npm install +# 全局安装PM2 +npm install -g pm2 +``` + +#### 安装TypeScript编译包 + +```sh +npm install typescript -g +``` + +> 如果下载缓慢,请使用[淘宝npm镜像](https://npm.taobao.org) + +#### 初始化数据库 + +项目根目录下执行(该过程比较慢,耐心等待初始化完成) + +```npm +npm run create-db +``` + +#### 编译启动项目 +执行mocha测试用例和js代码规范检查 +```sh +npm run check +``` + +* 开发模式 +启动开发模式的服务器 监视并在发生代码变更时自动重启(第一次运行比较慢,请耐心等待) + ```sh + npm run dev + ``` +* 生产模式 + 启动生产模式服务器 + ```sh + npm start + ``` + +看到浏览器中如下提示,表示**服务端delos**已经部署成功 +>RAP2后端服务已启动,请从前端服务(rap2-dolores)访问。 RAP2 back-end server is started, please visit via front-end service (rap2-dolores). + +或者在程序控制台出现如下Log,表示**服务端delos**已经部署成功 +![delos](https://res.cloudinary.com/incoder/image/upload/v1525517437/blog/gitpages-rap2-delos-success.png) + +### 常见问题 + +#### 部署问题 +1. Windows下执行`npm run build`,提示`'rm' 不是内部或外部命令,也不是可运行的程序或批处理文件` + + 原因:`rm` 是Linux下命令, + 解决方法:Windows系统可使用 `git bash` 打开该项目,执行该命令 + +2. 执行`npm run create-db`命令,提示`Unable to connect to the database:{ SequelizeAccessDeniedError: Access denied for user 'root'@'localhost' (using password:NO)}` + + 原因:未修改`rap2-delos/src/config`目录下数据库配置文件,或者是与文件中的数据库信息与之连接的数据库信息不匹配 + 解决方法:修改`config.dev.ts`文件数据库配置信息 + >如果修改正确无误后,执行`npm run create-db`依旧出错,那么查看该项目中是否已经存在`dist`目录,如果有,请按照如上修改对应的数据库配置信息 +3. 执行`npm run dev`命令,提示`Error: listen EADDRINUSE :::8080` + 原因:8080端口被占用 + 解决方法:杀掉占用8080端口的应用 +4. 执行`npm install` 命令,提示`hiredis` 编译无法通过 + 原因:无权限操作`rap2-delos/node_modules/hiredis`路径 + 解决方法:`sudo npm install` + > 如果提示`sudo: npm: command not found`,请参考[stackoverflow-npm](https://stackoverflow.com/questions/31472755/sudo-npm-command-not-found),[stackoverflow-node](https://stackoverflow.com/questions/4976658/on-ec2-sudo-node-command-not-found-but-node-without-sudo-is-ok) +5. 执行`npm run dev`可以正常启动,`npm start`命令无法正常启动服务 + 原因:请使用`pm2 logs`查看日志具体定位 + 示例:由于Redis的安全模式,不能正常使用 + ```bash + ReplyError: Ready check failed: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: + + 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. + 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. + 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. + 4) Setup a bind address or an authentication password. + NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside. + ``` + 解决方法: 使用`--protected-mode no`方式启动 + +## 客户端dolores环境搭建 + +### 构建项目 +#### 获取源代码 +``` sh +git clone https://github.com/thx/rap2-dolores.git +``` + +### 环境配置 + +#### 配置文件 + +目录:rap2-dolores/src/config +文件:`config.dev.ts`;其中dev,表示开发环境,其他同理 +修改:`config.dev.ts`文件,`serve`地址是 **服务端** `rap2-delos` 部署成功后的地址,默认:`'http://localhost:8080'` + +### 启动项目 + +#### 安装项目依赖包 + +项目根目录下执行 + +```sh +npm install +``` + +> 如果下载缓慢,请使用[淘宝npm镜像](https://npm.taobao.org) + +#### 编译启动项目 + +* 开发模式 +自动监视改变后重新编译 + ```sh + npm run dev + ``` + 备注:测试用例 + ```sh + npm run test + ``` +* 生产模式 +编译React生产包 + ```sh + npm run build + ``` + 用serve命令或nginx服务器路由到编译产出的build文件夹作为静态服务器即可 + ```sh + serve -s ./build -p 80 + ``` + +看到浏览器中出现登录页面,表示部署成功 +![dolores](https://res.cloudinary.com/incoder/image/upload/v1525517454/blog/gitpages-rap2-dolores-success.png) + +### 常见问题 + +#### 部署问题 +1. 执行`npm run dev`,提示 + ```sh + return process.dlopen(module,path._makeLong(filename)) + ... + ...node_modules\node-sass\vendor\win32-x64-57\binding.node is not a valid Win32 application... + ``` + + 原因:项目依赖包`node-sass`没有安装完全 + 解决方法:`npm install node-sass` + +2. 项目运行起来,但一直停留在加载动画那里 + + 浏览器控制台输出: + `GET http://127.0.0.1:8080/account/info ==>> + Failed to load http://127.0.0.1:8080/account/info` + + 原因:未修改`rap2-delos/src/config`目录下服务端连接地址,或者修改结果与[rap2-dolores](https://github.com/thx/rap2-dolores)实际提供服务地址不匹配 + 解决方法:修改`config.dev.ts`文件serve配置信息 + >如果Windows系统修改正确无误后,依旧出错,那么查看hosts(路径:C:\Windows\System32\drivers\etc)中127.0.0.1的IP前是否有`#`,如果有请取消注释 + +## 其他 +### MySQL 运行问题 +* 错误一 +![mysql](https://res.cloudinary.com/incoder/image/upload/v1525517475/blog/gitpages-rap2-mysql.png) +原因:MySQL 集成命令没有加入系统的环境变量 +解决方法:将安装的MySQL Service路径加入系统变量 +![path](https://res.cloudinary.com/incoder/image/upload/v1525517495/blog/gitpages-rap2-mysql-path.png) +* 错误二 +![create](https://res.cloudinary.com/incoder/image/upload/v1525517523/blog/gitpages-rap2-mysql-create.png) +原因:没有数据库链接权限 +解决方法:先登录用root数据库,密码具体看自己数据库当时设置的密码 + +### 如何获取更新 +目前请选择`master`分支源码,后续其他分支请看相应分支说明文档。在开发环境中git pull来获取最新的源码更新,每一期更新都会有对应的update.md请关注并按照上面的指示进行升级工作。 + +## 附录 +* [redis如何后台启动](https://blog.csdn.net/ksdb0468473/article/details/52126009) +* [Redis配置文件介绍](http://www.cnblogs.com/ysocean/p/9074787.html) +* [PM2实用入门指南](https://www.cnblogs.com/chyingp/p/pm2-documentation.html) \ No newline at end of file diff --git a/source/_posts/realm.md b/source/_posts/realm.md new file mode 100644 index 000000000..e36d12b0d --- /dev/null +++ b/source/_posts/realm.md @@ -0,0 +1,193 @@ +--- +title: Realm 数据库快速上手 +date: 2018-04-24 01:11:10 +categories: DataBase +tag: Realm +--- + +![realm-db](https://res.cloudinary.com/incoder/image/upload/v1525517554/blog/gitpages-realm-mobile-db.png) +Android 供了多种选项来保存永久性应用数据。 +* [Shared preferences](https://developer.android.google.cn/guide/topics/data/data-storage.html?hl=zh-cn#pref) +* [Internal file storage](https://developer.android.google.cn/guide/topics/data/data-storage.html?hl=zh-cn#filesInternal) +* [External file storage](https://developer.android.google.cn/guide/topics/data/data-storage.html?hl=zh-cn#filesExternal) +* [Databases](https://developer.android.google.cn/guide/topics/data/data-storage.html?hl=zh-cn#db) +* [Network](https://developer.android.google.cn/guide/topics/data/data-storage.html?hl=zh-cn#netw) + +其中数据库存储是一种必备技能,而衍生的mobile db也是层出不穷,本节主要介绍全平台(除Android,iOS,macOS外还支持web,桌面应用)[Realm](https://realm.io)数据库在Android上的使用 + +## 快速上手 + +* [Android Studio 1.5.1+](https://developer.android.google.cn/studio/index.html?hl=zh-cn) +* JDK1.7+ +* Android API 9+ +* Realm 默认情况下使用内部存储(internal storage),一般来说,这个文件位于`/data/data//files/`,文件名:`default.realm` + +### 集成 + +* 在项目的 build.gradle 文件中添加如下 class path 依赖 +```groovy +buildscript { + repositories { + jcenter() + } + dependencies { + classpath "io.realm:realm-gradle-plugin:5.0.0" + } +} +``` +* 在 app 的 build.gradle 文件中应用 realm-android 插件 +```groovy +apply plugin: 'realm-android' +``` + +### 初始化 +* 默认初始化 +```java +public class MyApplication extends Application { + @Override + public void onCreate() { + super.onCreate(); + // 默认Realm的配置文件 + Realm.init(this); + } +} +``` +* 自定义初始化 +```java +public class MyApplication extends Application { + @Override + public void onCreate() { + super.onCreate(); + // 自定义配置Realm + initRealm(); + } + + private void initRealm() { + RealmConfiguration config = new RealmConfiguration.Builder() + .name("myrealm.realm") // 命名文件名:myrealm.realm + .inMemory() // 一个非持久化的、存在于内存中的 Realm 实例 + .encryptionKey(getKey()) // 数据库加密key + .schemaVersion(2) // 数据库结构版本号 + .modules(new MySchemaModule()) // 数据库结构对象 + .migration(new MyMigration()) // 数据库迁移 + .build(); + Realm.setDefaultConfiguration(config); + } +} +``` +> 1. Realm 实例是线程单例化的,也就是说多次在同一线程调用静态构建器会返回同一 Realm 实例 +2. 使用同样的名称同时创建“内存中的”Realm 和常规的(持久化)Realm 是不允许的 + +### 字段类型 +Realm 支持以下字段类型:`boolean`、`byte`、`short`、`int`、`long`、`float`、`double`、`String`、`Date`和`byte []`。整数类型 `short`、`int` 和 `long` 都被映射到 Realm 内的相同类型(实际上为 `long` )。 + +* @Required修饰类型和空值(null) + >Realm强制禁止空值(null)被存储 + 只有`Boolean`,`Byte`,`Short`,`Integer`,`Long`,`Float`,`Double`,`String`,`byte[]`,`Date`可被修饰 +* @Ignore标识一个字段不应该被保存到 Realm +* @Index为字段增加搜索索引 + > 仅支持索引的属性类型包括:`String`,`byte`,`short`,`int`,`long`,`boolean`和`Date` +* @PrimaryKey + > 必须为字符串(`String`)或整数(`short`,`int`,`long`)以及它们的包装类型(`Short`,`Int`,`Long`) + +### 声明Realm数据模型 + +#### RealmObject +可以把RealmObject 当作POJO使用 + +```java +public class User extends RealmObject { + +} +``` + +#### RealmModel +```java +@RealmClass +public class User implements RealmModel { + +} +``` + +### 关系 + +#### 多对一 +```java +public class Contact extends RealmObject { + private Email email; + // Other fields… +} + +public class Email extends RealmObject { + private String address; + private boolean active; + // ... setters and getters left out +} +``` + +#### 多对多 + +```java +public class Contact extends RealmObject { + public String name; + public RealmList emails; +} + +public class Email extends RealmObject { + public String address; + public boolean active; +} +``` + +### CRUD +* 所有的写操作(添加、修改和删除对象),必须包含在写入事务(transaction)中 +* 在提交期间,所有更改都将被写入磁盘,并且,只有当所有更改可以被持久化时,提交才会成功。通过取消一个写入事务,所有更改将被丢弃。 +* 益于 Realm 的 MVCC 架构,当正在进行一个写入事务时读取操作并不会被阻塞!这意味着,除非你需要从多个线程进行并发写入操作,否则,你可以尽量使用更大的写入事务来做更多的事情而不是使用多个更小的写入事务。 + +#### 增 +* +* 事务执行 +```java +Realm realm = Realm.getDefaultInstance(); +realm.executeTransaction(new Realm.Transaction() { + @Override + public void execute(Realm realm) { + User user = realm.createObject(User.class); + user.setName("John"); + user.setEmail("john@corporation.com"); + } +}); +``` +* 异步事务 +```java +Realm realm = Realm.getDefaultInstance(); +realm.executeTransactionAsync(new Realm.Transaction() { + @Override + public void execute(Realm bgRealm) { + User user = bgRealm.createObject(User.class); + user.setName("John"); + user.setEmail("john@corporation.com"); + } +}, new Realm.Transaction.OnSuccess() { + @Override + public void onSuccess() { + // Transaction was a success. + } +}, new Realm.Transaction.OnError() { + @Override + public void onError(Throwable error) { + // Transaction failed and was automatically canceled. + } +}); +``` + +>OnSuccess 和 OnError 并不是必须重载的,重载了的回调函数会在事务成功或者失败时在被调用发生的线程执行。 +#### 删 + +#### 改 + +#### 查 + +## Realm进阶 + +## Realm云 diff --git a/source/_posts/rxjava.md b/source/_posts/rxjava.md new file mode 100644 index 000000000..1e9a5adf9 --- /dev/null +++ b/source/_posts/rxjava.md @@ -0,0 +1,371 @@ +--- +title: RxJava 入门 +date: 2018-10-02 10:02:00 +categories: RxJava +tag: [RxJava] +--- + +RxJava – Reactive Extensions for the JVM – a library for composing **asynchronous** and **event-based** programs using **observable** sequences for the Java VM.(一个在 Java VM 上使用可观测的序列( **观察者模式** )来组成 **异步** 的、**基于事件**的程序的库). + +在实际开发过程中,RxJava已是一个不可或缺的组件,因此对于RxJava的学习和思考,记录分享是很重要的一个环节 + +本系列文章主要: +1. [RxJava 入门](https://incoder.org/2018/10/02/rxjava/) +2. RxJava 实际应用 +3. RxJava 源码剖析 + +目前来说,RxJava有两个版本,RxJava1 与 RxJava2 两个版本之间虽然存在很多不同,但它们的本质是相同,由于对于RxJava1 **已废弃**,因此建议没有学习或者是使用过,可直接上手学习RxJava2(在学习过程中部分地方还是会有RxJava1相关的说明,但这不是重点) + +文章使用RxJava版本如下: +* `implementation 'io.reactivex:rxjava:1.3.0'` +* `implementation 'io.reactivex.rxjava2:rxjava:2.2.1'` +* 项目示例:[rc-cluster-network](https://github.com/RootCluster/rc-cluster-network) + +>由于一个项目中RxJava1与RxJava2并不能共存,因此实际参考项目中仅RxJava2示例 + +## RxJava 基础 + +### RxJava1 VS RxJava2 + +![rxjava1 vs rxjava2](https://res.cloudinary.com/incoder/image/upload/v1538815280/blog/RxJava1_vs_RxJava2.png) +>以上是列举出不同版本间主要的变换,其它更细节部分,请查看官方[Wiki](https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0) + +### 关键词 + +#### RxJava1 +* Observable (可观察者,即被观察者) +* Observer (观察者) +* subscribe (订阅) +* 事件 + +>Observable和Observer通过subscribe()方法实现订阅关系,从而Observable可以在需要的时候发出事件来通知Observer + +#### RxJava2 +* Observable (可观察者,即被观察者) +* Observer (观察者) +* ObservableEmitter (发射器) +* 事件 + +>RxJava2中`Subscrber`被`ObservableEmitter`取代,`Observer`中多了一个回调方法 `onSubscribe()`,传递参数为`Disposable` + +* ObservableEmitter:Emitter是发射器的意思,这个就是用来发出事件,它可以发出三种类型的事件,通过调用`emitter`的`onNext(T value)`,`onComplete()`和`onError(Throwable e)`就可以分别发出`next`事件,`complete`事件和`error`事件 +* Disposable:字面意思是一次性用品,用完即可丢弃。在RxJava中可以理解成两根管道间的阀门,当调用它的的`dispose()`方法时,它就将两根管道切断,从而导致下游收不到事件,即相当于`Subsciption` + +### 基本实现 + +#### Create Observable +![operators](https://raw.githubusercontent.com/wiki/ReactiveX/RxJava/images/rx-operators/legend.png) + +##### RxJava1 + +```java +Observable observable = Observable.unsafeCreate(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + subscriber.onNext("Hello"); + subscriber.onNext("World"); + subscriber.onNext("RxJava1"); + subscriber.onCompleted(); + } +}); +``` +>1.2.7版本后,Observable的`create()`方法已被废弃,如果没有特殊需求,可以使用`unsafeCreate()`代替,构造Obaservable实例 + +##### RxJava2 + +```java +Observable observable = Observable.create(new ObservableOnSubscribe() { + @Override + public void subscribe(ObservableEmitter emitter) throws Exception { + emitter.onNext("Hello"); + emitter.onNext("World"); + emitter.onNext("RxJava2"); + emitter.onComplete(); + } +}); +``` +`unsafeCreate()/create()`方法是RxJava最基本创建时间序列的方法。基于这个方法,RxJava还提供了一些方法来快捷创建事件队列 +* just(T...):将传入的参数依次发送出来 +```java +Observable observable = Observable.just("Hello", "World", "RxJava"); +// 将会依次调用: +// onNext("Hello"); +// onNext("World"); +// onNext("RxJava"); +// onCompleted(); +``` +* from(T[])/from(Iierabble):将传入的数组或Iterable拆分成具体对象后,依次发送出来 +```java +String[] words = {"Hello", "World", "RxJava"}; +Observable observable = Observable.from(words); +// 将会依次调用: +// onNext("Hello"); +// onNext("World"); +// onNext("RxJava"); +// onCompleted(); +``` + +##### Flowable +Flowable是RxJava2中新增的类,专门应对背压(Backpressure)问题,但这个概念并不是RxJava2中引入的概念。 + +出现Flowable的原因:即生产者(被观察者发送事件)的速度与消费者(观察者接收所有事件)的速度不匹配,从而导致观察者无法及时响应/处理所有发送过来的事件问题,最终导致缓冲区溢出,事件丢失 & OOM等问题。 + +一般情况,被观察者发送事件速度 > 观察者接收事件速度。比如:点击过快造成等 + +```java +Flowable.create(new FlowableOnSubscribe() { + + @Override + public void subscribe(FlowableEmitter emitter) throws Exception { + emitter.onNext("Hello"); + emitter.onNext("World"); + emitter.onNext("RxJava2"); + emitter.onComplete(); + } +}, BackpressureStrategy.ERROR) + .subscribeOn(Schedulers.computation()) + .observeOn(Schedulers.newThread()) + .subscribe(new Consumer() { + @Override + public void accept(String s) throws Exception { + // 相当于onNext + Thread.sleep(1000); + System.out.println("accept"); + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + // 相当于onError + System.out.println("accept" + throwable.toString()); + } + }); +``` +Flowable并不是订阅就开始发送数据,而是需等到执行`Subscription.request()`才开始发送数据 + +#### Create Observer + +##### RxJava1 +```java +Observer observer = new Observer() { + @Override + public void onCompleted() { + System.out.println("Completed!"); + } + + @Override + public void onError(Throwable e) { + System.out.println("Error" + e); + } + + @Override + public void onNext(String s) { + System.out.println("Next" + s); + } +}; +``` +除了`Observer`接口之外,RxJava内置了一个实现`Observer`的抽象类`Subscriber`,`Subscriber`对`Observer`接口进行了一些扩展,但它们的基本使用方式是完全一样 +```java +Subscriber subscriber = new Subscriber() { + @Override + public void onCompleted() { + System.out.println("Completed!"); + } + + @Override + public void onError(Throwable e) { + System.out.println("Error" + e); + } + + @Override + public void onNext(String s) { + System.out.println("Next" + s); + } +}; +``` +实际,在RxJava的subscribe过程中,`Observer`也总是会先被转成一个`Subscriber`再使用。对于使用者来说`Observer`与`Subscriber`的主要区别是: +1. onStart():这是`Subscriber`增加的方法。它会再subscribe刚开始,而事件还未发送之前被调用,可以用于做一些准备工作,例如:数据的重置等操作。这是一个可选方法,默认情况下它的实现为空。 +>注意: +>对于准备工作有线程要求,`onStart()`就不适用,因为它总是再subscribe所发生的线程被调用,而不能指定线程。要指定线程来准备工作,可以使用`doOnSubscribe()`方法 +2. unsubscribe():`Subscriber`所实现的另一个接口`Subscription`的方法,用于取消订阅。在这个方法被调用后,`Subscriber`将不再接收事件。 +>注意: +>* 一般需要在调用`unsubscribe()`方法前,需要使用`isUnsubscribed()`先判断状态。 +>* 不再使用的时候尽快在合适的地方调用`unsubscribe()`来解除引用关系,以避免内存泄漏 + +##### RxJava2 +```java +Observer observer = new Observer() { + @Override + public void onSubscribe(Disposable d) { + System.out.println("Subscribe: " + d); + } + + @Override + public void onNext(String s) { + System.out.println("Next: " + s); + } + + @Override + public void onError(Throwable e) { + System.out.println("Error: " + e); + } + + @Override + public void onComplete() { + System.out.println("Complete !"); + } +}; +``` + +#### Subscribe +创建好`Observable`和`Observer`之后,再用`subscribe()`方法将它们联结起来 +```java +observable.subscribe(observer); +// 或者(仅支持RxJava1) +observable.subscribe(subscriber); +``` + +#### chain calls +以上三步是使用RxJava进行异步操作的基本过程,创建`被观察者`,创建`观察者`,`被观察者`订阅`观察者`,我们可以通过链式调用形式完成操作 + +```java +Observable.unsafeCreate(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + subscriber.onNext("Hello"); + subscriber.onNext("World"); + subscriber.onNext("RxJava1"); + subscriber.onCompleted(); + } +}).subscribe(new Observer() { + @Override + public void onCompleted() { + System.out.println("Completed!"); + } + + @Override + public void onError(Throwable e) { + System.out.println("Error" + e); + } + + @Override + public void onNext(String s) { + System.out.println("Next" + s); + } +}); +``` +#### 简化订阅 +除了`subscribe(Observer)`和`subscribe(Subscriber)(仅支持RxJava1)`,`subscribe()`还支持不完整的简化订阅回调 + +```java +// RxJava1 +Action1 onNextAction = new Action1() { + @Override + public void call(String s) { + System.out.println("onNext" + s); + } +}; + +Action1 onErrorAction = new Action1() { + @Override + public void call(Throwable throwable) { + System.out.println("onError" + throwable); + } +}; + +Action0 onCompletedAction = new Action0() { + @Override + public void call() { + System.out.println("completed"); + } +}; + +// RxJava2 +Consumer onNextAction = new Consumer() { + @Override + public void accept(String s) throws Exception { + System.out.println("onNext" + s); + } +}; + +Consumer onErrorAction = new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + System.out.println("onError" + throwable); + } +}; + +Action onCompleteAction = new Action() { + @Override + public void run() throws Exception { + System.out.println("complete"); + } +}; + +// 自动创建 Subscriber ,并使用 onNextAction 来定义 onNext() +observable.subscribe(onNextAction); +// 自动创建 Subscriber ,并使用 onNextAction 和 onErrorAction 来定义 onNext() 和 onError() +observable.subscribe(onNextAction, onErrorAction); +// 自动创建 Subscriber ,并使用 onNextAction、 onErrorAction 和 onCompletedAction 来定义 onNext()、 onError() 和 onCompleted() +observable.subscribe(onNextAction, onErrorAction, onCompletedAction/onCompleteAction); + +``` + +## RxJava 线程 +在RxJava的默认规则中,事件的发出和消费都是在同一个线程(在哪个线程条用`subscriber()`,就在哪个线程生产事件;在哪个线程生产事件,就在哪个线程消费事件),也就是说,以上RxJava基本操作,实现出来的只是一个`同步`的观察者模式。而观察者模式本身的目的是“后台处理,前台回调”的`异步`机制,因此在RxJava中通过`Scheduler`来对线程进行管理 + +### Scheduler API +Scheduler相当于线程控制器,RxJava通过它指定代码应该运行在什么样的线程,其中RxJava中内置了几个Scheduler +* Schedulers.computation():计算所使用的`Scheduler`。这个计算值的是CPU密集型计算,即不会被I/O操作等限制性能的操作。不要把I/O操作放在`computation()`中,否则I/O操作的等待时间会浪费CPU。 +* Schedulers.form(Executor): +* Schedulers.immediate():直接在当前线程运行,相当于不指定线程,这也是默认的Scheduler. +* Schedulers.io():I/O操作(读写文件,读写数据库,网络信息交换等)所使用的Scheduler。行为模式和newThread()差不多,区别在于io()的内部实现是一个无数量上限的线程池,可以重用空闲的线程,因此多数情况下io()比newThread()更高效 +* Schedulers.newThread():总是启用新线程,并在新线程执行操作 +* Schedulers.single()『仅RxJava2中存在』: +* Schedulers.test()『仅RxJava1中存在』:顾名思义,这是一个测试 +* Schedulers.trampoline(): +* AndoroidSchedulers.mainThread():指定操作在Android的主线程 + +有了Scheduler,我们可以使用`subscribeOn()`和`observeOn()`方法来对线程进行控制 +* subscribeOn():指定subscribe()所发生的线程,即Observable.OnSubscribe被激活时所处的线程,或者叫做事件的产生的线程 +* observeOn():指定Subscriber所运行的线程。或者叫做事件的消费线程 + +```java +// RxJava2 +Observable.create(new ObservableOnSubscribe() { + @Override + public void subscribe(ObservableEmitter emitter) throws Exception { + emitter.onNext("Hello"); + emitter.onNext("World"); + emitter.onNext("RxJava2"); + emitter.onComplete(); + } +}) + // 指定 subscribe() 发生在 IO 线程 + .subscribeOn(Schedulers.io()) + // 指定 Subscriber 的回调发生在主线程 + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer() { + @Override + public void accept(String s) throws Exception { + System.out.println(s); + } + }); +``` + +## 操作符 +说RxJava好用,还有一个原因是RxJava提供了大量的操作符,这些操作符保证了在面都复杂的逻辑下,依旧可以是逻辑清晰的链式调用 + +![RxJava_action](https://res.cloudinary.com/incoder/image/upload/v1538815494/blog/RxJava_action.png) + +## 总结 +本篇文章作为RxJava系列的学习的入门,不会讲解相关操作的原理等 +学习目的 +* 了解RxJava1与RxJava2之间的不同点, +* 了解RxJava的线程管理, +* 掌握完成RxJava的基本操作, +* 清楚RxJava操作符,以及分别适用于什么样的场景 + +## 附录 +文章中部分原话引用了参考学习文章的原话,在这里向那些无私分享的大佬致敬 +* [给 Android 开发者的 RxJava 详解](https://gank.io/post/560e15be2dca930e00da1083) +* [RxJava系列教程](https://www.jianshu.com/nb/14302692) \ No newline at end of file diff --git a/source/_posts/security-rsa.md b/source/_posts/security-rsa.md new file mode 100644 index 000000000..17670d14d --- /dev/null +++ b/source/_posts/security-rsa.md @@ -0,0 +1,74 @@ +--- +title: 非对称加密——RSA +date: 2018-07-03 20:28:51 +categories: Security +tag: RSA +--- + +这是常用加密技术的系列文章,主要包含`非对称`,`对称`,`JWT`三类常用技术的应用 + +## RSA +[RSA](https://zh.wikipedia.org/wiki/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95):RSA加密算法是一种 **非对称** 加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。RSA就是他们三人姓氏开头字母拼在一起组成的。 + +### RSA加密解密 +公钥 **加密** 私钥 **解密**,持有公钥(多人持有)可以对数据加密,但是只有持有私钥(一人持有)才可以解密并查看数据 + +### RSA加签验签 +私钥 **加签** 公钥 **验签**,持有私钥(一人持有)可以加签,持有公钥(多人持有)可以验签 + +### RSA过程示意图 + +![security-rsa](https://res.cloudinary.com/incoder/image/upload/v1530793864/blog/security-rsa.png) + +如上图,具体表述两个场景过程 + +#### 结果不需加密 +场景:返回的数据不需要加密(例如:绑定银行卡的时候) +* 客户端`Client A`发送使用服务端`Serve publicKey` **加密** 的密文`cipher A(包含用户的银行卡号,手机号等重要信息)`到服务器 +* 服务器`Serve` 通过 `Serve privateKey`**解密** +* 服务端业务处理完成,直接返回数据(一些普通信息,比如状态码code,提示信息msg,提示操作是成功还是失败)给客户端`Client A` + +#### 结果需加密 +场景:返回的数据需要加密(例如:用户登录) +* 客户端`Client B`发送使用服务端`Serve publicKey` **加密** 的密文`cipher B(包含用户名和密码等重要信息)`以及客户端`Client B`的`Client B publicKey`到服务器 +* 服务器`Serve` 通过 `Serve privateKey`**解密** +* 服务端业务处理完成,直接返回数据(一般为token,token使用客户端`Client B`的`Client B publicKey`加密)给客户端`Client B` +* 客户端`Client B`使用`Client B privateKey`进行 **解密** 获取相应的用户信息等 + +## 密钥对 +在使用RSA加密解密之前,首先要生成密钥对。所谓的密钥对,指的是公钥和私钥。RSA算法的密钥可以通过两个途径生成,一是借助`openssl`命令终端,二是使用`JDK`生成。 +本篇采用`JDK`方式生成密钥对,`openssl`方式可自行尝试 + +### JDK + +#### Serve端密钥对 + +#### Client端密钥对 + +##### Android密钥对 + +##### Web密钥对 + +##### iOS密钥对 + +### OpenSSL + +略... + +## RSA加密 + +## RSA解密 + +## RSA缺点 +虽然RSA是一种较高级别加密机制,但也存在一些缺点 +1. 产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。 +2. 安全性,RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NP问题。 +3. 速度太慢,由于`RSA`的分组长度太大,为保证安全性,n 至少也要 `600 bit` 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。 + +## 附录 +参考学习文章 +* [一张图了解RSA加解密与加验签](https://blog.csdn.net/zhshulin/article/details/71573542) +* [RSA加密解密及RSA加签验签](https://www.cnblogs.com/loveyou/p/7299524.html) +* [RSA加解密和加签验签](https://www.jianshu.com/p/ff9bd897e96a) +* [RSA加密解密样例](https://www.jianshu.com/p/283fff43a948) +* [RSA加密解密实现](https://blog.csdn.net/hustpzb/article/details/72734578) \ No newline at end of file diff --git a/source/_posts/ssm.md b/source/_posts/ssm.md new file mode 100644 index 000000000..82e177d0e --- /dev/null +++ b/source/_posts/ssm.md @@ -0,0 +1,52 @@ +--- +title: 构建基础SSM框架 +date: 2018-05-20 09:39:10 +categories: Frame +tag: + - Spring + - SpringMVC + - Mybatis +--- + +## SSM结构 + +![SSM](https://res.cloudinary.com/incoder/image/upload/v1528039004/blog/ssm-structure.png) + +## SSM框架整合 +所谓的SSM即:Spring,SpringMVC,Mybatis +* [Spring](https://spring.io):一个轻量级的框架,有很多的拓展功能,最主要的我们一般项目使用的就是IOC和AOP。 +* [SpringMVC](https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html):Spring实现的一个Web层,相当于Struts的框架,但是比Struts更加灵活和强大. +* [Mybatis](http://www.mybatis.org/mybatis-3):一个持久层的框架,在使用上相比Hibernate更加灵活,可以控制SQL的编写,使用 XML或注解进行相关的配置. + +## 实战项目 +![ssm-practice](https://res.cloudinary.com/incoder/image/upload/v1528647074/blog/ssm-practice.png) + +项目功能: +1. Spring,SpringMVC,Mybatis框架整合 +2. Create Features +3. Retrieve Features +4. Update Features +5. Delete Features + +> 项目示例:[rc-ssm](https://github.com/RootCluster/rc-ssm/tree/example) + +## 其他 +### ajax之PUT请求 +客户端ajax方式发送PUT请求,Tomcat默认不会对请求进行处理; +Tomcat: +1. 将请求体中的数据,封装成一个map +2. request.getParameter("fileName")就会从这个map中取值 +3. springMVC封装POJO对象时,会把POJO中的属性的值,request.getParameter("fileName") + + 解决方式: + - 方式一:Ajax发送POST请求 + Ajax中type:"POST" + data: $("").serialize()+"&_method=PUT" + + - 方式二:web配置中添加HttpPutFormContentFilter过滤器 + 1.HttpPutFormContentFilter将请求体中的数据解析包装成一个map + 2.request被重新包装,request.getParameter()被重写,从自己封装的map中取出数据 + +### 获取属性的值 +prop修改和读取DOM原生属性的值 +attr修改和读取自定义属性的值 diff --git a/source/_posts/syncing-a-fork.md b/source/_posts/syncing-a-fork.md new file mode 100644 index 000000000..5aeaf737d --- /dev/null +++ b/source/_posts/syncing-a-fork.md @@ -0,0 +1,64 @@ +--- +title: Git 同步 Fork 项目 +date: 2018-08-01 16:09:50 +categories: Git +tag: Syncing +--- + +[Github](https://www.github.com) 全球最大的同性交友网站,这里拥有最前沿的IT技术创新,拥有最流行的开源项目,等等...,总之这里是我的知识仓库,每天都会在上面寻找,学习知识 + +扯远了,本篇解决对于fork的项目,如何进行源项目的更新和同步问题 + +## 远程仓库 +1. 查看fork项目的远程仓库信息 +```bash +git remote -v +origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) +origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push) +``` +2. 设置源项目仓库地址 +```bash +git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git +``` +3. 检查远程地址信息 +```bash +git remote -v +origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) +origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push) +upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch) +upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push) +``` + +## 同步源仓库信息 + +1. 获取源仓库更新 +```bash +git fetch upstream +remote: Counting objects: 75, done. +remote: Compressing objects: 100% (53/53), done. +remote: Total 62 (delta 27), reused 44 (delta 9) +Unpacking objects: 100% (62/62), done. +From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY + * [new branch] master -> upstream/master +``` +2. 查看本地master分支 +```bash +git checkout master +Switched to branch 'master' +``` +3. 合并源仓库更新到本地master分支 +```bash +git merge upstream/master +Updating a422352..5fdff0f +Fast-forward + README | 9 ------- + README.md | 7 ++++++ + 2 files changed, 7 insertions(+), 9 deletions(-) + delete mode 100644 README + create mode 100644 README.md +``` + +## 附录 +* [同步你的 Fork 仓库](http://wiki.jikexueyuan.com/project/github-basics/fork-synced.html) +* [Configuring a remote for a fork](https://help.github.com/articles/configuring-a-remote-for-a-fork/) +* [Syncing a fork](https://help.github.com/articles/syncing-a-fork) \ No newline at end of file diff --git a/source/_posts/travel-zjj.md b/source/_posts/travel-zjj.md new file mode 100644 index 000000000..baaa56c1f --- /dev/null +++ b/source/_posts/travel-zjj.md @@ -0,0 +1,104 @@ +--- +title: 行·张家界 +date: 2018-05-20 22:39:10 +categories: Travel +tag: 张家界 +--- + +{% note default %} +* 时间:2018.06.16——2018.06.19 +* 地点:杭州——张家界 +* 目标:武陵源景区,天门山景区,大峡谷景区 +{% endnote %} + +听说张家界是人间仙境,鬼斧神工,嗯,今年端午就去一探究竟,慌慌张张,匆匆忙忙做一份旅行攻略,翻遍百度,爬烂谷歌,都没有找到匹配的攻略,哎,可能是我姿势不对?! + +张家界,张家界景区共分为四块:**张家界国家森林公园**,**杨家界自然保护区**,**天子山自然保护区**,**索溪峪自然保护区**四大景区,统称为武陵源风景名胜。 + +**最受欢迎** 的四大景区 +1. 武陵源景区(森林公园、金鞭溪、袁家界、杨家界、天子山、十里画廊等) +2. 天门山景区(亚州最长的索道、世界公路奇观、玻璃栈道等) +3. 大峡谷风景区(新开发的玻璃桥) +4. 凤凰古城 + +## 出行准备 +1. 身份证件等相关证件 +2. 数码产品,雨具等 +3. 简单洗漱用品及换洗衣物 +4. 现金若干(不必太多) +5. 零食(必备:辣条) + +## 注意事项 +由于是自由行的方式,因此提醒以下几点 +1. 到达张家界后,**拒绝** 和 **一切** 人搭话,避免一些麻烦,给行程带来不愉快 +2. 保管好自己的物品 +3. 张家界火车站出站后即可到汽车站乘坐大巴去武陵源景区,50分钟左右,10(森林公园)—12元(武陵源) +4. 大峡谷,天门山景区玻璃桥都需要提前5天在网上预定 + +## 出行路线 + +### 整体路线图 +路线一: + * Day1(16):天门山景区 + * Day2.Day3(17-18):武陵源景区 + * Day4(19):大峡谷风景区 + +路线二(推荐) + * Day1.Day2(16-17):武陵源景区 + * Day2.Day3(18):大峡谷风景区 + * Day4(19):天门山景区 + +![扼要路线图](https://res.cloudinary.com/incoder/image/upload/v1527342618/blog/gitpages-zjj-road.png) + +{% note info %} +标记说明 +1. 张家界火车站 +2. 武陵源景区 +3. 大峡谷风景区 +4. 天门山景区 +{% endnote %} + +### 武陵源景区路线 +门票:245 元+保险费3 元(3天内多次进出有效,含环保车票价) +开放时间:8:00-17:00 +Day1:森林公园-金鞭溪-杨家界 +Day2:大观台-天子山-十里画廊-索溪湖-武陵源门票站 +从森林公园进,从武陵源出,不走回头路。需要在 **丁香榕** 住一宿 +![武陵源景区](https://res.cloudinary.com/incoder/image/upload/v1527324112/blog/gitpages-zjj.gif) + +### 大峡谷风景区路线 +门票:大峡谷(门票122元)+玻璃桥(门票138元) +开放时间:08:00-17:00 +Day3:玻璃桥-大峡谷 + +### 天门山景区路线 +门票:258.00元(含往返索道、环保车)【旺季】 +开放时间:08:00~16:00 +路线Day4:玻璃栈道-天门山寺-天门洞(坐索道上山顶——走西线——再到天门翻水处坐自动扶梯到天门洞——爬999级阶梯——最终坐环保车返回至市区) +**自备中午餐** + +![天门山景区路线图](https://res.cloudinary.com/incoder/image/upload/v1528189150/blog/gitpages-zjj-tms.png.jpg) + +## 住宿 +现在还未确定路线,个人推荐路线二;其次,16,17,18号需要住宿,要提前预定旅店 + +## 美食 + +### 胡师傅三下锅 +三下锅,所谓的三下锅其实就是一种很方便的干锅,它是由三种主料做成的,炖着不放汤的火锅,三角坪附近的那个“胡师傅三下锅”味道不错,三下锅50元一份,分量很够吃的,包你吃够吃好!推荐的就是干煸肠子,干煸核桃肉和湘西腊肉三种混在一起炖,吃的同时还可以点一份酸萝卜,又脆又酸。真的是极品哦!(吃过后,发现并没有网上说的这么好吃,就是大烩菜,哈哈哈) + +等等。。。 + +## 汇总 +![汇总](https://res.cloudinary.com/incoder/image/upload/v1527434516/blog/gitpages-zjj-summary.png) + +## 游记 +废话不说,**武陵源景区**不用去,虽说是5A景区,除了山还是山,而且商业气息很重,很多地方都不能步行,需要坐缆车,电梯等交通工具,况且这次去森林公园那边在修路,说是在修高铁,建议直接去 **大峡谷风景区** 和 **天门山景区** + +### 武陵源景区 +整个武陵 +![武陵源](https://res.cloudinary.com/incoder/image/upload/v1530682536/blog/travel/travel-zjj-wly.jpg) +### 大峡谷风景区 +![大峡谷](https://res.cloudinary.com/incoder/image/upload/v1530682775/blog/travel/travel-zjj-dxg.jpg) +### 天门山景区 +{% dplayer "url=https://res.cloudinary.com/incoder/video/upload/v1530682876/blog/travel/travel-zjj-tms.mp4" "loop=no" "theme=#FADFA3" "autoplay=false" "token=tokendemo" %} \ No newline at end of file diff --git a/source/_posts/treasure.md b/source/_posts/treasure.md new file mode 100644 index 000000000..f9fe1cedb --- /dev/null +++ b/source/_posts/treasure.md @@ -0,0 +1,122 @@ +--- +title: 藏经阁 +date: 2018-07-16 23:00:10 +categories: Resources +tag: DevTool +--- + +{% cq %}

      工欲善其事,必先利其器

      {% endcq %} +记录汇总一些资源库 + +## 导航页 +[Hi World](http://www.shandowsocks.info) +[创造师导航](http://chuangzaoshi.com) +[UI设计师导航](http://so.uigreat.com) +[Devdocs](https://devdocs.io) + +## 开发者网站 + +### 国际大厂 +[Google Developer](https://developers.google.com) +[Apple Developer](https://developer.apple.com) +[Microsoft Developer](https://developer.microsoft.com) +[Facebook Developer](https://developers.facebook.com) +[Twitter Developer](https://developer.twitter.com) +[Github Developer](https://developers.github.com) +[Baidu Developer](https://developer.baidu.com) +[Alibaba Developer](https://dev.aliyun.com) +[Tencent Developer](http://open.qq.com) + +### 手机厂商 +[Android Developer](https://developer.android.com) +[iOS Developer](https://developer.apple.com/ios) +[Samsung Developer](https://developer.samsung.com) +[Huawei Developer](http://developer.huawei.com/cn) +[XiaoMi Developer](https://dev.mi.com) +[HTC Developer](https://www.htcdev.com/) +[Flyme Developer](https://open.flyme.cn/) +[Oppo Developer](https://open.oppomobile.com) +[Vivo Developer](https://dev.vivo.com.cn) +[Smartisan Developer](http://dev.smartisan.com) +[360 Developer](http://dev.360.cn) + +### 应用市场 +[Google Play](https://play.google.com) +[App Store]() +[XiaoMi 应用市场](http://app.mi.com) +[Huawei 应用市场](http://developer.huawei.com/consumer/cn/devunion/ui/server/appMarket.html) +[360 应用市场](http://zhushou.360.cn) +[酷安市场](https://www.coolapk.com) +[应用宝](http://sj.qq.com) + +### 小程序 + +[PWA](https://developers.google.cn/web/progressive-web-apps) +[微信小程序](https://mp.weixin.qq.com/cgi-bin/wx) +[支付宝小程序](https://docs.alipay.com/mini/developer/getting-started) +[快应用](https://www.quickapp.cn) + +### ROM与论坛 +[LineageOS](https://lineageos.org) +[XDA](https://forum.xda-developers.com) +[Mokee](https://www.mokeedev.com) +[MoDaCo](https://www.modaco.com) +[机锋](http://bbs.gfan.com/forum.php) +[智友](http://bbs.zhiyoo.com) +[MiUi](http://rom.xiaomi.cn) +[0pengApps](https://opengapps.org) + +## DevTools + +### IDE +[Jetbrains 全家桶](http://www.jetbrains.com) +[Android Studio](https://developer.android.google.cn/studio) +[Xcode](https://developer.apple.com/xcode/ide) +[Eclipse](http://www.eclipse.org/downloads/eclipse-packages) +[Visual Studio Code](https://code.visualstudio.com) +[Sublime](http://www.sublimetext.com) +[PostMan](https://www.getpostman.com/apps) +[Xshell Xftp](http://www.netsarang.com/products/xsh_overview.html) + +### Plugin +[Alibaba Java Coding Guidelines](https://github.com/alibaba/p3c) +[Android ButterKnife Zelezny](https://github.com/avast/android-butterknife-zelezny) +[Android Material Design Icon Generator](https://github.com/konifar/android-material-design-icon-generator-plugin) +[Android Parcelable code generator](https://github.com/mcharmas/android-parcelable-intellij-plugin) +[Android Postfix Completion](https://plugins.jetbrains.com/plugin/7775-android-postfix-completion) +[Android Resource Usage Count](https://github.com/niorgai/Android-Resource-Usage-Count) +[Android Studio Prettify](https://github.com/Haehnchen/idea-android-studio-plugin) +[ADB Idea](http://www.developerphil.com/renaming-your-gradle-build-files) +[EventBus3 Intellij Plugin](https://plugins.jetbrains.com/plugin/8603-eventbus3-intellij-plugin) +[GrepConsole](https://github.com/krasa/GrepConsole) +[GsonFormat](https://github.com/zzz40500/GsonFormat) +[Jetbrains Plugins](https://plugins.jetbrains.com/) +[Jrebel](https://zeroturnaround.com/software/jrebel) +[ignore](http://ignore.hsz.mobi) +[LayoutFormatter](https://github.com/drakeet/LayoutFormatter) +[Markdown Navigator](https://github.com/vsch/idea-multimarkdown) +[PlantUML integration](https://github.com/esteinberg/plantuml4idea) +[SQLScout](https://plugins.jetbrains.com/plugin/8322-sqlscout-sqlite-support-) +[Translation](http://yiiguxing.github.io/TranslationPlugin) + +### Managed code +[Github](https://www.github.com) +[Gitlab](https://www.gitlab.com) +[Bitbucket](https://bitbucket.org) +[Gitee](https://www.gitee.com) +[Coding](https://coding.net) + +## Yun +[Google Cloud](https://console.cloud.google.com) +[Microsoft Azure](https://azure.microsoft.com) +[Amazon Web Services](https://aws.amazon.com) +[Aliyun](https://www.aliyun.com) +[Tencent Cloud](https://cloud.tencent.com) +[DiDi Cloud](https://www.didiyun.com) +[MT Cloud](https://www.mtyun.com) +[NetEase Cloud](https://www.163yun.com) + +## Mirror +[Tsinghua](https://mirrors.tuna.tsinghua.edu.cn) +[Gradle](http://services.gradle.org/distributions) +[Firfox](https://download-installer.cdn.mozilla.net/pub/firefox/releases) \ No newline at end of file diff --git a/source/about/index.md b/source/about/index.md new file mode 100644 index 000000000..7f3d0431c --- /dev/null +++ b/source/about/index.md @@ -0,0 +1,31 @@ +--- +title: 关于 +date: 2018-05-04 17:50:34 +comments: false +--- + + + +## 关于我 + +>Life's a struggle!(生命不息,折腾不止,当然这不能是瞎折腾)~ + +陕西汉中人,现居浙江杭州,理工男一枚 +机械制造与自动化专业,14年毕业后投奔于互联网世界 +16年开始自学Android开发,现从事Android开发工作 + +喜欢Coding,音乐,电影 + +## 关于本站 + +> 本站已开启HTTPS + +资源:便捷,高效,有趣的工具资源 + +经验:工作中一些问题解决方式及思考 + +阅读:阅读一些书籍的收获以及感兴趣的文字 + +学习:编程语言,热门开源框架的学习过程记录 + +影音:视觉,听觉的享受分享 diff --git a/source/categories/index.md b/source/categories/index.md new file mode 100644 index 000000000..dea1cbcc2 --- /dev/null +++ b/source/categories/index.md @@ -0,0 +1,6 @@ +--- +title: 分类 +type: categories +date: 2018-03-24 22:38:58 +comments: false +--- diff --git a/source/tags/index.md b/source/tags/index.md new file mode 100644 index 000000000..286c05569 --- /dev/null +++ b/source/tags/index.md @@ -0,0 +1,6 @@ +--- +title: 标签 +type: tags +date: 2018-03-24 22:36:28 +comments: false +--- diff --git a/.bowerrc b/themes/next/.bowerrc similarity index 100% rename from .bowerrc rename to themes/next/.bowerrc diff --git a/.editorconfig b/themes/next/.editorconfig similarity index 100% rename from .editorconfig rename to themes/next/.editorconfig diff --git a/.eslintrc.json b/themes/next/.eslintrc.json similarity index 100% rename from .eslintrc.json rename to themes/next/.eslintrc.json diff --git a/.gitattributes b/themes/next/.gitattributes similarity index 100% rename from .gitattributes rename to themes/next/.gitattributes diff --git a/.github/CODE_OF_CONDUCT.md b/themes/next/.github/CODE_OF_CONDUCT.md similarity index 100% rename from .github/CODE_OF_CONDUCT.md rename to themes/next/.github/CODE_OF_CONDUCT.md diff --git a/.github/CONTRIBUTING.md b/themes/next/.github/CONTRIBUTING.md similarity index 100% rename from .github/CONTRIBUTING.md rename to themes/next/.github/CONTRIBUTING.md diff --git a/.github/ISSUE_TEMPLATE.md b/themes/next/.github/ISSUE_TEMPLATE.md similarity index 100% rename from .github/ISSUE_TEMPLATE.md rename to themes/next/.github/ISSUE_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/themes/next/.github/PULL_REQUEST_TEMPLATE.md similarity index 100% rename from .github/PULL_REQUEST_TEMPLATE.md rename to themes/next/.github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/browserstack_logo.png b/themes/next/.github/browserstack_logo.png similarity index 100% rename from .github/browserstack_logo.png rename to themes/next/.github/browserstack_logo.png diff --git a/.github/stale.yml b/themes/next/.github/stale.yml similarity index 100% rename from .github/stale.yml rename to themes/next/.github/stale.yml diff --git a/themes/next/.gitignore b/themes/next/.gitignore new file mode 100644 index 000000000..26b5eab0b --- /dev/null +++ b/themes/next/.gitignore @@ -0,0 +1,22 @@ +.DS_Store +.idea/ +*.log +*.iml +yarn.lock +package-lock.json +node_modules/ + +# Ignore optional external libraries +source/lib/* + +# Track internal libraries & Ignore unused verdors files +source/lib/font-awesome/less/ +source/lib/font-awesome/scss/ +!source/lib/font-awesome/* + +!source/lib/jquery/ + +source/lib/ua-parser-js/* +!source/lib/ua-parser-js/dist/ + +!source/lib/velocity/ diff --git a/.stickler.yml b/themes/next/.stickler.yml similarity index 100% rename from .stickler.yml rename to themes/next/.stickler.yml diff --git a/.stylintrc b/themes/next/.stylintrc similarity index 100% rename from .stylintrc rename to themes/next/.stylintrc diff --git a/themes/next/.travis.yml b/themes/next/.travis.yml new file mode 100644 index 000000000..9591f0b23 --- /dev/null +++ b/themes/next/.travis.yml @@ -0,0 +1,18 @@ +language: node_js +#node_js: node +node_js: lts/* + +cache: + directories: + - node_modules + +install: npm install + +before_script: + - npm install -g gulp + +addons: + browserstack: + username: "ivannginx1" + access_key: + secure: "NutOhdgtUdBUXMPZhy8X1F1Jq+tan1LeNOV0FArBt15SNlxtNArqhiyTi4XnG9MPruX4306aGF2RBrKso+OiGNRdGtRGngH613Q0GWNtlC/boMqnI7fHqLIyCs6S12y2uA8PK4Ifxg9bZ0VtCTYYbMy+p1KvBM//L12vmtfdnby8z5Qvex3tB3dLoPOR50CKkINHJVDLm+iVRFrdz4/83oDsulZSRRGIaxu5taDWPIcp3fYZtre2Nc+RXcsyFDyjN7U0Hvr5tKBbloJxXEQEBv2xLkMOtp85nmCPD06s1Il8Wus1ux3raVsfUyaW5FpNX37Jeb5e00RQUM1wgU5m75H6qiGwDvQswbugJG0i/a2nNfsgVmbrSZdMnkHcx2Uxmrw4ejyEP5NSrJSBi05Ck1fQ4UsZ4Qkdf1fd04SI0LpLWt43eoNO/7rHKsQoP4LCX9gxKUuC075NEBLODyJ529RYfA6dKKwwH6o0ZbOgASmCoAWaM65g4+FHRnJcKL/Kj9ZWklQtRa7/ynlHaA65jefFS2lB8Ut6d3rXDDBih9mIrwV1uUaEH96xgAN42bgU/vY6FGzNkDOYZqj4YfsepDM0wbOsslFie7JZq7iFjsYvrXqLvYUMk37AZwQ2Sb6uH4tIT4Qw/4oZfDzA1En3/8HdZJ28nKW/lzjwMSqheIY=" diff --git a/LICENSE.md b/themes/next/LICENSE.md similarity index 100% rename from LICENSE.md rename to themes/next/LICENSE.md diff --git a/themes/next/README.md b/themes/next/README.md new file mode 100644 index 000000000..ac8019351 --- /dev/null +++ b/themes/next/README.md @@ -0,0 +1,138 @@ +
      Language: :us: +:cn: +:ru:
      + +#
      e x T
      + +

      «NexT» is a high quality elegant Hexo theme. It is crafted from scratch, with love.

      + +[![gitter-image]][gitter-url] +[![riot-image]][riot-url] +[![t-chat-image]][t-chat-url] +[![t-news-image]][t-news-url] +[![lang-image]][lang-url] +[![travis-image]][travis-url] +[![rel-image]][releases-url] +[![hexo-image]][hexo-url] +[![lic-image]][lic-url] + +## Live Preview + +* :heart_decoration: Muse scheme: [LEAFERx](https://leaferx.online) | [XiaMo](https://notes.wanghao.work) | [OAwan](https://oawan.me) +* :six_pointed_star: Mist scheme: [Jeff](https://blog.zzbd.org) | [uchuhimo](http://uchuhimo.me) | [xirong](http://www.ixirong.com) +* :pisces: Pisces scheme: [Vi](http://notes.iissnan.com) | [Acris](https://acris.me) | [Rainy](https://rainylog.com) +* :gemini: Gemini scheme: [Ivan.Nginx](https://almostover.ru) | [Raincal](https://raincal.com) | [Dandy](https://dandyxu.me) + +More «NexT» examples [here](https://github.com/iissnan/hexo-theme-next/issues/119). + +## Installation + +Simplest way to install is by cloning whole repository: + + ```sh + $ cd hexo + $ git clone https://github.com/theme-next/hexo-theme-next themes/next + ``` + +Or you can see [detailed installation instructions][docs-installation-url] if you want any other variant. + +## Plugins + +In NexT config now you can find dependencies on each module which was moved to external repositories which can be found by [main organization link](https://github.com/theme-next). + +For example, you want to use `fancybox` in your site. Go to NexT config and see: + +```yml +# Fancybox +# Dependencies: https://github.com/theme-next/theme-next-fancybox +fancybox: false +``` + +Then turn on `fancybox` and go to «Dependencies» link with installation instructions of this module. + +### Exceptions + +If you use cdn for any plugins, you need to replace your cdn link. + +For example, you want to use `fancybox` and you configured a cdn link. Go to NexT config and see: + +```yml +vendors: + # ... + # Some contents... + # ... + fancybox: # Set or update fancybox cdn url. + fancybox_css: # Set or update fancybox cdn url. +``` + +Instead of defining [main organization link](https://github.com/theme-next) for updates. + +## Update + +You can update to latest master branch by the following command: + +```sh +$ cd themes/next +$ git pull +``` + +And if you see any error message during update (something like **«Commit your changes or stash them before you can merge»**), recommended to learn [Hexo data files][docs-data-files-url] feature.\ +Howbeit, you can bypass update errors by `Commit`, `Stash` or `Discard` local changes. See [here](https://stackoverflow.com/a/15745424/5861495) how to do it. + +**If you want to update from v5.1.x to v6.0.x, read [here][docs-update-5-1-x-url].** + +## Known Bugs + +For those who also encounter **«[Error: Cannot find module 'hexo-util'](https://github.com/iissnan/hexo-theme-next/issues/1490)»**, please check your NPM version. + +* `> 3`: Still not work? Please remove `node_modules` directory and reinstall using `npm install`. +* `< 3`: Please add `hexo-util` explicitly via `npm install --save-dev hexo-util` to you site package deps. + +## Contributing + +Contribution is welcome, feel free to open an issue and fork. Waiting for your pull request. + +## Third party applications + +* :triangular_flag_on_post: HexoEditor + +[browser-image]: https://img.shields.io/badge/browser-%20chrome%20%7C%20firefox%20%7C%20opera%20%7C%20safari%20%7C%20ie%20%3E%3D%209-lightgrey.svg +[browser-url]: https://www.browserstack.com + +[lang-image]: https://d322cqt584bo4o.cloudfront.net/theme-next/localized.svg "Add or improve translation in few seconds!" +[lang-url]: https://crwd.in/theme-next + +[gitter-image]: https://img.shields.io/badge/gitter-chat-orange.svg "Join to our Gitter room" +[gitter-url]: https://gitter.im/theme-next + +[riot-image]: https://img.shields.io/badge/riot-chat-DCAB08.svg "Join to our Riot room" +[riot-url]: https://riot.im/app/#/room/#NexT:matrix.org + +[t-chat-image]: https://img.shields.io/badge/telegram-chat-BAB210.svg "Join to our Telegram group" +[t-chat-url]: https://t.me/theme_next + +[t-news-image]: https://img.shields.io/badge/telegram-news-98B919.svg "Join to our Telegram news channel" +[t-news-url]: https://t.me/theme_next_news + +[travis-image]: https://travis-ci.org/theme-next/hexo-theme-next.svg?branch=master +[travis-url]: https://travis-ci.org/theme-next/hexo-theme-next?branch=master "Travis CI [Linux]" + +[hexo-image]: https://img.shields.io/badge/hexo-%3E%3D%203.5.0-blue.svg +[hexo-url]: http://hexo.io + +[lic-image]: https://img.shields.io/badge/license-%20AGPL-blue.svg +[lic-url]: https://github.com/theme-next/hexo-theme-next/blob/master/LICENSE.md + + +[rel-image]: https://badge.fury.io/gh/theme-next%2Fhexo-theme-next.svg + + +[download-latest-url]: https://github.com/theme-next/hexo-theme-next/archive/master.zip +[releases-latest-url]: https://github.com/theme-next/hexo-theme-next/releases/latest +[releases-url]: https://github.com/theme-next/hexo-theme-next/releases +[tags-url]: https://github.com/theme-next/hexo-theme-next/tags +[commits-url]: https://github.com/theme-next/hexo-theme-next/commits/master + +[docs-installation-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/INSTALLATION.md +[docs-data-files-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/DATA-FILES.md +[docs-update-5-1-x-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/UPDATE-FROM-5.1.X.md diff --git a/themes/next/_config.yml b/themes/next/_config.yml new file mode 100644 index 000000000..7b3107c58 --- /dev/null +++ b/themes/next/_config.yml @@ -0,0 +1,973 @@ +# --------------------------------------------------------------- +# Theme Core Configuration Settings +# --------------------------------------------------------------- + +# If false, merge configs from `_data/next.yml` into default configuration (rewrite). +# If true, will fully override default configuration by options from `_data/next.yml` (override). Only for NexT settings. +# And if true, all config from default NexT `_config.yml` must be copied into `next.yml`. Use if you know what you are doing. +# Useful if you want to comment some options from NexT `_config.yml` by `next.yml` without editing default config. +override: false + +# Allow to cache content generation. Introduced in NexT v6.0.0. +cache: + enable: true + +# Redefine custom file paths. Introduced in NexT v6.0.2. +# If commented, will be used default custom file paths. + +# For example, you want to put your custom styles file +# outside theme directory in root `source/_data`, set +# `styles: source/_data/styles.styl` +#custom_file_path: + # Default paths: layout/_custom/* + #head: source/_data/head.swig + #header: source/_data/header.swig + #sidebar: source/_data/sidebar.swig + + # Default path: source/css/_variables/custom.styl + #variables: source/_data/variables.styl + # Default path: source/css/_mixins/custom.styl + #mixins: source/_data/mixins.styl + # Default path: source/css/_custom/custom.styl + #styles: source/_data/styles.styl + + +# --------------------------------------------------------------- +# Site Information Settings +# --------------------------------------------------------------- + +# To get or check favicons visit: https://realfavicongenerator.net +# Put your favicons into `hexo-site/source/` (recommend) or `hexo-site/themes/next/source/images/` directory. + +# Default NexT favicons placed in `hexo-site/themes/next/source/images/` directory. +# And if you want to place your icons in `hexo-site/source/` root directory, you must remove `/images` prefix from pathes. + +# For example, you put your favicons into `hexo-site/source/images` directory. +# Then need to rename & redefine they on any other names, otherwise icons from Next will rewrite your custom icons in Hexo. +favicon: + small: /images/favicon-16x16-next.png + medium: /images/favicon-32x32-next.png + apple_touch_icon: /images/apple-touch-icon-next.png + safari_pinned_tab: /images/logo.svg + #android_manifest: /images/manifest.json + #ms_browserconfig: /images/browserconfig.xml + +# Set rss to false to disable feed link. +# Leave rss as empty to use site's feed link, and install hexo-generator-feed: `npm install hexo-generator-feed --save`. +# Set rss to specific value if you have burned your feed already. +rss: + +footer: + # Specify the date when the site was setup. + # If not defined, current year will be used. + #since: 2015 + + # Icon between year and copyright info. + icon: + # Icon name in fontawesome, see: https://fontawesome.com/v4.7.0/icons + # `heart` is recommended with animation in red (#ff0000). + name: user + # If you want to animate the icon, set it to true. + animated: false + # Change the color of icon, using Hex Code. + color: "#808080" + + # If not defined, will be used `author` from Hexo main config. + copyright: + # ------------------------------------------------------------- + powered: + # Hexo link (Powered by Hexo). + enable: true + # Version info of Hexo after Hexo link (vX.X.X). + version: true + + theme: + # Theme & scheme info link (Theme - NexT.scheme). + enable: true + # Version info of NexT after scheme info (vX.X.X). + version: true + # ------------------------------------------------------------- + # Any custom text can be defined here. + #custom_text: Hosted by Coding Pages + +# --------------------------------------------------------------- +# SEO Settings +# --------------------------------------------------------------- + +# Canonical, set a canonical link tag in your hexo, you could use it for your SEO of blog. +# See: https://support.google.com/webmasters/answer/139066 +# Tips: Before you open this tag, remember set up your URL in hexo _config.yml ( ex. url: http://yourdomain.com ) +canonical: true + +# Change headers hierarchy on site-subtitle (will be main site description) and on all post/pages titles for better SEO-optimization. +seo: false + +# If true, will add site-subtitle to index page, added in main hexo config. +# subtitle: Subtitle +index_with_subtitle: false + + +# --------------------------------------------------------------- +# Menu Settings +# --------------------------------------------------------------- + +# When running the site in a subdirectory (e.g. domain.tld/blog), remove the leading slash from link value (/archives -> archives). +# Usage: `Key: /link/ || icon` +# Key is the name of menu item. If translate for this menu will find in languages - this translate will be loaded; if not - Key name will be used. Key is case-senstive. +# Value before `||` delimeter is the target link. +# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, question icon will be loaded. +menu: + home: / || home + #about: /about/ || user + #tags: /tags/ || tags + #categories: /categories/ || th + archives: /archives/ || archive + #schedule: /schedule/ || calendar + #sitemap: /sitemap.xml || sitemap + #commonweal: /404/ || heartbeat + +# Enable/Disable menu icons / item badges. +menu_settings: + icons: true + badges: false + +# --------------------------------------------------------------- +# Scheme Settings +# --------------------------------------------------------------- + +# Schemes +scheme: Muse +#scheme: Mist +#scheme: Pisces +#scheme: Gemini + + +# --------------------------------------------------------------- +# Sidebar Settings +# --------------------------------------------------------------- + +# Posts / Categories / Tags in sidebar. +site_state: true + +# Social Links. +# Usage: `Key: permalink || icon` +# Key is the link label showing to end users. +# Value before `||` delimeter is the target permalink. +# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, globe icon will be loaded. +#social: + #GitHub: https://github.com/yourname || github + #E-Mail: mailto:yourname@gmail.com || envelope + #Google: https://plus.google.com/yourname || google + #Twitter: https://twitter.com/yourname || twitter + #FB Page: https://www.facebook.com/yourname || facebook + #VK Group: https://vk.com/yourname || vk + #StackOverflow: https://stackoverflow.com/yourname || stack-overflow + #YouTube: https://youtube.com/yourname || youtube + #Instagram: https://instagram.com/yourname || instagram + #Skype: skype:yourname?call|chat || skype + +social_icons: + enable: true + icons_only: false + transition: false + # Dependencies: exturl: true in Tags Settings section below. + # To encrypt links above use https://www.base64encode.org + # Example encoded link: `GitHub: aHR0cHM6Ly9naXRodWIuY29tL3RoZW1lLW5leHQ= || github` + exturl: false + +# Follow me on GitHub banner in right-top corner. +# Usage: `permalink || title` +# Value before `||` delimeter is the target permalink. +# Value after `||` delimeter is the title and aria-label name. +#github_banner: https://github.com/yourname || Follow me on GitHub + +# Blog rolls +links_icon: link +links_title: Links +links_layout: block +#links_layout: inline +#links: + #Title: http://example.com/ + +# Sidebar Avatar +avatar: + # in theme directory(source/images): /images/avatar.gif + # in site directory(source/uploads): /uploads/avatar.gif + # You can also use other linking images. + url: #/images/avatar.gif + # If true, the avatar would be dispalyed in circle. + rounded: false + # The value of opacity should be choose from 0 to 1 to set the opacity of the avatar. + opacity: 1 + # If true, the avatar would be rotated with the cursor. + rotated: false + +# Table Of Contents in the Sidebar +toc: + enable: true + + # Automatically add list number to toc. + number: true + + # If true, all words will placed on next lines if header width longer then sidebar width. + wrap: false + +# Creative Commons 4.0 International License. +# http://creativecommons.org/ +# Available: by | by-nc | by-nc-nd | by-nc-sa | by-nd | by-sa | zero +#creative_commons: by-nc-sa +#creative_commons: + +sidebar: + # Sidebar Position, available value: left | right (only for Pisces | Gemini). + position: left + #position: right + + # Sidebar Display, available value (only for Muse | Mist): + # - post expand on posts automatically. Default. + # - always expand for all pages automatically + # - hide expand only when click on the sidebar toggle icon. + # - remove Totally remove sidebar including sidebar toggle. + display: post + #display: always + #display: hide + #display: remove + + # Sidebar offset from top menubar in pixels (only for Pisces | Gemini). + offset: 12 + + # Back to top in sidebar (only for Pisces | Gemini). + b2t: false + + # Scroll percent label in b2t button. + scrollpercent: false + + # Enable sidebar on narrow view (only for Muse | Mist). + onmobile: false + + +# --------------------------------------------------------------- +# Post Settings +# --------------------------------------------------------------- + +# Automatically scroll page to section which is under mark. +scroll_to_more: true + +# Automatically saving scroll position on each post/page in cookies. +save_scroll: false + +# Automatically excerpt description in homepage as preamble text. +excerpt_description: true + +# Automatically Excerpt. Not recommend. +# Please use in the post to control excerpt accurately. +auto_excerpt: + enable: false + length: 150 + +# Post meta display settings +post_meta: + item_text: true + created_at: true + updated_at: + enabled: true + # If true, show updated date label only if `updated date` different from 'created date' (post edited in another day than was created). + # And if post will edited in same day as created, edited time will show in popup title under created time label. + # If false show anyway, but if post edited in same day, show only edited time. + another_day: true + categories: true + +# Post wordcount display settings +# Dependencies: https://github.com/theme-next/hexo-symbols-count-time +symbols_count_time: + separated_meta: true + item_text_post: true + item_text_total: false + awl: 4 + wpm: 275 + +codeblock: + # Manual define the border radius in codeblock + # Leave it empty for the default 1 + border_radius: + # Add copy button on codeblock + copy_button: + enable: false + # Show text copy result + show_result: false + +# Wechat Subscriber +#wechat_subscriber: + #enabled: true + #qcode: /path/to/your/wechatqcode ex. /uploads/wechat-qcode.jpg + #description: ex. subscribe to my blog by scanning my public wechat account + +# Reward +#reward_comment: Donate comment here +#wechatpay: /images/wechatpay.jpg +#alipay: /images/alipay.jpg +#bitcoin: /images/bitcoin.png + +# Related popular posts +# Dependencies: https://github.com/tea3/hexo-related-popular-posts +related_posts: + enable: false + title: # custom header, leave empty to use the default one + display_in_home: false + params: + maxCount: 5 + #PPMixingRate: 0.0 + #isDate: false + #isImage: false + #isExcerpt: false + +# Declare license on posts +post_copyright: + enable: false + license: CC BY-NC-SA 4.0 + +# Post edit +# Dependencies: https://github.com/hexojs/hexo-deployer-git +post_edit: + enable: false + url: https://github.com/theme-next/theme-next.org/_posts/tree/master/ # Link for view source. +# url: https://github.com/theme-next/theme-next.org/_posts/edit/master/ # Link for fork & edit. + + +# --------------------------------------------------------------- +# Misc Theme Settings +# --------------------------------------------------------------- + +# Reduce padding / margin indents on devices with narrow width. +mobile_layout_economy: false + +# Android Chrome header panel color ($brand-bg / $headband-bg => $black-deep). +android_chrome_color: "#222" + +# Custom Logo. +# !!Only available for Default Scheme currently. +# Options: +# enabled: [true/false] - Replace with specific image +# image: url-of-image - Images's url +custom_logo: + enabled: false + image: + +# Code Highlight theme +# Available values: normal | night | night eighties | night blue | night bright +# https://github.com/chriskempson/tomorrow-theme +highlight_theme: normal + +# Enable "cheers" for archive page. +cheers_enabled: true + +# Manual define the max content width +# !!Only available for Gemini Scheme currently +# Leave it empty for the default 75% (suggest not less than 1000px) +#max_content_width: 1000px + +# Manual define the sidebar width +# !!Only available for Gemini Scheme currently +# Leave it empty for the default 240 +sidebar_width: + +# --------------------------------------------------------------- +# Font Settings +# - Find fonts on Google Fonts (https://www.google.com/fonts) +# - All fonts set here will have the following styles: +# light, light italic, normal, normal italic, bold, bold italic +# - Be aware that setting too much fonts will cause site running slowly +# - Introduce in 5.0.1 +# --------------------------------------------------------------- +# CAUTION! Safari Version 10.1.2 bug: https://github.com/iissnan/hexo-theme-next/issues/1844 +# To avoid space between header and sidebar in Pisces / Gemini themes recommended to use Web Safe fonts for `global` (and `logo`): +# Arial | Tahoma | Helvetica | Times New Roman | Courier New | Verdana | Georgia | Palatino | Garamond | Comic Sans MS | Trebuchet MS +# --------------------------------------------------------------- +font: + enable: false + + # Uri of fonts host. E.g. //fonts.googleapis.com (Default). + host: + + # Font options: + # `external: true` will load this font family from `host` above. + # `family: Times New Roman`. Without any quotes. + # `size: xx`. Use `px` as unit. + + # Global font settings used for all elements in . + global: + external: true + family: Lato + size: + + # Font settings for Headlines (H1, H2, H3, H4, H5, H6). + # Fallback to `global` font settings. + headings: + external: true + family: + size: + + # Font settings for posts. + # Fallback to `global` font settings. + posts: + external: true + family: + + # Font settings for Logo. + # Fallback to `global` font settings. + logo: + external: true + family: + size: + + # Font settings for and code blocks. + codes: + external: true + family: + size: + + +# --------------------------------------------------------------- +# Third Party Services Settings +# --------------------------------------------------------------- + +# Math Equations Render Support +math: + enable: false + + # Default(true) will load mathjax/katex script on demand + # That is it only render those page who has 'mathjax: true' in Front Matter. + # If you set it to false, it will load mathjax/katex srcipt EVERY PAGE. + per_page: true + + engine: mathjax + #engine: katex + + # hexo-rendering-pandoc (or hexo-renderer-kramed) needed to full MathJax support. + mathjax: + # Use 2.7.1 as default, jsdelivr as default CDN, works everywhere even in China + cdn: //cdn.jsdelivr.net/npm/mathjax@2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML + # For newMathJax CDN (cdnjs.cloudflare.com) with fallback to oldMathJax (cdn.mathjax.org). + #cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML + # For direct link to MathJax.js with CloudFlare CDN (cdnjs.cloudflare.com). + #cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML + # For automatic detect latest version link to MathJax.js and get from Bootcss. + #cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML + + # hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin) + # needed to full Katex support. + katex: + # Use 0.7.1 as default, jsdelivr as default CDN, works everywhere even in China + cdn: //cdn.jsdelivr.net/npm/katex@0.7.1/dist/katex.min.css + # CDNJS, provided by cloudflare, maybe the best CDN, but not works in China + #cdn: //cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css + # Bootcss, works great in China, but not so well in other region + #cdn: //cdn.bootcss.com/KaTeX/0.7.1/katex.min.css + +# Han Support +# Dependencies: https://github.com/theme-next/theme-next-han +han: false + +# Pangu Support +# Dependencies: https://github.com/theme-next/theme-next-pangu +# For more information: https://github.com/vinta/pangu.js +pangu: false + +# Swiftype Search API Key +#swiftype_key: + +# Baidu Analytics ID +#baidu_analytics: + +# Disqus +disqus: + enable: false + shortname: + count: true + lazyload: false + +# Hypercomments +#hypercomments_id: + +# changyan +changyan: + enable: false + appid: + appkey: + + +# Valine. +# You can get your appid and appkey from https://leancloud.cn +# more info please open https://valine.js.org +valine: + enable: false + appid: # your leancloud application appid + appkey: # your leancloud application appkey + notify: false # mail notifier , https://github.com/xCss/Valine/wiki + verify: false # Verification code + placeholder: Just go go # comment box placeholder + avatar: mm # gravatar style + guest_info: nick,mail,link # custom comment header + pageSize: 10 # pagination size + + +# Support for youyan comments system. +# You can get your uid from http://www.uyan.cc +#youyan_uid: your uid + +# Support for LiveRe comments system. +# You can get your uid from https://livere.com/insight/myCode (General web site) +#livere_uid: your uid + +# Gitment +# Introduction: https://imsun.net/posts/gitment-introduction/ +gitment: + enable: false + mint: true # RECOMMEND, A mint on Gitment, to support count, language and proxy_gateway + count: true # Show comments count in post meta area + lazy: false # Comments lazy loading with a button + cleanly: false # Hide 'Powered by ...' on footer, and more + language: # Force language, or auto switch by theme + github_user: # MUST HAVE, Your Github Username + github_repo: # MUST HAVE, The name of the repo you use to store Gitment comments + client_id: # MUST HAVE, Github client id for the Gitment + client_secret: # EITHER this or proxy_gateway, Github access secret token for the Gitment + proxy_gateway: # Address of api proxy, See: https://github.com/aimingoo/intersect + redirect_protocol: # Protocol of redirect_uri with force_redirect_protocol when mint enabled + +# Baidu Share +# Available value: +# button | slide +# Warning: Baidu Share does not support https. +#baidushare: +## type: button + +# Share +# This plugin is more useful in China, make sure you known how to use it. +# And you can find the use guide at official webiste: http://www.jiathis.com/. +# Warning: JiaThis does not support https. +#jiathis: + ##uid: Get this uid from http://www.jiathis.com/ + +#add_this_id: + +# NeedMoreShare2 +# Dependencies: https://github.com/theme-next/theme-next-needmoreshare2 +# See: https://github.com/revir/need-more-share2 +# Also see: https://github.com/DzmVasileusky/needShareButton +# iconStyle: default | box +# boxForm: horizontal | vertical +# position: top / middle / bottom + Left / Center / Right +# networks: Weibo,Wechat,Douban,QQZone,Twitter,Linkedin,Mailto,Reddit, +# Delicious,StumbleUpon,Pinterest,Facebook,GooglePlus,Slashdot, +# Technorati,Posterous,Tumblr,GoogleBookmarks,Newsvine, +# Evernote,Friendfeed,Vkontakte,Odnoklassniki,Mailru +needmoreshare2: + enable: false + postbottom: + enable: false + options: + iconStyle: box + boxForm: horizontal + position: bottomCenter + networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook + float: + enable: false + options: + iconStyle: box + boxForm: horizontal + position: middleRight + networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook + +# Google Webmaster tools verification setting +# See: https://www.google.com/webmasters/ +#google_site_verification: + +# Google Analytics +#google_analytics: + +# Bing Webmaster tools verification setting +# See: https://www.bing.com/webmaster/ +#bing_site_verification: + +# Yandex Webmaster tools verification setting +# See: https://webmaster.yandex.ru/ +#yandex_site_verification: + +# CNZZ count +#cnzz_siteid: + +# Application Insights +# See https://azure.microsoft.com/en-us/services/application-insights/ +# application_insights: + +# Post widgets & FB/VK comments settings. +# --------------------------------------------------------------- +# Facebook SDK Support. +# https://github.com/iissnan/hexo-theme-next/pull/410 +facebook_sdk: + enable: false + app_id: # + fb_admin: # + like_button: #true + webmaster: #true + +# Facebook comments plugin +# This plugin depends on Facebook SDK. +# If facebook_sdk.enable is false, Facebook comments plugin is unavailable. +facebook_comments_plugin: + enable: false + num_of_posts: 10 # min posts num is 1 + width: 100% # default width is 550px + scheme: light # default scheme is light (light or dark) + +# VKontakte API Support. +# To get your AppID visit https://vk.com/editapp?act=create +vkontakte_api: + enable: false + app_id: # + like: true + comments: true + num_of_posts: 10 + +# Star rating support to each article. +# To get your ID visit https://widgetpack.com +rating: + enable: false + id: # + color: fc6423 +# --------------------------------------------------------------- + +# Show number of visitors to each article. +# You can visit https://leancloud.cn get AppID and AppKey. +leancloud_visitors: + enable: false + app_id: # + app_key: # + # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security + # If you don't care about security in lc counter and just want to use it directly + # (without hexo-leancloud-counter-security plugin), set the `security` to `false`. + security: true + betterPerformance: false + +# Another tool to show number of visitors to each article. +# visit https://console.firebase.google.com/u/0/ to get apiKey and projectId +# visit https://firebase.google.com/docs/firestore/ to get more information about firestore +firestore: + enable: false + collection: articles #required, a string collection name to access firestore database + apiKey: #required + projectId: #required + bluebird: false #enable this if you want to include bluebird 3.5.1(core version) Promise polyfill + +# Show Views/Visitors of the website/page with busuanzi. +# Get more information on http://ibruce.info/2015/04/04/busuanzi/ +busuanzi_count: + enable: false + total_visitors: true + total_visitors_icon: user + total_views: true + total_views_icon: eye + post_views: true + post_views_icon: eye + + +# Tencent analytics ID +# tencent_analytics: + +# Tencent MTA ID +# tencent_mta: + + +# Enable baidu push so that the blog will push the url to baidu automatically which is very helpful for SEO +baidu_push: false + +# Google Calendar +# Share your recent schedule to others via calendar page +# +# API Documentation: +# https://developers.google.com/google-apps/calendar/v3/reference/events/list +calendar: + enable: false + calendar_id: + api_key: + orderBy: startTime + offsetMax: 24 + offsetMin: 4 + timeZone: + showDeleted: false + singleEvents: true + maxResults: 250 + +# Algolia Search +# See: https://github.com/theme-next/hexo-theme-next/blob/master/docs/ALGOLIA-SEARCH.md +# Dependencies: https://github.com/theme-next/theme-next-algolia-instant-search +algolia_search: + enable: false + hits: + per_page: 10 + labels: + input_placeholder: Search for Posts + hits_empty: "We didn't find any results for the search: ${query}" + hits_stats: "${hits} results found in ${time} ms" + +# Local search +# Dependencies: https://github.com/theme-next/hexo-generator-searchdb +local_search: + enable: false + # if auto, trigger search by changing input + # if manual, trigger search by pressing enter key or search button + trigger: auto + # show top n results per article, show all results by setting to -1 + top_n_per_article: 1 + # unescape html strings to the readable one + unescape: false + +# Bookmark Support +# Dependencies: https://github.com/theme-next/theme-next-bookmark +bookmark: + enable: false + # if auto + # - save the reading position when closing the page + # - or clicking the bookmark-icon + # if manual, only save it by clicking the bookmark-icon + save: auto + + +# --------------------------------------------------------------- +# Tags Settings +# --------------------------------------------------------------- + +# External URL with BASE64 encrypt & decrypt. +# Usage: {% exturl text url "title" %} +# Alias: {% extlink text url "title" %} +exturl: false + +# Note tag (bs-callout). +note: + # Note tag style values: + # - simple bs-callout old alert style. Default. + # - modern bs-callout new (v2-v3) alert style. + # - flat flat callout style with background, like on Mozilla or StackOverflow. + # - disabled disable all CSS styles import of note tag. + style: simple + icons: false + border_radius: 3 + # Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6). + # Offset also applied to label tag variables. This option can work with disabled note tag. + light_bg_offset: 0 + +# Label tag. +label: true + +# Tabs tag. +tabs: + enable: true + transition: + tabs: false + labels: true + border_radius: 0 + +# Reading progress bar +# Dependencies: https://github.com/theme-next/theme-next-reading-progress +reading_progress: + enable: false + color: "#37c6c0" + height: 2px + + +#! --------------------------------------------------------------- +#! DO NOT EDIT THE FOLLOWING SETTINGS +#! UNLESS YOU KNOW WHAT YOU ARE DOING +#! --------------------------------------------------------------- + +# Use velocity to animate everything. +motion: + enable: true + async: false + transition: + # Transition variants: + # fadeIn | fadeOut | flipXIn | flipXOut | flipYIn | flipYOut | flipBounceXIn | flipBounceXOut | flipBounceYIn | flipBounceYOut + # swoopIn | swoopOut | whirlIn | whirlOut | shrinkIn | shrinkOut | expandIn | expandOut + # bounceIn | bounceOut | bounceUpIn | bounceUpOut | bounceDownIn | bounceDownOut | bounceLeftIn | bounceLeftOut | bounceRightIn | bounceRightOut + # slideUpIn | slideUpOut | slideDownIn | slideDownOut | slideLeftIn | slideLeftOut | slideRightIn | slideRightOut + # slideUpBigIn | slideUpBigOut | slideDownBigIn | slideDownBigOut | slideLeftBigIn | slideLeftBigOut | slideRightBigIn | slideRightBigOut + # perspectiveUpIn | perspectiveUpOut | perspectiveDownIn | perspectiveDownOut | perspectiveLeftIn | perspectiveLeftOut | perspectiveRightIn | perspectiveRightOut + post_block: fadeIn + post_header: slideDownIn + post_body: slideDownIn + coll_header: slideLeftIn + # Only for Pisces | Gemini. + sidebar: slideUpIn + +# Fancybox. There is support for old version 2 and new version 3. +# Please, choose only any one variant, do not need to install both. +# For install 2.x: https://github.com/theme-next/theme-next-fancybox +# For install 3.x: https://github.com/theme-next/theme-next-fancybox3 +fancybox: false + +# Added switch option for separated repo in 6.0.0. +# Dependencies: https://github.com/theme-next/theme-next-fastclick +fastclick: false + +# Added switch option for separated repo in 6.0.0. +# Dependencies: https://github.com/theme-next/theme-next-jquery-lazyload +lazyload: false + +# Progress bar in the top during page loading. +# Dependencies: https://github.com/theme-next/theme-next-pace +pace: false +# Themes list: +#pace-theme-big-counter +#pace-theme-bounce +#pace-theme-barber-shop +#pace-theme-center-atom +#pace-theme-center-circle +#pace-theme-center-radar +#pace-theme-center-simple +#pace-theme-corner-indicator +#pace-theme-fill-left +#pace-theme-flash +#pace-theme-loading-bar +#pace-theme-mac-osx +#pace-theme-minimal +# For example +# pace_theme: pace-theme-center-simple +pace_theme: pace-theme-minimal + +# Canvas-nest +# Dependencies: https://github.com/theme-next/theme-next-canvas-nest +canvas_nest: false + +# JavaScript 3D library. +# Dependencies: https://github.com/theme-next/theme-next-three +# three_waves +three_waves: false +# canvas_lines +canvas_lines: false +# canvas_sphere +canvas_sphere: false + +# Only fit scheme Pisces +# Dependencies: https://github.com/theme-next/theme-next-canvas-ribbon +# Canvas-ribbon +# size: The width of the ribbon. +# alpha: The transparency of the ribbon. +# zIndex: The display level of the ribbon. +canvas_ribbon: + enable: false + size: 300 + alpha: 0.6 + zIndex: -1 + +# Script Vendors. +# Set a CDN address for the vendor you want to customize. +# For example +# jquery: https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js +# Be aware that you should use the same version as internal ones to avoid potential problems. +# Please use the https protocol of CDN files when you enable https on your site. +vendors: + # Internal path prefix. Please do not edit it. + _internal: lib + + # Internal version: 2.1.3 + jquery: + + # Internal version: 2.1.5 + # See: http://fancyapps.com/fancybox/ + fancybox: + fancybox_css: + + # Internal version: 1.0.6 + # See: https://github.com/ftlabs/fastclick + fastclick: + + # Internal version: 1.9.7 + # See: https://github.com/tuupola/jquery_lazyload + lazyload: + + # Internal version: 1.2.1 + # See: http://VelocityJS.org + velocity: + + # Internal version: 1.2.1 + # See: http://VelocityJS.org + velocity_ui: + + # Internal version: 0.7.9 + # See: https://faisalman.github.io/ua-parser-js/ + ua_parser: + + # Internal version: 4.6.2 + # See: http://fontawesome.io/ + fontawesome: + + # Internal version: 1 + # https://www.algolia.com + algolia_instant_js: + algolia_instant_css: + + # Internal version: 1.0.2 + # See: https://github.com/HubSpot/pace + # Or use direct links below: + # pace: //cdn.bootcss.com/pace/1.0.2/pace.min.js + # pace_css: //cdn.bootcss.com/pace/1.0.2/themes/blue/pace-theme-flash.min.css + pace: + pace_css: + + # Internal version: 1.0.0 + # https://github.com/hustcc/canvas-nest.js + canvas_nest: + + # three + three: + + # three_waves + # https://github.com/jjandxa/three_waves + three_waves: + + # three_waves + # https://github.com/jjandxa/canvas_lines + canvas_lines: + + # three_waves + # https://github.com/jjandxa/canvas_sphere + canvas_sphere: + + # Internal version: 1.0.0 + # https://github.com/zproo/canvas-ribbon + canvas_ribbon: + + # Internal version: 3.3.0 + # https://github.com/ethantw/Han + Han: + + # Internal version: 3.3.0 + # https://github.com/vinta/pangu.js + pangu: + + # needMoreShare2 + # https://github.com/revir/need-more-share2 + needmoreshare2_js: + needmoreshare2_css: + + # bookmark + # Internal version: 1.0.0 + # https://github.com/theme-next/theme-next-bookmark + bookmark: + + # reading_progress + # Internal version: 1.0 + # https://github.com/theme-next/theme-next-reading-progress + # Example: https://cdn.jsdelivr.net/gh/theme-next/theme-next-reading-progress@1.1/reading_progress.min.js + reading_progress: + + # valine comment + # Example: https://cdn.jsdelivr.net/npm/valine@1.1.8/dist/Valine.min.js + valine: + + +# Assets +css: css +js: js +images: images diff --git a/bower.json b/themes/next/bower.json similarity index 100% rename from bower.json rename to themes/next/bower.json diff --git a/crowdin.yml b/themes/next/crowdin.yml similarity index 100% rename from crowdin.yml rename to themes/next/crowdin.yml diff --git a/docs/AGPL3.md b/themes/next/docs/AGPL3.md similarity index 100% rename from docs/AGPL3.md rename to themes/next/docs/AGPL3.md diff --git a/docs/ALGOLIA-SEARCH.md b/themes/next/docs/ALGOLIA-SEARCH.md similarity index 100% rename from docs/ALGOLIA-SEARCH.md rename to themes/next/docs/ALGOLIA-SEARCH.md diff --git a/docs/AUTHORS.md b/themes/next/docs/AUTHORS.md similarity index 100% rename from docs/AUTHORS.md rename to themes/next/docs/AUTHORS.md diff --git a/docs/DATA-FILES.md b/themes/next/docs/DATA-FILES.md similarity index 100% rename from docs/DATA-FILES.md rename to themes/next/docs/DATA-FILES.md diff --git a/docs/INSTALLATION.md b/themes/next/docs/INSTALLATION.md similarity index 100% rename from docs/INSTALLATION.md rename to themes/next/docs/INSTALLATION.md diff --git a/docs/LEANCLOUD-COUNTER-SECURITY.md b/themes/next/docs/LEANCLOUD-COUNTER-SECURITY.md similarity index 100% rename from docs/LEANCLOUD-COUNTER-SECURITY.md rename to themes/next/docs/LEANCLOUD-COUNTER-SECURITY.md diff --git a/docs/LICENSE b/themes/next/docs/LICENSE similarity index 100% rename from docs/LICENSE rename to themes/next/docs/LICENSE diff --git a/docs/MATH.md b/themes/next/docs/MATH.md similarity index 100% rename from docs/MATH.md rename to themes/next/docs/MATH.md diff --git a/docs/UPDATE-FROM-5.1.X.md b/themes/next/docs/UPDATE-FROM-5.1.X.md similarity index 100% rename from docs/UPDATE-FROM-5.1.X.md rename to themes/next/docs/UPDATE-FROM-5.1.X.md diff --git a/docs/ru/DATA-FILES.md b/themes/next/docs/ru/DATA-FILES.md similarity index 100% rename from docs/ru/DATA-FILES.md rename to themes/next/docs/ru/DATA-FILES.md diff --git a/docs/ru/INSTALLATION.md b/themes/next/docs/ru/INSTALLATION.md similarity index 100% rename from docs/ru/INSTALLATION.md rename to themes/next/docs/ru/INSTALLATION.md diff --git a/docs/ru/README.md b/themes/next/docs/ru/README.md similarity index 100% rename from docs/ru/README.md rename to themes/next/docs/ru/README.md diff --git a/docs/ru/UPDATE-FROM-5.1.X.md b/themes/next/docs/ru/UPDATE-FROM-5.1.X.md similarity index 100% rename from docs/ru/UPDATE-FROM-5.1.X.md rename to themes/next/docs/ru/UPDATE-FROM-5.1.X.md diff --git a/docs/zh-CN/ALGOLIA-SEARCH.md b/themes/next/docs/zh-CN/ALGOLIA-SEARCH.md similarity index 100% rename from docs/zh-CN/ALGOLIA-SEARCH.md rename to themes/next/docs/zh-CN/ALGOLIA-SEARCH.md diff --git a/docs/zh-CN/CODE_OF_CONDUCT.md b/themes/next/docs/zh-CN/CODE_OF_CONDUCT.md similarity index 100% rename from docs/zh-CN/CODE_OF_CONDUCT.md rename to themes/next/docs/zh-CN/CODE_OF_CONDUCT.md diff --git a/docs/zh-CN/CONTRIBUTING.md b/themes/next/docs/zh-CN/CONTRIBUTING.md similarity index 100% rename from docs/zh-CN/CONTRIBUTING.md rename to themes/next/docs/zh-CN/CONTRIBUTING.md diff --git a/docs/zh-CN/DATA-FILES.md b/themes/next/docs/zh-CN/DATA-FILES.md similarity index 100% rename from docs/zh-CN/DATA-FILES.md rename to themes/next/docs/zh-CN/DATA-FILES.md diff --git a/docs/zh-CN/INSTALLATION.md b/themes/next/docs/zh-CN/INSTALLATION.md similarity index 100% rename from docs/zh-CN/INSTALLATION.md rename to themes/next/docs/zh-CN/INSTALLATION.md diff --git a/docs/zh-CN/LEANCLOUD-COUNTER-SECURITY.md b/themes/next/docs/zh-CN/LEANCLOUD-COUNTER-SECURITY.md similarity index 100% rename from docs/zh-CN/LEANCLOUD-COUNTER-SECURITY.md rename to themes/next/docs/zh-CN/LEANCLOUD-COUNTER-SECURITY.md diff --git a/docs/zh-CN/MATH.md b/themes/next/docs/zh-CN/MATH.md similarity index 100% rename from docs/zh-CN/MATH.md rename to themes/next/docs/zh-CN/MATH.md diff --git a/docs/zh-CN/README.md b/themes/next/docs/zh-CN/README.md similarity index 100% rename from docs/zh-CN/README.md rename to themes/next/docs/zh-CN/README.md diff --git a/docs/zh-CN/UPDATE-FROM-5.1.X.md b/themes/next/docs/zh-CN/UPDATE-FROM-5.1.X.md similarity index 100% rename from docs/zh-CN/UPDATE-FROM-5.1.X.md rename to themes/next/docs/zh-CN/UPDATE-FROM-5.1.X.md diff --git a/gulpfile.coffee b/themes/next/gulpfile.coffee similarity index 100% rename from gulpfile.coffee rename to themes/next/gulpfile.coffee diff --git a/languages/de.yml b/themes/next/languages/de.yml similarity index 100% rename from languages/de.yml rename to themes/next/languages/de.yml diff --git a/languages/default.yml b/themes/next/languages/default.yml similarity index 100% rename from languages/default.yml rename to themes/next/languages/default.yml diff --git a/languages/en.yml b/themes/next/languages/en.yml similarity index 100% rename from languages/en.yml rename to themes/next/languages/en.yml diff --git a/languages/fr.yml b/themes/next/languages/fr.yml similarity index 100% rename from languages/fr.yml rename to themes/next/languages/fr.yml diff --git a/languages/id.yml b/themes/next/languages/id.yml similarity index 100% rename from languages/id.yml rename to themes/next/languages/id.yml diff --git a/languages/it.yml b/themes/next/languages/it.yml similarity index 100% rename from languages/it.yml rename to themes/next/languages/it.yml diff --git a/languages/ja.yml b/themes/next/languages/ja.yml similarity index 100% rename from languages/ja.yml rename to themes/next/languages/ja.yml diff --git a/languages/ko.yml b/themes/next/languages/ko.yml similarity index 100% rename from languages/ko.yml rename to themes/next/languages/ko.yml diff --git a/languages/nl.yml b/themes/next/languages/nl.yml similarity index 100% rename from languages/nl.yml rename to themes/next/languages/nl.yml diff --git a/languages/pt-BR.yml b/themes/next/languages/pt-BR.yml similarity index 100% rename from languages/pt-BR.yml rename to themes/next/languages/pt-BR.yml diff --git a/languages/pt.yml b/themes/next/languages/pt.yml similarity index 100% rename from languages/pt.yml rename to themes/next/languages/pt.yml diff --git a/languages/ru.yml b/themes/next/languages/ru.yml similarity index 100% rename from languages/ru.yml rename to themes/next/languages/ru.yml diff --git a/languages/tr.yml b/themes/next/languages/tr.yml similarity index 100% rename from languages/tr.yml rename to themes/next/languages/tr.yml diff --git a/languages/vi.yml b/themes/next/languages/vi.yml similarity index 100% rename from languages/vi.yml rename to themes/next/languages/vi.yml diff --git a/languages/zh-CN.yml b/themes/next/languages/zh-CN.yml similarity index 98% rename from languages/zh-CN.yml rename to themes/next/languages/zh-CN.yml index 0d828c89c..4fc0eb8d1 100644 --- a/languages/zh-CN.yml +++ b/themes/next/languages/zh-CN.yml @@ -9,6 +9,8 @@ menu: archives: 归档 categories: 分类 tags: 标签 + books: 阅读 + movies: 电影 about: 关于 search: 搜索 schedule: 日程表 diff --git a/languages/zh-HK.yml b/themes/next/languages/zh-HK.yml similarity index 100% rename from languages/zh-HK.yml rename to themes/next/languages/zh-HK.yml diff --git a/languages/zh-TW.yml b/themes/next/languages/zh-TW.yml similarity index 100% rename from languages/zh-TW.yml rename to themes/next/languages/zh-TW.yml diff --git a/layout/_custom/head.swig b/themes/next/layout/_custom/head.swig similarity index 100% rename from layout/_custom/head.swig rename to themes/next/layout/_custom/head.swig diff --git a/layout/_custom/header.swig b/themes/next/layout/_custom/header.swig similarity index 100% rename from layout/_custom/header.swig rename to themes/next/layout/_custom/header.swig diff --git a/layout/_custom/sidebar.swig b/themes/next/layout/_custom/sidebar.swig similarity index 100% rename from layout/_custom/sidebar.swig rename to themes/next/layout/_custom/sidebar.swig diff --git a/layout/_layout.swig b/themes/next/layout/_layout.swig similarity index 100% rename from layout/_layout.swig rename to themes/next/layout/_layout.swig diff --git a/layout/_macro/menu/menu-badge.swig b/themes/next/layout/_macro/menu/menu-badge.swig similarity index 100% rename from layout/_macro/menu/menu-badge.swig rename to themes/next/layout/_macro/menu/menu-badge.swig diff --git a/layout/_macro/menu/menu-item.swig b/themes/next/layout/_macro/menu/menu-item.swig similarity index 100% rename from layout/_macro/menu/menu-item.swig rename to themes/next/layout/_macro/menu/menu-item.swig diff --git a/layout/_macro/post-collapse.swig b/themes/next/layout/_macro/post-collapse.swig similarity index 100% rename from layout/_macro/post-collapse.swig rename to themes/next/layout/_macro/post-collapse.swig diff --git a/layout/_macro/post-copyright.swig b/themes/next/layout/_macro/post-copyright.swig similarity index 100% rename from layout/_macro/post-copyright.swig rename to themes/next/layout/_macro/post-copyright.swig diff --git a/layout/_macro/post-related.swig b/themes/next/layout/_macro/post-related.swig similarity index 100% rename from layout/_macro/post-related.swig rename to themes/next/layout/_macro/post-related.swig diff --git a/layout/_macro/post.swig b/themes/next/layout/_macro/post.swig similarity index 100% rename from layout/_macro/post.swig rename to themes/next/layout/_macro/post.swig diff --git a/layout/_macro/reward.swig b/themes/next/layout/_macro/reward.swig similarity index 100% rename from layout/_macro/reward.swig rename to themes/next/layout/_macro/reward.swig diff --git a/layout/_macro/sidebar.swig b/themes/next/layout/_macro/sidebar.swig similarity index 100% rename from layout/_macro/sidebar.swig rename to themes/next/layout/_macro/sidebar.swig diff --git a/layout/_macro/wechat-subscriber.swig b/themes/next/layout/_macro/wechat-subscriber.swig similarity index 100% rename from layout/_macro/wechat-subscriber.swig rename to themes/next/layout/_macro/wechat-subscriber.swig diff --git a/layout/_partials/breadcrumb.swig b/themes/next/layout/_partials/breadcrumb.swig similarity index 100% rename from layout/_partials/breadcrumb.swig rename to themes/next/layout/_partials/breadcrumb.swig diff --git a/layout/_partials/comments.swig b/themes/next/layout/_partials/comments.swig similarity index 100% rename from layout/_partials/comments.swig rename to themes/next/layout/_partials/comments.swig diff --git a/layout/_partials/footer.swig b/themes/next/layout/_partials/footer.swig similarity index 100% rename from layout/_partials/footer.swig rename to themes/next/layout/_partials/footer.swig diff --git a/layout/_partials/head/external-fonts.swig b/themes/next/layout/_partials/head/external-fonts.swig similarity index 100% rename from layout/_partials/head/external-fonts.swig rename to themes/next/layout/_partials/head/external-fonts.swig diff --git a/layout/_partials/head/head-unique.swig b/themes/next/layout/_partials/head/head-unique.swig similarity index 100% rename from layout/_partials/head/head-unique.swig rename to themes/next/layout/_partials/head/head-unique.swig diff --git a/layout/_partials/head/head.swig b/themes/next/layout/_partials/head/head.swig similarity index 100% rename from layout/_partials/head/head.swig rename to themes/next/layout/_partials/head/head.swig diff --git a/layout/_partials/header/brand.swig b/themes/next/layout/_partials/header/brand.swig similarity index 100% rename from layout/_partials/header/brand.swig rename to themes/next/layout/_partials/header/brand.swig diff --git a/layout/_partials/header/index.swig b/themes/next/layout/_partials/header/index.swig similarity index 100% rename from layout/_partials/header/index.swig rename to themes/next/layout/_partials/header/index.swig diff --git a/layout/_partials/header/menu.swig b/themes/next/layout/_partials/header/menu.swig similarity index 100% rename from layout/_partials/header/menu.swig rename to themes/next/layout/_partials/header/menu.swig diff --git a/layout/_partials/header/sub-menu.swig b/themes/next/layout/_partials/header/sub-menu.swig similarity index 100% rename from layout/_partials/header/sub-menu.swig rename to themes/next/layout/_partials/header/sub-menu.swig diff --git a/layout/_partials/page-header.swig b/themes/next/layout/_partials/page-header.swig similarity index 100% rename from layout/_partials/page-header.swig rename to themes/next/layout/_partials/page-header.swig diff --git a/layout/_partials/pagination.swig b/themes/next/layout/_partials/pagination.swig similarity index 100% rename from layout/_partials/pagination.swig rename to themes/next/layout/_partials/pagination.swig diff --git a/layout/_partials/search/index.swig b/themes/next/layout/_partials/search/index.swig similarity index 100% rename from layout/_partials/search/index.swig rename to themes/next/layout/_partials/search/index.swig diff --git a/layout/_partials/search/localsearch.swig b/themes/next/layout/_partials/search/localsearch.swig similarity index 100% rename from layout/_partials/search/localsearch.swig rename to themes/next/layout/_partials/search/localsearch.swig diff --git a/layout/_partials/search/swiftype.swig b/themes/next/layout/_partials/search/swiftype.swig similarity index 100% rename from layout/_partials/search/swiftype.swig rename to themes/next/layout/_partials/search/swiftype.swig diff --git a/layout/_partials/search/tinysou.swig b/themes/next/layout/_partials/search/tinysou.swig similarity index 100% rename from layout/_partials/search/tinysou.swig rename to themes/next/layout/_partials/search/tinysou.swig diff --git a/layout/_partials/share/add-this.swig b/themes/next/layout/_partials/share/add-this.swig similarity index 100% rename from layout/_partials/share/add-this.swig rename to themes/next/layout/_partials/share/add-this.swig diff --git a/layout/_partials/share/baidushare.swig b/themes/next/layout/_partials/share/baidushare.swig similarity index 100% rename from layout/_partials/share/baidushare.swig rename to themes/next/layout/_partials/share/baidushare.swig diff --git a/layout/_partials/share/duoshuo_share.swig b/themes/next/layout/_partials/share/duoshuo_share.swig similarity index 100% rename from layout/_partials/share/duoshuo_share.swig rename to themes/next/layout/_partials/share/duoshuo_share.swig diff --git a/layout/_partials/share/jiathis.swig b/themes/next/layout/_partials/share/jiathis.swig similarity index 100% rename from layout/_partials/share/jiathis.swig rename to themes/next/layout/_partials/share/jiathis.swig diff --git a/layout/_scripts/boostrap.swig b/themes/next/layout/_scripts/boostrap.swig similarity index 100% rename from layout/_scripts/boostrap.swig rename to themes/next/layout/_scripts/boostrap.swig diff --git a/layout/_scripts/commons.swig b/themes/next/layout/_scripts/commons.swig similarity index 100% rename from layout/_scripts/commons.swig rename to themes/next/layout/_scripts/commons.swig diff --git a/layout/_scripts/noscript.swig b/themes/next/layout/_scripts/noscript.swig similarity index 100% rename from layout/_scripts/noscript.swig rename to themes/next/layout/_scripts/noscript.swig diff --git a/layout/_scripts/pages/post-details.swig b/themes/next/layout/_scripts/pages/post-details.swig similarity index 100% rename from layout/_scripts/pages/post-details.swig rename to themes/next/layout/_scripts/pages/post-details.swig diff --git a/layout/_scripts/schemes/gemini.swig b/themes/next/layout/_scripts/schemes/gemini.swig similarity index 100% rename from layout/_scripts/schemes/gemini.swig rename to themes/next/layout/_scripts/schemes/gemini.swig diff --git a/layout/_scripts/schemes/mist.swig b/themes/next/layout/_scripts/schemes/mist.swig similarity index 100% rename from layout/_scripts/schemes/mist.swig rename to themes/next/layout/_scripts/schemes/mist.swig diff --git a/layout/_scripts/schemes/muse.swig b/themes/next/layout/_scripts/schemes/muse.swig similarity index 100% rename from layout/_scripts/schemes/muse.swig rename to themes/next/layout/_scripts/schemes/muse.swig diff --git a/layout/_scripts/schemes/pisces.swig b/themes/next/layout/_scripts/schemes/pisces.swig similarity index 100% rename from layout/_scripts/schemes/pisces.swig rename to themes/next/layout/_scripts/schemes/pisces.swig diff --git a/layout/_scripts/vendors.swig b/themes/next/layout/_scripts/vendors.swig similarity index 100% rename from layout/_scripts/vendors.swig rename to themes/next/layout/_scripts/vendors.swig diff --git a/layout/_third-party/analytics/analytics-with-widget.swig b/themes/next/layout/_third-party/analytics/analytics-with-widget.swig similarity index 100% rename from layout/_third-party/analytics/analytics-with-widget.swig rename to themes/next/layout/_third-party/analytics/analytics-with-widget.swig diff --git a/layout/_third-party/analytics/application-insights.swig b/themes/next/layout/_third-party/analytics/application-insights.swig similarity index 100% rename from layout/_third-party/analytics/application-insights.swig rename to themes/next/layout/_third-party/analytics/application-insights.swig diff --git a/layout/_third-party/analytics/baidu-analytics.swig b/themes/next/layout/_third-party/analytics/baidu-analytics.swig similarity index 100% rename from layout/_third-party/analytics/baidu-analytics.swig rename to themes/next/layout/_third-party/analytics/baidu-analytics.swig diff --git a/layout/_third-party/analytics/busuanzi-counter.swig b/themes/next/layout/_third-party/analytics/busuanzi-counter.swig similarity index 100% rename from layout/_third-party/analytics/busuanzi-counter.swig rename to themes/next/layout/_third-party/analytics/busuanzi-counter.swig diff --git a/layout/_third-party/analytics/cnzz-analytics.swig b/themes/next/layout/_third-party/analytics/cnzz-analytics.swig similarity index 100% rename from layout/_third-party/analytics/cnzz-analytics.swig rename to themes/next/layout/_third-party/analytics/cnzz-analytics.swig diff --git a/layout/_third-party/analytics/facebook-sdk.swig b/themes/next/layout/_third-party/analytics/facebook-sdk.swig similarity index 100% rename from layout/_third-party/analytics/facebook-sdk.swig rename to themes/next/layout/_third-party/analytics/facebook-sdk.swig diff --git a/layout/_third-party/analytics/firestore.swig b/themes/next/layout/_third-party/analytics/firestore.swig similarity index 100% rename from layout/_third-party/analytics/firestore.swig rename to themes/next/layout/_third-party/analytics/firestore.swig diff --git a/layout/_third-party/analytics/google-analytics.swig b/themes/next/layout/_third-party/analytics/google-analytics.swig similarity index 100% rename from layout/_third-party/analytics/google-analytics.swig rename to themes/next/layout/_third-party/analytics/google-analytics.swig diff --git a/layout/_third-party/analytics/index.swig b/themes/next/layout/_third-party/analytics/index.swig similarity index 100% rename from layout/_third-party/analytics/index.swig rename to themes/next/layout/_third-party/analytics/index.swig diff --git a/layout/_third-party/analytics/lean-analytics.swig b/themes/next/layout/_third-party/analytics/lean-analytics.swig similarity index 100% rename from layout/_third-party/analytics/lean-analytics.swig rename to themes/next/layout/_third-party/analytics/lean-analytics.swig diff --git a/layout/_third-party/analytics/tencent-analytics.swig b/themes/next/layout/_third-party/analytics/tencent-analytics.swig similarity index 100% rename from layout/_third-party/analytics/tencent-analytics.swig rename to themes/next/layout/_third-party/analytics/tencent-analytics.swig diff --git a/layout/_third-party/analytics/tencent-mta.swig b/themes/next/layout/_third-party/analytics/tencent-mta.swig similarity index 100% rename from layout/_third-party/analytics/tencent-mta.swig rename to themes/next/layout/_third-party/analytics/tencent-mta.swig diff --git a/layout/_third-party/analytics/vkontakte-api.swig b/themes/next/layout/_third-party/analytics/vkontakte-api.swig similarity index 100% rename from layout/_third-party/analytics/vkontakte-api.swig rename to themes/next/layout/_third-party/analytics/vkontakte-api.swig diff --git a/layout/_third-party/bookmark.swig b/themes/next/layout/_third-party/bookmark.swig similarity index 100% rename from layout/_third-party/bookmark.swig rename to themes/next/layout/_third-party/bookmark.swig diff --git a/layout/_third-party/comments/changyan.swig b/themes/next/layout/_third-party/comments/changyan.swig similarity index 100% rename from layout/_third-party/comments/changyan.swig rename to themes/next/layout/_third-party/comments/changyan.swig diff --git a/layout/_third-party/comments/disqus.swig b/themes/next/layout/_third-party/comments/disqus.swig similarity index 100% rename from layout/_third-party/comments/disqus.swig rename to themes/next/layout/_third-party/comments/disqus.swig diff --git a/layout/_third-party/comments/gitment.swig b/themes/next/layout/_third-party/comments/gitment.swig similarity index 100% rename from layout/_third-party/comments/gitment.swig rename to themes/next/layout/_third-party/comments/gitment.swig diff --git a/layout/_third-party/comments/hypercomments.swig b/themes/next/layout/_third-party/comments/hypercomments.swig similarity index 100% rename from layout/_third-party/comments/hypercomments.swig rename to themes/next/layout/_third-party/comments/hypercomments.swig diff --git a/layout/_third-party/comments/index.swig b/themes/next/layout/_third-party/comments/index.swig similarity index 100% rename from layout/_third-party/comments/index.swig rename to themes/next/layout/_third-party/comments/index.swig diff --git a/layout/_third-party/comments/livere.swig b/themes/next/layout/_third-party/comments/livere.swig similarity index 100% rename from layout/_third-party/comments/livere.swig rename to themes/next/layout/_third-party/comments/livere.swig diff --git a/layout/_third-party/comments/valine.swig b/themes/next/layout/_third-party/comments/valine.swig similarity index 100% rename from layout/_third-party/comments/valine.swig rename to themes/next/layout/_third-party/comments/valine.swig diff --git a/layout/_third-party/comments/youyan.swig b/themes/next/layout/_third-party/comments/youyan.swig similarity index 100% rename from layout/_third-party/comments/youyan.swig rename to themes/next/layout/_third-party/comments/youyan.swig diff --git a/layout/_third-party/copy-code.swig b/themes/next/layout/_third-party/copy-code.swig similarity index 100% rename from layout/_third-party/copy-code.swig rename to themes/next/layout/_third-party/copy-code.swig diff --git a/layout/_third-party/exturl.swig b/themes/next/layout/_third-party/exturl.swig similarity index 100% rename from layout/_third-party/exturl.swig rename to themes/next/layout/_third-party/exturl.swig diff --git a/layout/_third-party/github-banner.swig b/themes/next/layout/_third-party/github-banner.swig similarity index 100% rename from layout/_third-party/github-banner.swig rename to themes/next/layout/_third-party/github-banner.swig diff --git a/layout/_third-party/math/index.swig b/themes/next/layout/_third-party/math/index.swig similarity index 100% rename from layout/_third-party/math/index.swig rename to themes/next/layout/_third-party/math/index.swig diff --git a/layout/_third-party/math/katex.swig b/themes/next/layout/_third-party/math/katex.swig similarity index 100% rename from layout/_third-party/math/katex.swig rename to themes/next/layout/_third-party/math/katex.swig diff --git a/layout/_third-party/math/mathjax.swig b/themes/next/layout/_third-party/math/mathjax.swig similarity index 100% rename from layout/_third-party/math/mathjax.swig rename to themes/next/layout/_third-party/math/mathjax.swig diff --git a/layout/_third-party/needsharebutton.swig b/themes/next/layout/_third-party/needsharebutton.swig similarity index 100% rename from layout/_third-party/needsharebutton.swig rename to themes/next/layout/_third-party/needsharebutton.swig diff --git a/layout/_third-party/pangu.swig b/themes/next/layout/_third-party/pangu.swig similarity index 100% rename from layout/_third-party/pangu.swig rename to themes/next/layout/_third-party/pangu.swig diff --git a/layout/_third-party/rating.swig b/themes/next/layout/_third-party/rating.swig similarity index 100% rename from layout/_third-party/rating.swig rename to themes/next/layout/_third-party/rating.swig diff --git a/layout/_third-party/schedule.swig b/themes/next/layout/_third-party/schedule.swig similarity index 100% rename from layout/_third-party/schedule.swig rename to themes/next/layout/_third-party/schedule.swig diff --git a/layout/_third-party/scroll-cookie.swig b/themes/next/layout/_third-party/scroll-cookie.swig similarity index 100% rename from layout/_third-party/scroll-cookie.swig rename to themes/next/layout/_third-party/scroll-cookie.swig diff --git a/layout/_third-party/search/algolia-search/assets.swig b/themes/next/layout/_third-party/search/algolia-search/assets.swig similarity index 100% rename from layout/_third-party/search/algolia-search/assets.swig rename to themes/next/layout/_third-party/search/algolia-search/assets.swig diff --git a/layout/_third-party/search/algolia-search/dom.swig b/themes/next/layout/_third-party/search/algolia-search/dom.swig similarity index 100% rename from layout/_third-party/search/algolia-search/dom.swig rename to themes/next/layout/_third-party/search/algolia-search/dom.swig diff --git a/layout/_third-party/search/index.swig b/themes/next/layout/_third-party/search/index.swig similarity index 100% rename from layout/_third-party/search/index.swig rename to themes/next/layout/_third-party/search/index.swig diff --git a/layout/_third-party/search/localsearch.swig b/themes/next/layout/_third-party/search/localsearch.swig similarity index 100% rename from layout/_third-party/search/localsearch.swig rename to themes/next/layout/_third-party/search/localsearch.swig diff --git a/layout/_third-party/search/tinysou.swig b/themes/next/layout/_third-party/search/tinysou.swig similarity index 100% rename from layout/_third-party/search/tinysou.swig rename to themes/next/layout/_third-party/search/tinysou.swig diff --git a/layout/_third-party/seo/baidu-push.swig b/themes/next/layout/_third-party/seo/baidu-push.swig similarity index 100% rename from layout/_third-party/seo/baidu-push.swig rename to themes/next/layout/_third-party/seo/baidu-push.swig diff --git a/layout/archive.swig b/themes/next/layout/archive.swig similarity index 100% rename from layout/archive.swig rename to themes/next/layout/archive.swig diff --git a/layout/category.swig b/themes/next/layout/category.swig similarity index 100% rename from layout/category.swig rename to themes/next/layout/category.swig diff --git a/layout/index.swig b/themes/next/layout/index.swig similarity index 100% rename from layout/index.swig rename to themes/next/layout/index.swig diff --git a/layout/page.swig b/themes/next/layout/page.swig similarity index 100% rename from layout/page.swig rename to themes/next/layout/page.swig diff --git a/layout/post.swig b/themes/next/layout/post.swig similarity index 100% rename from layout/post.swig rename to themes/next/layout/post.swig diff --git a/layout/schedule.swig b/themes/next/layout/schedule.swig similarity index 100% rename from layout/schedule.swig rename to themes/next/layout/schedule.swig diff --git a/layout/tag.swig b/themes/next/layout/tag.swig similarity index 100% rename from layout/tag.swig rename to themes/next/layout/tag.swig diff --git a/themes/next/package.json b/themes/next/package.json new file mode 100644 index 000000000..dcd68887a --- /dev/null +++ b/themes/next/package.json @@ -0,0 +1,36 @@ +{ + "name": "hexo-theme-next", + "version": "6.3.0", + "description": "Elegant and powerful theme for Hexo", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "gulp" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/theme-next/hexo-theme-next.git" + }, + "keywords": [ + "hexo", + "theme", + "next" + ], + "author": "NexT (https://theme-next.org)", + "license": "AGPL", + "bugs": { + "url": "https://github.com/theme-next/hexo-theme-next/issues" + }, + "homepage": "https://theme-next.org", + "devDependencies": { + "coffee-script": "^1.10.0", + "gulp": "^3.9.0", + "gulp-jshint": "^1.12.0", + "gulp-shell": "^0.6.1", + "js-yaml": "^3.8.1", + "jshint-stylish": "^2.1.0", + "stylint": "^1.5.9" + } +} diff --git a/scripts/helpers.js b/themes/next/scripts/helpers.js similarity index 100% rename from scripts/helpers.js rename to themes/next/scripts/helpers.js diff --git a/scripts/merge-configs.js b/themes/next/scripts/merge-configs.js similarity index 100% rename from scripts/merge-configs.js rename to themes/next/scripts/merge-configs.js diff --git a/scripts/merge.js b/themes/next/scripts/merge.js similarity index 100% rename from scripts/merge.js rename to themes/next/scripts/merge.js diff --git a/scripts/tags/button.js b/themes/next/scripts/tags/button.js similarity index 100% rename from scripts/tags/button.js rename to themes/next/scripts/tags/button.js diff --git a/scripts/tags/center-quote.js b/themes/next/scripts/tags/center-quote.js similarity index 100% rename from scripts/tags/center-quote.js rename to themes/next/scripts/tags/center-quote.js diff --git a/scripts/tags/exturl.js b/themes/next/scripts/tags/exturl.js similarity index 100% rename from scripts/tags/exturl.js rename to themes/next/scripts/tags/exturl.js diff --git a/scripts/tags/full-image.js b/themes/next/scripts/tags/full-image.js similarity index 100% rename from scripts/tags/full-image.js rename to themes/next/scripts/tags/full-image.js diff --git a/scripts/tags/group-pictures.js b/themes/next/scripts/tags/group-pictures.js similarity index 100% rename from scripts/tags/group-pictures.js rename to themes/next/scripts/tags/group-pictures.js diff --git a/scripts/tags/include-raw.js b/themes/next/scripts/tags/include-raw.js similarity index 100% rename from scripts/tags/include-raw.js rename to themes/next/scripts/tags/include-raw.js diff --git a/scripts/tags/label.js b/themes/next/scripts/tags/label.js similarity index 100% rename from scripts/tags/label.js rename to themes/next/scripts/tags/label.js diff --git a/scripts/tags/lazy-image.js b/themes/next/scripts/tags/lazy-image.js similarity index 100% rename from scripts/tags/lazy-image.js rename to themes/next/scripts/tags/lazy-image.js diff --git a/scripts/tags/note.js b/themes/next/scripts/tags/note.js similarity index 100% rename from scripts/tags/note.js rename to themes/next/scripts/tags/note.js diff --git a/scripts/tags/tabs.js b/themes/next/scripts/tags/tabs.js similarity index 100% rename from scripts/tags/tabs.js rename to themes/next/scripts/tags/tabs.js diff --git a/source/css/_common/components/back-to-top-sidebar.styl b/themes/next/source/css/_common/components/back-to-top-sidebar.styl similarity index 100% rename from source/css/_common/components/back-to-top-sidebar.styl rename to themes/next/source/css/_common/components/back-to-top-sidebar.styl diff --git a/source/css/_common/components/back-to-top.styl b/themes/next/source/css/_common/components/back-to-top.styl similarity index 100% rename from source/css/_common/components/back-to-top.styl rename to themes/next/source/css/_common/components/back-to-top.styl diff --git a/source/css/_common/components/buttons.styl b/themes/next/source/css/_common/components/buttons.styl similarity index 100% rename from source/css/_common/components/buttons.styl rename to themes/next/source/css/_common/components/buttons.styl diff --git a/source/css/_common/components/comments.styl b/themes/next/source/css/_common/components/comments.styl similarity index 100% rename from source/css/_common/components/comments.styl rename to themes/next/source/css/_common/components/comments.styl diff --git a/source/css/_common/components/components.styl b/themes/next/source/css/_common/components/components.styl similarity index 100% rename from source/css/_common/components/components.styl rename to themes/next/source/css/_common/components/components.styl diff --git a/source/css/_common/components/footer/footer.styl b/themes/next/source/css/_common/components/footer/footer.styl similarity index 100% rename from source/css/_common/components/footer/footer.styl rename to themes/next/source/css/_common/components/footer/footer.styl diff --git a/source/css/_common/components/header/github-banner.styl b/themes/next/source/css/_common/components/header/github-banner.styl similarity index 100% rename from source/css/_common/components/header/github-banner.styl rename to themes/next/source/css/_common/components/header/github-banner.styl diff --git a/source/css/_common/components/header/header.styl b/themes/next/source/css/_common/components/header/header.styl similarity index 100% rename from source/css/_common/components/header/header.styl rename to themes/next/source/css/_common/components/header/header.styl diff --git a/source/css/_common/components/header/headerband.styl b/themes/next/source/css/_common/components/header/headerband.styl similarity index 100% rename from source/css/_common/components/header/headerband.styl rename to themes/next/source/css/_common/components/header/headerband.styl diff --git a/source/css/_common/components/header/menu.styl b/themes/next/source/css/_common/components/header/menu.styl similarity index 100% rename from source/css/_common/components/header/menu.styl rename to themes/next/source/css/_common/components/header/menu.styl diff --git a/source/css/_common/components/header/site-meta.styl b/themes/next/source/css/_common/components/header/site-meta.styl similarity index 100% rename from source/css/_common/components/header/site-meta.styl rename to themes/next/source/css/_common/components/header/site-meta.styl diff --git a/source/css/_common/components/header/site-nav.styl b/themes/next/source/css/_common/components/header/site-nav.styl similarity index 100% rename from source/css/_common/components/header/site-nav.styl rename to themes/next/source/css/_common/components/header/site-nav.styl diff --git a/source/css/_common/components/highlight/diff.styl b/themes/next/source/css/_common/components/highlight/diff.styl similarity index 100% rename from source/css/_common/components/highlight/diff.styl rename to themes/next/source/css/_common/components/highlight/diff.styl diff --git a/source/css/_common/components/highlight/highlight.styl b/themes/next/source/css/_common/components/highlight/highlight.styl similarity index 100% rename from source/css/_common/components/highlight/highlight.styl rename to themes/next/source/css/_common/components/highlight/highlight.styl diff --git a/source/css/_common/components/highlight/theme.styl b/themes/next/source/css/_common/components/highlight/theme.styl similarity index 100% rename from source/css/_common/components/highlight/theme.styl rename to themes/next/source/css/_common/components/highlight/theme.styl diff --git a/source/css/_common/components/pages/archive.styl b/themes/next/source/css/_common/components/pages/archive.styl similarity index 100% rename from source/css/_common/components/pages/archive.styl rename to themes/next/source/css/_common/components/pages/archive.styl diff --git a/source/css/_common/components/pages/breadcrumb.styl b/themes/next/source/css/_common/components/pages/breadcrumb.styl similarity index 100% rename from source/css/_common/components/pages/breadcrumb.styl rename to themes/next/source/css/_common/components/pages/breadcrumb.styl diff --git a/source/css/_common/components/pages/categories.styl b/themes/next/source/css/_common/components/pages/categories.styl similarity index 100% rename from source/css/_common/components/pages/categories.styl rename to themes/next/source/css/_common/components/pages/categories.styl diff --git a/source/css/_common/components/pages/pages.styl b/themes/next/source/css/_common/components/pages/pages.styl similarity index 100% rename from source/css/_common/components/pages/pages.styl rename to themes/next/source/css/_common/components/pages/pages.styl diff --git a/source/css/_common/components/pages/post-detail.styl b/themes/next/source/css/_common/components/pages/post-detail.styl similarity index 100% rename from source/css/_common/components/pages/post-detail.styl rename to themes/next/source/css/_common/components/pages/post-detail.styl diff --git a/source/css/_common/components/pages/schedule.styl b/themes/next/source/css/_common/components/pages/schedule.styl similarity index 100% rename from source/css/_common/components/pages/schedule.styl rename to themes/next/source/css/_common/components/pages/schedule.styl diff --git a/source/css/_common/components/pagination.styl b/themes/next/source/css/_common/components/pagination.styl similarity index 100% rename from source/css/_common/components/pagination.styl rename to themes/next/source/css/_common/components/pagination.styl diff --git a/source/css/_common/components/post/post-button.styl b/themes/next/source/css/_common/components/post/post-button.styl similarity index 100% rename from source/css/_common/components/post/post-button.styl rename to themes/next/source/css/_common/components/post/post-button.styl diff --git a/source/css/_common/components/post/post-collapse.styl b/themes/next/source/css/_common/components/post/post-collapse.styl similarity index 100% rename from source/css/_common/components/post/post-collapse.styl rename to themes/next/source/css/_common/components/post/post-collapse.styl diff --git a/source/css/_common/components/post/post-copyright.styl b/themes/next/source/css/_common/components/post/post-copyright.styl similarity index 100% rename from source/css/_common/components/post/post-copyright.styl rename to themes/next/source/css/_common/components/post/post-copyright.styl diff --git a/source/css/_common/components/post/post-eof.styl b/themes/next/source/css/_common/components/post/post-eof.styl similarity index 100% rename from source/css/_common/components/post/post-eof.styl rename to themes/next/source/css/_common/components/post/post-eof.styl diff --git a/source/css/_common/components/post/post-expand.styl b/themes/next/source/css/_common/components/post/post-expand.styl similarity index 100% rename from source/css/_common/components/post/post-expand.styl rename to themes/next/source/css/_common/components/post/post-expand.styl diff --git a/source/css/_common/components/post/post-gallery.styl b/themes/next/source/css/_common/components/post/post-gallery.styl similarity index 100% rename from source/css/_common/components/post/post-gallery.styl rename to themes/next/source/css/_common/components/post/post-gallery.styl diff --git a/source/css/_common/components/post/post-meta.styl b/themes/next/source/css/_common/components/post/post-meta.styl similarity index 100% rename from source/css/_common/components/post/post-meta.styl rename to themes/next/source/css/_common/components/post/post-meta.styl diff --git a/source/css/_common/components/post/post-nav.styl b/themes/next/source/css/_common/components/post/post-nav.styl similarity index 100% rename from source/css/_common/components/post/post-nav.styl rename to themes/next/source/css/_common/components/post/post-nav.styl diff --git a/source/css/_common/components/post/post-reading_progress.styl b/themes/next/source/css/_common/components/post/post-reading_progress.styl similarity index 100% rename from source/css/_common/components/post/post-reading_progress.styl rename to themes/next/source/css/_common/components/post/post-reading_progress.styl diff --git a/source/css/_common/components/post/post-reward.styl b/themes/next/source/css/_common/components/post/post-reward.styl similarity index 100% rename from source/css/_common/components/post/post-reward.styl rename to themes/next/source/css/_common/components/post/post-reward.styl diff --git a/source/css/_common/components/post/post-rtl.styl b/themes/next/source/css/_common/components/post/post-rtl.styl similarity index 100% rename from source/css/_common/components/post/post-rtl.styl rename to themes/next/source/css/_common/components/post/post-rtl.styl diff --git a/source/css/_common/components/post/post-tags.styl b/themes/next/source/css/_common/components/post/post-tags.styl similarity index 100% rename from source/css/_common/components/post/post-tags.styl rename to themes/next/source/css/_common/components/post/post-tags.styl diff --git a/source/css/_common/components/post/post-title.styl b/themes/next/source/css/_common/components/post/post-title.styl similarity index 100% rename from source/css/_common/components/post/post-title.styl rename to themes/next/source/css/_common/components/post/post-title.styl diff --git a/source/css/_common/components/post/post-type.styl b/themes/next/source/css/_common/components/post/post-type.styl similarity index 100% rename from source/css/_common/components/post/post-type.styl rename to themes/next/source/css/_common/components/post/post-type.styl diff --git a/source/css/_common/components/post/post-widgets.styl b/themes/next/source/css/_common/components/post/post-widgets.styl similarity index 100% rename from source/css/_common/components/post/post-widgets.styl rename to themes/next/source/css/_common/components/post/post-widgets.styl diff --git a/source/css/_common/components/post/post.styl b/themes/next/source/css/_common/components/post/post.styl similarity index 100% rename from source/css/_common/components/post/post.styl rename to themes/next/source/css/_common/components/post/post.styl diff --git a/source/css/_common/components/sidebar/sidebar-author-links.styl b/themes/next/source/css/_common/components/sidebar/sidebar-author-links.styl similarity index 100% rename from source/css/_common/components/sidebar/sidebar-author-links.styl rename to themes/next/source/css/_common/components/sidebar/sidebar-author-links.styl diff --git a/source/css/_common/components/sidebar/sidebar-author.styl b/themes/next/source/css/_common/components/sidebar/sidebar-author.styl similarity index 100% rename from source/css/_common/components/sidebar/sidebar-author.styl rename to themes/next/source/css/_common/components/sidebar/sidebar-author.styl diff --git a/source/css/_common/components/sidebar/sidebar-blogroll.styl b/themes/next/source/css/_common/components/sidebar/sidebar-blogroll.styl similarity index 100% rename from source/css/_common/components/sidebar/sidebar-blogroll.styl rename to themes/next/source/css/_common/components/sidebar/sidebar-blogroll.styl diff --git a/source/css/_common/components/sidebar/sidebar-dimmer.styl b/themes/next/source/css/_common/components/sidebar/sidebar-dimmer.styl similarity index 100% rename from source/css/_common/components/sidebar/sidebar-dimmer.styl rename to themes/next/source/css/_common/components/sidebar/sidebar-dimmer.styl diff --git a/source/css/_common/components/sidebar/sidebar-feed-link.styl b/themes/next/source/css/_common/components/sidebar/sidebar-feed-link.styl similarity index 100% rename from source/css/_common/components/sidebar/sidebar-feed-link.styl rename to themes/next/source/css/_common/components/sidebar/sidebar-feed-link.styl diff --git a/source/css/_common/components/sidebar/sidebar-nav.styl b/themes/next/source/css/_common/components/sidebar/sidebar-nav.styl similarity index 100% rename from source/css/_common/components/sidebar/sidebar-nav.styl rename to themes/next/source/css/_common/components/sidebar/sidebar-nav.styl diff --git a/source/css/_common/components/sidebar/sidebar-toc.styl b/themes/next/source/css/_common/components/sidebar/sidebar-toc.styl similarity index 100% rename from source/css/_common/components/sidebar/sidebar-toc.styl rename to themes/next/source/css/_common/components/sidebar/sidebar-toc.styl diff --git a/source/css/_common/components/sidebar/sidebar-toggle.styl b/themes/next/source/css/_common/components/sidebar/sidebar-toggle.styl similarity index 100% rename from source/css/_common/components/sidebar/sidebar-toggle.styl rename to themes/next/source/css/_common/components/sidebar/sidebar-toggle.styl diff --git a/source/css/_common/components/sidebar/sidebar.styl b/themes/next/source/css/_common/components/sidebar/sidebar.styl similarity index 100% rename from source/css/_common/components/sidebar/sidebar.styl rename to themes/next/source/css/_common/components/sidebar/sidebar.styl diff --git a/source/css/_common/components/sidebar/site-state.styl b/themes/next/source/css/_common/components/sidebar/site-state.styl similarity index 100% rename from source/css/_common/components/sidebar/site-state.styl rename to themes/next/source/css/_common/components/sidebar/site-state.styl diff --git a/source/css/_common/components/tag-cloud.styl b/themes/next/source/css/_common/components/tag-cloud.styl similarity index 100% rename from source/css/_common/components/tag-cloud.styl rename to themes/next/source/css/_common/components/tag-cloud.styl diff --git a/source/css/_common/components/tags/blockquote-center.styl b/themes/next/source/css/_common/components/tags/blockquote-center.styl similarity index 100% rename from source/css/_common/components/tags/blockquote-center.styl rename to themes/next/source/css/_common/components/tags/blockquote-center.styl diff --git a/source/css/_common/components/tags/exturl.styl b/themes/next/source/css/_common/components/tags/exturl.styl similarity index 100% rename from source/css/_common/components/tags/exturl.styl rename to themes/next/source/css/_common/components/tags/exturl.styl diff --git a/source/css/_common/components/tags/full-image.styl b/themes/next/source/css/_common/components/tags/full-image.styl similarity index 100% rename from source/css/_common/components/tags/full-image.styl rename to themes/next/source/css/_common/components/tags/full-image.styl diff --git a/source/css/_common/components/tags/group-pictures.styl b/themes/next/source/css/_common/components/tags/group-pictures.styl similarity index 100% rename from source/css/_common/components/tags/group-pictures.styl rename to themes/next/source/css/_common/components/tags/group-pictures.styl diff --git a/source/css/_common/components/tags/label.styl b/themes/next/source/css/_common/components/tags/label.styl similarity index 100% rename from source/css/_common/components/tags/label.styl rename to themes/next/source/css/_common/components/tags/label.styl diff --git a/source/css/_common/components/tags/note-modern.styl b/themes/next/source/css/_common/components/tags/note-modern.styl similarity index 100% rename from source/css/_common/components/tags/note-modern.styl rename to themes/next/source/css/_common/components/tags/note-modern.styl diff --git a/source/css/_common/components/tags/note.styl b/themes/next/source/css/_common/components/tags/note.styl similarity index 100% rename from source/css/_common/components/tags/note.styl rename to themes/next/source/css/_common/components/tags/note.styl diff --git a/source/css/_common/components/tags/tabs.styl b/themes/next/source/css/_common/components/tags/tabs.styl similarity index 100% rename from source/css/_common/components/tags/tabs.styl rename to themes/next/source/css/_common/components/tags/tabs.styl diff --git a/source/css/_common/components/tags/tags.styl b/themes/next/source/css/_common/components/tags/tags.styl similarity index 100% rename from source/css/_common/components/tags/tags.styl rename to themes/next/source/css/_common/components/tags/tags.styl diff --git a/source/css/_common/components/third-party/algolia-search.styl b/themes/next/source/css/_common/components/third-party/algolia-search.styl similarity index 100% rename from source/css/_common/components/third-party/algolia-search.styl rename to themes/next/source/css/_common/components/third-party/algolia-search.styl diff --git a/source/css/_common/components/third-party/baidushare.styl b/themes/next/source/css/_common/components/third-party/baidushare.styl similarity index 100% rename from source/css/_common/components/third-party/baidushare.styl rename to themes/next/source/css/_common/components/third-party/baidushare.styl diff --git a/source/css/_common/components/third-party/busuanzi-counter.styl b/themes/next/source/css/_common/components/third-party/busuanzi-counter.styl similarity index 100% rename from source/css/_common/components/third-party/busuanzi-counter.styl rename to themes/next/source/css/_common/components/third-party/busuanzi-counter.styl diff --git a/source/css/_common/components/third-party/gitment.styl b/themes/next/source/css/_common/components/third-party/gitment.styl similarity index 100% rename from source/css/_common/components/third-party/gitment.styl rename to themes/next/source/css/_common/components/third-party/gitment.styl diff --git a/source/css/_common/components/third-party/han.styl b/themes/next/source/css/_common/components/third-party/han.styl similarity index 100% rename from source/css/_common/components/third-party/han.styl rename to themes/next/source/css/_common/components/third-party/han.styl diff --git a/source/css/_common/components/third-party/jiathis.styl b/themes/next/source/css/_common/components/third-party/jiathis.styl similarity index 100% rename from source/css/_common/components/third-party/jiathis.styl rename to themes/next/source/css/_common/components/third-party/jiathis.styl diff --git a/source/css/_common/components/third-party/localsearch.styl b/themes/next/source/css/_common/components/third-party/localsearch.styl similarity index 100% rename from source/css/_common/components/third-party/localsearch.styl rename to themes/next/source/css/_common/components/third-party/localsearch.styl diff --git a/source/css/_common/components/third-party/needsharebutton.styl b/themes/next/source/css/_common/components/third-party/needsharebutton.styl similarity index 100% rename from source/css/_common/components/third-party/needsharebutton.styl rename to themes/next/source/css/_common/components/third-party/needsharebutton.styl diff --git a/source/css/_common/components/third-party/related-posts.styl b/themes/next/source/css/_common/components/third-party/related-posts.styl similarity index 100% rename from source/css/_common/components/third-party/related-posts.styl rename to themes/next/source/css/_common/components/third-party/related-posts.styl diff --git a/source/css/_common/components/third-party/third-party.styl b/themes/next/source/css/_common/components/third-party/third-party.styl similarity index 100% rename from source/css/_common/components/third-party/third-party.styl rename to themes/next/source/css/_common/components/third-party/third-party.styl diff --git a/source/css/_common/outline/outline.styl b/themes/next/source/css/_common/outline/outline.styl similarity index 100% rename from source/css/_common/outline/outline.styl rename to themes/next/source/css/_common/outline/outline.styl diff --git a/source/css/_common/scaffolding/base.styl b/themes/next/source/css/_common/scaffolding/base.styl similarity index 100% rename from source/css/_common/scaffolding/base.styl rename to themes/next/source/css/_common/scaffolding/base.styl diff --git a/source/css/_common/scaffolding/helpers.styl b/themes/next/source/css/_common/scaffolding/helpers.styl similarity index 100% rename from source/css/_common/scaffolding/helpers.styl rename to themes/next/source/css/_common/scaffolding/helpers.styl diff --git a/source/css/_common/scaffolding/mobile.styl b/themes/next/source/css/_common/scaffolding/mobile.styl similarity index 100% rename from source/css/_common/scaffolding/mobile.styl rename to themes/next/source/css/_common/scaffolding/mobile.styl diff --git a/source/css/_common/scaffolding/normalize.styl b/themes/next/source/css/_common/scaffolding/normalize.styl similarity index 100% rename from source/css/_common/scaffolding/normalize.styl rename to themes/next/source/css/_common/scaffolding/normalize.styl diff --git a/source/css/_common/scaffolding/scaffolding.styl b/themes/next/source/css/_common/scaffolding/scaffolding.styl similarity index 100% rename from source/css/_common/scaffolding/scaffolding.styl rename to themes/next/source/css/_common/scaffolding/scaffolding.styl diff --git a/source/css/_common/scaffolding/tables.styl b/themes/next/source/css/_common/scaffolding/tables.styl similarity index 100% rename from source/css/_common/scaffolding/tables.styl rename to themes/next/source/css/_common/scaffolding/tables.styl diff --git a/source/css/_custom/custom.styl b/themes/next/source/css/_custom/custom.styl similarity index 100% rename from source/css/_custom/custom.styl rename to themes/next/source/css/_custom/custom.styl diff --git a/source/css/_mixins/Gemini.styl b/themes/next/source/css/_mixins/Gemini.styl similarity index 100% rename from source/css/_mixins/Gemini.styl rename to themes/next/source/css/_mixins/Gemini.styl diff --git a/source/css/_mixins/Mist.styl b/themes/next/source/css/_mixins/Mist.styl similarity index 100% rename from source/css/_mixins/Mist.styl rename to themes/next/source/css/_mixins/Mist.styl diff --git a/source/css/_mixins/Muse.styl b/themes/next/source/css/_mixins/Muse.styl similarity index 100% rename from source/css/_mixins/Muse.styl rename to themes/next/source/css/_mixins/Muse.styl diff --git a/source/css/_mixins/Pisces.styl b/themes/next/source/css/_mixins/Pisces.styl similarity index 100% rename from source/css/_mixins/Pisces.styl rename to themes/next/source/css/_mixins/Pisces.styl diff --git a/source/css/_mixins/base.styl b/themes/next/source/css/_mixins/base.styl similarity index 100% rename from source/css/_mixins/base.styl rename to themes/next/source/css/_mixins/base.styl diff --git a/source/css/_mixins/custom.styl b/themes/next/source/css/_mixins/custom.styl similarity index 100% rename from source/css/_mixins/custom.styl rename to themes/next/source/css/_mixins/custom.styl diff --git a/source/css/_schemes/Gemini/index.styl b/themes/next/source/css/_schemes/Gemini/index.styl similarity index 100% rename from source/css/_schemes/Gemini/index.styl rename to themes/next/source/css/_schemes/Gemini/index.styl diff --git a/source/css/_schemes/Mist/_base.styl b/themes/next/source/css/_schemes/Mist/_base.styl similarity index 100% rename from source/css/_schemes/Mist/_base.styl rename to themes/next/source/css/_schemes/Mist/_base.styl diff --git a/source/css/_schemes/Mist/_header.styl b/themes/next/source/css/_schemes/Mist/_header.styl similarity index 100% rename from source/css/_schemes/Mist/_header.styl rename to themes/next/source/css/_schemes/Mist/_header.styl diff --git a/source/css/_schemes/Mist/_logo.styl b/themes/next/source/css/_schemes/Mist/_logo.styl similarity index 100% rename from source/css/_schemes/Mist/_logo.styl rename to themes/next/source/css/_schemes/Mist/_logo.styl diff --git a/source/css/_schemes/Mist/_menu.styl b/themes/next/source/css/_schemes/Mist/_menu.styl similarity index 100% rename from source/css/_schemes/Mist/_menu.styl rename to themes/next/source/css/_schemes/Mist/_menu.styl diff --git a/source/css/_schemes/Mist/_posts-expanded.styl b/themes/next/source/css/_schemes/Mist/_posts-expanded.styl similarity index 100% rename from source/css/_schemes/Mist/_posts-expanded.styl rename to themes/next/source/css/_schemes/Mist/_posts-expanded.styl diff --git a/source/css/_schemes/Mist/_search.styl b/themes/next/source/css/_schemes/Mist/_search.styl similarity index 100% rename from source/css/_schemes/Mist/_search.styl rename to themes/next/source/css/_schemes/Mist/_search.styl diff --git a/source/css/_schemes/Mist/index.styl b/themes/next/source/css/_schemes/Mist/index.styl similarity index 100% rename from source/css/_schemes/Mist/index.styl rename to themes/next/source/css/_schemes/Mist/index.styl diff --git a/source/css/_schemes/Mist/outline/outline.styl b/themes/next/source/css/_schemes/Mist/outline/outline.styl similarity index 100% rename from source/css/_schemes/Mist/outline/outline.styl rename to themes/next/source/css/_schemes/Mist/outline/outline.styl diff --git a/source/css/_schemes/Mist/sidebar/sidebar-blogroll.styl b/themes/next/source/css/_schemes/Mist/sidebar/sidebar-blogroll.styl similarity index 100% rename from source/css/_schemes/Mist/sidebar/sidebar-blogroll.styl rename to themes/next/source/css/_schemes/Mist/sidebar/sidebar-blogroll.styl diff --git a/source/css/_schemes/Muse/_layout.styl b/themes/next/source/css/_schemes/Muse/_layout.styl similarity index 100% rename from source/css/_schemes/Muse/_layout.styl rename to themes/next/source/css/_schemes/Muse/_layout.styl diff --git a/source/css/_schemes/Muse/_logo.styl b/themes/next/source/css/_schemes/Muse/_logo.styl similarity index 100% rename from source/css/_schemes/Muse/_logo.styl rename to themes/next/source/css/_schemes/Muse/_logo.styl diff --git a/source/css/_schemes/Muse/_menu.styl b/themes/next/source/css/_schemes/Muse/_menu.styl similarity index 100% rename from source/css/_schemes/Muse/_menu.styl rename to themes/next/source/css/_schemes/Muse/_menu.styl diff --git a/source/css/_schemes/Muse/_search.styl b/themes/next/source/css/_schemes/Muse/_search.styl similarity index 100% rename from source/css/_schemes/Muse/_search.styl rename to themes/next/source/css/_schemes/Muse/_search.styl diff --git a/source/css/_schemes/Muse/index.styl b/themes/next/source/css/_schemes/Muse/index.styl similarity index 100% rename from source/css/_schemes/Muse/index.styl rename to themes/next/source/css/_schemes/Muse/index.styl diff --git a/source/css/_schemes/Muse/sidebar/sidebar-blogroll.styl b/themes/next/source/css/_schemes/Muse/sidebar/sidebar-blogroll.styl similarity index 100% rename from source/css/_schemes/Muse/sidebar/sidebar-blogroll.styl rename to themes/next/source/css/_schemes/Muse/sidebar/sidebar-blogroll.styl diff --git a/source/css/_schemes/Pisces/_brand.styl b/themes/next/source/css/_schemes/Pisces/_brand.styl similarity index 100% rename from source/css/_schemes/Pisces/_brand.styl rename to themes/next/source/css/_schemes/Pisces/_brand.styl diff --git a/source/css/_schemes/Pisces/_layout.styl b/themes/next/source/css/_schemes/Pisces/_layout.styl similarity index 100% rename from source/css/_schemes/Pisces/_layout.styl rename to themes/next/source/css/_schemes/Pisces/_layout.styl diff --git a/source/css/_schemes/Pisces/_menu.styl b/themes/next/source/css/_schemes/Pisces/_menu.styl similarity index 100% rename from source/css/_schemes/Pisces/_menu.styl rename to themes/next/source/css/_schemes/Pisces/_menu.styl diff --git a/source/css/_schemes/Pisces/_posts.styl b/themes/next/source/css/_schemes/Pisces/_posts.styl similarity index 100% rename from source/css/_schemes/Pisces/_posts.styl rename to themes/next/source/css/_schemes/Pisces/_posts.styl diff --git a/source/css/_schemes/Pisces/_sidebar.styl b/themes/next/source/css/_schemes/Pisces/_sidebar.styl similarity index 100% rename from source/css/_schemes/Pisces/_sidebar.styl rename to themes/next/source/css/_schemes/Pisces/_sidebar.styl diff --git a/source/css/_schemes/Pisces/_sub-menu.styl b/themes/next/source/css/_schemes/Pisces/_sub-menu.styl similarity index 100% rename from source/css/_schemes/Pisces/_sub-menu.styl rename to themes/next/source/css/_schemes/Pisces/_sub-menu.styl diff --git a/source/css/_schemes/Pisces/index.styl b/themes/next/source/css/_schemes/Pisces/index.styl similarity index 100% rename from source/css/_schemes/Pisces/index.styl rename to themes/next/source/css/_schemes/Pisces/index.styl diff --git a/source/css/_variables/Gemini.styl b/themes/next/source/css/_variables/Gemini.styl similarity index 100% rename from source/css/_variables/Gemini.styl rename to themes/next/source/css/_variables/Gemini.styl diff --git a/source/css/_variables/Mist.styl b/themes/next/source/css/_variables/Mist.styl similarity index 100% rename from source/css/_variables/Mist.styl rename to themes/next/source/css/_variables/Mist.styl diff --git a/source/css/_variables/Muse.styl b/themes/next/source/css/_variables/Muse.styl similarity index 100% rename from source/css/_variables/Muse.styl rename to themes/next/source/css/_variables/Muse.styl diff --git a/source/css/_variables/Pisces.styl b/themes/next/source/css/_variables/Pisces.styl similarity index 100% rename from source/css/_variables/Pisces.styl rename to themes/next/source/css/_variables/Pisces.styl diff --git a/source/css/_variables/base.styl b/themes/next/source/css/_variables/base.styl similarity index 100% rename from source/css/_variables/base.styl rename to themes/next/source/css/_variables/base.styl diff --git a/source/css/_variables/custom.styl b/themes/next/source/css/_variables/custom.styl similarity index 100% rename from source/css/_variables/custom.styl rename to themes/next/source/css/_variables/custom.styl diff --git a/source/css/main.styl b/themes/next/source/css/main.styl similarity index 100% rename from source/css/main.styl rename to themes/next/source/css/main.styl diff --git a/source/fonts/.gitkeep b/themes/next/source/fonts/.gitkeep similarity index 100% rename from source/fonts/.gitkeep rename to themes/next/source/fonts/.gitkeep diff --git a/source/images/algolia_logo.svg b/themes/next/source/images/algolia_logo.svg similarity index 100% rename from source/images/algolia_logo.svg rename to themes/next/source/images/algolia_logo.svg diff --git a/source/images/apple-touch-icon-next.png b/themes/next/source/images/apple-touch-icon-next.png similarity index 100% rename from source/images/apple-touch-icon-next.png rename to themes/next/source/images/apple-touch-icon-next.png diff --git a/source/images/avatar.gif b/themes/next/source/images/avatar.gif similarity index 100% rename from source/images/avatar.gif rename to themes/next/source/images/avatar.gif diff --git a/source/images/cc-by-nc-nd.svg b/themes/next/source/images/cc-by-nc-nd.svg similarity index 100% rename from source/images/cc-by-nc-nd.svg rename to themes/next/source/images/cc-by-nc-nd.svg diff --git a/source/images/cc-by-nc-sa.svg b/themes/next/source/images/cc-by-nc-sa.svg similarity index 100% rename from source/images/cc-by-nc-sa.svg rename to themes/next/source/images/cc-by-nc-sa.svg diff --git a/source/images/cc-by-nc.svg b/themes/next/source/images/cc-by-nc.svg similarity index 100% rename from source/images/cc-by-nc.svg rename to themes/next/source/images/cc-by-nc.svg diff --git a/source/images/cc-by-nd.svg b/themes/next/source/images/cc-by-nd.svg similarity index 100% rename from source/images/cc-by-nd.svg rename to themes/next/source/images/cc-by-nd.svg diff --git a/source/images/cc-by-sa.svg b/themes/next/source/images/cc-by-sa.svg similarity index 100% rename from source/images/cc-by-sa.svg rename to themes/next/source/images/cc-by-sa.svg diff --git a/source/images/cc-by.svg b/themes/next/source/images/cc-by.svg similarity index 100% rename from source/images/cc-by.svg rename to themes/next/source/images/cc-by.svg diff --git a/source/images/cc-zero.svg b/themes/next/source/images/cc-zero.svg similarity index 100% rename from source/images/cc-zero.svg rename to themes/next/source/images/cc-zero.svg diff --git a/source/images/favicon-16x16-next.png b/themes/next/source/images/favicon-16x16-next.png similarity index 100% rename from source/images/favicon-16x16-next.png rename to themes/next/source/images/favicon-16x16-next.png diff --git a/source/images/favicon-32x32-next.png b/themes/next/source/images/favicon-32x32-next.png similarity index 100% rename from source/images/favicon-32x32-next.png rename to themes/next/source/images/favicon-32x32-next.png diff --git a/source/images/loading.gif b/themes/next/source/images/loading.gif similarity index 100% rename from source/images/loading.gif rename to themes/next/source/images/loading.gif diff --git a/source/images/logo.svg b/themes/next/source/images/logo.svg similarity index 100% rename from source/images/logo.svg rename to themes/next/source/images/logo.svg diff --git a/source/images/placeholder.gif b/themes/next/source/images/placeholder.gif similarity index 100% rename from source/images/placeholder.gif rename to themes/next/source/images/placeholder.gif diff --git a/source/images/quote-l.svg b/themes/next/source/images/quote-l.svg similarity index 100% rename from source/images/quote-l.svg rename to themes/next/source/images/quote-l.svg diff --git a/source/images/quote-r.svg b/themes/next/source/images/quote-r.svg similarity index 100% rename from source/images/quote-r.svg rename to themes/next/source/images/quote-r.svg diff --git a/source/images/searchicon.png b/themes/next/source/images/searchicon.png similarity index 100% rename from source/images/searchicon.png rename to themes/next/source/images/searchicon.png diff --git a/source/js/src/affix.js b/themes/next/source/js/src/affix.js similarity index 100% rename from source/js/src/affix.js rename to themes/next/source/js/src/affix.js diff --git a/source/js/src/algolia-search.js b/themes/next/source/js/src/algolia-search.js similarity index 100% rename from source/js/src/algolia-search.js rename to themes/next/source/js/src/algolia-search.js diff --git a/source/js/src/bootstrap.js b/themes/next/source/js/src/bootstrap.js similarity index 100% rename from source/js/src/bootstrap.js rename to themes/next/source/js/src/bootstrap.js diff --git a/source/js/src/exturl.js b/themes/next/source/js/src/exturl.js similarity index 100% rename from source/js/src/exturl.js rename to themes/next/source/js/src/exturl.js diff --git a/source/js/src/js.cookie.js b/themes/next/source/js/src/js.cookie.js similarity index 100% rename from source/js/src/js.cookie.js rename to themes/next/source/js/src/js.cookie.js diff --git a/source/js/src/motion.js b/themes/next/source/js/src/motion.js similarity index 100% rename from source/js/src/motion.js rename to themes/next/source/js/src/motion.js diff --git a/source/js/src/post-details.js b/themes/next/source/js/src/post-details.js similarity index 100% rename from source/js/src/post-details.js rename to themes/next/source/js/src/post-details.js diff --git a/source/js/src/schemes/pisces.js b/themes/next/source/js/src/schemes/pisces.js similarity index 100% rename from source/js/src/schemes/pisces.js rename to themes/next/source/js/src/schemes/pisces.js diff --git a/source/js/src/scroll-cookie.js b/themes/next/source/js/src/scroll-cookie.js similarity index 100% rename from source/js/src/scroll-cookie.js rename to themes/next/source/js/src/scroll-cookie.js diff --git a/source/js/src/scrollspy.js b/themes/next/source/js/src/scrollspy.js similarity index 100% rename from source/js/src/scrollspy.js rename to themes/next/source/js/src/scrollspy.js diff --git a/source/js/src/utils.js b/themes/next/source/js/src/utils.js similarity index 100% rename from source/js/src/utils.js rename to themes/next/source/js/src/utils.js diff --git a/source/lib/fancybox/.bower.json b/themes/next/source/lib/fancybox/.bower.json similarity index 100% rename from source/lib/fancybox/.bower.json rename to themes/next/source/lib/fancybox/.bower.json diff --git a/source/lib/fancybox/.gitattributes b/themes/next/source/lib/fancybox/.gitattributes similarity index 100% rename from source/lib/fancybox/.gitattributes rename to themes/next/source/lib/fancybox/.gitattributes diff --git a/source/lib/fancybox/LICENSE b/themes/next/source/lib/fancybox/LICENSE similarity index 100% rename from source/lib/fancybox/LICENSE rename to themes/next/source/lib/fancybox/LICENSE diff --git a/source/lib/fancybox/README.md b/themes/next/source/lib/fancybox/README.md similarity index 100% rename from source/lib/fancybox/README.md rename to themes/next/source/lib/fancybox/README.md diff --git a/source/lib/fancybox/source/jquery.fancybox.css b/themes/next/source/lib/fancybox/source/jquery.fancybox.css similarity index 100% rename from source/lib/fancybox/source/jquery.fancybox.css rename to themes/next/source/lib/fancybox/source/jquery.fancybox.css diff --git a/source/lib/fancybox/source/jquery.fancybox.js b/themes/next/source/lib/fancybox/source/jquery.fancybox.js similarity index 100% rename from source/lib/fancybox/source/jquery.fancybox.js rename to themes/next/source/lib/fancybox/source/jquery.fancybox.js diff --git a/source/lib/fancybox/source/jquery.fancybox.min.css b/themes/next/source/lib/fancybox/source/jquery.fancybox.min.css similarity index 100% rename from source/lib/fancybox/source/jquery.fancybox.min.css rename to themes/next/source/lib/fancybox/source/jquery.fancybox.min.css diff --git a/source/lib/fancybox/source/jquery.fancybox.min.js b/themes/next/source/lib/fancybox/source/jquery.fancybox.min.js similarity index 100% rename from source/lib/fancybox/source/jquery.fancybox.min.js rename to themes/next/source/lib/fancybox/source/jquery.fancybox.min.js diff --git a/source/lib/fancybox/source/jquery.fancybox.pack.js b/themes/next/source/lib/fancybox/source/jquery.fancybox.pack.js similarity index 100% rename from source/lib/fancybox/source/jquery.fancybox.pack.js rename to themes/next/source/lib/fancybox/source/jquery.fancybox.pack.js diff --git a/source/lib/font-awesome/.bower.json b/themes/next/source/lib/font-awesome/.bower.json similarity index 100% rename from source/lib/font-awesome/.bower.json rename to themes/next/source/lib/font-awesome/.bower.json diff --git a/source/lib/font-awesome/.gitignore b/themes/next/source/lib/font-awesome/.gitignore similarity index 100% rename from source/lib/font-awesome/.gitignore rename to themes/next/source/lib/font-awesome/.gitignore diff --git a/source/lib/font-awesome/.npmignore b/themes/next/source/lib/font-awesome/.npmignore similarity index 100% rename from source/lib/font-awesome/.npmignore rename to themes/next/source/lib/font-awesome/.npmignore diff --git a/source/lib/font-awesome/HELP-US-OUT.txt b/themes/next/source/lib/font-awesome/HELP-US-OUT.txt similarity index 100% rename from source/lib/font-awesome/HELP-US-OUT.txt rename to themes/next/source/lib/font-awesome/HELP-US-OUT.txt diff --git a/source/lib/font-awesome/bower.json b/themes/next/source/lib/font-awesome/bower.json similarity index 100% rename from source/lib/font-awesome/bower.json rename to themes/next/source/lib/font-awesome/bower.json diff --git a/source/lib/font-awesome/css/font-awesome.css b/themes/next/source/lib/font-awesome/css/font-awesome.css similarity index 100% rename from source/lib/font-awesome/css/font-awesome.css rename to themes/next/source/lib/font-awesome/css/font-awesome.css diff --git a/source/lib/font-awesome/css/font-awesome.css.map b/themes/next/source/lib/font-awesome/css/font-awesome.css.map similarity index 100% rename from source/lib/font-awesome/css/font-awesome.css.map rename to themes/next/source/lib/font-awesome/css/font-awesome.css.map diff --git a/source/lib/font-awesome/css/font-awesome.min.css b/themes/next/source/lib/font-awesome/css/font-awesome.min.css similarity index 100% rename from source/lib/font-awesome/css/font-awesome.min.css rename to themes/next/source/lib/font-awesome/css/font-awesome.min.css diff --git a/source/lib/font-awesome/fonts/fontawesome-webfont.eot b/themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.eot similarity index 100% rename from source/lib/font-awesome/fonts/fontawesome-webfont.eot rename to themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.eot diff --git a/source/lib/font-awesome/fonts/fontawesome-webfont.woff b/themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.woff similarity index 100% rename from source/lib/font-awesome/fonts/fontawesome-webfont.woff rename to themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.woff diff --git a/source/lib/font-awesome/fonts/fontawesome-webfont.woff2 b/themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.woff2 similarity index 100% rename from source/lib/font-awesome/fonts/fontawesome-webfont.woff2 rename to themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.woff2 diff --git a/source/lib/jquery/index.js b/themes/next/source/lib/jquery/index.js similarity index 100% rename from source/lib/jquery/index.js rename to themes/next/source/lib/jquery/index.js diff --git a/source/lib/reading_progress/.editorconfig b/themes/next/source/lib/reading_progress/.editorconfig similarity index 100% rename from source/lib/reading_progress/.editorconfig rename to themes/next/source/lib/reading_progress/.editorconfig diff --git a/source/lib/reading_progress/.gitignore b/themes/next/source/lib/reading_progress/.gitignore similarity index 100% rename from source/lib/reading_progress/.gitignore rename to themes/next/source/lib/reading_progress/.gitignore diff --git a/source/lib/reading_progress/LICENSE b/themes/next/source/lib/reading_progress/LICENSE similarity index 100% rename from source/lib/reading_progress/LICENSE rename to themes/next/source/lib/reading_progress/LICENSE diff --git a/source/lib/reading_progress/README.md b/themes/next/source/lib/reading_progress/README.md similarity index 100% rename from source/lib/reading_progress/README.md rename to themes/next/source/lib/reading_progress/README.md diff --git a/source/lib/reading_progress/package.json b/themes/next/source/lib/reading_progress/package.json similarity index 100% rename from source/lib/reading_progress/package.json rename to themes/next/source/lib/reading_progress/package.json diff --git a/source/lib/reading_progress/reading_progress.js b/themes/next/source/lib/reading_progress/reading_progress.js similarity index 100% rename from source/lib/reading_progress/reading_progress.js rename to themes/next/source/lib/reading_progress/reading_progress.js diff --git a/source/lib/reading_progress/reading_progress.min.js b/themes/next/source/lib/reading_progress/reading_progress.min.js similarity index 100% rename from source/lib/reading_progress/reading_progress.min.js rename to themes/next/source/lib/reading_progress/reading_progress.min.js diff --git a/source/lib/ua-parser-js/dist/ua-parser.min.js b/themes/next/source/lib/ua-parser-js/dist/ua-parser.min.js similarity index 100% rename from source/lib/ua-parser-js/dist/ua-parser.min.js rename to themes/next/source/lib/ua-parser-js/dist/ua-parser.min.js diff --git a/source/lib/ua-parser-js/dist/ua-parser.pack.js b/themes/next/source/lib/ua-parser-js/dist/ua-parser.pack.js similarity index 100% rename from source/lib/ua-parser-js/dist/ua-parser.pack.js rename to themes/next/source/lib/ua-parser-js/dist/ua-parser.pack.js diff --git a/source/lib/velocity/velocity.js b/themes/next/source/lib/velocity/velocity.js similarity index 100% rename from source/lib/velocity/velocity.js rename to themes/next/source/lib/velocity/velocity.js diff --git a/source/lib/velocity/velocity.min.js b/themes/next/source/lib/velocity/velocity.min.js similarity index 100% rename from source/lib/velocity/velocity.min.js rename to themes/next/source/lib/velocity/velocity.min.js diff --git a/source/lib/velocity/velocity.ui.js b/themes/next/source/lib/velocity/velocity.ui.js similarity index 100% rename from source/lib/velocity/velocity.ui.js rename to themes/next/source/lib/velocity/velocity.ui.js diff --git a/source/lib/velocity/velocity.ui.min.js b/themes/next/source/lib/velocity/velocity.ui.min.js similarity index 100% rename from source/lib/velocity/velocity.ui.min.js rename to themes/next/source/lib/velocity/velocity.ui.min.js diff --git a/test/.jshintrc b/themes/next/test/.jshintrc similarity index 100% rename from test/.jshintrc rename to themes/next/test/.jshintrc diff --git a/test/helpers.js b/themes/next/test/helpers.js similarity index 100% rename from test/helpers.js rename to themes/next/test/helpers.js diff --git a/test/intern.js b/themes/next/test/intern.js similarity index 100% rename from test/intern.js rename to themes/next/test/intern.js From 338777bb01407ff7eadf7f64c1bbd129ea127da5 Mon Sep 17 00:00:00 2001 From: Jerry Date: Wed, 24 Oct 2018 01:29:10 +0800 Subject: [PATCH 035/163] update next version --- source/_data/next.yml | 2 +- source/_posts/movie-fierce.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_data/next.yml b/source/_data/next.yml index cb9173c00..5e5188061 100644 --- a/source/_data/next.yml +++ b/source/_data/next.yml @@ -589,7 +589,7 @@ needmoreshare2: #google_site_verification: # Google Analytics -# google_analytics: UA-100235665-1 +google_analytics: UA-100235665-1 # Bing Webmaster tools verification setting # See: https://www.bing.com/webmaster/ diff --git a/source/_posts/movie-fierce.md b/source/_posts/movie-fierce.md index f964d12b2..806cabda1 100644 --- a/source/_posts/movie-fierce.md +++ b/source/_posts/movie-fierce.md @@ -7,8 +7,6 @@ tag: 黄山 {% cq %}

      怕,你就会输一辈子

      {% endcq %} -{% dplayer "url=https://vodkgeyttp8.vod.126.net/vodkgeyttp8/er2FM3CV_126646839_hd.mp4?wsSecret=1e98e23b7864a26fae93a384aad1bd3b&wsTime=1538906004" "pic=http://p1.music.126.net/w0PZ_MfRNkwDvBwWhjiCtQ==/109951163572827164.jpg" "loop=no" "theme=#FADFA3" "autoplay=false" "token=tokendemo" %} - 喜欢其中的一些台词,大伙共勉 * 其实,我每次上台都很怕的,不过每次我都会跟自己说,我能做到 * 这场比赛我可能会跌倒,但我一定会站起来 @@ -19,4 +17,6 @@ tag: 黄山 * 尊重和珍惜,那些愿意为你去花时间的人 * 要和自己志同道合,有共同目标的伙伴去互相较劲 * 从哪里跌倒就要从哪里爬起来 -* 一路跌跌撞撞走下去,中间的酸甜苦辣是最美的味道 \ No newline at end of file +* 一路跌跌撞撞走下去,中间的酸甜苦辣是最美的味道 + +{% dplayer "url=https://vodkgeyttp8.vod.126.net/vodkgeyttp8/er2FM3CV_126646839_hd.mp4?wsSecret=1e98e23b7864a26fae93a384aad1bd3b&wsTime=1538906004" "pic=http://p1.music.126.net/w0PZ_MfRNkwDvBwWhjiCtQ==/109951163572827164.jpg" "loop=no" "theme=#FADFA3" "autoplay=false" "token=tokendemo" %} \ No newline at end of file From 68db053cb33681b0d53367b27e2b43e322f8fea8 Mon Sep 17 00:00:00 2001 From: Jerry Date: Mon, 29 Oct 2018 00:35:34 +0800 Subject: [PATCH 036/163] add fiddler --- source/_posts/fiddler.md | 52 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 source/_posts/fiddler.md diff --git a/source/_posts/fiddler.md b/source/_posts/fiddler.md new file mode 100644 index 000000000..9d54d504b --- /dev/null +++ b/source/_posts/fiddler.md @@ -0,0 +1,52 @@ +--- +title: Fiddler 初体验 +date: 2018-10-28 19:40:46 +categories: DevTool +tag: [Fiddler] +--- + +在开发的路上,有时候面对一些应用,我们可能回去分析研究它的实现以及数据交互等,在没有官方没有公开的Api提供时,我们会用到一项实用的技术,抓包,所谓的抓包,指的是截取网络传输发送与接收的数据包。其中在Windows平台上使用比较广泛的要数[Fiddler](https://www.telerik.com/fiddler) + +本节主要讲解Fiddler的相关配置及简单使用 + +## 资源 +* Windows 10 +* Fiddler + +## 配置 +需要使手机连接WiFi和电脑WiFi是使用同一个网络 +### Fiddler 初始化 +![fiddler-config](https://res.cloudinary.com/incoder/image/upload/v1540742306/blog/fiddler-config.png) +>默认端口:8888 + +### 网络地址 +获取电脑所连接的网络IP地址 +![fiddler-ip](https://res.cloudinary.com/incoder/image/upload/v1540742723/blog/fiddler-ip.png) +这里获取的IP地址,将用于手机连接网络的代理 + +### 手机配置 +关于手机相关的配置操作,步骤已经通过下面的视频展现。 +1. 连接与电脑相同的WiFi +2. 修改网络代理 +3. 手动模式,并设置电脑端获取的IP地址及Fiddler默认端口号8888 +4. 网络连接刷新 +5. 获取并下载安装Fiddler证书 + +{% dplayer "url=https://res.cloudinary.com/incoder/video/upload/v1540740276/blog/video/fiddler-content.mp4" "pic=https://res.cloudinary.com/incoder/image/upload/v1540743876/blog/fiddler.jpg" "loop=no" "theme=#FADFA3" "autoplay=false" "token=tokendemo" "width=350px" "height=680px" %} + +## 其它 +通过以上操作,现在可以在电脑端Fiddler工具中,拦截获取经过的所有网络信息。而我们一般是查看或者是分析某一款应用的数据信息,这样在查看起来就比较费力,那么我们就借助Fiddler提供的过滤功能 +![fiddler-filter](https://res.cloudinary.com/incoder/image/upload/v1540743106/blog/fiddler-filter.png) + +选择过滤方式中 +1. 第一项有三个选项,不做更改: + “No zone filter”; + “Show Only Intranet Hosts”; + “Show Only Internet Hosts” +2. 第二个选项是只监控以下网址,如只监控百度,在下面的输入框里填上 www.baidu.com + “No Host Filter”:不设置hosts过滤 + “Hide The Following Hosts”:隐藏过滤到的域名 + “Show Only The Following Hosts”:只显示过滤到的域名 + “Flag The Following Hosts”:标记过滤到的域名 +3. 文本框内输入需要过滤的域名,多个域名使用”;“分号分割。 +>fiddler默认会检查http头中设置的host,强制显示http地址中域名。 \ No newline at end of file From 8c7f7aed0876c98f8e875c9df0ef68786fb8d4be Mon Sep 17 00:00:00 2001 From: BladeCode Date: Thu, 8 Nov 2018 14:07:10 +0800 Subject: [PATCH 037/163] add audio --- package-lock.json | 1217 ++++++++++++++------------- package.json | 6 +- source/_posts/android-audio-base.md | 154 ++++ source/_posts/android-audio.md | 404 +++++++++ source/_posts/fiddler.md | 2 +- source/_posts/git-bash.md | 10 +- 6 files changed, 1183 insertions(+), 610 deletions(-) create mode 100644 source/_posts/android-audio-base.md create mode 100644 source/_posts/android-audio.md diff --git a/package-lock.json b/package-lock.json index 9c98cd655..e22990c6e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,12 +5,12 @@ "requires": true, "dependencies": { "JSONStream": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", - "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" } }, "a-sync-waterfall": { @@ -28,7 +28,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "2.1.18", + "mime-types": "~2.1.18", "negotiator": "0.6.1" } }, @@ -42,9 +42,9 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "amdefine": { @@ -62,7 +62,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "any-promise": { @@ -75,8 +75,8 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" } }, "archy": { @@ -89,7 +89,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "arr-diff": { @@ -97,7 +97,7 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "arr-flatten": { @@ -130,9 +130,9 @@ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" }, "dependencies": { "ansi-styles": { @@ -145,11 +145,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { @@ -157,7 +157,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -172,10 +172,10 @@ "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", "requires": { - "babel-code-frame": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0" + "babel-code-frame": "^6.22.0", + "babel-traverse": "^6.23.1", + "babel-types": "^6.23.0", + "babylon": "^6.17.0" } }, "babel-messages": { @@ -183,7 +183,7 @@ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-runtime": { @@ -191,8 +191,8 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "2.5.5", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" }, "dependencies": { "core-js": { @@ -207,15 +207,15 @@ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.4", - "lodash": "4.17.10" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" }, "dependencies": { "debug": { @@ -233,10 +233,10 @@ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.10", - "to-fast-properties": "1.0.3" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, "babylon": { @@ -289,7 +289,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -298,9 +298,9 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "browser-fingerprint": { @@ -318,8 +318,8 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", "requires": { - "no-case": "2.3.2", - "upper-case": "1.1.3" + "no-case": "^2.2.0", + "upper-case": "^1.1.1" } }, "camelcase": { @@ -332,8 +332,8 @@ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chalk": { @@ -341,32 +341,32 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "cheerio": { "version": "0.22.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "resolved": "http://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.0", - "entities": "1.1.1", - "htmlparser2": "3.9.2", - "lodash.assignin": "4.2.0", - "lodash.bind": "4.2.1", - "lodash.defaults": "4.2.0", - "lodash.filter": "4.6.0", - "lodash.flatten": "4.4.0", - "lodash.foreach": "4.5.0", - "lodash.map": "4.6.0", - "lodash.merge": "4.6.1", - "lodash.pick": "4.4.0", - "lodash.reduce": "4.6.0", - "lodash.reject": "4.6.0", - "lodash.some": "4.6.0" + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" } }, "chokidar": { @@ -374,15 +374,15 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.2.2", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" } }, "cliui": { @@ -390,9 +390,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" }, "dependencies": { "strip-ansi": { @@ -400,7 +400,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -411,9 +411,9 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { "color-name": "1.1.3" } @@ -424,16 +424,16 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "command-exists": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.6.tgz", - "integrity": "sha512-Qst/zUUNmS/z3WziPxyqjrcz09pm+2Knbs5mAZL4VAE0sSrNY1/w8+/YxeHcoBTsO6iojA6BW7eFf27Eg2MRuw==" + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz", + "integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw==" }, "compressible": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", "requires": { - "mime-db": "1.33.0" + "mime-db": ">= 1.33.0 < 2" } }, "compression": { @@ -441,13 +441,13 @@ "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", "requires": { - "accepts": "1.3.5", + "accepts": "~1.3.4", "bytes": "3.0.0", - "compressible": "2.0.13", + "compressible": "~2.0.13", "debug": "2.6.9", - "on-headers": "1.0.1", + "on-headers": "~1.0.1", "safe-buffer": "5.1.1", - "vary": "1.1.2" + "vary": "~1.1.2" }, "dependencies": { "debug": { @@ -477,7 +477,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.1.0", - "parseurl": "1.3.2", + "parseurl": "~1.3.2", "utils-merge": "1.0.1" }, "dependencies": { @@ -498,7 +498,7 @@ }, "core-js": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "resolved": "http://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" }, "core-util-is": { @@ -511,8 +511,8 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "requires": { - "lru-cache": "4.1.2", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "which": "^1.2.9" } }, "css-parse": { @@ -522,19 +522,19 @@ }, "css-select": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", + "boolbase": "~1.0.0", + "css-what": "2.1", "domutils": "1.5.1", - "nth-check": "1.0.1" + "nth-check": "~1.0.1" } }, "css-what": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", - "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", + "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==" }, "cuid": { "version": "1.3.8", @@ -542,7 +542,7 @@ "integrity": "sha1-S4deCWm612T37AcGz0T1+wgx9rc=", "requires": { "browser-fingerprint": "0.0.1", - "core-js": "1.2.7", + "core-js": "^1.1.1", "node-fingerprint": "0.0.2" } }, @@ -564,7 +564,7 @@ "resolved": "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz", "integrity": "sha1-FsRu/cq6PtxF8k8r1IaLAbfCrcY=", "requires": { - "os-name": "1.0.3" + "os-name": "~1.0.3" } }, "depd": { @@ -590,7 +590,7 @@ "resolved": "https://registry.npmjs.org/utility/-/utility-0.1.11.tgz", "integrity": "sha1-/eYM+bTkdRlHoM9dEEzik2ciZxU=", "requires": { - "address": "1.0.3" + "address": ">=0.0.1" } } } @@ -600,28 +600,28 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" + "domelementtype": "~1.1.1", + "entities": "~1.1.1" }, "dependencies": { "domelementtype": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" } } }, "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.2.1.tgz", + "integrity": "sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA==" }, "domhandler": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "requires": { - "domelementtype": "1.3.0" + "domelementtype": "1" } }, "domutils": { @@ -629,8 +629,8 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "dom-serializer": "0", + "domelementtype": "1" } }, "dplayer": { @@ -638,7 +638,7 @@ "resolved": "https://registry.npmjs.org/dplayer/-/dplayer-1.22.2.tgz", "integrity": "sha512-M+rNMwM1walQoiEbWOwlVEj8PGtWRZyS1/kWtxDDbGPTcXBanv27UYiPTC/ukn2lTQ9+oXkd+OhMTWrestc04Q==", "requires": { - "balloon-css": "0.5.0", + "balloon-css": "^0.5.0", "promise-polyfill": "7.1.0" } }, @@ -658,9 +658,9 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" }, "escape-html": { "version": "1.0.3", @@ -673,9 +673,9 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esutils": { "version": "2.0.2", @@ -692,7 +692,7 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -700,7 +700,7 @@ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" } }, "extglob": { @@ -708,7 +708,7 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "filename-regex": { @@ -717,15 +717,15 @@ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" }, "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "finalhandler": { @@ -734,12 +734,12 @@ "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", "requires": { "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" }, "dependencies": { "debug": { @@ -762,7 +762,7 @@ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "fresh": { @@ -776,13 +776,13 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.2.tgz", - "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "optional": true, "requires": { - "nan": "2.10.0", - "node-pre-gyp": "0.9.1" + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" }, "dependencies": { "abbrev": { @@ -804,8 +804,8 @@ "bundled": true, "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "balanced-match": { @@ -816,7 +816,7 @@ "version": "1.1.11", "bundled": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -851,7 +851,7 @@ } }, "deep-extend": { - "version": "0.4.2", + "version": "0.5.1", "bundled": true, "optional": true }, @@ -870,7 +870,7 @@ "bundled": true, "optional": true, "requires": { - "minipass": "2.2.4" + "minipass": "^2.2.1" } }, "fs.realpath": { @@ -883,14 +883,14 @@ "bundled": true, "optional": true, "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "glob": { @@ -898,12 +898,12 @@ "bundled": true, "optional": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "has-unicode": { @@ -916,7 +916,7 @@ "bundled": true, "optional": true, "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "^2.1.0" } }, "ignore-walk": { @@ -924,7 +924,7 @@ "bundled": true, "optional": true, "requires": { - "minimatch": "3.0.4" + "minimatch": "^3.0.4" } }, "inflight": { @@ -932,8 +932,8 @@ "bundled": true, "optional": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -949,7 +949,7 @@ "version": "1.0.0", "bundled": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "isarray": { @@ -961,7 +961,7 @@ "version": "3.0.4", "bundled": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -972,8 +972,8 @@ "version": "2.2.4", "bundled": true, "requires": { - "safe-buffer": "5.1.1", - "yallist": "3.0.2" + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" } }, "minizlib": { @@ -981,7 +981,7 @@ "bundled": true, "optional": true, "requires": { - "minipass": "2.2.4" + "minipass": "^2.2.1" } }, "mkdirp": { @@ -1001,26 +1001,26 @@ "bundled": true, "optional": true, "requires": { - "debug": "2.6.9", - "iconv-lite": "0.4.21", - "sax": "1.2.4" + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.9.1", + "version": "0.10.0", "bundled": true, "optional": true, "requires": { - "detect-libc": "1.0.3", - "mkdirp": "0.5.1", - "needle": "2.2.0", - "nopt": "4.0.1", - "npm-packlist": "1.1.10", - "npmlog": "4.1.2", - "rc": "1.2.6", - "rimraf": "2.6.2", - "semver": "5.5.0", - "tar": "4.4.1" + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" } }, "nopt": { @@ -1028,8 +1028,8 @@ "bundled": true, "optional": true, "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" + "abbrev": "1", + "osenv": "^0.1.4" } }, "npm-bundled": { @@ -1042,8 +1042,8 @@ "bundled": true, "optional": true, "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" } }, "npmlog": { @@ -1051,10 +1051,10 @@ "bundled": true, "optional": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -1070,7 +1070,7 @@ "version": "1.4.0", "bundled": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-homedir": { @@ -1088,8 +1088,8 @@ "bundled": true, "optional": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "path-is-absolute": { @@ -1103,14 +1103,14 @@ "optional": true }, "rc": { - "version": "1.2.6", + "version": "1.2.7", "bundled": true, "optional": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -1125,13 +1125,13 @@ "bundled": true, "optional": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "rimraf": { @@ -1139,7 +1139,7 @@ "bundled": true, "optional": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -1175,9 +1175,9 @@ "version": "1.0.2", "bundled": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { @@ -1185,14 +1185,14 @@ "bundled": true, "optional": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "3.0.1", "bundled": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-json-comments": { @@ -1205,13 +1205,13 @@ "bundled": true, "optional": true, "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.4", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.1", - "yallist": "3.0.2" + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" } }, "util-deprecate": { @@ -1224,7 +1224,7 @@ "bundled": true, "optional": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "wrappy": { @@ -1242,7 +1242,7 @@ "resolved": "https://registry.npmjs.org/gitment/-/gitment-0.0.3.tgz", "integrity": "sha1-28y610gLE0W2VpE71w7/eSp7OLg=", "requires": { - "mobx": "3.6.2" + "mobx": "^3.1.7" } }, "glob": { @@ -1251,11 +1251,11 @@ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", "optional": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-base": { @@ -1263,8 +1263,8 @@ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } }, "glob-parent": { @@ -1272,7 +1272,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "globals": { @@ -1290,7 +1290,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -1299,37 +1299,37 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "hexo": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/hexo/-/hexo-3.7.1.tgz", - "integrity": "sha512-+RRN4C8oWYzEnW0NtqNrIfIITRTvXpMoE6OrK5aK4nrO+4lzp0JfZkoxnsINVXUPmzHRimLWUzO95x9lt33jEg==", - "requires": { - "abbrev": "1.1.1", - "archy": "1.0.0", - "bluebird": "3.5.1", - "chalk": "2.4.1", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/hexo/-/hexo-3.8.0.tgz", + "integrity": "sha512-qMk0TZ+ErKMD25R+HMHFvbyTAcKszmGZYtQHT2pzVnZgitkJCShZ7b2qDbedtWBBizhutNbKkhQ4D3Dqivaviw==", + "requires": { + "abbrev": "^1.0.7", + "archy": "^1.0.0", + "bluebird": "^3.4.0", + "chalk": "^2.3.1", "cheerio": "0.22.0", - "hexo-cli": "1.1.0", - "hexo-front-matter": "0.2.3", - "hexo-fs": "0.2.3", - "hexo-i18n": "0.2.1", - "hexo-log": "0.2.0", - "hexo-util": "0.6.3", - "js-yaml": "3.11.0", - "lodash": "4.17.10", - "minimatch": "3.0.4", - "moment": "2.22.1", - "moment-timezone": "0.5.17", - "nunjucks": "3.1.2", - "pretty-hrtime": "1.0.3", - "resolve": "1.7.1", - "strip-ansi": "4.0.0", - "strip-indent": "2.0.0", + "hexo-cli": "^1.1.0", + "hexo-front-matter": "^0.2.2", + "hexo-fs": "^0.2.0", + "hexo-i18n": "^0.2.1", + "hexo-log": "^0.2.0", + "hexo-util": "^0.6.3", + "js-yaml": "^3.6.1", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "moment": "^2.19.4", + "moment-timezone": "^0.5.14", + "nunjucks": "^3.1.2", + "pretty-hrtime": "^1.0.2", + "resolve": "^1.5.0", + "strip-ansi": "^4.0.0", + "strip-indent": "^2.0.0", "swig-extras": "0.0.1", - "swig-templates": "2.0.2", - "text-table": "0.2.0", - "tildify": "1.2.0", - "titlecase": "1.1.2", - "warehouse": "2.2.0" + "swig-templates": "^2.0.2", + "text-table": "^0.2.0", + "tildify": "^1.2.0", + "titlecase": "^1.1.2", + "warehouse": "^2.2.0" }, "dependencies": { "ansi-styles": { @@ -1339,40 +1339,40 @@ }, "hexo-cli": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/hexo-cli/-/hexo-cli-1.1.0.tgz", "integrity": "sha512-IWQPppwgmj1iBUcP5mpcMg3Tre6a8Qlr8ejXw6naZiJNSepSgh4mS3KiNPKDa2qQIgPDqJYJzNVFLw+RLA9CkA==", "requires": { - "abbrev": "1.1.1", - "bluebird": "3.5.1", - "chalk": "1.1.3", - "command-exists": "1.2.6", - "hexo-fs": "0.2.3", - "hexo-log": "0.2.0", - "hexo-util": "0.6.3", - "minimist": "1.2.0", - "object-assign": "4.1.1", - "resolve": "1.7.1", - "tildify": "1.2.0" + "abbrev": "^1.0.7", + "bluebird": "^3.4.0", + "chalk": "^1.1.3", + "command-exists": "^1.2.0", + "hexo-fs": "^0.2.0", + "hexo-log": "^0.2.0", + "hexo-util": "^0.6.0", + "minimist": "^1.2.0", + "object-assign": "^4.1.0", + "resolve": "^1.5.0", + "tildify": "^1.2.0" }, "dependencies": { "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -1389,9 +1389,9 @@ "resolved": "https://registry.npmjs.org/hexo-bunyan/-/hexo-bunyan-1.0.0.tgz", "integrity": "sha512-RymT8Ck+K77mLt9BEYNb4uyfC7RIQnU5N3laXowMrS28jj2h89VHJCOnhV00mmta4fHRqNa07kP1Hrn17nvMkQ==", "requires": { - "moment": "2.22.1", - "mv": "2.1.1", - "safe-json-stringify": "1.1.0" + "moment": "^2.10.6", + "mv": "~2", + "safe-json-stringify": "~1" } }, "hexo-deployer-git": { @@ -1399,13 +1399,13 @@ "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-0.3.1.tgz", "integrity": "sha512-JSwSmTSknGpaiooGXwmP7sAhoSNW3c+xmBiCc5yyrvRSfQ3zIYWjmcqNXSj8m2DmheqQNgt5D4M7quYjw+L6tA==", "requires": { - "babel-eslint": "7.2.3", - "bluebird": "3.5.1", - "chalk": "1.1.3", - "hexo-fs": "0.2.3", - "hexo-util": "0.6.3", - "moment": "2.22.1", - "swig": "1.4.2" + "babel-eslint": "^7.2.1", + "bluebird": "^3.5.0", + "chalk": "^1.1.3", + "hexo-fs": "^0.2.0", + "hexo-util": "^0.6.0", + "moment": "^2.18.0", + "swig": "^1.4.2" }, "dependencies": { "ansi-styles": { @@ -1423,11 +1423,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "source-map": { @@ -1435,7 +1435,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=", "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } }, "strip-ansi": { @@ -1443,7 +1443,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -1456,8 +1456,8 @@ "resolved": "https://registry.npmjs.org/swig/-/swig-1.4.2.tgz", "integrity": "sha1-QIXKBFM2kQS11IPihBs5t64aq6U=", "requires": { - "optimist": "0.6.1", - "uglify-js": "2.4.24" + "optimist": "~0.6", + "uglify-js": "~2.4" } }, "uglify-js": { @@ -1465,10 +1465,10 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=", "requires": { - "async": "0.2.10", + "async": "~0.2.6", "source-map": "0.1.34", - "uglify-to-browserify": "1.0.2", - "yargs": "3.5.4" + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.5.4" } }, "window-size": { @@ -1486,8 +1486,8 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=", "requires": { - "camelcase": "1.2.1", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "decamelize": "^1.0.0", "window-size": "0.1.0", "wordwrap": "0.0.2" } @@ -1500,13 +1500,13 @@ "integrity": "sha512-xRunvmGgEi4ER+fvwx85xeScyO5ci/gcypa6VwNlydq0alR8dq5tT0QKKnr89QWcJwJYSnlsP/xOjuJPRlj8gw==", "requires": { "ejs": "2.5.6", - "hexo-fs": "0.2.3", - "hexo-i18n": "0.2.1", - "hexo-log": "0.2.0", - "path": "0.12.7", - "urllib-sync": "1.1.4", - "xmldom": "0.1.27", - "xpath": "0.0.24" + "hexo-fs": "^0.2.2", + "hexo-i18n": "^0.2.1", + "hexo-log": "^0.2.0", + "path": "^0.12.7", + "urllib-sync": "^1.0.1", + "xmldom": "^0.1.27", + "xpath": "^0.0.24" }, "dependencies": { "ejs": { @@ -1521,7 +1521,7 @@ "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-0.2.3.tgz", "integrity": "sha1-x8qO9CDqNr2F6ECKLoyb9J76YF4=", "requires": { - "js-yaml": "3.11.0" + "js-yaml": "^3.6.1" } }, "hexo-fs": { @@ -1529,10 +1529,10 @@ "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-0.2.3.tgz", "integrity": "sha512-rLB1rMVUW3csAljvJgHfyjemL0BrmcUZfBf9hJe6S0pA53igFa3ON0PFwomvoLs1Wdmjs9Awnw9Tru4PjWFSlQ==", "requires": { - "bluebird": "3.5.1", - "chokidar": "1.7.0", - "escape-string-regexp": "1.0.5", - "graceful-fs": "4.1.11" + "bluebird": "^3.4.0", + "chokidar": "^1.5.2", + "escape-string-regexp": "^1.0.5", + "graceful-fs": "^4.1.4" } }, "hexo-generator-archive": { @@ -1541,7 +1541,7 @@ "integrity": "sha512-jPbMtibqkJnAX3hCwhYhK3r6cqy9OKQsVEScjk7LDok+iPmFmkKCNdU/OccxGe1CWAZpT+ta4+LknwNeHG2G4w==", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "2.1.1" + "object-assign": "^2.0.0" }, "dependencies": { "object-assign": { @@ -1557,7 +1557,7 @@ "integrity": "sha1-uealhiUwqDvdfaTIGcG58+TMtLI=", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "2.1.1" + "object-assign": "^2.0.0" }, "dependencies": { "object-assign": { @@ -1572,8 +1572,8 @@ "resolved": "https://registry.npmjs.org/hexo-generator-feed/-/hexo-generator-feed-1.2.2.tgz", "integrity": "sha512-4jcvVhFgpEFRJ7A+KhBSfWoQaewRBjcVWEO4OmBgnvaZOm6XwK+b5ZXx/8BpujCLHbjXWzglXhiT7qFFS/nvzw==", "requires": { - "nunjucks": "3.1.2", - "object-assign": "4.1.1" + "nunjucks": "^3.0.0", + "object-assign": "^4.1.1" } }, "hexo-generator-index": { @@ -1582,7 +1582,7 @@ "integrity": "sha1-kEIin8rHmq9wBXXaGTMr8/fuXF0=", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "4.1.1" + "object-assign": "^4.0.1" } }, "hexo-generator-searchdb": { @@ -1590,9 +1590,9 @@ "resolved": "https://registry.npmjs.org/hexo-generator-searchdb/-/hexo-generator-searchdb-1.0.8.tgz", "integrity": "sha1-BCRSVuFBOmYxOTLb8cCn5WhVkwE=", "requires": { - "ejs": "1.0.0", - "striptags": "3.1.1", - "utils-merge": "1.0.1" + "ejs": "^1.0.0", + "striptags": "^3.1.1", + "utils-merge": "^1.0.0" }, "dependencies": { "ejs": { @@ -1612,9 +1612,9 @@ "resolved": "https://registry.npmjs.org/hexo-generator-sitemap/-/hexo-generator-sitemap-1.2.0.tgz", "integrity": "sha1-MBj419Hi5Cs/caZacxb/z1g7w/M=", "requires": { - "minimatch": "3.0.4", - "nunjucks": "2.5.2", - "object-assign": "4.1.1" + "minimatch": "^3.0.0", + "nunjucks": "^2.3.0", + "object-assign": "^4.0.1" }, "dependencies": { "nunjucks": { @@ -1622,9 +1622,9 @@ "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-2.5.2.tgz", "integrity": "sha1-6n00bnhbikh0Zmw8yp4YxXf7oiw=", "requires": { - "asap": "2.0.6", - "chokidar": "1.7.0", - "yargs": "3.32.0" + "asap": "^2.0.3", + "chokidar": "^1.6.0", + "yargs": "^3.32.0" } } } @@ -1635,7 +1635,7 @@ "integrity": "sha1-xXFYRrtB5X2cIMHWbX2yGhq/emI=", "requires": { "hexo-pagination": "0.0.2", - "object-assign": "4.1.1" + "object-assign": "^4.0.1" } }, "hexo-i18n": { @@ -1643,7 +1643,7 @@ "resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-0.2.1.tgz", "integrity": "sha1-hPFBQyvwnYtVjth4xygWS20c1t4=", "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "^1.0.2" } }, "hexo-log": { @@ -1651,8 +1651,8 @@ "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-0.2.0.tgz", "integrity": "sha512-fzoc+GQexxPPILTjoOQILnA3ZG2MFgqMBVel4xvJ11pXptw9+f97ynTgDAExXafyp9Nz2ChXRuqlCYgPtZSlxQ==", "requires": { - "chalk": "1.1.3", - "hexo-bunyan": "1.0.0" + "chalk": "^1.1.1", + "hexo-bunyan": "^1.0.0" }, "dependencies": { "ansi-styles": { @@ -1665,11 +1665,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { @@ -1677,7 +1677,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -1692,7 +1692,7 @@ "resolved": "https://registry.npmjs.org/hexo-pagination/-/hexo-pagination-0.0.2.tgz", "integrity": "sha1-jPRwx9sN5bGKOSanbesZQBXffys=", "requires": { - "utils-merge": "1.0.1" + "utils-merge": "^1.0.0" } }, "hexo-renderer-ejs": { @@ -1700,8 +1700,8 @@ "resolved": "https://registry.npmjs.org/hexo-renderer-ejs/-/hexo-renderer-ejs-0.3.1.tgz", "integrity": "sha512-XN8pYJU+Wr3dT8ipqEPRlOBySJpd1C5NUBBzgZpVSVBC/6L36O0YZI/Qd5NxQqwfGfSuKQ8N5iMyjmRXSR1MdA==", "requires": { - "ejs": "2.5.9", - "object-assign": "4.1.1" + "ejs": "^2.3.4", + "object-assign": "^4.0.1" } }, "hexo-renderer-marked": { @@ -1709,10 +1709,10 @@ "resolved": "https://registry.npmjs.org/hexo-renderer-marked/-/hexo-renderer-marked-0.3.2.tgz", "integrity": "sha512-joSLeHB0YRkuViIPQlRz4A+zfJKPNHT+rABFgPHiT1zL9eeTUPxoLL4h7kcgOwRLAontVScaxP2Sie15mNitFg==", "requires": { - "hexo-util": "0.6.3", - "marked": "0.3.19", - "object-assign": "4.1.1", - "strip-indent": "2.0.0" + "hexo-util": "^0.6.2", + "marked": "^0.3.9", + "object-assign": "^4.1.1", + "strip-indent": "^2.0.0" } }, "hexo-renderer-stylus": { @@ -1720,8 +1720,8 @@ "resolved": "https://registry.npmjs.org/hexo-renderer-stylus/-/hexo-renderer-stylus-0.3.3.tgz", "integrity": "sha1-xU6ifh/Y48ipp6hM+6itNUEiyn8=", "requires": { - "nib": "1.1.2", - "stylus": "0.54.5" + "nib": "^1.1.2", + "stylus": "^0.54.5" } }, "hexo-server": { @@ -1729,15 +1729,15 @@ "resolved": "https://registry.npmjs.org/hexo-server/-/hexo-server-0.2.2.tgz", "integrity": "sha512-/KkOYMIGylNoMtnlgas84Kw18A60WU3BVfo8ZnTHy8omCsAz2Z+aK6ddR4PpSmTdLeKDsiZj4ZSg86ZQ+FZzrA==", "requires": { - "bluebird": "3.5.1", - "chalk": "1.1.3", - "compression": "1.7.2", - "connect": "3.6.6", - "mime": "1.6.0", - "morgan": "1.9.0", - "object-assign": "4.1.1", - "opn": "4.0.2", - "serve-static": "1.13.2" + "bluebird": "^3.0.6", + "chalk": "^1.1.1", + "compression": "^1.6.0", + "connect": "3.x", + "mime": "^1.3.4", + "morgan": "^1.6.1", + "object-assign": "^4.0.1", + "opn": "^4.0.0", + "serve-static": "^1.10.0" }, "dependencies": { "ansi-styles": { @@ -1750,11 +1750,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { @@ -1762,7 +1762,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -1782,10 +1782,10 @@ "resolved": "https://registry.npmjs.org/hexo-tag-dplayer/-/hexo-tag-dplayer-0.3.3.tgz", "integrity": "sha512-Y2sweNkcYNr9cLt2J35V0R40P7rriPiW/99shfEdWy5xYxXNzCBKKuDC/YAr2XzzZk29WM5YPID9f2w3veaqdA==", "requires": { - "dplayer": "1.22.2", - "hexo-fs": "0.2.3", - "hexo-log": "0.2.0", - "hexo-util": "0.6.3" + "dplayer": "^1.6.0", + "hexo-fs": "^0.2.2", + "hexo-log": "^0.2.0", + "hexo-util": "^0.6.2" } }, "hexo-util": { @@ -1793,12 +1793,12 @@ "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-0.6.3.tgz", "integrity": "sha512-zPxaqCWZz3/25SAB4FlrRtWktJ+Pr+vBiv/nyHpXKgXPt1m70liViKlRwWLqDmRjJ72x6/k4qCEeXHajvcGHUw==", "requires": { - "bluebird": "3.5.1", - "camel-case": "3.0.0", - "cross-spawn": "4.0.2", - "highlight.js": "9.12.0", - "html-entities": "1.2.1", - "striptags": "2.2.1" + "bluebird": "^3.4.0", + "camel-case": "^3.0.0", + "cross-spawn": "^4.0.0", + "highlight.js": "^9.4.0", + "html-entities": "^1.2.0", + "striptags": "^2.1.1" } }, "highlight.js": { @@ -1812,16 +1812,33 @@ "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" }, "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.2", - "domutils": "1.5.1", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.0.tgz", + "integrity": "sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ==", + "requires": { + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.0.6" + }, + "dependencies": { + "domelementtype": { + "version": "1.3.0", + "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + }, + "readable-stream": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.0.6.tgz", + "integrity": "sha512-9E1oLoOWfhSXHGv6QlwXJim7uNzd9EVlWK+21tCU9Ju/kR0/p2AZYPz4qSchgO8PlLIH4FpZYfzwS+rEksZjIg==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "http-errors": { @@ -1829,10 +1846,10 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "depd": "1.1.2", + "depd": "~1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": "1.5.0" + "statuses": ">= 1.4.0 < 2" }, "dependencies": { "statuses": { @@ -1847,7 +1864,7 @@ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", "requires": { - "ms": "2.0.0" + "ms": "^2.0.0" } }, "iconv-lite": { @@ -1855,7 +1872,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, "inflight": { @@ -1863,8 +1880,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -1877,7 +1894,7 @@ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "invert-kv": { @@ -1890,7 +1907,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "requires": { - "binary-extensions": "1.11.0" + "binary-extensions": "^1.0.0" } }, "is-buffer": { @@ -1908,7 +1925,7 @@ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -1926,7 +1943,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-glob": { @@ -1934,7 +1951,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-number": { @@ -1942,7 +1959,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-plain-object": { @@ -1950,7 +1967,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" }, "dependencies": { "isobject": { @@ -1994,12 +2011,12 @@ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" }, "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsonparse": { @@ -2012,7 +2029,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "lazy-cache": { @@ -2025,7 +2042,7 @@ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "lodash": { @@ -2103,7 +2120,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0" } }, "lower-case": { @@ -2116,8 +2133,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "markdown": { @@ -2125,7 +2142,7 @@ "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=", "requires": { - "nopt": "2.1.2" + "nopt": "~2.1.1" } }, "marked": { @@ -2133,6 +2150,11 @@ "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==" }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -2143,19 +2165,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, "mime": { @@ -2173,7 +2195,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "1.33.0" + "mime-db": "~1.33.0" } }, "minimatch": { @@ -2181,7 +2203,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -2215,11 +2237,11 @@ "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==" }, "moment-timezone": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.17.tgz", - "integrity": "sha512-Y/JpVEWIOA9Gho4vO15MTnW1FCmHi3ypprrkUaxsZ1TKg3uqC8q/qMBjTddkHoiwwZN3qvZSr4zJP7x9V3LpXA==", + "version": "0.5.23", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.23.tgz", + "integrity": "sha512-WHFH85DkCfiNMDX5D3X7hpNH3/PUhjTGcD0U1SgfBGZxJ3qUmJh5FdvaFjcClxOvB3rzdfj4oRffbI38jEnC1w==", "requires": { - "moment": "2.22.1" + "moment": ">= 2.9.0" } }, "morgan": { @@ -2227,11 +2249,11 @@ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", "requires": { - "basic-auth": "2.0.0", + "basic-auth": "~2.0.0", "debug": "2.6.9", - "depd": "1.1.2", - "on-finished": "2.3.0", - "on-headers": "1.0.1" + "depd": "~1.1.1", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" }, "dependencies": { "debug": { @@ -2255,15 +2277,15 @@ "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", "optional": true, "requires": { - "mkdirp": "0.5.1", - "ncp": "2.0.0", - "rimraf": "2.4.5" + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" } }, "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", + "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", "optional": true }, "ncp": { @@ -2290,7 +2312,7 @@ "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "requires": { - "lower-case": "1.1.4" + "lower-case": "^1.1.1" } }, "node-fingerprint": { @@ -2303,7 +2325,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "normalize-path": { @@ -2311,15 +2333,15 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "nth-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", - "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "requires": { - "boolbase": "1.0.0" + "boolbase": "~1.0.0" } }, "number-is-nan": { @@ -2332,11 +2354,11 @@ "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.1.2.tgz", "integrity": "sha512-pJXncV07mmiuIDL9OqdNkcpvifuDMzMq9qBQT9SHasAS7AEwzNp/r/jHNl+9O0+zsldcdWG9ZtXo/nwu2cTqXA==", "requires": { - "a-sync-waterfall": "1.0.0", - "asap": "2.0.6", - "chokidar": "1.7.0", - "postinstall-build": "5.0.1", - "yargs": "3.32.0" + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "chokidar": "^1.6.0", + "postinstall-build": "^5.0.1", + "yargs": "^3.32.0" } }, "object-assign": { @@ -2349,8 +2371,8 @@ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "on-finished": { @@ -2371,7 +2393,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "opn": { @@ -2379,8 +2401,8 @@ "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", "requires": { - "object-assign": "4.1.1", - "pinkie-promise": "2.0.1" + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" } }, "optimist": { @@ -2388,8 +2410,8 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" }, "dependencies": { "minimist": { @@ -2409,7 +2431,7 @@ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "requires": { - "lcid": "1.0.0" + "lcid": "^1.0.0" } }, "os-name": { @@ -2417,8 +2439,8 @@ "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", "integrity": "sha1-GzefZINa98Wn9JizV8uVIVwVnt8=", "requires": { - "osx-release": "1.1.0", - "win-release": "1.1.1" + "osx-release": "^1.0.0", + "win-release": "^1.0.0" } }, "osx-release": { @@ -2426,7 +2448,7 @@ "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", "integrity": "sha1-8heRGigTaUmvG/kwiyQeJzfTzWw=", "requires": { - "minimist": "1.2.0" + "minimist": "^1.1.0" } }, "parse-glob": { @@ -2434,10 +2456,10 @@ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, "parseurl": { @@ -2450,8 +2472,8 @@ "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", "requires": { - "process": "0.11.10", - "util": "0.10.3" + "process": "^0.11.1", + "util": "^0.10.3" } }, "path-is-absolute": { @@ -2460,9 +2482,9 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "pinkie": { "version": "2.0.4", @@ -2474,7 +2496,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "postinstall-build": { @@ -2489,7 +2511,7 @@ }, "pretty-hrtime": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "resolved": "http://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" }, "process": { @@ -2513,39 +2535,24 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" }, "dependencies": { "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" }, "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "1.1.6" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" } } }, @@ -2559,13 +2566,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "readdirp": { @@ -2573,10 +2580,10 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.6", - "set-immediate-shim": "1.0.1" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" } }, "regenerator-runtime": { @@ -2589,7 +2596,7 @@ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "remove-trailing-separator": { @@ -2608,11 +2615,11 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "resolve": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", - "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "right-align": { @@ -2620,7 +2627,7 @@ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "rimraf": { @@ -2629,7 +2636,7 @@ "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", "optional": true, "requires": { - "glob": "6.0.4" + "glob": "^6.0.1" } }, "safe-buffer": { @@ -2664,18 +2671,18 @@ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "requires": { "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.6.3", + "http-errors": "~1.6.2", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.4.0" + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" }, "dependencies": { "debug": { @@ -2703,9 +2710,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", "send": "0.16.2" } }, @@ -2739,9 +2746,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" }, "dependencies": { "strip-ansi": { @@ -2749,7 +2756,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -2759,7 +2766,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -2767,7 +2774,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" }, "dependencies": { "ansi-regex": { @@ -2792,12 +2799,12 @@ "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", "requires": { - "css-parse": "1.7.0", - "debug": "3.1.0", - "glob": "7.0.6", - "mkdirp": "0.5.1", - "sax": "0.5.8", - "source-map": "0.1.43" + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" }, "dependencies": { "glob": { @@ -2805,12 +2812,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "source-map": { @@ -2818,17 +2825,17 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "swig-extras": { @@ -2836,15 +2843,15 @@ "resolved": "https://registry.npmjs.org/swig-extras/-/swig-extras-0.0.1.tgz", "integrity": "sha1-tQP+3jcqucJMasaMr2VrzvGHIyg=", "requires": { - "markdown": "0.5.0" + "markdown": "~0.5.0" } }, "swig-templates": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/swig-templates/-/swig-templates-2.0.2.tgz", - "integrity": "sha1-0lAqcwMBk1b06nbqkGXU9Yr2q3U=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/swig-templates/-/swig-templates-2.0.3.tgz", + "integrity": "sha512-QojPTuZWdpznSZWZDB63/grsZuDwT/7geMeGlftbJXDoYBIZEnTcKvz4iwYDv3SwfPX9/B4RtGRSXNnm3S2wwg==", "requires": { - "optimist": "0.6.1", + "optimist": "~0.6", "uglify-js": "2.6.0" } }, @@ -2855,7 +2862,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "tildify": { @@ -2863,7 +2870,7 @@ "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", "requires": { - "os-homedir": "1.0.2" + "os-homedir": "^1.0.0" } }, "titlecase": { @@ -2878,13 +2885,13 @@ }, "uglify-js": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.0.tgz", + "resolved": "http://registry.npmjs.org/uglify-js/-/uglify-js-2.6.0.tgz", "integrity": "sha1-JeqhzDVQ45QQzu+v0c+7a20V8AE=", "requires": { - "async": "0.2.10", - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "async": "~0.2.6", + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "camelcase": { @@ -2897,8 +2904,8 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" } }, @@ -2914,12 +2921,12 @@ }, "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } @@ -2945,14 +2952,14 @@ "resolved": "https://registry.npmjs.org/urllib/-/urllib-2.11.1.tgz", "integrity": "sha1-5F1Xnxu+Qsn64hzf9yVo88jIyUU=", "requires": { - "any-promise": "1.3.0", - "debug": "2.6.9", - "default-user-agent": "1.0.0", - "digest-header": "0.0.1", - "humanize-ms": "1.2.1", - "iconv-lite": "0.4.23", - "media-typer": "0.3.0", - "statuses": "1.3.1" + "any-promise": "^1.2.0", + "debug": "^2.2.0", + "default-user-agent": "^1.0.0", + "digest-header": "^0.0.1", + "humanize-ms": "^1.2.0", + "iconv-lite": "^0.4.13", + "media-typer": "^0.3.0", + "statuses": "^1.3.0" }, "dependencies": { "debug": { @@ -2970,8 +2977,8 @@ "resolved": "https://registry.npmjs.org/urllib-sync/-/urllib-sync-1.1.4.tgz", "integrity": "sha1-yRMI9JkaZe5iDWc85g/dJLvRjMo=", "requires": { - "urllib": "2.11.1", - "utility": "1.7.1" + "urllib": "~2.11.0", + "utility": "~1.7.1" } }, "util": { @@ -2999,8 +3006,8 @@ "resolved": "https://registry.npmjs.org/utility/-/utility-1.7.1.tgz", "integrity": "sha1-+3TN3IFqQRJ2ym6MqZMkfyPusKc=", "requires": { - "copy-to": "2.0.1", - "escape-html": "1.0.3" + "copy-to": "~2.0.1", + "escape-html": "~1.0.3" } }, "utils-merge": { @@ -3018,12 +3025,12 @@ "resolved": "https://registry.npmjs.org/warehouse/-/warehouse-2.2.0.tgz", "integrity": "sha1-XQnWSUKZK+Zn2PfIagnCuK6gQGI=", "requires": { - "JSONStream": "1.3.2", - "bluebird": "3.5.1", - "cuid": "1.3.8", - "graceful-fs": "4.1.11", - "is-plain-object": "2.0.4", - "lodash": "4.17.10" + "JSONStream": "^1.0.7", + "bluebird": "^3.2.2", + "cuid": "~1.3.8", + "graceful-fs": "^4.1.3", + "is-plain-object": "^2.0.1", + "lodash": "^4.2.1" } }, "which": { @@ -3031,7 +3038,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "win-release": { @@ -3039,7 +3046,7 @@ "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", "requires": { - "semver": "5.5.0" + "semver": "^5.0.1" } }, "window-size": { @@ -3057,8 +3064,8 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "strip-ansi": { @@ -3066,7 +3073,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -3101,13 +3108,13 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", "requires": { - "camelcase": "2.1.1", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "os-locale": "1.4.0", - "string-width": "1.0.2", - "window-size": "0.1.4", - "y18n": "3.2.1" + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" } } } diff --git a/package.json b/package.json index 0aa35ad9a..873c008cb 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,11 @@ "version": "0.0.0", "private": true, "hexo": { - "version": "3.7.1" + "version": "3.8.0" }, "dependencies": { "gitment": "0.0.3", - "hexo": "^3.7.1", + "hexo": "^3.8.0", "hexo-deployer-git": "^0.3.1", "hexo-douban": "^0.2.16", "hexo-generator-archive": "^0.1.4", @@ -24,4 +24,4 @@ "hexo-symbols-count-time": "^0.4.2", "hexo-tag-dplayer": "^0.3.3" } -} +} \ No newline at end of file diff --git a/source/_posts/android-audio-base.md b/source/_posts/android-audio-base.md new file mode 100644 index 000000000..4c1c58265 --- /dev/null +++ b/source/_posts/android-audio-base.md @@ -0,0 +1,154 @@ +--- +title: Android 音频基础知识 +date: 2018-10-26 10:14:20 +categories: Android +tag: [media] +--- + +关于音频技术是一门庞大且很专业的学术,这里不会阐述该知识的底层原理知识(比如:声音的原理,音波的正弦平面波合成等等),主要介绍音频相关的一些基本的知识概念,以及在实际开发过程中需要掌握关键API等。 + +## 声音 + +"声音是振动产生的`声波`,通过`介质`(`气体`,`固体`,`液体`)传播并能被人或动物`听觉器官`所感知的`波动`现象"。声音的频率一般以[赫兹](https://zh.wikipedia.org/wiki/%E8%B5%AB%E5%85%B9)表示,记为`Hz`,指每秒周期性震动的次数 + +![trasound_range_diagram](https://res.cloudinary.com/incoder/image/upload/v1541400788/blog/trasound_range_diagram.png) +>图片来自[Wikipedia](https://zh.wikipedia.org/wiki/%E5%A3%B0%E9%9F%B3) + +* 红:次声波(由火山爆发、龙卷风、雷暴、台风等许多灾害性事件发生前都会产生出次声波,人们就可以利用这种前兆来预报灾害事件的发生) +* 蓝:可听声波(20~20000Hz) +* 绿:超声波(广泛应用于工业、军事、医疗等行业。在工业上,常用超声波来清洗精密零件,原理是利用超声波在清洗液中产生震荡波,使清洗液产生瞬间的小气泡,从而冲洗零件的每个角落) + +## 音频开发应用场景 + +* 音频播放器,录音机 +* 语音电话 +* 音视频监控 +* 音视频直播 +* 音视频编辑/处理软件 +* 蓝牙耳机/音响等 + +## 音频开发具体内容 + +* [音频采集/播放](https://www.incoder.org/2018/10/27/android-audio/) +* 音频算法处理(去噪,静音检测,回声消除,音效处理,功放/增强,混音/分离,等等) +* [音频的编解码和格式转换](https://www.incoder.org/2018/11/07/android-audio-convert/) +* 音频传输协议的开发([SIP](https://zh.wikipedia.org/wiki/%E4%BC%9A%E8%AF%9D%E5%8F%91%E8%B5%B7%E5%8D%8F%E8%AE%AE),[A2DP](https://zh.wikipedia.org/wiki/%E8%97%8D%E7%89%99%E8%A6%8F%E7%AF%84#%E8%97%8D%E7%89%99%E7%AB%8B%E9%AB%94%E8%81%B2%E9%9F%B3%E8%A8%8A%E5%82%B3%E8%BC%B8%E8%A6%8F%E7%AF%84%EF%BC%88A2DP%EF%BC%89),[AVRCP](https://zh.wikipedia.org/wiki/%E8%97%8D%E7%89%99%E8%A6%8F%E7%AF%84#%E9%9F%B3%E9%A2%91%EF%BC%8F%E8%A7%86%E9%A2%91%E8%BF%9C%E7%A8%8B%E6%8E%A7%E5%88%B6%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%EF%BC%88AVRCP%EF%BC%89),等等) + * SIP(Session Initiation Protocol:会话发起协议):一个由IETF MMUSIC工作组开发的协议,作为标准被提议用于建立,修改和终止包括视频,语音,即时通信,在线游戏和虚拟现实等多种多媒体元素在内的交互式用户会话 + * A2DP(Advance Audio Distribution Profile:蓝牙立体声音频传输规范):规定了使用蓝牙异步传输信道方式,传输高质量音乐文件数据的协议堆栈软件和使用方法,基于该协议就能通过以蓝牙方式传输高质量的立体声音乐 + * AVRCP(Audio Video Remote Control Profile:音频/视频远程控制配置文件):用于提供控制 TV、Hi-Fi 设备等的标准接口。此配置文件用于许可单个远程控制设备。 + +## 音频基础知识 + +声音经过麦克风采集后,得到是模拟信号,接着我们需要用程序将采集得到模拟型号,进行转换得到数字信号,这样我们才可以存储,交换等 + +>关于声音信息得到模拟信号的转换,我们一般是无需关心,设备的麦克风这些都已经帮我们转换好了,我们需要关心的是从麦克风得到的模拟信号,如何去转换为数字信号,最终保存为音频文件 + +### 模拟信号转数字信号 + +模拟信号一般通过[PCM(Pulse-code modulation:脉冲编码调制)](https://zh.wikipedia.org/wiki/%E8%84%88%E8%A1%9D%E7%B7%A8%E7%A2%BC%E8%AA%BF%E8%AE%8A)方法转换为数字信号 + +#### 转换步骤 + +1. [采样](https://zh.wikipedia.org/wiki/%E5%8F%96%E6%A8%A3):将一段时间内的连续信号转为离散信号 + * [模拟信号](https://zh.wikipedia.org/wiki/%E8%BF%9E%E7%BB%AD%E4%BF%A1%E5%8F%B7)本身是一种连续信号,它在一定的时间范围内可以有无限多个不同的取值 + * [数值信号](https://zh.wikipedia.org/wiki/%E7%A6%BB%E6%95%A3%E4%BF%A1%E5%8F%B7)指在取值上是离散的,不连续的信号 +2. 量化:值采样得到后的数据,我们用多少位的二进制数字来表示声音的振幅 +3. [编码](https://zh.wikipedia.org/wiki/%E8%AA%9E%E9%9F%B3%E7%B7%A8%E7%A2%BC):将采样量化后的数据按照一定的格式进行记录 + +#### PCM + +音频编码最多只能做到无限接近,至少目前的技术只能这样,相对自然界的信号,任何数字音频编码方式都是有损,因为无法完全还原。在计算机应用中,能够达到最高保真的就是PCM编码,因此PCM约定俗成了无损编码(PCM代表了数字音频中最佳的保真水平,并不意味着PCM就能够确保信号绝对保真,PCM也只能做到最大程度的无限接近) + +经过采集和量化后的声音信号已经是数字形式了,但是为了便于计算机的存储,处理,传输,还必须按照一定的要求进行数据`压缩`和`编码` + +##### 压缩 +一种音频文件格式可以支持多种编码,例如AVI文件格式,但多数的音频文件仅支持一种音频编码 + +主要的音频文件格式: + +* 无损格式,例如:[WAV](https://zh.wikipedia.org/wiki/WAV),[FLAC](https://zh.wikipedia.org/wiki/FLAC),[APE](https://zh.wikipedia.org/wiki/Monkey%27s_Audio),[ALAC](https://zh.wikipedia.org/wiki/Apple_Lossless),[WavPack(WV)](https://zh.wikipedia.org/wiki/WavPack) +* 有损格式,例如:[MP3](https://zh.wikipedia.org/wiki/MP3),[AAC](https://zh.wikipedia.org/wiki/%E9%80%B2%E9%9A%8E%E9%9F%B3%E8%A8%8A%E7%B7%A8%E7%A2%BC),[Ogg Vorbis](https://zh.wikipedia.org/wiki/Vorbis),[Opus](https://zh.wikipedia.org/wiki/Opus_%28%E9%9F%B3%E9%A2%91%E6%A0%BC%E5%BC%8F%29) + +##### 编码 + +根据编码方式的不同,音频编码技术分为三种 + +* 波形编码:音质质量高,编码速率也很高。脉冲编码调变(PCM)、自适应增量调制( ADM )、Adaptive( ADPCM )等都属于该类编码器。 +* 参数编码:音质质量低,编码速率也很低 +* 混合编码:音质和速率介于波形编码,参数编码之间 + +>为什么音频需要编码 +1. PCM所量化得到的数据是原始无损的数据,文件很大,不利于传播,存储等 +2. 如果都是未压缩的文件,那么基本无法做到差异化即部分需要知识产权保护的组织或机构等 + +## 音频开发中重要参数 + +### [采样率(samplerate)](https://zh.wikipedia.org/wiki/%E9%87%87%E6%A0%B7%E7%8E%87) + +指每秒从连续信号中提取并组成离散信号的采样个数,也就是1S内,对模拟信号进行多少次采样;采样频率越高,说明采样点之间越密集,记录这段音频所用的数据量就越大,因此音质也就越好 + +>[为什么通用的采样率是44.1kHz?](https://www.zhihu.com/question/22027722) + +### 量化精度(位宽) + +用二进位来表示每一个采样值,也称为量化位数,声音信号的量化位数一般是4,6,8,12或16 bits. + +这个数值的数据类型大小可以是:4bit,8bit,16bit,32bit等等,位数越多,表示的就越精细,声音的质量也就越好,当然文件大小也会成倍增大 + +### 声道数(channels) + +由于音频的采集和播放是可以叠加的,因此,可以同时从多个音频源采集声音,并分别输出到不同的扬声器,故声道数一般表示声音录制时的音源数量或回放时相应的扬声器数量 + +* 单声道(Mono):1 +* 双声道(Stereo):2 + +### 比特率 + +比特率是音频文件每秒占据的字节数(比特数) + +比特率规定适用“比特每秒”(`bit/s`或`bps`)为单位,其中`ps`指的是`/s`,即每秒。 + +通常我们在音乐播放软件中看到的音乐质量『标准(128kbit/s),较高(198kbit/s),计稿(320kbit/s)』表述的即比特率 + +### 音频帧(frame) + +视频每一帧就是一张图像,而音频数据是流式,本身没有明确的一帧帧的概念,在实际的应用中,为了音频算法处理/传输的方便,一般约定俗称2.5ms~60ms为单位的数据量为一帧音频。 + +### 理论音频的大小 + +假设某通道的音频信号是采样率为8kHz,位宽为16bit,20ms一帧,双通道,则一帧音频数据的大小为: +```java +# 一帧音频的大小 +int size = 8000 x 16bit x 0.02s x 2 = 5120 bit = 640 byte; +``` + +## 音频处理开源项目 + +### VoIP相关 +基于IP的语音传输(英语:Voice over Internet Protocol,缩写为VoIP)是一种语音通话技术,经由网际协议(IP)来达成语音通话与多媒体会议,也就是经由互联网来进行通信。其他非正式的名称有IP电话(IP telephony)、互联网电话(Internet telephony)、宽带电话(broadband telephony)以及宽带电话服务(broadband phone service)。 +* imsdroid +* sipdroid +* csipsimple +* linphone +* WebRTC + +### 算法相关 +* ffmpeg +* speex + +### 其他 +MP3编码库 +* [Lame](https://sourceforge.net/projects/lame) + +## Android提供相关API + +* 音频采集:MediaRecoder,AudioRecord +* 音频播放:SoundPool,MediaPlayer,AudioTrack +* 音频编解码:MediaCodec +* NDK API:OpenSL ES + +## 附录 + +* [语音编码](https://zh.wikipedia.org/wiki/%E8%AA%9E%E9%9F%B3%E7%B7%A8%E7%A2%BC) +* [高级音频编码 ● AAC](https://zh.wikipedia.org/wiki/%E9%80%B2%E9%9A%8E%E9%9F%B3%E8%A8%8A%E7%B7%A8%E7%A2%BC) +* [音频技术可以延展众多应用场景](https://yq.aliyun.com/articles/628109) \ No newline at end of file diff --git a/source/_posts/android-audio.md b/source/_posts/android-audio.md new file mode 100644 index 000000000..3c8b2249f --- /dev/null +++ b/source/_posts/android-audio.md @@ -0,0 +1,404 @@ +--- +title: Android 音频录制与播放 +date: 2018-10-27 09:44:46 +categories: Android +tag: [media] +--- + +上一篇主要介绍了音频相关的一些基础知识,本篇主要介绍在Android系统中如何进行音频的录制,播放 + +## 音频录制 + +Android SDK中提供了`AudioRecord`,`MediaRecorder`两个API经行音频的录制,具体的优缺点等如下: + +* [AudioRecord](https://developer.android.google.cn/reference/android/media/AudioRecord) 『added in API level 3』(基于字节流录音): + 优点:可以实现语音的实时处理,进行边录边播,对音频的实时处理。 + 缺点:输出的是PCM的语音数据,如果保存成音频文件是不能被播放器播放的。要用到这个去进行处理。 + 适用场景:需要实时处理分析的录音场景等,如:会说话的汤姆猫『[AppStore](https://itunes.apple.com/cn/app/%E4%BC%9A%E8%AF%B4%E8%AF%9D%E7%9A%84%E6%B1%A4%E5%A7%86%E7%8C%AB/id377194688?mt=8) | [GooglePlay](https://play.google.com/store/apps/details?id=com.outfit7.talkingtom&hl=zh)』 + +* [MediaRecorder](https://developer.android.google.cn/reference/android/media/MediaRecorder) 『added in API level 1』(基于文件音视频录制): + 优点: + * 封装度很高,操作简单,无需处理中间录制过程;录制的音频文件是经过压缩的,需要设置编码器; + * 录制的音频文件可以使用系统自带的播放器播放 + + 缺点:无法实现实时处理音频,输出的音频格式少。 + 适用场景:录制过程需要实时处理的场景等 + +## 音频播放 +* [AudioTrack](https://developer.android.google.cn/reference/android/media/AudioTrack)『added in API level 3』: +AudioTrack 则更接近底层,提供了非常强大的控制能力,支持低延迟播放,适合流媒体和VoIP语音电话等场景 + +* [SoundPool](https://developer.android.google.cn/reference/android/media/SoundPool) 『added in API level 1』: + 优点: + * 主要用于播放一些较短的声音片段,支持从程序的资源或文件系统加载 + * CPU的资源占用量低、反应延迟小,并且可以加载多个音频到`SoundPool`中,通过资源ID来管理 + + 缺点:SoundPool加载资源,最大只能申请1MB的内存控件,因此只能用来播放一些很短的声音片段 + 适用场景:播放短,反应要求高的音频 + +* [MediaPlayer](https://developer.android.google.cn/reference/android/media/MediaPlayer) 『added in API level 1』(基于字节流音视频播放): + 优点:支持本地,网络音频资源的播放 + 缺点: + * 资源占用量较高、加载延迟时间较长; + * 不支持多个音频同时播放等 + + 适用场景:播放长音频 + +>Google官方给出了[兼容支持](https://developer.android.google.cn/guide/topics/media/media-formats#audio-formats) + +## AudioRecord + +### 录制流程 + +1. 构造一个`AudioRecord`对象,其中需要的最小音频缓存`buffer`大小可以通过`getMinBufferSize()`方法得到,如果`buffer`容量过小,将导致对象构造失败 +2. 初始化一个`buffer`,该`buffer` 大于等于`AudioRecord`对象用于写音频数据的`buffer`大小 +3. 开始录音 +4. 创建一个数据流,一边从`AudioRecord`中读取音频数据到初始化的`buffer`,一边将`buffer`中的数据导入数据流 +5. 关闭数据流 +6. 停止录音 + +### 参数配置 + +* audioSource :音频采集的输入源 + * DEFAULT(默认) + * VOICE_RECOGNITION(用于语音识别,等同于DEFAULT) + * MIC(由手机麦克风输入) + * VOICE_COMMUNICATION(用于VoIP应用) +* sampleRateInHz:采样率 + 目前44100Hz是唯一可以保证兼容所有Android手机的采样率 +* channelConfig:通道数的配置 + * CHANNEL_IN_MONO:单通道 + * CHANNEL_IN_STEREO:双通道 +* audioFormat:数据位宽 + * ENCODING_PCM_8BIT:8bit + * ENCODING_PCM_16BIT:16bit +* bufferSizeInBytes:AudioRecord 内部的音频缓冲区的大小,该缓冲区的值不能低于一帧“音频帧”(Frame)的大小 + + +### 示例代码 +```java +public class AudioCapturer { + + private static final String TAG = "AudioCapturer"; + + private static final int DEFAULT_SOURCE = MediaRecorder.AudioSource.MIC; + private static final int DEFAULT_SAMPLE_RATE = 44100; + private static final int DEFAULT_CHANNEL_CONFIG = AudioFormat.CHANNEL_IN_MONO; + private static final int DEFAULT_AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT; + + private AudioRecord mAudioRecord; + private int mMinBufferSize = 0; + + private Thread mCaptureThread; + private boolean mIsCaptureStarted = false; + private volatile boolean mIsLoopExit = false; + + private OnAudioFrameCapturedListener mAudioFrameCapturedListener; + + public interface OnAudioFrameCapturedListener { + public void onAudioFrameCaptured(byte[] audioData); + } + + public boolean isCaptureStarted() { + return mIsCaptureStarted; + } + + public void setOnAudioFrameCapturedListener(OnAudioFrameCapturedListener listener) { + mAudioFrameCapturedListener = listener; + } + + public boolean startCapture() { + return startCapture(DEFAULT_SOURCE, DEFAULT_SAMPLE_RATE, DEFAULT_CHANNEL_CONFIG, + DEFAULT_AUDIO_FORMAT); + } + + public boolean startCapture(int audioSource, int sampleRateInHz, int channelConfig, int audioFormat) { + + if (mIsCaptureStarted) { + Log.e(TAG, "Capture already started !"); + return false; + } + + mMinBufferSize = AudioRecord.getMinBufferSize(sampleRateInHz,channelConfig,audioFormat); + if (mMinBufferSize == AudioRecord.ERROR_BAD_VALUE) { + Log.e(TAG, "Invalid parameter !"); + return false; + } + Log.d(TAG , "getMinBufferSize = "+mMinBufferSize+" bytes !"); + + mAudioRecord = new AudioRecord(audioSource,sampleRateInHz,channelConfig,audioFormat,mMinBufferSize); + if (mAudioRecord.getState() == AudioRecord.STATE_UNINITIALIZED) { + Log.e(TAG, "AudioRecord initialize fail !"); + return false; + } + + mAudioRecord.startRecording(); + + mIsLoopExit = false; + mCaptureThread = new Thread(new AudioCaptureRunnable()); + mCaptureThread.start(); + + mIsCaptureStarted = true; + + Log.d(TAG, "Start audio capture success !"); + + return true; + } + + public void stopCapture() { + + if (!mIsCaptureStarted) { + return; + } + + mIsLoopExit = true; + try { + mCaptureThread.interrupt(); + mCaptureThread.join(1000); + } + catch (InterruptedException e) { + e.printStackTrace(); + } + + if (mAudioRecord.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING) { + mAudioRecord.stop(); + } + + mAudioRecord.release(); + + mIsCaptureStarted = false; + mAudioFrameCapturedListener = null; + + Log.d(TAG, "Stop audio capture success !"); + } + + private class AudioCaptureRunnable implements Runnable { + + @Override + public void run() { + + while (!mIsLoopExit) { + + byte[] buffer = new byte[mMinBufferSize]; + + int ret = mAudioRecord.read(buffer, 0, mMinBufferSize); + if (ret == AudioRecord.ERROR_INVALID_OPERATION) { + Log.e(TAG , "Error ERROR_INVALID_OPERATION"); + } + else if (ret == AudioRecord.ERROR_BAD_VALUE) { + Log.e(TAG , "Error ERROR_BAD_VALUE"); + } + else { + if (mAudioFrameCapturedListener != null) { + mAudioFrameCapturedListener.onAudioFrameCaptured(buffer); + } + Log.d(TAG , "OK, Captured "+ret+" bytes !"); + } + } + } + } +} +``` +## AudioTrack + +### 录制流程 + +1. 配置参数,初始化内部的音频播放缓冲区到,如果`buffer`容量过小,将导致对象构造失败 +2. 开始播放 +3. 需要一个线程,不断地向 AudioTrack 的缓冲区`写入`音频数据,注意,这个过程一定要及时,否则就会出现`underrun`的错误,该错误在音频开发中比较常见,意味着应用层没有及时地“送入”音频数据,导致内部的音频播放缓冲区为空 +4. 停止播放,释放资源 + +### 参数配置 +* streamType:当前应用使用的哪一种音频管理策略 +当系统有多个进程需要播放音频时,这个管理策略会决定最终的展现效果 + * STREAM_VOCIE_CALL:电话声音 + * STREAM_SYSTEM:系统声音 + * STREAM_RING:铃声 + * STREAM_MUSCI:音乐声 + * STREAM_ALARM:警告声 + * STREAM_NOTIFICATION:通知声 +* sampleRateInHz:采样率 +采样率的取值范围必须在 4000Hz~192000Hz 之间 +* channelConfig:通道数的配置 + * CHANNEL_IN_MONO:单通道 + * CHANNEL_IN_STEREO:双通道 +* audioFormat:数据位宽 + * ENCODING_PCM_8BIT:8bit + * ENCODING_PCM_16BIT:16bit +* bufferSizeInBytes:配置的是 AudioTrack 内部的音频缓冲区的大小,该缓冲区的值不能低于一帧“音频帧”(Frame)的大小 +* mode:AudioTrack 播放模式 + * MODE_STATIC + static:一次性将所有的数据都写入播放缓冲区,简单高效,通常用于播放铃声、系统提醒的音频片段 + * MODE_STREAM + streaming:按照一定的时间间隔不间断地写入音频数据,理论上它可用于任何音频播放的场景 + +### 示例代码 + +```java +public class AudioPlayer { + + private static final String TAG = "AudioPlayer"; + + private static final int DEFAULT_STREAM_TYPE = AudioManager.STREAM_MUSIC; + private static final int DEFAULT_SAMPLE_RATE = 44100; + private static final int DEFAULT_CHANNEL_CONFIG = AudioFormat.CHANNEL_IN_STEREO; + private static final int DEFAULT_AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT; + private static final int DEFAULT_PLAY_MODE = AudioTrack.MODE_STREAM; + + private boolean mIsPlayStarted = false; + private int mMinBufferSize = 0; + private AudioTrack mAudioTrack; + + public boolean startPlayer() { + return startPlayer(DEFAULT_STREAM_TYPE,DEFAULT_SAMPLE_RATE,DEFAULT_CHANNEL_CONFIG,DEFAULT_AUDIO_FORMAT); + } + + public boolean startPlayer(int streamType, int sampleRateInHz, int channelConfig, int audioFormat) { + + if (mIsPlayStarted) { + Log.e(TAG, "Player already started !"); + return false; + } + + mMinBufferSize = AudioTrack.getMinBufferSize(sampleRateInHz,channelConfig,audioFormat); + if (mMinBufferSize == AudioTrack.ERROR_BAD_VALUE) { + Log.e(TAG, "Invalid parameter !"); + return false; + } + Log.d(TAG , "getMinBufferSize = "+mMinBufferSize+" bytes !"); + + mAudioTrack = new AudioTrack(streamType,sampleRateInHz, + channelConfig,audioFormat,mMinBufferSize,DEFAULT_PLAY_MODE); + + if (mAudioTrack.getState() == AudioTrack.STATE_UNINITIALIZED) { + Log.e(TAG, "AudioTrack initialize fail !"); + return false; + } + + mIsPlayStarted = true; + + Log.d(TAG, "Start audio player success !"); + + return true; + } + + public int getMinBufferSize() { + return mMinBufferSize; + } + + public void stopPlayer() { + + if (!mIsPlayStarted) { + return; + } + + if (mAudioTrack.getPlayState() == AudioTrack.PLAYSTATE_PLAYING) { + mAudioTrack.stop(); + } + + mAudioTrack.release(); + mIsPlayStarted = false; + + Log.d(TAG, "Stop audio player success !"); + } + + public boolean play(byte[] audioData, int offsetInBytes, int sizeInBytes) { + + if (!mIsPlayStarted) { + Log.e(TAG, "Player not started !"); + return false; + } + + if (sizeInBytes < mMinBufferSize) { + Log.e(TAG, "audio data is not enough !"); + return false; + } + + if (mAudioTrack.write(audioData,offsetInBytes,sizeInBytes) != sizeInBytes) { + Log.e(TAG, "Could not write all the samples to the audio device !"); + } + + mAudioTrack.play(); + + Log.d(TAG , "OK, Played "+sizeInBytes+" bytes !"); + + return true; + } +} +``` + +## MediaRecorder + +![mediarecorder](https://developer.android.google.cn/images/mediarecorder_state_diagram.gif) + +如上所示表述整个MediaRecorder的整个生命过程,可以看出初始化之后,在任意的状态下调用`reset()`方法均可以回到MediaRecorder刚刚初始化完成的状态 + +## MediaPlayer + +![mediaplayer](https://developer.android.google.cn/images/mediaplayer_state_diagram.gif) + +### MediaPlayer 工作流程 + +1. 创建一个MediaPlayer对象 +2. 调用setDataSource()方法,设置音频文件的路径 +3. 接着调用prepare()方法,使MediaPlayer进入的准备状态 +4. 调用start()方法,开始播放音频『pause()方法表示:暂停播放』 + +### MediaPlayer常用的控制方法 + +| 方法名 | 功能描述 | +| ---------- | --- | +| setDataSource() | 设置要播放的音频文件的位置 | +| prepare() | 在开始播放之前调用这个方法完成准备工作 | +| start() | 开始或继续播放音频 | +| pause() | 暂停播放音频 | +| reset() | 将MediaPlayer对象重置到刚刚创建的状态 | +| seekTo() | 从指定位置开始播放音频 | +| stop() | 停止播放音频。调用这个方法后的MediaPlayer对象无法再播放音频 | +| release() | 释放掉与MediaPlayer对象相关的资源 | +| isPlaying() | 判断当前MediaPlayer是否正在播放音频 | +| getDuration() | 获取站如的音频文件的时长 | + +### 注意事项 + +1. 在使用`star()`播放流媒体之前,需要装载流媒体资源。这里最好使用`prepareAsync()`异步的方式装载流媒体资源,在使用`prepareAsync()`异步加载时,为避免还没有装载完就调用了`start()`而保存,需要绑定`MediaPlayer.setOnPreparedListener()`事件,它将在异步装在完成后回调 +原因:流媒体资源的装载是会消耗系统资源,在一些硬件不理想的设备上,如果使用`prepare()`同步的方式装载资源,可能会造成UI界面卡顿,其次避免装载超时而引发`ANR`等问题 +2. 使用完MediaPlayer需要回收资源。MediaPlayer时很消耗系统资源的,所以在使用完MediaPlayer,及时主动回收资源 +3. 对于单曲循环之类的操作,除了使用`setLooping()`方法设置之外,还可以为MediaPlayer注册回调函数,`MediaPlayer.setOnCompletionListener()`,它会在MediaPlayer播放完被回调 +4. 由于无法确保播放的流媒体是完整(中间有错误),我们需要处理这个错误,否则会影响用户体验。可以在MediaPlayer中注册`setOnErrorListener()`错误回调,一般重新播放或者播放下一个流媒体 + +## 跨平台 + +关于音频编解码在各平台上的情况如下 +![wiki-ecode](https://res.cloudinary.com/incoder/image/upload/v1541055152/blog/android-audio.png) + +从上图可知,[AAC](https://zh.wikipedia.org/wiki/%E9%80%B2%E9%9A%8E%E9%9F%B3%E8%A8%8A%E7%B7%A8%E7%A2%BC),[FLAC](https://zh.wikipedia.org/wiki/FLAC),[MP3](https://zh.wikipedia.org/wiki/MP3)三种编码是全平台支持的音频编码方式(或音频压缩方式),注意编码方式并不是文件格式即文件的扩展名 + +* AAC 主要扩展名 + * `.aac` + * `.mp4` + * `.m4a` +* FLAC 扩展名 + * `.flac` +* MP3 扩展名 + * `.mp3` + +## 总结 + +* 音频的录制,Android SDK提供了两套音频采集的API,分别是:`MediaRecorder`和`AudioRecord`,前者是一个更加上层一点的API,它可以直接把手机麦克风录入的音频数据进行编码压缩(如:`AMR`,`OGG`等)并存储成文件,而后者则更接近底层,能够更加自由灵活的控制,可以得到原始的一帧帧`PCM`音频数据 +* 如果要简单的进行音频的采集,录制成音频文件,则推荐适用`MediaRecorder`,而如果需要对音频做进一步的算法处理,或者采用第三方的编码库进行压缩、以及网络传输等应用,则建议适用`AudioRecord` +* `MediaRecorder`底层的实现也是调用了`AudioRecord`与`Android Framework` 层的`AudioFlinger`进行交互 + +> 关于音视频相关的资料参差不齐,目前尚未有大量相关专门的书籍来介绍该领域的图书或者易懂视频,很多情况需要根据所处应用场景灵活应变。 +推荐刚刚发行的一本关于音频方面的书记[《Android音视频开发》](https://item.jd.com/35027062396.html) +推荐国内比较专业音视频方面相关的介绍[《雷霄骅的专栏》](http://blog.csdn.net/leixiaohua1020) +## 附录 + +* [音频编码格式的比较](https://zh.wikipedia.org/wiki/%E9%9F%B3%E9%A2%91%E7%BC%96%E7%A0%81%E6%A0%BC%E5%BC%8F%E7%9A%84%E6%AF%94%E8%BE%83) +* [第一行代码](https://book.douban.com/subject/26915433) +* [Android MediaRecorder架构详解](http://www.isclab.org.cn/archives/2014/12/2946.html) +* [参考代码](https://github.com/googlesamples/android-MediaRecorder) +* [浏览器引擎](https://zh.wikipedia.org/wiki/%E6%8E%92%E7%89%88%E5%BC%95%E6%93%8E) +* [主流浏览器内核介绍](https://www.cnblogs.com/zichi/p/5116764.html) +* [腾讯X5内核介绍](https://x5.tencent.com/tbs/product/tbs.html) +* [Android 音视频开发学习思路](http://www.cnblogs.com/renhui/p/7452572.html) \ No newline at end of file diff --git a/source/_posts/fiddler.md b/source/_posts/fiddler.md index 9d54d504b..48e29cd23 100644 --- a/source/_posts/fiddler.md +++ b/source/_posts/fiddler.md @@ -1,6 +1,6 @@ --- title: Fiddler 初体验 -date: 2018-10-28 19:40:46 +date: 2018-10-25 19:40:46 categories: DevTool tag: [Fiddler] --- diff --git a/source/_posts/git-bash.md b/source/_posts/git-bash.md index c9534216a..613638c58 100644 --- a/source/_posts/git-bash.md +++ b/source/_posts/git-bash.md @@ -41,7 +41,7 @@ git checkout tag_name # 查看git commit 历史的 git log # 指定 commit SHA -git clone commit_sha_value +git clone commit_sha_value ``` ## git commit @@ -98,10 +98,18 @@ git tag -d tag_name # 删除远程指定tag git push origin --delete tag tag_name ``` + ## git help 更多命令 ```sh git --help ``` + +## git other +* 查看当前项目远程仓库地址 +```sh +git remote -v +``` + ## 附录 * [Git Docs](https://git-scm.com/docs) From e348f3aed3088aac4baceb6b5b2822d4b4e93872 Mon Sep 17 00:00:00 2001 From: BladeCode Date: Thu, 8 Nov 2018 16:25:28 +0800 Subject: [PATCH 038/163] update audio --- source/_posts/android-audio-base.md | 2 +- source/_posts/android-audio.md | 21 ++++++--------------- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/source/_posts/android-audio-base.md b/source/_posts/android-audio-base.md index 4c1c58265..817aaad7d 100644 --- a/source/_posts/android-audio-base.md +++ b/source/_posts/android-audio-base.md @@ -108,7 +108,7 @@ tag: [media] 比特率规定适用“比特每秒”(`bit/s`或`bps`)为单位,其中`ps`指的是`/s`,即每秒。 -通常我们在音乐播放软件中看到的音乐质量『标准(128kbit/s),较高(198kbit/s),计稿(320kbit/s)』表述的即比特率 +通常我们在音乐播放软件中看到的音乐质量『标准(128kbit/s),较高(198kbit/s),极高(320kbit/s)』表述的即比特率 ### 音频帧(frame) diff --git a/source/_posts/android-audio.md b/source/_posts/android-audio.md index 3c8b2249f..69eb6d7d0 100644 --- a/source/_posts/android-audio.md +++ b/source/_posts/android-audio.md @@ -17,10 +17,7 @@ Android SDK中提供了`AudioRecord`,`MediaRecorder`两个API经行音频的 适用场景:需要实时处理分析的录音场景等,如:会说话的汤姆猫『[AppStore](https://itunes.apple.com/cn/app/%E4%BC%9A%E8%AF%B4%E8%AF%9D%E7%9A%84%E6%B1%A4%E5%A7%86%E7%8C%AB/id377194688?mt=8) | [GooglePlay](https://play.google.com/store/apps/details?id=com.outfit7.talkingtom&hl=zh)』 * [MediaRecorder](https://developer.android.google.cn/reference/android/media/MediaRecorder) 『added in API level 1』(基于文件音视频录制): - 优点: - * 封装度很高,操作简单,无需处理中间录制过程;录制的音频文件是经过压缩的,需要设置编码器; - * 录制的音频文件可以使用系统自带的播放器播放 - + 优点:封装度很高,操作简单,无需处理中间录制过程;录制的音频文件是经过压缩的,需要设置编码器;录制的音频文件可以使用系统自带的播放器播放 缺点:无法实现实时处理音频,输出的音频格式少。 适用场景:录制过程需要实时处理的场景等 @@ -29,19 +26,13 @@ Android SDK中提供了`AudioRecord`,`MediaRecorder`两个API经行音频的 AudioTrack 则更接近底层,提供了非常强大的控制能力,支持低延迟播放,适合流媒体和VoIP语音电话等场景 * [SoundPool](https://developer.android.google.cn/reference/android/media/SoundPool) 『added in API level 1』: - 优点: - * 主要用于播放一些较短的声音片段,支持从程序的资源或文件系统加载 - * CPU的资源占用量低、反应延迟小,并且可以加载多个音频到`SoundPool`中,通过资源ID来管理 - - 缺点:SoundPool加载资源,最大只能申请1MB的内存控件,因此只能用来播放一些很短的声音片段 + 优点:主要用于播放一些较短的声音片段,支持从程序的资源或文件系统加载;CPU的资源占用量低、反应延迟小,并且可以加载多个音频到`SoundPool`中,通过资源ID来管理 + 缺点:SoundPool加载资源,最大只能申请 **1MB** 的内存控件,因此只能用来播放一些很短的声音片段 适用场景:播放短,反应要求高的音频 * [MediaPlayer](https://developer.android.google.cn/reference/android/media/MediaPlayer) 『added in API level 1』(基于字节流音视频播放): - 优点:支持本地,网络音频资源的播放 - 缺点: - * 资源占用量较高、加载延迟时间较长; - * 不支持多个音频同时播放等 - + 优点:支持本地,网络音频资源的播放 + 缺点:资源占用量较高、加载延迟时间较长;不支持多个音频同时播放等 适用场景:播放长音频 >Google官方给出了[兼容支持](https://developer.android.google.cn/guide/topics/media/media-formats#audio-formats) @@ -201,7 +192,7 @@ public class AudioCapturer { ``` ## AudioTrack -### 录制流程 +### 播放流程 1. 配置参数,初始化内部的音频播放缓冲区到,如果`buffer`容量过小,将导致对象构造失败 2. 开始播放 From b98041d4769a56c3a142394d1e7045fb71cfd34f Mon Sep 17 00:00:00 2001 From: BladeCode Date: Mon, 12 Nov 2018 23:31:52 +0800 Subject: [PATCH 039/163] add mac init --- package-lock.json | 23 ++--- package.json | 2 +- source/_data/next.yml | 2 +- source/_posts/mac-init.md | 196 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 206 insertions(+), 17 deletions(-) create mode 100644 source/_posts/mac-init.md diff --git a/package-lock.json b/package-lock.json index e22990c6e..584ec30b7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -255,18 +255,11 @@ "integrity": "sha1-ajwGXvq56l9QmpXUMV3wCq4RT6M=" }, "basic-auth": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", - "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", "requires": { - "safe-buffer": "5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" - } + "safe-buffer": "5.1.2" } }, "binary-extensions": { @@ -2245,13 +2238,13 @@ } }, "morgan": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", - "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", "requires": { "basic-auth": "~2.0.0", "debug": "2.6.9", - "depd": "~1.1.1", + "depd": "~1.1.2", "on-finished": "~2.3.0", "on-headers": "~1.0.1" }, diff --git a/package.json b/package.json index 873c008cb..71e70fa26 100644 --- a/package.json +++ b/package.json @@ -24,4 +24,4 @@ "hexo-symbols-count-time": "^0.4.2", "hexo-tag-dplayer": "^0.3.3" } -} \ No newline at end of file +} diff --git a/source/_data/next.yml b/source/_data/next.yml index 5e5188061..3f5aceb5f 100644 --- a/source/_data/next.yml +++ b/source/_data/next.yml @@ -530,7 +530,7 @@ gitment: enable: true mint: true # RECOMMEND, A mint on Gitment, to support count, language and proxy_gateway count: true # Show comments count in post meta area - lazy: false # Comments lazy loading with a button + lazy: true # Comments lazy loading with a button cleanly: false # Hide 'Powered by ...' on footer, and more language: # Force language, or auto switch by theme github_user: BladeCode # MUST HAVE, Your Github Username diff --git a/source/_posts/mac-init.md b/source/_posts/mac-init.md new file mode 100644 index 000000000..3d5644aab --- /dev/null +++ b/source/_posts/mac-init.md @@ -0,0 +1,196 @@ +--- +title: MacBook Pro 初始化 +date: 2018-11-10 09:44:46 +categories: Mac +tag: [Build] +--- + +今天拿到了一辆跑车 MBP,虽然不是顶配,也能算上中等吧,废话不啰嗦,上来就是一顿操作猛如虎,最终效果就是唬 (●゚ω゚●) + +跑车的一些零配件来源地[Awesome Mac](https://github.com/jaywcjlove/awesome-mac/blob/master/README-zh.md) + +软件的安装,这里不再赘述,这里主要对常用开发软件的配置进行记录 + +## JDK +作为Android开发者,JDK的安装那是少不了 + +### 下载 +在Oracle 官网下载所需JDK 版本,这里举例:[JDK1.8.0_191](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) + +### 安装 +此处省略,简单的安装步骤 + +### 配置 +以下**命令**相关操作,均在自带系统**终端**应用或者自己安装的其他终端命令工具 +```bash +# 查看安装的Java版本 +java -version +# 编辑profile文件 +sudo vim /etc/profile +# 在打开的 profile 文件中,最下面加入以下文本,添加完成后,保存退出 +JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/" + +CLASS_PATH="$JAVA_HOME/lib" + +PATH=".:$PATH:$JAVA_HOME/bin" + +# 使配置生效 +source /etc/profile +# 查看JAVA_HOME是否正确 +echo $JAVA_HOME +``` +![jdk-command](https://res.cloudinary.com/incoder/image/upload/v1541968115/blog/mac-jdk-comand.png) + +![jdk-config](https://res.cloudinary.com/incoder/image/upload/v1541968115/blog/mac-jdk-config.png) + +>注意: +>1. `JAVA_HOME`中`jdk1.8.0_191.jdk`是自己安装对应版本的文件夹,可以在Finder中,快捷键:Command + Shift + G,输入:`/Library/Java/JavaVirtualMachines/`,最终得到对应的文件夹名,如:`jdk1.8.0_191.jdk` +>2. vim模式下,输入“i”:表示,插入,“esc”:表示退出编辑模式,“:wq!”:表示保存并退出 + +## Git +直接在自带系统**终端**应用中,输入`git --version`,由于之前并没有安装,系统会提示,直接同意并安装即可 + +### GitHub配置 +```bash +# 查看本地是否生成过秘钥,如果该文件夹不存在,则表示未生成过秘钥 +cd ~/.ssh +# 生成一个github的秘钥,这里github可以根据喜好自己命名(默认.ssh路径,不添加密码等操作,直接三次回车,即可生成秘钥) +ssh-keygen -t rsa -C "github" +# 查看公钥 +cat ~/.ssh/id_rsa.pub +# 复制公钥添加到GitHub的SSH设置中,这里省略操作截图步骤 +``` +![mac-github-config](https://res.cloudinary.com/incoder/image/upload/v1542034940/mac-github-config.png) + +## iTerm2 +iTerm2是一款优秀强大的第三方终端,这里主要介绍如何进行对终端主题个性化的配置 + +### 下载 +[iTerm2官网](https://www.iterm2.com) + +> 注意: +>系统自带的终端默认使用`dash`;iTerm2默认使用`zsh`,因此两者切换如下命令 +```bash +# 安装完iTerm 可使用如下命令来切换 +chsh -s /bin/[zsh | bash] +``` +### 配置 + +### 基础设置 +1. 默认应用 +MenuBar -> iTerm2 -> Make iTerm2 Default Term +![iterm2-default](https://res.cloudinary.com/incoder/image/upload/v1541968115/blog/mac-iterm2-default.png) + +2. 全局热键 +MenuBar -> iTerm2 -> preference -> Keys -> Show/hide iTerm2 with a system-wide hotkey +输入设置的快捷键,这里使用`⌘,` +![iterm2-hotkey](https://res.cloudinary.com/incoder/image/upload/v1541968115/blog/mac-iterm2-hotkey.png) + +### 安装Oh my zsh +* 方式一:crul +```bash +sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" +``` +* 方式二:wget +```bash +sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)" +``` +![zsh-install](https://res.cloudinary.com/incoder/image/upload/v1541968115/blog/mac-zsh-install.png) + +#### PowerLine +```bash +pip install powerline-status --user +``` +> 如果提示: +command not found: pip +先执行,再执行上面的字体安装命令 +```bash +sudo easy_install pip +``` + +#### 安装PowerFonts +为避免后续的使用中,可能会遇到字符乱码的问题,因此安装字体 + +字体库需要首先将项目`clone`到本地,然后执行源码中的`install.sh`,根据自己的喜好存放在指定的位置 +```bash +# 进入Documents目录 +cd Documents +# 创建文件夹PowerFonts +mkdir PowerFonts +# 进入PowerFonts目录 +cd PowerFonts +# clone源码 +git clone https://github.com/powerline/fonts.git --depth=1 +# 进入fonts目录 +cd fonts +# 执行安装脚本 +./install.sh +``` + +#### 设置字体及背景 +* 设置字体 +MenuBar -> iTerm2 -> Preferences -> Profiles -> Text -> Change Font,选择`Meslo LG`字体,L,M,S风格,看个人喜好,这里选择`Meslo LG S Powerline` +![iterm2-font](https://res.cloudinary.com/incoder/image/upload/v1541968115/blog/mac-iterm2-font.png) + +* 背景设置 +![iterm2-presets](https://res.cloudinary.com/incoder/image/upload/v1541968117/blog/mac-iterm2-presets.png) + +#### 修改主题 +```bash +# 打开.zshrc隐藏文件 +vim ~/.zshrc +# 修改ZSH_THEME为agnoster +ZSH_THEME="agnoster" +``` +>默认:ZSH_THEME="robbyrussell" + +#### 辅助 +* 高亮插件 +```bash +cd ~/.oh-my-zsh/custom/plugins/ +git clone https://github.com/zsh-users/zsh-syntax-highlighting.git +vim ~/.zshrc +# 添加zsh-syntax-highlighting到plugins中,放在git后面 +plugins=( + git + zsh-syntax-highlighting +) +# 文件最后添加,然后保存并退出 +source ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh +``` +最后,对配置文件进行生效处理 +```bash +source ~/.zshrc +``` +* 命令补全 +安装步骤和上面的高亮插件一致 +```bash +cd ~/.oh-my-zsh/custom/plugins/ + +git clone https://github.com/zsh-users/zsh-autosuggestions + +vi ~/.zshrc +``` +* 设置背景图 +iTerm2 -> Preferences -> Profiles -> Window -> BackGround Image + +## Gradle配置 +* 下载地址:[官网](http://services.gradle.org/distributions),下载-all版本 +* 设置GRADLE_HOME路径 +```bash +# 打开.bash_profile文件 +open -e .bash_profile +# Gradle_HOME环境设置,并保存 +GRADLE_HOME=/Users/blade/Documents/DevTools/Gradle/gradle-4.6 +export GRADLE_HOME +export PATH=$PATH:$GRADLE_HOME/bin +# 配置文件生效 +source ~/.bash_profile +# 验证配置 +gradle -version +``` +>如果提示The file /Users/blade/.bash_profile does not exist.则在根路径下创建`.bash_profile`文件 +```bash +touch .bash_profilesss +``` +![gradle-config](https://res.cloudinary.com/incoder/image/upload/v1541968116/blog/mac-gradle-config.png) From 2a83951c4c51d6327908f798da0c0f1037d7b43f Mon Sep 17 00:00:00 2001 From: BladeCode Date: Wed, 14 Nov 2018 14:18:07 +0800 Subject: [PATCH 040/163] update audio --- source/_posts/android-audio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/android-audio.md b/source/_posts/android-audio.md index 69eb6d7d0..55eaf9ca3 100644 --- a/source/_posts/android-audio.md +++ b/source/_posts/android-audio.md @@ -381,7 +381,7 @@ public class AudioPlayer { * `MediaRecorder`底层的实现也是调用了`AudioRecord`与`Android Framework` 层的`AudioFlinger`进行交互 > 关于音视频相关的资料参差不齐,目前尚未有大量相关专门的书籍来介绍该领域的图书或者易懂视频,很多情况需要根据所处应用场景灵活应变。 -推荐刚刚发行的一本关于音频方面的书记[《Android音视频开发》](https://item.jd.com/35027062396.html) +推荐刚刚发行的一本关于音频方面的图书[《Android音视频开发》](https://item.jd.com/35027062396.html) 推荐国内比较专业音视频方面相关的介绍[《雷霄骅的专栏》](http://blog.csdn.net/leixiaohua1020) ## 附录 From 7d3b0c302207e052525a0804d4d936fade866339 Mon Sep 17 00:00:00 2001 From: BladeCode Date: Wed, 14 Nov 2018 14:18:44 +0800 Subject: [PATCH 041/163] Squashed 'themes/next/' changes from 2bbae6b..cd10fb4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cd10fb4 Merge commit '18a64d4bddd07687effce2ac4373f650694a7783' as 'source/lib/pdf' 18a64d4 Squashed 'source/lib/pdf/' content from commit c5b1c8f 3282209 Merge commit '27e9ff1601814eb06fe552d770b5c709bc2ab794' as 'source/lib/pangu' 27e9ff1 Squashed 'source/lib/pangu/' content from commit 0852519 6351e0b Merge commit '3de3ff44bc22b91afe837fe488890b3f5f23ad58' as 'source/lib/pace' 3de3ff4 Squashed 'source/lib/pace/' content from commit 84a17ac 3972ed0 Merge commit '342ef82ce93eb9e14ff17de10b8f83158fc9723e' as 'source/lib/bookmark' 342ef82 Squashed 'source/lib/bookmark/' content from commit e7aba3f 110c7f1 Merge commit '4bb4006ec34aeb445abc695b11d59cb538c81b11' as 'source/lib/algolia-instant-search' 4bb4006 Squashed 'source/lib/algolia-instant-search/' content from commit c9af611 8063e91 update readme dfe4319 Merge pull request #1 from theme-next/master 1e71640 Add Contributors list (#443) ac19ae3 add beian option at footer for Chinese website owner (#438) 91c6053 修复配置文件里面的google calendar无法使用 (#407) 12d9143 Add growingio analytics (#354) bfe3fd1 Merge remote-tracking branch 'upstream/master' 3e37f2f Add enable option for read_more_btn (#446) 99235cb Delete Bootcss settings and docs (#439) e0e2fbc update readme d4e9cdd Merge remote-tracking branch 'upstream/master' e10e9fc Merge pull request #434 from theme-next/dev a1e451c Fixes for b2t & variables refactoring. 885daa2 Merge pull request #433 from theme-next/dev ac1dda1 Fix for `offset` option. [2] 21b9b65 Merge pull request #432 from theme-next/dev 12fc5b8 Merge branch 'master' into dev 1e989e5 Fixed resize filter & affix & back to top for sidebar (#431). a54ec63 Merge pull request #431 from theme-next/dev 891f618 Merge branch 'master' into dev 8d4f34e Release 6.4.2 ac7c23a Fixed & Optimized for #426. 718f0dc fix: Break words on PC and Firefox (#429) 9ec34d3 Merge pull request #424 from theme-next/dev 5073fa5 Refactored `.exturl` class & improve variables for `a` tags. [3] f4544dd Merge pull request #423 from theme-next/dev b17181e Refactored `.exturl` class & improve variables for `a` tags. [2] 6a6fb74 Refactored `.exturl` class & improve variables for `a` tags. (#422) c107340 Updated live preview links. (#420) fbac40f Fixes for sidebar in Pisces / Gemini schemes. (#418) 2d0dab2 Update the domain name of the busuanzi (#417) 933b0d6 Fix alignments for `exturl` with `mobile_layout_economy` option. (#411) 34c061c Fix disqus lazyload not working in Safari (#406) 7bbdb80 Merge branch 'fix/sidebar-offset' 3bd5ab5 Fix for `offset` option. 0dfaf45 Revert "v6.4.1" df0bd57 v6.4.1 eba03b0 Refactor group-pictures (#403) 23aaed1 New Crowdin translations (#405) f5be864 Fix TOC displayed in Overview (#408) b5aa49d Release 6.4.1 cc3ebfc add refer for livere (#395) 726cce6 New Crowdin translations (#386) 44da676 Fix bugs where images other than avatars will also rotate (#396) 79932de Fixed firestore use wrong variables problem #387 (#388) 3a921ce Refactor lean-analytics.swig to use REST API to avoid conflicts with valine (#381) 235689b Release 6.4.0 (#372) 6ab2480 Update _config.yml (#322) c0852bb Add Labels Rules guideline (#355) 42befc3 simplify post-reward.styl (#359) 374205b New Crowdin translations (#362) dc0171a Replaced `—` with `–` for better visibility. (#368) 2d3e4d7 Delete youyan comment (#360) 831e62c Fixes indentation for `note` and `tabs` tags. (#358) 62f69af Refactor the share tools within post-widgets (#357) a0590fd Fix the post date display bug(#302) 7d17575 Update valine comment system version (#345) ec18888 Update UPDATE-FROM-5.1.X.md (#324) e948d35 Fixed NexT `package.json` path on Windows. (#343) 3685052 Removed HyperComments because for now only paid. =( (#342) c51a34b Replaced `—` with `–` for better visibility. (#341) b378211 Custom sidebar width & content width for all schemes. (#339) 07d83ef Merge pull request #335 from Raincal/add-cdn-examples ed0b8d9 Add CDN examples for theme-next-three 08efdab Updated Docs. (#332) 08eb90e Refactored JS files. (#326) ffde8fe Reverted #254 pull. fffe91b Merge pull request #313 from theme-next/ivan/check-houndy 110cc37 Revert "Check Houndy [3]." 2fa3489 Check Houndy [3]. 6048573 Check Houndy [2]. 0164339 Merge branch 'ivan/feat-custom-lang' into dev 6cc8d58 Merge commit 'fd3dadf3bdd77ef3cee26675957ed35a6519895c' as 'source/lib/fancybox' fd3dadf Squashed 'source/lib/fancybox/' content from commit 899d7a7 d430ef4 Merge commit '77cdebe35939e6c7392406c49fa500823dfc8d5a' as 'source/lib/reading_progress' 77cdebe Squashed 'source/lib/reading_progress/' content from commit 0136e19 208b245 update readem 4b78733 update next readme 1f56430 Release 6.3.0 104fd7e New Crowdin translations (#285) cc07c43 Force scroll_to_more anchor to be #more (#293) 10503cc Allow customized copyright contents (#254) 3b2f980 Added custom language support feature. (#253) 725d13d Add support for automatic equation numbering for Mathjax, update the related documentation (#275) bbb523a Add avatar round & opacity & animation feature (#267) ee77a77 Merge pull request #282 from maple3142/master 8b5616a support copy result a778660 Merge branch 'ivan/disable-houndy' d4475e5 Check Stickler CI [6]. a490f90 Merge remote-tracking branch 'origin/master' 1609b00 Check Stickler CI [5]. 4cacb10 Fix logic bug in Han (#260) 2eacca2 Temporarily change to LTS node version. 2dd686a Check Stickler CI [4]. d4d976c Check Stickler CI [3]. b7218c6 Check Stickler CI [2]. d709641 Update SCI config. 0f9d005 Merge branch 'ivan/configure-stickler' ec8979f Added ESLint rules & Configured Stickler CI. c13d6cb Merge pull request #262 from zhaoyibo/master 3afb6eb fixed the font size of post body is too small when using Mist scheme on mobile phone. 12px -> 14px d599c4e Update readme's badges (addition to #250). d2c74b3 Update rss annotation e383523 Remove Houndy and JSHint linter files. 1e8670b Merge pull request #256 from theme-next/add-stickler-config da6b3f6 Adding .stickler.yml 30a8070 Fix errors in lc counter docs (#255) 5fac1dd New Crowdin translations (#252) bb4f644 Merge branch 'dev' 78447a6 Merge branch 'ivan/del-author-lang' into dev 20ece25 Removed `author` translated key. 0fbe3bb change copy-button position to absolute (#242) c7adeac Update readme's badges. (#250) 0fec1e6 Align badges in readme's. 84d460d Merge branch 'feature/change-telegram-links' into ivan-nginx a99777e Change Telegram links. fdd65d5 Merge remote-tracking branch 'origin/master' 51b6996 New translations en.yml (Russian) (#243) 1d63c85 Merge remote-tracking branch 'origin/master' 1f9ef9c Added Hexo and NexT environment variables. (#240) dbe6be7 Added Hexo and NexT environment variables. ac0ab13 New Crowdin translations (#239) 206d463 Merge remote-tracking branch 'origin/master' 5cea4ef fix css of copycode button (#238) a955021 New Crowdin translations (#235) aef6527 Release 6.2.0 1d89f8f Remove unused language files. da3a914 Option `copy_button` default to false. a6f092a add copy codeblock button (#234) 2768e5f Merge pull request #228 from jackey8616/date_time_merge a9ad0d7 Merge branch 'master' into date_time_merge 9f4f014 Final optimization for `another_day` option. 9513a11 Fixed bug and replaced `only_diff` by `another_day` option. 67881ee Refactored `date_updated` optimization. a482a37 Add missed judgment in if statement f296b27 Added support for hexo-symbols-count-time v0.4.0 2cd0df2 Merge pull request #233 from theme-next/symbols-count-time-0.4.0 e986ddf Added support for hexo-symbols-count-time v0.4.0 44d6307 Adjust time tag's border style a595e78 Merge branch 'master' into date_time_merge 495738a Add missing updated_at field check 05d43f8 Merge pull request #229 from theme-next/ref-menu-items afb42df Refactored menu items & badges. f8fad53 Lower digits in meta titile 4aaa015 Add missed method replacement and under line of time 4174f50 Minimal correct support for NexT is Hexo v3.5.0 for now. c485862 [Optimization] Rewrite some code logic and method change 30bccfc Optimized post edit option. (#214) 8c139be Fixed footer powered disabled option. 8043ed1 Merge pull request #223 from jackey8616/date_time_merge fae8127 [new feature] add post edit button (#208) b8ebb32 Add date_time_merge filed into post_meta 8fd7b81 Update Crowdin configuration file adc76b7 Renamed back `_en.yml` on `en.yml` and setted `default.yml` to link it. c5ddac7 Merge pull request #221 from theme-next/refactored-header-components 2e39f04 Refactored header components. 3dabc16 Update guide for creating releases in CONTRIBUTING.md (#213) 7792b06 Merge pull request #214 from theme-next/feature-footer-powered-version 81e02da Added `footer.powered.version` option to display Hexo version in footer. b4c0c01 New Crowdin translations (#211) 9e2b69a Merge pull request #210 from theme-next/fix-default-language 775ac15 Fix for default language if no `language` in Hexo config defined. 6f787af Increase page loading performance by refactor `menu-item-active` class. 50d85ea Release 6.1.0 265af45 New Crowdin translations (#189) 96044ca Fix bug in utils.js (#205) 3e71b0a Fix image url (#204) ca2554b Updated Chinese README.md c6aaa42 Updated i18n d297cf5 Revert "LeanCloud Counter Security Plugin (beta, currently under the testing)." bd6c789 Update links in readme's. 2a841a9 Add `backlog` label to exclude labels. 56c1281 Add code-of-couduct.md (#198) 089d00e Refactor footer icon with animation (#195) bcd8a28 Update codeblock style and add border-radius settings (#194) 52d3c02 Add contributing.md in EN&CN lang (#192) f2a939f Add symbol.colon in meta text (#188) 65a8a8d add comment count in mobile (#185) 55bb2c7 Add comment text (#186) 1975fd0 Merge pull request #177 from LEAFERx/master 38b0cf3 shorten docs 530474a Fix a typo in LEANCLOUD-COUNTER-SECURITY.md (#175) dc48367 Add EN doc for leancloud counter security (#174) 29e2e59 LeanCloud Counter Security Plugin (beta, currently under the testing). 0972b8c Fix svg confict in algolia vender (#173) 67892b2 Remove keywords in Theme-Next (#168) 9fc2b20 New Crowdin translations (#167) 580a8de Merge pull request #171 from LEAFERx/master 8f16ef6 Updated LC security description, again. 7852f70 Updated LC security annotation. 0a09c5d Add leancloud counter security annotation a681671 escape single quotes in lean-analytics.swig 65f0a25 Merge pull request #1 from theme-next/master e8ad8fa Updated README's. 2c3ba4b Merge pull request #115 from Raincal/patch-1 942a9bd Minimal requirements for NexT v6.0.6 is now Hexo v3.3.5 00c8ebc Merge pull request #130 from maple3142/master 51f96cc Updated version to 6.0.6 70bd6c1 Merge remote-tracking branch 'origin/master' baac829 Merge pull request #156 from theme-next/sub-menu-feature 027c710 Merge branch 'master' into sub-menu-feature 43b9f25 Merge pull request #166 from geekrainy/update/README 523c724 Updated README. 83c8167 Merge pull request #161 from sli1989/img_margin ac729a4 FIX IMG MARGIN 35a87f5 Merge pull request #160 from sli1989/patch 2b954ef Update ISSUE_TEMPLATE.md 2c6ad1a FIX ISSUE TEMPLATE b8b4495 FIX ISSUE TEMPLATE 2126a60 Merge remote-tracking branch 'origin/master' f85bc00 Added sub-menu feature. 25d7a26 Merge pull request #155 from xu-song/patch-1 a843533 remove style table-layout: fixed; 28696ac Merge pull request #153 from theme-next/github-banner-fixes 655c329 Merge branch 'master' into github-banner-fixes a3348e7 Fixes for GitHub banner option. 51d88df Merge pull request #152 from ywjno/master c9a1427 update version number 803e10a Merge pull request #149 from dpyzo0o/master 441f8a7 fix missing margin for h1 d35d219 Merge pull request #148 from dpyzo0o/master abe8fcf Merge branch 'master' into master 8b2e72a Merge pull request #137 from LEAFERx/master 25faacf fix typo in data_updated_diff expression c048c4f keep Mist margin settings in consistence with other themes 3260799 add betterPerformance in doc 066e209 a performance fix 8072fc8 fix some err in the doc 2fa0a46 add issue & pr link 9268493 format the doc 1a75e2f Add lc-security doc 00e1c89 Update warning message. 2d1552a set security config default to true 4707ec8 Merge branch 'master' of https://github.com/LEAFERx/hexo-theme-next-ng c15bd56 a better error message 49b3152 Refactored LC configuration. c2a6cf4 Merge branch 'master' into master fff01b7 fix readme b856dc0 Merge pull request #140 from theme-next/feature-include-raw 92a7afc Added `include_raw` tag feature. 7ddc761 Add a little readme b8baa54 Merge branch 'master' into master 9c0859b Merge pull request #139 from tsanie/fix-valine-plugin-syntax 4759a66 allow to load ValineJs from a custom CDN server. 5d0ff61 fix a syntax issue about IE compatible 21ad6c8 Merge branch 'master' into master 4537c00 fix leancloud counter security bug 95cd9e1 Merge pull request #136 from theme-next/breadcrumbs-feature 91249cd Added BreadCrumbs feature. 52b754f Refactor some tags. [skip-ci] 4f0c7aa Merge remote-tracking branch 'origin/master' 750377f Merge pull request #135 from theme-next/i18n 415eecc Merge remote-tracking branch 'origin/master' c73fd08 Small fix of space in `post-copyright`. 0e1933f New translations _en.yml (Russian) 7edf894 Merge pull request #134 from theme-next/i18n 57fdc6e Merge branch 'master' into i18n c65479d New translations _en.yml (Chinese Traditional) 69764a2 Merge pull request #132 from theme-next/i18n 29f3aea New translations _en.yml (Chinese Traditional) a16c0dd New translations _en.yml (Chinese Traditional) 55d4dd2 New translations _en.yml (Chinese Traditional, Hong Kong) 57c1a80 New translations _en.yml (Chinese Traditional) 39c8a74 New translations _en.yml (Chinese Simplified) 2c3b830 New translations _en.yml (Chinese Simplified) 6a6f904 New translations _en.yml (Vietnamese) 3f2af2d New translations _en.yml (French) 665c299 New translations _en.yml (Finnish) 9fa0d37 New translations _en.yml (Estonian) 9b736b4 New translations _en.yml (Dutch) 2313ec2 New translations _en.yml (Danish) 503bf9e New translations _en.yml (Czech) f8a60f0 New translations _en.yml (Croatian) 5b99a77 New translations _en.yml (Chinese Traditional, Hong Kong) 6bbe455 New translations _en.yml (German) 214a6f2 New translations _en.yml (Chinese Traditional) 029359d New translations _en.yml (Bulgarian) 8b4a8a6 New translations _en.yml (Arabic) b349d39 New translations _en.yml (Serbian (Cyrillic)) 4ffdb58 New translations _en.yml (Punjabi) c70d3fe New translations _en.yml (Malay) 18c2357 New translations _en.yml (Javanese) c892dd1 New translations _en.yml (Hindi) 60198c1 New translations _en.yml (Bengali) 4416942 New translations _en.yml (Chinese Simplified) d74d71c New translations _en.yml (Turkish) 67067ee New translations _en.yml (Greek) 36bcafa New translations _en.yml (Hungarian) 9cad859 New translations _en.yml (Ukrainian) 8ea56b4 New translations _en.yml (Thai) 83c9669 New translations _en.yml (Swedish) 6087697 New translations _en.yml (Spanish) 0266732 New translations _en.yml (Slovenian) 8e3c1d0 New translations _en.yml (Russian) 26ccc6c New translations _en.yml (Romanian) e98e26b New translations _en.yml (Portuguese, Brazilian) 3de99d8 New translations _en.yml (Hebrew) 829b8be New translations _en.yml (Portuguese) d1c0664 New translations _en.yml (Persian) 1eee4c7 New translations _en.yml (Norwegian) c9a0811 New translations _en.yml (Lithuanian) c4c318d New translations _en.yml (Latvian) 7915278 New translations _en.yml (Korean) 2fbecd5 New translations _en.yml (Italian) 528ec39 New translations _en.yml (Indonesian) 0e49cef New translations _en.yml (Polish) 120f8ab New translations _en.yml (Japanese) af901f1 Merge pull request #129 from xu-song/master 4e7c3b7 Merge branch 'master' into master eb50ef7 Refactor page header for future mata additions. 89d5b8f Refactor busuanzi & some language translates. 9a3b607 Release 6.0.4 9305a63 Merge pull request #131 from theme-next/fix-justify-toc 9d26fbc Fix justify TOC items in sidebar. 2ba6b0f add symbol & icon_config 55145af Merge pull request #128 from theme-next/i18n 357dc1a Update ru.yml f0234ef improve accessibility 481b0ec suggestion by sli1989 #129 d264941 add hover text for PV UV 9ac9dd3 New translations _en.yml (Chinese Traditional) f6d3e26 New translations _en.yml (Chinese Simplified) 2928fc7 New translations _en.yml (Vietnamese) c250ef1 New translations _en.yml (French) 8897972 New translations _en.yml (Finnish) d48a243 New translations _en.yml (Estonian) 198b15f New translations _en.yml (Dutch) 25daf21 New translations _en.yml (Danish) 4de9616 New translations _en.yml (Czech) 6dc0112 New translations _en.yml (Croatian) 740c7c2 New translations _en.yml (Chinese Traditional, Hong Kong) 4863f03 New translations _en.yml (German) 2ab509c New translations _en.yml (Chinese Traditional) 2ac7ef9 New translations _en.yml (Bulgarian) b439f77 New translations _en.yml (Arabic) 8c83eb7 New translations _en.yml (Serbian (Cyrillic)) 44b1011 New translations _en.yml (Punjabi) 30b2d68 New translations _en.yml (Malay) e83026d New translations _en.yml (Javanese) 45886cb New translations _en.yml (Hindi) d924c77 New translations _en.yml (Bengali) f2bad59 New translations _en.yml (Chinese Simplified) 654a2c6 New translations _en.yml (Turkish) 35e1df0 New translations _en.yml (Greek) 36803cd New translations _en.yml (Hungarian) cc41b16 New translations _en.yml (Ukrainian) 14608d3 New translations _en.yml (Thai) 3de35e4 New translations _en.yml (Swedish) 5aef82d New translations _en.yml (Spanish) 00cd9ef New translations _en.yml (Slovenian) adcf834 New translations _en.yml (Russian) 3217a02 New translations _en.yml (Romanian) f4c632b New translations _en.yml (Portuguese, Brazilian) d29e311 New translations _en.yml (Hebrew) 475ccc4 New translations _en.yml (Portuguese) 19cc94e New translations _en.yml (Persian) a1d0d4f New translations _en.yml (Norwegian) 9e115b9 New translations _en.yml (Lithuanian) 0196286 New translations _en.yml (Latvian) c78b34c New translations _en.yml (Korean) df9177e New translations _en.yml (Italian) 851acdd New translations _en.yml (Indonesian) 39eb126 New translations _en.yml (Polish) 3e1ebdb New translations _en.yml (Japanese) e673805 Merge pull request #109 from tsanie/feature-related-posts 3c44d16 move the template to the single file. 8ddc9d4 fix the default configure 822696b using the custom output template. 0645368 add a switch to determine whether related posts will be shown in the home page, and add support to i18n. 3e3d10a Merge remote-tracking branch 'remotes/remote/master' into feature-related-posts 82ac7af Another small config update in description for `highlight_theme`. 470f026 Just small update in config descriptions for fonts. 77d5d08 Merge pull request #126 from Raincal/fancybox c449792 fix(fancybox): add data-fancybox attr for fancybox3 03bd4b4 Merge pull request #111 from tsanie/support-configurable-sidebar-width 632908f Merge branch 'master' into support-configurable-sidebar-width 5e15974 Merge pull request #125 from theme-next/seo-with-description 9793cf1 Merge branch 'master' into seo-with-description 956c992 Keep `description` option only when `seo` enabled. 9b155fc Merge pull request #119 from sli1989/algolia-search 7d95d88 Merge branch 'master' into algolia-search 3eab1f7 Fix bug using algolia search's CDN 62827db Merge pull request #123 from theme-next/change-code-block-font-size 06702a9 Change default font size to 14px for Code Block. 457072f Fix CND bug in algolia-instant-search 9a0bcea Merge pull request #122 from theme-next/ext-url-mod fcb37da If no arguments exists as title, set title as url. 266ad62 Merge pull request #120 from Raincal/jquery-related 6933a71 Use .length instead of .size() 46cff99 Update algolia search docs with vendors 9f7ed72 Merge pull request #116 from Raincal/update-creative-commons 598c48f Merge pull request #117 from Raincal/update-link e798b25 Update link c28b0fd Update license version ad1dcab fix duplicate meta keywords 9b8065a Merge pull request #107 from maple3142/master d781c35 change default cdn of reading_progress to min.js version 0a73b80 Support to manual configure the sidebar width of the Gemini Scheme. b453402 set the default configure 7f992ee style adjust 85d8f64 initial related-posts 44aa136 add reading_progress to vendors 0fb3a41 Merge pull request #103 from tsanie/support-gemini-max-width 0f6aa83 Merge branch 'master' into support-gemini-max-width 9353117 Merge pull request #106 from tsanie/cdn-support-bookmark daa6388 let the bookmark support the CDN cca2f0f micro adjust dee949e move the definitions from variables to the scheme one. 04b3cde Merge branch 'master' into support-gemini-max-width 21d46da move the definitions into the Gemini.styl c3f5c78 Merge pull request #104 from wafer-li/fix-needmoreshare2-vendors 9281e3e Fix needmoreshare2 vendors b694914 fix the wrong setting about width 58e658b Support to manual configure the content max width for Gemini Scheme. 802b9a8 Merge pull request #101 from wafer-li/math-use-jsdelivr-cdn 0fe5058 Use jsdelivr as default cdn and update docs c5b85ea Merge pull request #99 from theme-next/extlink-additions 1adb81e Merge branch 'master' into extlink-additions 3531f9d Fixed GitHub banner color inverting. cb51179 Extlinks additions on GitHub banner (buggy). a459bf0 Extlinks additions on sidebar. 3a74499 Merge pull request #98 from wafer-li/katex-add-bootcdn-optional f598f08 Fix typo b1e2497 Fix en doc 5a4540e Add bootcdn for katex and add docs da65891 Merge pull request #95 from theme-next/i18n 483140c New translations _en.yml (Punjabi) 445a37b New translations _en.yml (Malay) 7f2e445 New translations _en.yml (Javanese) b2ed996 New translations _en.yml (Hindi) 18de53c New translations _en.yml (Bengali) 89f15e8 New translations _en.yml (Turkish) 051c6d3 New translations _en.yml (Japanese) b0b3b6f Release 6.0.3 ef4e429 Merge pull request #91 from sli1989/patch 839d659 Merge branch 'master' into patch fb373d6 Merge pull request #93 from tsanie/sidebar-settings-in-post b2d0f31 avoid an issue when using `hexo g` to generate files. 11a6764 Support to set whether the sidebar will be shown in single post. 5383d8e update content 108284b fix error f46d9aa Fix error a3b698d fix grammer 5e08fb8 Fix grammer eb80164 Add EN doc of Algolia search 5152e15 update style 29cf557 Add apikey de764ec Add CN doc of Algolia search d34d250 Merge pull request #90 from tsanie/unescape-search-html 0981072 add a switch to choice whether it will unescape the HTML strings for searching. 987258b Merge pull request #89 from tsanie/algolia-search-overlay 6e8d8b7 fix an issue about the algolia search overlay. 9cf8a9c Merge pull request #87 from tsanie/sidebar-count-issue c5c1eb5 fix: the categories/tags count issue still exists in the sidebar. 7bb669f Merge pull request #85 from theme-next/add-more-seo 92def14 Refactored footer for add-more-seo feature. 7c72ded Fix code format 592888c Add more seo things e06d4cc Change Crowdin link to invite. 980444e New translations _en.yml (Ukrainian) 7a28914 New translations _en.yml (Croatian) ca9ab1f New translations _en.yml (Czech) 6a2beb0 New translations _en.yml (Danish) e2f9b99 New translations _en.yml (Estonian) 31ec748 New translations _en.yml (Finnish) 36e91d3 New translations _en.yml (Greek) 7336572 New translations _en.yml (Hebrew) 3a2366a New translations _en.yml (Hungarian) 8cafb51 New translations _en.yml (Latvian) cae18b2 New translations _en.yml (Bulgarian) d3ad6e2 New translations _en.yml (Lithuanian) bbf0d9b New translations _en.yml (Persian) aaf6007 New translations _en.yml (Polish) 8d366b6 New translations _en.yml (Romanian) d46d7a2 New translations _en.yml (Serbian (Latin)) f702c23 New translations _en.yml (Slovenian) 883d541 New translations _en.yml (Spanish) 46b9895 New translations _en.yml (Swedish) dc69e21 New translations _en.yml (Thai) d2404e1 New translations _en.yml (Turkish) a73b036 New translations _en.yml (Norwegian) c2cc818 New translations _en.yml (Arabic) 4593c96 Merge pull request #82 from theme-next/i18n 9226ad6 New translations _en.yml (Dutch) 005a995 New translations _en.yml (Vietnamese) 9b58ca4 New translations _en.yml (Portuguese, Brazilian) fb54703 New translations _en.yml (Portuguese) c3174f1 New translations _en.yml (Korean) a13fb30 New translations _en.yml (Japanese) 0ddc689 New translations _en.yml (Italian) 1f8869f New translations _en.yml (Indonesian) 02a9509 New translations _en.yml (German) 829fc11 New translations _en.yml (French) 9ed5b96 New translations _en.yml (Chinese Traditional, Hong Kong) e5e4414 New translations _en.yml (Chinese Traditional) 2a69cf1 Merge pull request #81 from theme-next/fix-math-load 24340d2 Merge branch 'master' into fix-math-load 72558c4 Merge remote-tracking branch 'origin/master' 6f8317f Refactored localize badge. 49380ba Merge pull request #80 from theme-next/i18n_master d3b73e8 Fix #78 3ff1358 New translations _en.yml (Dutch) 5852d9d New translations _en.yml (Vietnamese) b5c7307 New translations _en.yml (Portuguese, Brazilian) c12321e New translations _en.yml (Portuguese) eb008f8 New translations _en.yml (Korean) 617a406 New translations _en.yml (Japanese) 28b52ec New translations _en.yml (Italian) a2d5610 New translations _en.yml (Indonesian) eb76789 New translations _en.yml (German) 26afb3e New translations _en.yml (French) c16d634 New translations _en.yml (Chinese Traditional, Hong Kong) 09166d4 New translations _en.yml (Chinese Traditional) 06d9798 New translations _en.yml (Russian) 4fc9254 New translations _en.yml (Chinese Simplified) 889e8d3 Original RU language version. Test on old keys without adding new keys. 1b58a3e Update Crowdin configuration file 3f102ba Update Crowdin configuration file 0ad05de Merge remote-tracking branch 'origin/master' ec5e9db [Breaking Changes] Rename `fr-FR` and `nl-NL` to `fr` and `nl`. ee91573 [Breaking Changes] Rename `fr-FR` and `nl-NL` to `fr` and `nl`. bf18387 Update Crowdin configuration file 2b865c6 Update Crowdin configuration file 5b75a1c Update Crowdin configuration file 39ccc39 Update Crowdin configuration file bdeb746 Update Crowdin configuration file 7214c2c Rename `zh-Hans` on `zh-CN` for better compatability. e1e6cf8 [Breaking Changes] Rename `zh-Hans` on `zh-CN` for better compatability. 4f97f17 Merge pull request #76 from tsanie/fix-bookmark-issue fda5c2b Support to scroll the right position when the visitor open a page by clicking the 'Read More' button. 05ee412 Update Crowdin configuration file 8b98659 Add `crowdin.yml`. d968eed Merge pull request #73 from sli1989/patch 15f4e3e Merge branch 'master' into patch dd214e0 Replace `Github Pages` with `Coding Pages` and set default style to bold 7fd18f2 add annotation of text-align on mobile in Mist&Muse f042322 Update ISSUE template. [3] 6e956de Update ISSUE template. [2] 548332c Update ISSUE template. dc6920c Merge pull request #72 from ivan-nginx/gitlocalize-444 0aa42ec Merge branch 'master' into gitlocalize-444 1d605a2 Update GL repo link. 160e37a Translate ru.yml via GitLocalize a250876 Change quotes. 4003a0e Refactored `license_content` & Fixed excess spaces. 97a3987 Revert "Update Word Wrap in `_en.yml` for `license_content`." 3de826a Update Word Wrap in `_en.yml` for `license_content`. 5b01306 Remove `default.yml` language & Update GitLocalize repo link. 9d46733 Rename «Words count in article» on «Symbols count in article». 03e357b Rename `en.yml` on `_en.yml` to set undefined language as default. a5cc603 Merge remote-tracking branch 'origin/master' 4e20231 Update INSTALLATION.md on right v6.0.1 commit. 7e71b4b Merge pull request #66 from wafer-li/math-flip-perpage cf5cc5a Set per_page default to true and update docs 930182b Revert "Flip per_page behavior and update docs" e3e0bf0 Flip per_page behavior and update docs 79582ed Fix a little mistakes in `MATH.md` docs file. [3] da29003 Merge branch 'i18n' 6582d75 Fix a little mistakes in `MATH.md` docs file. [2] a3a2321 Fix a little mistakes in `MATH.md` docs file. 8eec69d Merge remote-tracking branch 'origin/master' 8f317e2 Merge branch 'i18n' 79791a9 Update telegram badges. df0c05b Add comments to default paths for `custom_file_path` option. 613370d Merge pull request #63 from tsanie/bookmark-feature 5c47930 Merge pull request #62 from ivan-nginx/gitlocalize-439 0a8879a Translate ru.yml via GitLocalize 45b794f default save trigger to auto 8adf8b1 Rename `cn` dir on `zh-Hans` for GitLocalize adaptation. dc03394 support the bookmark feature a949fb4 Renamed `zh-HK` and `zh-TW` languages for GitLocalize support. 0fea095 Merge branch 'master' into i18n a963868 Added Telegram badge to main docs. d220ad8 Update version (always forgot it, sorry) 4489005 Merge branch 'master' into i18n ba1f5a4 Update lang badge titles. bf6d324 Merge pull request #32 from wafer-li/add-katex-support afef184 Merge branch 'master' into add-katex-support 96b18f1 Fix misspelling and grammar issues of EN doc 5064b32 Add EN doc and fix some issues of CN doc e6be004 Fix typo and add more info to docs 5a70fd3 Temporairly commented `full-image` expand on > 100%. 8744238 Fixed mistake in description. 1cb4d08 Remove dotes from paths from custom files paths feature. 4482f76 Fix docs to custom paths. 90bdf79 Added attention about `../..` paths. 12fe131 Fixed `source` path to default. f968ffc Added feature to redefine custom files pathes. 817c4d5 Add cn doc `MATH.md` 3708cc3 Refactored badges styles in menu in Pisces/Gemini. 9644bf4 Change CDN to CDNJS 139c9e6 Put things into math folder 10ff86d Merge pull request #50 from HuntedCodes/updated-diff 6ab5e9c Whitespace c58775c Handle all cases for post_meta.updated_diff 3a24738 Merge remote-tracking branch 'upstream/master' into add-katex-support e9250d5 Merge branch 'master' into updated-diff 4d205aa Merge branch 'i18n' 49a3b37 Refactored localize badges. fcd5c2a Merge pull request #56 from wafer-li/add-pangu.js da77647 Added localize badge in main docs. ae3db40 Merge branch 'master' into add-pangu.js 59db093 Refactored RU translate for `DATA-FILES.md`. ed0f22c Add dependency description of pangu bf13beb Add pangu option in vendors 0d46fb4 Fix pangu not enable 6666916 Treat pangu as separated lib 19138d1 Merge pull request #55 from maple3142/master ab58c2c fix reading_progress appear in index d61113d Add pangu support 156341f Merge pull request #47 from tsanie/translate 59996c3 Fixes 'updated_at' without 'created_at' 90931ec Adds updated_diff option to post_meta 4ccab05 Delete crowdin.yml f01bc5a Update Crowdin configuration file 1b71492 fix some translation 32a56a7 Add translate for the DATA-FILES.md changes. de3eea6 Update `DATA-FILES.md` in in accordance with new fixes & features. 8b345e7 Move «Plugins» section from INSTALLATION.md to main README.md a9e59a7 Merge remote-tracking branch 'origin/master' 1b0b53a Improved `override` option & Fixed `theme_config` in Hexo. a43cb12 Merge pull request #45 from Albert-Gao/patch-1 595d3c3 Update google-analytics.swig 5a3641e Fixed mistake. ab19b72 Merge branch 'master' into add-katex-support 270484f Merge pull request #43 from HuntedCodes/optional-cheers 7588b9e Merge branch 'master' into optional-cheers 06bdb89 Merge pull request #42 from tsanie/categories_tags_count_issue 6e03d56 fix an issue about the categories/tags count. 7ee28e7 Added cheers_enabled config option 7d159ab Added Riot badge. e650835 Added Riot badge. 0513c3b Added Riot badge. bad4334 Refactored `head.swig` to right rendering pathes with `cache`. d19ad08 Merge pull request #39 from sli1989/pitch1 7e9ea0c Add comment.enable to switch comment conveniently 08d35be Fixed excess blank with underline in posts categories meta (#36) . fc97b4f Merge branch 'github_banner_on_mist' 988722f Merge remote-tracking branch 'origin/master' 3337b50 Responsive Github-Banner style for all themes. 4111fe9 Fix typo in config description 2b94268 Merge pull request #34 from tsanie/async_load_disqus c917067 change `async` to `lazyload` 3c51c33 support to load disqus comments asynchronous 3e788ac Fix typo and add more info about per_page option f70f2bb Combine MathJax and Katex together 0b89c79 Remove katex js and use 0.7.1 as default 4a52f5b Add Katex cdn specifications c52c9a8 Add Katex support d070a7e Merge branch 'github_banner_on_mist' c4e9c9a Fixed menu badges left margin in Muse & Mist after excess spaces fix. d2be4fa Added fix when JS turned off with `motion.enable` option. cd6ef7b Merge branch 'master' into github_banner_on_mist ac44fc4 Merge pull request #28 from wafer-li/patch-1 9976174 Merge branch 'master' into github_banner_on_mist 6502981 override 4d4e11e fix a position bug on the mobile. 9b89bd8 Fix wrong translation in zh-Hans 92061f9 Merge pull request #26 from LEAFERx/master 24b4815 move needmoreshare_css to head 57a03be Merge pull request #22 from wafer-li/patch-1 82e3bf5 Fix misleading description of gitment da9cdd2 Release v6.0.1 0e5ab06 Merge branch 'remove-duoshuo' 06f9d8b Fixed menu items excess spaces. caf0738 Add «Follow me on GitHub» banner option. be3528f Updated MathJax CDN links & added short docs to them. 91c9919 Revert MathJax CDN on default. fd89b29 Update config for FancyBox 2 & 3. 6604f07 Fix issue template. [3] 466038e Fix issue template. [2] 75f80e0 Fixed issue template. 8a3f18a Updated github templates. 47a385b Merge branch 'master-1' into remove-duoshuo bbeaf77 Rolling back `quote` and `label` tags. 486a759 Merge branch 'master-1' into remove-duoshuo feb1968 Update path on Local Search dependencies. 8f9cde1 Merge branch 'master' of https://github.com/zhuzhuyule/hexo-theme-next-1 9e7cc3b Merge pull request #1 from theme-next/master 11d551f clear about duoshuo server aab1a52 Update HexoEditor link. 4610dff Update readme. de630c3 Merge pull request #9 from maple3142/master aaded5f add message for reading_progress 12b1dbe Update some links in readme's. 2412fbc Several improvements in main menu on all schemes. c0c6ff1 Fix: In mobile, menu content will cover side bar (Muse scheme). 4bfbd67 Merge pull request #6 from kuleyu/master e847bc5 Update wechat-subscriber.swig 8d6049d Update reward.swig 1956fa9 Merge pull request #5 from maple3142/master 7c7ee9a add reading_progress css conditional loading dc7d218 change reading_progress to seperate repo 445705e add reading_progress d00ecb0 Fixed RU broken links in docs. 79568f2 Add Plugins section in RU docs. f96dcda Fixed CN and RU broken links. a6c7597 Update docs. d30530a Added CN language navigation. 15b9652 Merge pull request #4 from Blealtan/master 23af3c5 Create translation to zh-Hans for UPDATER-FROM-5.1.x.md. ba48e7e Update for Plugin section in docs/cn/INSTALLATION.md. 1271ac8 Merge remote-tracking branch 'parent/master' 3fbb715 Fixed install docs. 3eebd5f Update install & update documentation. 8b8cd94 Update authors from initial repo. c110cf4 Refine punctuations. d14235a Add translation for documents in Simplified Chinese. 8d2d87a Fill in untranslated words for zh-Hans. 896f7db Merge pull request #3 from zhuzhuyule/patch-1 8cedfbc add recommend markdown editor 3ff0758 Fix docs. ca757f3 Update readme for update NexT. f0b5ec8 Update UPDATE-FROM-5.1.X.md 5fc9b70 Update docs from 5.1.x 790e1ed Add ru Installation translation. 1940782 Fix logo to static path. cfd5c38 Update DATA-FILES.md. 7f7290f Update readme. 9a76bc8 Add stale bot. e12bb0b Introduce v6.0.0 2dd5c63 Initial commit REVERT: 2bbae6b add fierce REVERT: 6d929fa uninstall hexo-leancloud-counter-security REVERT: b214343 fix some bug and add git articles REVERT: b7779a0 add rxjava REVERT: 59b3e8e add rxjava REVERT: 351f315 add syncing-a-fork REVERT: 516fc47 add mysql REVERT: 5c78f79 add treasure REVERT: 51b9bb9 add hugo REVERT: eb4e18f add security-rsa REVERT: 85128e3 update travel-zjj REVERT: d2ae528 update network REVERT: acf35ea add http REVERT: 9775f7c modify leancloud security settings REVERT: ab761e9 Merge branch 'dev' of https://github.com/BladeCode/BladeCode.github.io into dev REVERT: 517ed96 add ssm REVERT: cec6ead update linux-build REVERT: dc9eb3f add memory REVERT: 4bf7311 add zhangjiajie REVERT: 7dac8d5 add douban module REVERT: 1b20a8f update themes and article REVERT: 8f89374 Merge commit '750a0b0017aff038263cc6d26078b2cd09326188' as 'themes/next' REVERT: 750a0b0 Squashed 'themes/next/' content from commit 6cc8d58 REVERT: 97cf3bd delete themes REVERT: 85c1a62 add fancybox reading_progress lib REVERT: 69fc5b3 git subtree REVERT: 8db33f9 Merge commit '17c6b50d2beb6fd06a5eb29d65bcbd7ffff20eaf' as 'themes/next' REVERT: 17c6b50 Squashed 'themes/next/' content from commit 4b78733 REVERT: 19e956c delete next REVERT: 1a065ee http to https REVERT: ec956bb add about page REVERT: 68afddf delete landscape REVERT: b10e371 change themes next REVERT: 35102f1 init landscape themes REVERT: 184bf17 add LICENSE and README.md git-subtree-dir: themes/next git-subtree-split: cd10fb4b0e24582ae3f63ea2085dd15eb5c83131 --- .all-contributorsrc | 401 + themes/next/.bowerrc => .bowerrc | 0 themes/next/.editorconfig => .editorconfig | 0 themes/next/.eslintrc.json => .eslintrc.json | 0 themes/next/.gitattributes => .gitattributes | 0 .../.github => .github}/CODE_OF_CONDUCT.md | 0 .../next/.github => .github}/CONTRIBUTING.md | 54 + .../.github => .github}/ISSUE_TEMPLATE.md | 0 .../PULL_REQUEST_TEMPLATE.md | 0 .../.github => .github}/browserstack_logo.png | Bin {themes/next/.github => .github}/stale.yml | 0 .gitignore | 23 +- themes/next/.stylintrc => .stylintrc | 0 .travis.yml | 44 +- themes/next/LICENSE.md => LICENSE.md | 0 README.md | 96 +- _config.yml | 1130 +- themes/next/bower.json => bower.json | 2 +- themes/next/crowdin.yml => crowdin.yml | 0 {themes/next/docs => docs}/AGPL3.md | 0 {themes/next/docs => docs}/ALGOLIA-SEARCH.md | 0 {themes/next/docs => docs}/AUTHORS.md | 0 {themes/next/docs => docs}/DATA-FILES.md | 0 {themes/next/docs => docs}/INSTALLATION.md | 0 .../LEANCLOUD-COUNTER-SECURITY.md | 0 {themes/next/docs => docs}/LICENSE | 0 {themes/next/docs => docs}/MATH.md | 6 +- .../next/docs => docs}/UPDATE-FROM-5.1.X.md | 0 {themes/next/docs => docs}/ru/DATA-FILES.md | 0 {themes/next/docs => docs}/ru/INSTALLATION.md | 0 {themes/next/docs => docs}/ru/README.md | 56 +- .../docs => docs}/ru/UPDATE-FROM-5.1.X.md | 0 .../docs => docs}/zh-CN/ALGOLIA-SEARCH.md | 0 .../docs => docs}/zh-CN/CODE_OF_CONDUCT.md | 0 .../next/docs => docs}/zh-CN/CONTRIBUTING.md | 55 + .../next/docs => docs}/zh-CN/DATA-FILES.md | 0 .../next/docs => docs}/zh-CN/INSTALLATION.md | 0 .../zh-CN/LEANCLOUD-COUNTER-SECURITY.md | 0 {themes/next/docs => docs}/zh-CN/MATH.md | 6 +- {themes/next/docs => docs}/zh-CN/README.md | 56 +- .../docs => docs}/zh-CN/UPDATE-FROM-5.1.X.md | 6 + .../next/gulpfile.coffee => gulpfile.coffee | 0 {themes/next/languages => languages}/de.yml | 0 .../next/languages => languages}/default.yml | 0 {themes/next/languages => languages}/en.yml | 0 {themes/next/languages => languages}/fr.yml | 0 {themes/next/languages => languages}/id.yml | 0 {themes/next/languages => languages}/it.yml | 0 {themes/next/languages => languages}/ja.yml | 54 +- {themes/next/languages => languages}/ko.yml | 0 {themes/next/languages => languages}/nl.yml | 0 .../next/languages => languages}/pt-BR.yml | 0 {themes/next/languages => languages}/pt.yml | 0 {themes/next/languages => languages}/ru.yml | 0 {themes/next/languages => languages}/tr.yml | 0 {themes/next/languages => languages}/vi.yml | 0 .../next/languages => languages}/zh-CN.yml | 2 - .../next/languages => languages}/zh-HK.yml | 0 .../next/languages => languages}/zh-TW.yml | 0 .../next/layout => layout}/_custom/head.swig | 0 .../layout => layout}/_custom/header.swig | 0 .../layout => layout}/_custom/sidebar.swig | 0 {themes/next/layout => layout}/_layout.swig | 12 + .../_macro/menu/menu-badge.swig | 0 .../_macro/menu/menu-item.swig | 0 .../_macro/post-collapse.swig | 0 .../_macro/post-copyright.swig | 2 +- .../_macro/post-related.swig | 0 .../next/layout => layout}/_macro/post.swig | 82 +- .../next/layout => layout}/_macro/reward.swig | 0 .../layout => layout}/_macro/sidebar.swig | 0 .../_macro/wechat-subscriber.swig | 0 .../_partials/breadcrumb.swig | 0 .../layout => layout}/_partials/comments.swig | 10 - .../layout => layout}/_partials/footer.swig | 9 +- .../_partials/head/external-fonts.swig | 0 .../_partials/head/head-unique.swig | 0 .../_partials/head/head.swig | 0 .../_partials/header/brand.swig | 0 .../_partials/header/index.swig | 0 .../_partials/header/menu.swig | 0 .../_partials/header/sub-menu.swig | 0 .../_partials/page-header.swig | 0 .../_partials/pagination.swig | 0 .../_partials/search/index.swig | 0 .../_partials/search/localsearch.swig | 0 .../_partials/search/swiftype.swig | 0 .../_partials/search/tinysou.swig | 0 .../_partials/share/add-this.swig | 0 .../_partials/share/baidushare.swig | 0 .../_partials/share/duoshuo_share.swig | 0 .../layout => layout}/_scripts/boostrap.swig | 0 .../layout => layout}/_scripts/commons.swig | 0 .../layout => layout}/_scripts/noscript.swig | 0 .../_scripts/pages/post-details.swig | 0 .../_scripts/schemes/gemini.swig | 0 .../_scripts/schemes/mist.swig | 0 .../_scripts/schemes/muse.swig | 0 .../_scripts/schemes/pisces.swig | 0 .../layout => layout}/_scripts/vendors.swig | 0 .../analytics/analytics-with-widget.swig | 0 .../analytics/application-insights.swig | 0 .../analytics/baidu-analytics.swig | 0 .../analytics/busuanzi-counter.swig | 2 +- .../analytics/cnzz-analytics.swig | 0 .../_third-party/analytics/facebook-sdk.swig | 0 .../_third-party/analytics/firestore.swig | 8 +- .../analytics/google-analytics.swig | 0 layout/_third-party/analytics/growingio.swig | 7 + .../_third-party/analytics/index.swig | 1 + .../analytics/lean-analytics.swig | 151 +- .../analytics/tencent-analytics.swig | 0 .../_third-party/analytics/tencent-mta.swig | 0 .../_third-party/analytics/vkontakte-api.swig | 0 .../_third-party/bookmark.swig | 0 .../_third-party/comments/changyan.swig | 0 .../_third-party/comments/disqus.swig | 8 +- .../_third-party/comments/gitment.swig | 0 .../_third-party/comments/index.swig | 2 - .../_third-party/comments/livere.swig | 5 +- .../_third-party/comments/valine.swig | 3 +- .../_third-party/copy-code.swig | 0 .../_third-party/exturl.swig | 0 .../_third-party/github-banner.swig | 0 .../_third-party/math/index.swig | 0 .../_third-party/math/katex.swig | 0 .../_third-party/math/mathjax.swig | 0 .../_third-party/needsharebutton.swig | 0 .../layout => layout}/_third-party/pangu.swig | 0 .../_third-party/rating.swig | 0 .../_third-party/schedule.swig | 0 .../_third-party/scroll-cookie.swig | 0 .../search/algolia-search/assets.swig | 0 .../search/algolia-search/dom.swig | 0 .../_third-party/search/index.swig | 0 .../_third-party/search/localsearch.swig | 0 .../_third-party/search/tinysou.swig | 0 .../_third-party/seo/baidu-push.swig | 0 {themes/next/layout => layout}/archive.swig | 0 {themes/next/layout => layout}/category.swig | 0 {themes/next/layout => layout}/index.swig | 2 +- {themes/next/layout => layout}/page.swig | 4 + {themes/next/layout => layout}/post.swig | 10 - {themes/next/layout => layout}/schedule.swig | 11 - {themes/next/layout => layout}/tag.swig | 0 package-lock.json | 3114 - package.json | 58 +- scaffolds/draft.md | 4 - scaffolds/page.md | 4 - scaffolds/post.md | 5 - {themes/next/scripts => scripts}/helpers.js | 5 +- .../next/scripts => scripts}/merge-configs.js | 0 {themes/next/scripts => scripts}/merge.js | 0 .../next/scripts => scripts}/tags/button.js | 15 +- scripts/tags/center-quote.js | 16 + .../next/scripts => scripts}/tags/exturl.js | 38 +- .../scripts => scripts}/tags/full-image.js | 25 +- scripts/tags/group-pictures.js | 160 + .../scripts => scripts}/tags/include-raw.js | 18 +- scripts/tags/label.js | 19 + scripts/tags/note.js | 16 + scripts/tags/tabs.js | 59 + source/CNAME | 1 - source/README.md | 10 - source/_data/next.yml | 978 - source/_posts/git-account.md | 70 - source/_posts/git-bash.md | 107 - source/_posts/git-sub.md | 211 - source/_posts/gitignore.md | 44 - source/_posts/gitlab1.md | 142 - source/_posts/hexo-blog.md | 135 - source/_posts/hexo-iterative.md | 102 - source/_posts/hugo.md | 55 - source/_posts/linux-build.md | 314 - source/_posts/linux-mysql.md | 101 - source/_posts/memory-hs.md | 34 - source/_posts/memory-hz1.md | 20 - source/_posts/movie-fierce.md | 22 - source/_posts/network-http.md | 179 - source/_posts/network-okhttp1.md | 286 - source/_posts/rap1.md | 76 - source/_posts/rap2.md | 238 - source/_posts/realm.md | 193 - source/_posts/rxjava.md | 371 - source/_posts/security-rsa.md | 74 - source/_posts/ssm.md | 52 - source/_posts/syncing-a-fork.md | 64 - source/_posts/travel-zjj.md | 104 - source/_posts/treasure.md | 122 - source/about/index.md | 31 - source/categories/index.md | 6 - .../components/back-to-top-sidebar.styl | 8 +- .../css/_common/components/back-to-top.styl | 0 .../css/_common/components/buttons.styl | 0 .../css/_common/components/comments.styl | 0 .../css/_common/components/components.styl | 0 .../css/_common/components/footer/footer.styl | 0 .../components/header/github-banner.styl | 0 .../css/_common/components/header/header.styl | 0 .../_common/components/header/headerband.styl | 0 .../css/_common/components/header/menu.styl | 0 .../_common/components/header/site-meta.styl | 0 .../_common/components/header/site-nav.styl | 0 .../_common/components/highlight/diff.styl | 0 .../components/highlight/highlight.styl | 6 +- .../_common/components/highlight/theme.styl | 0 .../css/_common/components/pages/archive.styl | 0 .../_common/components/pages/breadcrumb.styl | 0 .../_common/components/pages/categories.styl | 0 .../css/_common/components/pages/pages.styl | 0 .../_common/components/pages/post-detail.styl | 0 .../_common/components/pages/schedule.styl | 19 +- .../css/_common/components/pagination.styl | 0 .../_common/components/post/post-button.styl | 0 .../components/post/post-collapse.styl | 0 .../components/post/post-copyright.styl | 0 .../css/_common/components/post/post-eof.styl | 0 .../_common/components/post/post-expand.styl | 0 .../_common/components/post/post-gallery.styl | 0 .../_common/components/post/post-meta.styl | 0 .../css/_common/components/post/post-nav.styl | 0 .../post/post-reading_progress.styl | 0 .../_common/components/post/post-reward.styl | 18 +- .../css/_common/components/post/post-rtl.styl | 0 .../_common/components/post/post-tags.styl | 0 .../_common/components/post/post-title.styl | 2 +- .../_common/components/post/post-type.styl | 0 .../_common/components/post/post-widgets.styl | 10 +- .../css/_common/components/post/post.styl | 11 +- .../sidebar/sidebar-author-links.styl | 0 .../components/sidebar/sidebar-author.styl | 4 +- .../components/sidebar/sidebar-blogroll.styl | 0 .../components/sidebar/sidebar-dimmer.styl | 0 .../components/sidebar/sidebar-feed-link.styl | 0 .../components/sidebar/sidebar-nav.styl | 0 .../components/sidebar/sidebar-toc.styl | 0 .../components/sidebar/sidebar-toggle.styl | 0 .../_common/components/sidebar/sidebar.styl | 0 .../components/sidebar/site-state.styl | 0 .../css/_common/components/tag-cloud.styl | 0 .../components/tags/blockquote-center.styl | 0 .../_common/components/tags/full-image.styl | 6 + .../components/tags/group-pictures.styl | 0 .../css/_common/components/tags/label.styl | 0 .../_common/components/tags/note-modern.styl | 0 .../css/_common/components/tags/note.styl | 0 .../css/_common/components/tags/tabs.styl | 0 .../css/_common/components/tags/tags.styl | 1 - .../third-party/algolia-search.styl | 0 .../third-party/busuanzi-counter.styl | 0 .../components/third-party/gitment.styl | 0 .../_common/components/third-party/han.styl | 0 .../components/third-party/localsearch.styl | 0 .../third-party/needsharebutton.styl | 0 .../components/third-party/related-posts.styl | 0 .../components/third-party/third-party.styl | 2 - .../css/_common/outline/outline.styl | 9 + .../css/_common/scaffolding/base.styl | 15 +- .../css/_common/scaffolding/helpers.styl | 0 .../css/_common/scaffolding/mobile.styl | 5 + .../css/_common/scaffolding/normalize.styl | 0 .../css/_common/scaffolding/scaffolding.styl | 0 .../css/_common/scaffolding/tables.styl | 2 +- .../source => source}/css/_custom/custom.styl | 0 .../source => source}/css/_mixins/Gemini.styl | 0 .../source => source}/css/_mixins/Mist.styl | 0 .../source => source}/css/_mixins/Muse.styl | 0 .../source => source}/css/_mixins/Pisces.styl | 0 .../source => source}/css/_mixins/base.styl | 11 + .../source => source}/css/_mixins/custom.styl | 0 .../css/_schemes/Gemini/index.styl | 35 +- .../css/_schemes/Mist/_base.styl | 0 .../css/_schemes/Mist/_header.styl | 0 .../css/_schemes/Mist/_logo.styl | 0 .../css/_schemes/Mist/_menu.styl | 0 .../css/_schemes/Mist/_posts-expanded.styl | 0 .../css/_schemes/Mist/_search.styl | 0 .../css/_schemes/Mist/index.styl | 0 .../css/_schemes/Mist/outline/outline.styl | 0 .../Mist/sidebar/sidebar-blogroll.styl | 0 .../css/_schemes/Muse/_layout.styl | 0 .../css/_schemes/Muse/_logo.styl | 0 .../css/_schemes/Muse/_menu.styl | 0 .../css/_schemes/Muse/_search.styl | 0 .../css/_schemes/Muse/index.styl | 0 .../Muse/sidebar/sidebar-blogroll.styl | 0 .../css/_schemes/Pisces/_brand.styl | 0 .../css/_schemes/Pisces/_layout.styl | 15 +- .../css/_schemes/Pisces/_menu.styl | 0 .../css/_schemes/Pisces/_posts.styl | 0 .../css/_schemes/Pisces/_sidebar.styl | 0 .../css/_schemes/Pisces/_sub-menu.styl | 0 .../css/_schemes/Pisces/index.styl | 0 .../css/_variables/Gemini.styl | 4 - .../css/_variables/Mist.styl | 0 .../css/_variables/Muse.styl | 0 .../css/_variables/Pisces.styl | 16 +- .../css/_variables/base.styl | 14 +- .../css/_variables/custom.styl | 0 {themes/next/source => source}/css/main.styl | 0 {themes/next/source => source}/fonts/.gitkeep | 0 .../source => source}/images/algolia_logo.svg | 0 .../images/apple-touch-icon-next.png | Bin .../next/source => source}/images/avatar.gif | Bin .../source => source}/images/cc-by-nc-nd.svg | 0 .../source => source}/images/cc-by-nc-sa.svg | 0 .../source => source}/images/cc-by-nc.svg | 0 .../source => source}/images/cc-by-nd.svg | 0 .../source => source}/images/cc-by-sa.svg | 0 .../next/source => source}/images/cc-by.svg | 0 .../next/source => source}/images/cc-zero.svg | 0 .../images/favicon-16x16-next.png | Bin .../images/favicon-32x32-next.png | Bin .../next/source => source}/images/loading.gif | Bin .../next/source => source}/images/logo.svg | 0 .../source => source}/images/placeholder.gif | Bin .../next/source => source}/images/quote-l.svg | 0 .../next/source => source}/images/quote-r.svg | 0 .../source => source}/images/searchicon.png | Bin source/js/src/affix.js | 168 + source/js/src/algolia-search.js | 114 + .../source => source}/js/src/bootstrap.js | 10 +- .../next/source => source}/js/src/exturl.js | 7 +- .../source => source}/js/src/js.cookie.js | 0 .../next/source => source}/js/src/motion.js | 208 +- .../source => source}/js/src/post-details.js | 60 +- source/js/src/schemes/pisces.js | 56 + source/js/src/scroll-cookie.js | 25 + source/js/src/scrollspy.js | 179 + .../next/source => source}/js/src/utils.js | 177 +- .../lib/algolia-instant-search}/LICENSE | 0 source/lib/algolia-instant-search/README.md | 37 + .../instantsearch.min.css | 1 + .../instantsearch.min.js | 15 + source/lib/bookmark/.eslintignore | 2 + source/lib/bookmark/.eslintrc.js | 14 + source/lib/bookmark/.gitignore | 1 + LICENSE => source/lib/bookmark/LICENSE | 2 +- source/lib/bookmark/README.md | 54 + source/lib/bookmark/bookmark.min.js | 1 + source/lib/bookmark/index.js | 150 + source/lib/bookmark/package.json | 31 + .../lib/fancybox/.bower.json | 0 .../lib/fancybox/.gitattributes | 0 .../source => source}/lib/fancybox/LICENSE | 0 .../source => source}/lib/fancybox/README.md | 0 .../lib/fancybox/source/jquery.fancybox.css | 0 .../lib/fancybox/source/jquery.fancybox.js | 0 .../fancybox/source/jquery.fancybox.min.css | 0 .../fancybox/source/jquery.fancybox.min.js | 0 .../fancybox/source/jquery.fancybox.pack.js | 0 .../lib/font-awesome/.bower.json | 0 .../lib/font-awesome/.gitignore | 0 .../lib/font-awesome/.npmignore | 0 .../lib/font-awesome/HELP-US-OUT.txt | 0 .../lib/font-awesome/bower.json | 0 .../lib/font-awesome/css/font-awesome.css | 0 .../lib/font-awesome/css/font-awesome.css.map | 0 .../lib/font-awesome/css/font-awesome.min.css | 0 .../fonts/fontawesome-webfont.eot | Bin .../fonts/fontawesome-webfont.woff | Bin .../fonts/fontawesome-webfont.woff2 | Bin .../source => source}/lib/jquery/index.js | 0 source/lib/pace/LICENSE | 21 + source/lib/pace/README.md | 36 + .../lib/pace/pace-theme-barber-shop.min.css | 1 + .../lib/pace/pace-theme-big-counter.min.css | 1 + source/lib/pace/pace-theme-bounce.min.css | 1 + .../lib/pace/pace-theme-center-atom.min.css | 1 + .../lib/pace/pace-theme-center-circle.min.css | 1 + .../lib/pace/pace-theme-center-radar.min.css | 1 + .../lib/pace/pace-theme-center-simple.min.css | 1 + .../pace/pace-theme-corner-indicator.min.css | 1 + source/lib/pace/pace-theme-fill-left.min.css | 1 + source/lib/pace/pace-theme-flash.min.css | 1 + .../lib/pace/pace-theme-loading-bar.min.css | 1 + source/lib/pace/pace-theme-mac-osx.min.css | 1 + source/lib/pace/pace-theme-minimal.min.css | 1 + source/lib/pace/pace.min.js | 2 + source/lib/pangu/LICENSE | 20 + source/lib/pangu/README.md | 36 + source/lib/pangu/dist/pangu.js | 460 + source/lib/pangu/dist/pangu.js.map | 1 + source/lib/pangu/dist/pangu.min.js | 10 + source/lib/pangu/dist/pangu.min.js.map | 1 + source/lib/pdf/LICENSE | 165 + source/lib/pdf/README.md | 70 + source/lib/pdf/build/pdf.js | 19426 +++++++ source/lib/pdf/build/pdf.js.map | 1 + source/lib/pdf/build/pdf.worker.js | 47120 ++++++++++++++++ source/lib/pdf/build/pdf.worker.js.map | 1 + source/lib/pdf/web/cmaps/78-EUC-H.bcmap | Bin 0 -> 2404 bytes source/lib/pdf/web/cmaps/78-EUC-V.bcmap | Bin 0 -> 173 bytes source/lib/pdf/web/cmaps/78-H.bcmap | Bin 0 -> 2379 bytes source/lib/pdf/web/cmaps/78-RKSJ-H.bcmap | Bin 0 -> 2398 bytes source/lib/pdf/web/cmaps/78-RKSJ-V.bcmap | Bin 0 -> 173 bytes source/lib/pdf/web/cmaps/78-V.bcmap | Bin 0 -> 169 bytes source/lib/pdf/web/cmaps/78ms-RKSJ-H.bcmap | Bin 0 -> 2651 bytes source/lib/pdf/web/cmaps/78ms-RKSJ-V.bcmap | Bin 0 -> 290 bytes source/lib/pdf/web/cmaps/83pv-RKSJ-H.bcmap | Bin 0 -> 905 bytes source/lib/pdf/web/cmaps/90ms-RKSJ-H.bcmap | Bin 0 -> 721 bytes source/lib/pdf/web/cmaps/90ms-RKSJ-V.bcmap | Bin 0 -> 290 bytes source/lib/pdf/web/cmaps/90msp-RKSJ-H.bcmap | Bin 0 -> 715 bytes source/lib/pdf/web/cmaps/90msp-RKSJ-V.bcmap | Bin 0 -> 291 bytes source/lib/pdf/web/cmaps/90pv-RKSJ-H.bcmap | Bin 0 -> 982 bytes source/lib/pdf/web/cmaps/90pv-RKSJ-V.bcmap | Bin 0 -> 260 bytes source/lib/pdf/web/cmaps/Add-H.bcmap | Bin 0 -> 2419 bytes source/lib/pdf/web/cmaps/Add-RKSJ-H.bcmap | Bin 0 -> 2413 bytes source/lib/pdf/web/cmaps/Add-RKSJ-V.bcmap | Bin 0 -> 287 bytes source/lib/pdf/web/cmaps/Add-V.bcmap | Bin 0 -> 282 bytes source/lib/pdf/web/cmaps/Adobe-CNS1-0.bcmap | Bin 0 -> 317 bytes source/lib/pdf/web/cmaps/Adobe-CNS1-1.bcmap | Bin 0 -> 371 bytes source/lib/pdf/web/cmaps/Adobe-CNS1-2.bcmap | Bin 0 -> 376 bytes source/lib/pdf/web/cmaps/Adobe-CNS1-3.bcmap | Bin 0 -> 401 bytes source/lib/pdf/web/cmaps/Adobe-CNS1-4.bcmap | Bin 0 -> 405 bytes source/lib/pdf/web/cmaps/Adobe-CNS1-5.bcmap | Bin 0 -> 406 bytes source/lib/pdf/web/cmaps/Adobe-CNS1-6.bcmap | Bin 0 -> 406 bytes .../lib/pdf/web/cmaps/Adobe-CNS1-UCS2.bcmap | Bin 0 -> 41193 bytes source/lib/pdf/web/cmaps/Adobe-GB1-0.bcmap | Bin 0 -> 217 bytes source/lib/pdf/web/cmaps/Adobe-GB1-1.bcmap | Bin 0 -> 250 bytes source/lib/pdf/web/cmaps/Adobe-GB1-2.bcmap | Bin 0 -> 465 bytes source/lib/pdf/web/cmaps/Adobe-GB1-3.bcmap | Bin 0 -> 470 bytes source/lib/pdf/web/cmaps/Adobe-GB1-4.bcmap | Bin 0 -> 601 bytes source/lib/pdf/web/cmaps/Adobe-GB1-5.bcmap | Bin 0 -> 625 bytes source/lib/pdf/web/cmaps/Adobe-GB1-UCS2.bcmap | Bin 0 -> 33974 bytes source/lib/pdf/web/cmaps/Adobe-Japan1-0.bcmap | Bin 0 -> 225 bytes source/lib/pdf/web/cmaps/Adobe-Japan1-1.bcmap | Bin 0 -> 226 bytes source/lib/pdf/web/cmaps/Adobe-Japan1-2.bcmap | Bin 0 -> 233 bytes source/lib/pdf/web/cmaps/Adobe-Japan1-3.bcmap | Bin 0 -> 242 bytes source/lib/pdf/web/cmaps/Adobe-Japan1-4.bcmap | Bin 0 -> 337 bytes source/lib/pdf/web/cmaps/Adobe-Japan1-5.bcmap | Bin 0 -> 430 bytes source/lib/pdf/web/cmaps/Adobe-Japan1-6.bcmap | Bin 0 -> 485 bytes .../lib/pdf/web/cmaps/Adobe-Japan1-UCS2.bcmap | Bin 0 -> 40951 bytes source/lib/pdf/web/cmaps/Adobe-Korea1-0.bcmap | Bin 0 -> 241 bytes source/lib/pdf/web/cmaps/Adobe-Korea1-1.bcmap | Bin 0 -> 386 bytes source/lib/pdf/web/cmaps/Adobe-Korea1-2.bcmap | Bin 0 -> 391 bytes .../lib/pdf/web/cmaps/Adobe-Korea1-UCS2.bcmap | Bin 0 -> 23293 bytes source/lib/pdf/web/cmaps/B5-H.bcmap | Bin 0 -> 1086 bytes source/lib/pdf/web/cmaps/B5-V.bcmap | Bin 0 -> 142 bytes source/lib/pdf/web/cmaps/B5pc-H.bcmap | Bin 0 -> 1099 bytes source/lib/pdf/web/cmaps/B5pc-V.bcmap | Bin 0 -> 144 bytes source/lib/pdf/web/cmaps/CNS-EUC-H.bcmap | Bin 0 -> 1780 bytes source/lib/pdf/web/cmaps/CNS-EUC-V.bcmap | Bin 0 -> 1920 bytes source/lib/pdf/web/cmaps/CNS1-H.bcmap | Bin 0 -> 706 bytes source/lib/pdf/web/cmaps/CNS1-V.bcmap | Bin 0 -> 143 bytes source/lib/pdf/web/cmaps/CNS2-H.bcmap | Bin 0 -> 504 bytes source/lib/pdf/web/cmaps/CNS2-V.bcmap | 3 + source/lib/pdf/web/cmaps/ETHK-B5-H.bcmap | Bin 0 -> 4426 bytes source/lib/pdf/web/cmaps/ETHK-B5-V.bcmap | Bin 0 -> 158 bytes source/lib/pdf/web/cmaps/ETen-B5-H.bcmap | Bin 0 -> 1125 bytes source/lib/pdf/web/cmaps/ETen-B5-V.bcmap | Bin 0 -> 158 bytes source/lib/pdf/web/cmaps/ETenms-B5-H.bcmap | 3 + source/lib/pdf/web/cmaps/ETenms-B5-V.bcmap | Bin 0 -> 172 bytes source/lib/pdf/web/cmaps/EUC-H.bcmap | Bin 0 -> 578 bytes source/lib/pdf/web/cmaps/EUC-V.bcmap | Bin 0 -> 170 bytes source/lib/pdf/web/cmaps/Ext-H.bcmap | Bin 0 -> 2536 bytes source/lib/pdf/web/cmaps/Ext-RKSJ-H.bcmap | Bin 0 -> 2542 bytes source/lib/pdf/web/cmaps/Ext-RKSJ-V.bcmap | Bin 0 -> 218 bytes source/lib/pdf/web/cmaps/Ext-V.bcmap | Bin 0 -> 215 bytes source/lib/pdf/web/cmaps/GB-EUC-H.bcmap | Bin 0 -> 549 bytes source/lib/pdf/web/cmaps/GB-EUC-V.bcmap | Bin 0 -> 179 bytes source/lib/pdf/web/cmaps/GB-H.bcmap | 4 + source/lib/pdf/web/cmaps/GB-V.bcmap | Bin 0 -> 175 bytes source/lib/pdf/web/cmaps/GBK-EUC-H.bcmap | Bin 0 -> 14692 bytes source/lib/pdf/web/cmaps/GBK-EUC-V.bcmap | Bin 0 -> 180 bytes source/lib/pdf/web/cmaps/GBK2K-H.bcmap | Bin 0 -> 19662 bytes source/lib/pdf/web/cmaps/GBK2K-V.bcmap | Bin 0 -> 219 bytes source/lib/pdf/web/cmaps/GBKp-EUC-H.bcmap | Bin 0 -> 14686 bytes source/lib/pdf/web/cmaps/GBKp-EUC-V.bcmap | Bin 0 -> 181 bytes source/lib/pdf/web/cmaps/GBT-EUC-H.bcmap | Bin 0 -> 7290 bytes source/lib/pdf/web/cmaps/GBT-EUC-V.bcmap | Bin 0 -> 180 bytes source/lib/pdf/web/cmaps/GBT-H.bcmap | Bin 0 -> 7269 bytes source/lib/pdf/web/cmaps/GBT-V.bcmap | Bin 0 -> 176 bytes source/lib/pdf/web/cmaps/GBTpc-EUC-H.bcmap | Bin 0 -> 7298 bytes source/lib/pdf/web/cmaps/GBTpc-EUC-V.bcmap | Bin 0 -> 182 bytes source/lib/pdf/web/cmaps/GBpc-EUC-H.bcmap | Bin 0 -> 557 bytes source/lib/pdf/web/cmaps/GBpc-EUC-V.bcmap | Bin 0 -> 181 bytes source/lib/pdf/web/cmaps/H.bcmap | Bin 0 -> 553 bytes source/lib/pdf/web/cmaps/HKdla-B5-H.bcmap | Bin 0 -> 2654 bytes source/lib/pdf/web/cmaps/HKdla-B5-V.bcmap | Bin 0 -> 148 bytes source/lib/pdf/web/cmaps/HKdlb-B5-H.bcmap | Bin 0 -> 2414 bytes source/lib/pdf/web/cmaps/HKdlb-B5-V.bcmap | Bin 0 -> 148 bytes source/lib/pdf/web/cmaps/HKgccs-B5-H.bcmap | Bin 0 -> 2292 bytes source/lib/pdf/web/cmaps/HKgccs-B5-V.bcmap | Bin 0 -> 149 bytes source/lib/pdf/web/cmaps/HKm314-B5-H.bcmap | Bin 0 -> 1772 bytes source/lib/pdf/web/cmaps/HKm314-B5-V.bcmap | Bin 0 -> 149 bytes source/lib/pdf/web/cmaps/HKm471-B5-H.bcmap | Bin 0 -> 2171 bytes source/lib/pdf/web/cmaps/HKm471-B5-V.bcmap | Bin 0 -> 149 bytes source/lib/pdf/web/cmaps/HKscs-B5-H.bcmap | Bin 0 -> 4437 bytes source/lib/pdf/web/cmaps/HKscs-B5-V.bcmap | Bin 0 -> 159 bytes source/lib/pdf/web/cmaps/Hankaku.bcmap | Bin 0 -> 132 bytes source/lib/pdf/web/cmaps/Hiragana.bcmap | Bin 0 -> 124 bytes source/lib/pdf/web/cmaps/KSC-EUC-H.bcmap | Bin 0 -> 1848 bytes source/lib/pdf/web/cmaps/KSC-EUC-V.bcmap | Bin 0 -> 164 bytes source/lib/pdf/web/cmaps/KSC-H.bcmap | Bin 0 -> 1831 bytes source/lib/pdf/web/cmaps/KSC-Johab-H.bcmap | Bin 0 -> 16791 bytes source/lib/pdf/web/cmaps/KSC-Johab-V.bcmap | Bin 0 -> 166 bytes source/lib/pdf/web/cmaps/KSC-V.bcmap | Bin 0 -> 160 bytes source/lib/pdf/web/cmaps/KSCms-UHC-H.bcmap | Bin 0 -> 2787 bytes source/lib/pdf/web/cmaps/KSCms-UHC-HW-H.bcmap | Bin 0 -> 2789 bytes source/lib/pdf/web/cmaps/KSCms-UHC-HW-V.bcmap | Bin 0 -> 169 bytes source/lib/pdf/web/cmaps/KSCms-UHC-V.bcmap | Bin 0 -> 166 bytes source/lib/pdf/web/cmaps/KSCpc-EUC-H.bcmap | Bin 0 -> 2024 bytes source/lib/pdf/web/cmaps/KSCpc-EUC-V.bcmap | Bin 0 -> 166 bytes source/lib/pdf/web/cmaps/Katakana.bcmap | Bin 0 -> 100 bytes source/lib/pdf/web/cmaps/LICENSE | 36 + source/lib/pdf/web/cmaps/NWP-H.bcmap | Bin 0 -> 2765 bytes source/lib/pdf/web/cmaps/NWP-V.bcmap | Bin 0 -> 252 bytes source/lib/pdf/web/cmaps/RKSJ-H.bcmap | Bin 0 -> 534 bytes source/lib/pdf/web/cmaps/RKSJ-V.bcmap | Bin 0 -> 170 bytes source/lib/pdf/web/cmaps/Roman.bcmap | Bin 0 -> 96 bytes source/lib/pdf/web/cmaps/UniCNS-UCS2-H.bcmap | Bin 0 -> 48280 bytes source/lib/pdf/web/cmaps/UniCNS-UCS2-V.bcmap | Bin 0 -> 156 bytes source/lib/pdf/web/cmaps/UniCNS-UTF16-H.bcmap | Bin 0 -> 50419 bytes source/lib/pdf/web/cmaps/UniCNS-UTF16-V.bcmap | Bin 0 -> 156 bytes source/lib/pdf/web/cmaps/UniCNS-UTF32-H.bcmap | Bin 0 -> 52679 bytes source/lib/pdf/web/cmaps/UniCNS-UTF32-V.bcmap | Bin 0 -> 160 bytes source/lib/pdf/web/cmaps/UniCNS-UTF8-H.bcmap | Bin 0 -> 53629 bytes source/lib/pdf/web/cmaps/UniCNS-UTF8-V.bcmap | Bin 0 -> 157 bytes source/lib/pdf/web/cmaps/UniGB-UCS2-H.bcmap | Bin 0 -> 43366 bytes source/lib/pdf/web/cmaps/UniGB-UCS2-V.bcmap | Bin 0 -> 193 bytes source/lib/pdf/web/cmaps/UniGB-UTF16-H.bcmap | Bin 0 -> 44086 bytes source/lib/pdf/web/cmaps/UniGB-UTF16-V.bcmap | Bin 0 -> 178 bytes source/lib/pdf/web/cmaps/UniGB-UTF32-H.bcmap | Bin 0 -> 45738 bytes source/lib/pdf/web/cmaps/UniGB-UTF32-V.bcmap | Bin 0 -> 182 bytes source/lib/pdf/web/cmaps/UniGB-UTF8-H.bcmap | Bin 0 -> 46837 bytes source/lib/pdf/web/cmaps/UniGB-UTF8-V.bcmap | Bin 0 -> 181 bytes source/lib/pdf/web/cmaps/UniJIS-UCS2-H.bcmap | Bin 0 -> 25439 bytes .../lib/pdf/web/cmaps/UniJIS-UCS2-HW-H.bcmap | Bin 0 -> 119 bytes .../lib/pdf/web/cmaps/UniJIS-UCS2-HW-V.bcmap | Bin 0 -> 680 bytes source/lib/pdf/web/cmaps/UniJIS-UCS2-V.bcmap | Bin 0 -> 664 bytes source/lib/pdf/web/cmaps/UniJIS-UTF16-H.bcmap | Bin 0 -> 39443 bytes source/lib/pdf/web/cmaps/UniJIS-UTF16-V.bcmap | Bin 0 -> 643 bytes source/lib/pdf/web/cmaps/UniJIS-UTF32-H.bcmap | Bin 0 -> 40539 bytes source/lib/pdf/web/cmaps/UniJIS-UTF32-V.bcmap | Bin 0 -> 677 bytes source/lib/pdf/web/cmaps/UniJIS-UTF8-H.bcmap | Bin 0 -> 41695 bytes source/lib/pdf/web/cmaps/UniJIS-UTF8-V.bcmap | Bin 0 -> 678 bytes .../pdf/web/cmaps/UniJIS2004-UTF16-H.bcmap | Bin 0 -> 39534 bytes .../pdf/web/cmaps/UniJIS2004-UTF16-V.bcmap | Bin 0 -> 647 bytes .../pdf/web/cmaps/UniJIS2004-UTF32-H.bcmap | Bin 0 -> 40630 bytes .../pdf/web/cmaps/UniJIS2004-UTF32-V.bcmap | Bin 0 -> 681 bytes .../lib/pdf/web/cmaps/UniJIS2004-UTF8-H.bcmap | Bin 0 -> 41779 bytes .../lib/pdf/web/cmaps/UniJIS2004-UTF8-V.bcmap | Bin 0 -> 682 bytes .../pdf/web/cmaps/UniJISPro-UCS2-HW-V.bcmap | Bin 0 -> 705 bytes .../lib/pdf/web/cmaps/UniJISPro-UCS2-V.bcmap | Bin 0 -> 689 bytes .../lib/pdf/web/cmaps/UniJISPro-UTF8-V.bcmap | Bin 0 -> 726 bytes .../pdf/web/cmaps/UniJISX0213-UTF32-H.bcmap | Bin 0 -> 40517 bytes .../pdf/web/cmaps/UniJISX0213-UTF32-V.bcmap | Bin 0 -> 684 bytes .../web/cmaps/UniJISX02132004-UTF32-H.bcmap | Bin 0 -> 40608 bytes .../web/cmaps/UniJISX02132004-UTF32-V.bcmap | Bin 0 -> 688 bytes source/lib/pdf/web/cmaps/UniKS-UCS2-H.bcmap | Bin 0 -> 25783 bytes source/lib/pdf/web/cmaps/UniKS-UCS2-V.bcmap | Bin 0 -> 178 bytes source/lib/pdf/web/cmaps/UniKS-UTF16-H.bcmap | Bin 0 -> 26327 bytes source/lib/pdf/web/cmaps/UniKS-UTF16-V.bcmap | Bin 0 -> 164 bytes source/lib/pdf/web/cmaps/UniKS-UTF32-H.bcmap | Bin 0 -> 26451 bytes source/lib/pdf/web/cmaps/UniKS-UTF32-V.bcmap | Bin 0 -> 168 bytes source/lib/pdf/web/cmaps/UniKS-UTF8-H.bcmap | Bin 0 -> 27790 bytes source/lib/pdf/web/cmaps/UniKS-UTF8-V.bcmap | Bin 0 -> 169 bytes source/lib/pdf/web/cmaps/V.bcmap | Bin 0 -> 166 bytes source/lib/pdf/web/cmaps/WP-Symbol.bcmap | Bin 0 -> 179 bytes .../web/compressed.tracemonkey-pldi-09.pdf | Bin 0 -> 1016315 bytes source/lib/pdf/web/debugger.js | 619 + .../lib/pdf/web/images/annotation-check.svg | 11 + .../lib/pdf/web/images/annotation-comment.svg | 16 + source/lib/pdf/web/images/annotation-help.svg | 26 + .../lib/pdf/web/images/annotation-insert.svg | 10 + source/lib/pdf/web/images/annotation-key.svg | 11 + .../web/images/annotation-newparagraph.svg | 11 + .../lib/pdf/web/images/annotation-noicon.svg | 7 + source/lib/pdf/web/images/annotation-note.svg | 42 + .../pdf/web/images/annotation-paragraph.svg | 16 + .../pdf/web/images/findbarButton-next-rtl.png | Bin 0 -> 199 bytes .../web/images/findbarButton-next-rtl@2x.png | Bin 0 -> 304 bytes .../lib/pdf/web/images/findbarButton-next.png | Bin 0 -> 193 bytes .../pdf/web/images/findbarButton-next@2x.png | Bin 0 -> 296 bytes .../web/images/findbarButton-previous-rtl.png | Bin 0 -> 193 bytes .../images/findbarButton-previous-rtl@2x.png | Bin 0 -> 296 bytes .../pdf/web/images/findbarButton-previous.png | Bin 0 -> 199 bytes .../web/images/findbarButton-previous@2x.png | Bin 0 -> 304 bytes source/lib/pdf/web/images/grab.cur | Bin 0 -> 326 bytes source/lib/pdf/web/images/grabbing.cur | Bin 0 -> 326 bytes source/lib/pdf/web/images/loading-icon.gif | Bin 0 -> 2545 bytes source/lib/pdf/web/images/loading-small.png | Bin 0 -> 7402 bytes .../lib/pdf/web/images/loading-small@2x.png | Bin 0 -> 16131 bytes ...ondaryToolbarButton-documentProperties.png | Bin 0 -> 403 bytes ...aryToolbarButton-documentProperties@2x.png | Bin 0 -> 933 bytes .../secondaryToolbarButton-firstPage.png | Bin 0 -> 179 bytes .../secondaryToolbarButton-firstPage@2x.png | Bin 0 -> 266 bytes .../secondaryToolbarButton-handTool.png | Bin 0 -> 301 bytes .../secondaryToolbarButton-handTool@2x.png | Bin 0 -> 583 bytes .../secondaryToolbarButton-lastPage.png | Bin 0 -> 175 bytes .../secondaryToolbarButton-lastPage@2x.png | Bin 0 -> 276 bytes .../secondaryToolbarButton-rotateCcw.png | Bin 0 -> 360 bytes .../secondaryToolbarButton-rotateCcw@2x.png | Bin 0 -> 731 bytes .../secondaryToolbarButton-rotateCw.png | Bin 0 -> 359 bytes .../secondaryToolbarButton-rotateCw@2x.png | Bin 0 -> 714 bytes ...econdaryToolbarButton-scrollHorizontal.png | Bin 0 -> 218 bytes ...ndaryToolbarButton-scrollHorizontal@2x.png | Bin 0 -> 332 bytes .../secondaryToolbarButton-scrollVertical.png | Bin 0 -> 228 bytes ...condaryToolbarButton-scrollVertical@2x.png | Bin 0 -> 349 bytes .../secondaryToolbarButton-scrollWrapped.png | Bin 0 -> 297 bytes ...econdaryToolbarButton-scrollWrapped@2x.png | Bin 0 -> 490 bytes .../secondaryToolbarButton-selectTool.png | Bin 0 -> 461 bytes .../secondaryToolbarButton-selectTool@2x.png | Bin 0 -> 1067 bytes .../secondaryToolbarButton-spreadEven.png | Bin 0 -> 347 bytes .../secondaryToolbarButton-spreadEven@2x.png | Bin 0 -> 694 bytes .../secondaryToolbarButton-spreadNone.png | Bin 0 -> 179 bytes .../secondaryToolbarButton-spreadNone@2x.png | Bin 0 -> 261 bytes .../secondaryToolbarButton-spreadOdd.png | Bin 0 -> 344 bytes .../secondaryToolbarButton-spreadOdd@2x.png | Bin 0 -> 621 bytes source/lib/pdf/web/images/shadow.png | Bin 0 -> 290 bytes source/lib/pdf/web/images/texture.png | Bin 0 -> 2417 bytes .../pdf/web/images/toolbarButton-bookmark.png | Bin 0 -> 174 bytes .../web/images/toolbarButton-bookmark@2x.png | Bin 0 -> 260 bytes .../pdf/web/images/toolbarButton-download.png | Bin 0 -> 259 bytes .../web/images/toolbarButton-download@2x.png | Bin 0 -> 425 bytes .../web/images/toolbarButton-menuArrows.png | Bin 0 -> 107 bytes .../images/toolbarButton-menuArrows@2x.png | Bin 0 -> 152 bytes .../pdf/web/images/toolbarButton-openFile.png | Bin 0 -> 295 bytes .../web/images/toolbarButton-openFile@2x.png | Bin 0 -> 550 bytes .../web/images/toolbarButton-pageDown-rtl.png | Bin 0 -> 242 bytes .../images/toolbarButton-pageDown-rtl@2x.png | Bin 0 -> 398 bytes .../pdf/web/images/toolbarButton-pageDown.png | Bin 0 -> 238 bytes .../web/images/toolbarButton-pageDown@2x.png | Bin 0 -> 396 bytes .../web/images/toolbarButton-pageUp-rtl.png | Bin 0 -> 245 bytes .../images/toolbarButton-pageUp-rtl@2x.png | Bin 0 -> 405 bytes .../pdf/web/images/toolbarButton-pageUp.png | Bin 0 -> 246 bytes .../web/images/toolbarButton-pageUp@2x.png | Bin 0 -> 403 bytes .../images/toolbarButton-presentationMode.png | Bin 0 -> 321 bytes .../toolbarButton-presentationMode@2x.png | Bin 0 -> 586 bytes .../pdf/web/images/toolbarButton-print.png | Bin 0 -> 257 bytes .../pdf/web/images/toolbarButton-print@2x.png | Bin 0 -> 464 bytes .../pdf/web/images/toolbarButton-search.png | Bin 0 -> 309 bytes .../web/images/toolbarButton-search@2x.png | Bin 0 -> 653 bytes ...olbarButton-secondaryToolbarToggle-rtl.png | Bin 0 -> 246 bytes ...arButton-secondaryToolbarToggle-rtl@2x.png | Bin 0 -> 456 bytes .../toolbarButton-secondaryToolbarToggle.png | Bin 0 -> 243 bytes ...oolbarButton-secondaryToolbarToggle@2x.png | Bin 0 -> 458 bytes .../toolbarButton-sidebarToggle-rtl.png | Bin 0 -> 225 bytes .../toolbarButton-sidebarToggle-rtl@2x.png | Bin 0 -> 344 bytes .../images/toolbarButton-sidebarToggle.png | Bin 0 -> 225 bytes .../images/toolbarButton-sidebarToggle@2x.png | Bin 0 -> 331 bytes .../images/toolbarButton-viewAttachments.png | Bin 0 -> 384 bytes .../toolbarButton-viewAttachments@2x.png | Bin 0 -> 859 bytes .../images/toolbarButton-viewOutline-rtl.png | Bin 0 -> 177 bytes .../toolbarButton-viewOutline-rtl@2x.png | Bin 0 -> 394 bytes .../web/images/toolbarButton-viewOutline.png | Bin 0 -> 178 bytes .../images/toolbarButton-viewOutline@2x.png | Bin 0 -> 331 bytes .../images/toolbarButton-viewThumbnail.png | Bin 0 -> 185 bytes .../images/toolbarButton-viewThumbnail@2x.png | Bin 0 -> 219 bytes .../pdf/web/images/toolbarButton-zoomIn.png | Bin 0 -> 136 bytes .../web/images/toolbarButton-zoomIn@2x.png | Bin 0 -> 160 bytes .../pdf/web/images/toolbarButton-zoomOut.png | Bin 0 -> 88 bytes .../web/images/toolbarButton-zoomOut@2x.png | Bin 0 -> 109 bytes .../pdf/web/images/treeitem-collapsed-rtl.png | Bin 0 -> 143 bytes .../web/images/treeitem-collapsed-rtl@2x.png | Bin 0 -> 167 bytes .../lib/pdf/web/images/treeitem-collapsed.png | Bin 0 -> 128 bytes .../pdf/web/images/treeitem-collapsed@2x.png | Bin 0 -> 149 bytes .../lib/pdf/web/images/treeitem-expanded.png | Bin 0 -> 125 bytes .../pdf/web/images/treeitem-expanded@2x.png | Bin 0 -> 172 bytes .../lib/pdf/web/locale/ach/viewer.properties | 207 + .../lib/pdf/web/locale/af/viewer.properties | 184 + .../lib/pdf/web/locale/ak/viewer.properties | 130 + .../lib/pdf/web/locale/an/viewer.properties | 184 + .../lib/pdf/web/locale/ar/viewer.properties | 242 + .../lib/pdf/web/locale/as/viewer.properties | 167 + .../lib/pdf/web/locale/ast/viewer.properties | 197 + .../lib/pdf/web/locale/az/viewer.properties | 242 + .../lib/pdf/web/locale/be/viewer.properties | 242 + .../lib/pdf/web/locale/bg/viewer.properties | 242 + .../pdf/web/locale/bn-BD/viewer.properties | 215 + .../pdf/web/locale/bn-IN/viewer.properties | 177 + .../lib/pdf/web/locale/br/viewer.properties | 242 + .../lib/pdf/web/locale/brx/viewer.properties | 167 + .../lib/pdf/web/locale/bs/viewer.properties | 201 + .../lib/pdf/web/locale/ca/viewer.properties | 207 + .../lib/pdf/web/locale/cak/viewer.properties | 242 + .../lib/pdf/web/locale/crh/viewer.properties | 217 + .../lib/pdf/web/locale/cs/viewer.properties | 242 + .../lib/pdf/web/locale/csb/viewer.properties | 134 + .../lib/pdf/web/locale/cy/viewer.properties | 242 + .../lib/pdf/web/locale/da/viewer.properties | 242 + .../lib/pdf/web/locale/de/viewer.properties | 229 + .../lib/pdf/web/locale/el/viewer.properties | 242 + .../pdf/web/locale/en-CA/viewer.properties | 242 + .../pdf/web/locale/en-GB/viewer.properties | 184 + .../pdf/web/locale/en-US/viewer.properties | 242 + .../pdf/web/locale/en-ZA/viewer.properties | 170 + .../lib/pdf/web/locale/eo/viewer.properties | 242 + .../pdf/web/locale/es-AR/viewer.properties | 242 + .../pdf/web/locale/es-CL/viewer.properties | 242 + .../pdf/web/locale/es-ES/viewer.properties | 242 + .../pdf/web/locale/es-MX/viewer.properties | 242 + .../lib/pdf/web/locale/et/viewer.properties | 242 + .../lib/pdf/web/locale/eu/viewer.properties | 242 + .../lib/pdf/web/locale/fa/viewer.properties | 201 + .../lib/pdf/web/locale/ff/viewer.properties | 201 + .../lib/pdf/web/locale/fi/viewer.properties | 242 + .../lib/pdf/web/locale/fr/viewer.properties | 242 + .../pdf/web/locale/fy-NL/viewer.properties | 242 + .../pdf/web/locale/ga-IE/viewer.properties | 184 + .../lib/pdf/web/locale/gd/viewer.properties | 215 + .../lib/pdf/web/locale/gl/viewer.properties | 168 + .../lib/pdf/web/locale/gn/viewer.properties | 242 + .../pdf/web/locale/gu-IN/viewer.properties | 242 + .../lib/pdf/web/locale/he/viewer.properties | 240 + .../pdf/web/locale/hi-IN/viewer.properties | 214 + .../lib/pdf/web/locale/hr/viewer.properties | 184 + .../lib/pdf/web/locale/hsb/viewer.properties | 242 + .../lib/pdf/web/locale/hto/viewer.properties | 127 + .../lib/pdf/web/locale/hu/viewer.properties | 242 + .../pdf/web/locale/hy-AM/viewer.properties | 201 + .../lib/pdf/web/locale/ia/viewer.properties | 242 + .../lib/pdf/web/locale/id/viewer.properties | 242 + .../lib/pdf/web/locale/is/viewer.properties | 214 + .../lib/pdf/web/locale/it/viewer.properties | 157 + .../lib/pdf/web/locale/ja/viewer.properties | 220 + .../lib/pdf/web/locale/ka/viewer.properties | 242 + .../lib/pdf/web/locale/kab/viewer.properties | 242 + .../lib/pdf/web/locale/kk/viewer.properties | 242 + .../lib/pdf/web/locale/km/viewer.properties | 184 + .../lib/pdf/web/locale/kn/viewer.properties | 193 + .../lib/pdf/web/locale/ko/viewer.properties | 242 + .../lib/pdf/web/locale/kok/viewer.properties | 167 + .../lib/pdf/web/locale/ks/viewer.properties | 168 + .../lib/pdf/web/locale/ku/viewer.properties | 146 + .../lib/pdf/web/locale/lg/viewer.properties | 112 + .../lib/pdf/web/locale/lij/viewer.properties | 242 + .../lib/pdf/web/locale/lo/viewer.properties | 152 + source/lib/pdf/web/locale/locale.properties | 369 + .../lib/pdf/web/locale/lt/viewer.properties | 242 + .../lib/pdf/web/locale/ltg/viewer.properties | 220 + .../lib/pdf/web/locale/lv/viewer.properties | 242 + .../lib/pdf/web/locale/mai/viewer.properties | 168 + .../lib/pdf/web/locale/meh/viewer.properties | 72 + .../lib/pdf/web/locale/mk/viewer.properties | 145 + .../lib/pdf/web/locale/ml/viewer.properties | 184 + .../lib/pdf/web/locale/mn/viewer.properties | 82 + .../lib/pdf/web/locale/mr/viewer.properties | 206 + .../lib/pdf/web/locale/ms/viewer.properties | 242 + .../lib/pdf/web/locale/my/viewer.properties | 180 + .../pdf/web/locale/nb-NO/viewer.properties | 242 + .../pdf/web/locale/ne-NP/viewer.properties | 184 + .../lib/pdf/web/locale/nl/viewer.properties | 242 + .../pdf/web/locale/nn-NO/viewer.properties | 242 + .../lib/pdf/web/locale/nso/viewer.properties | 130 + .../lib/pdf/web/locale/oc/viewer.properties | 210 + .../lib/pdf/web/locale/or/viewer.properties | 167 + .../pdf/web/locale/pa-IN/viewer.properties | 209 + .../lib/pdf/web/locale/pl/viewer.properties | 179 + .../pdf/web/locale/pt-BR/viewer.properties | 231 + .../pdf/web/locale/pt-PT/viewer.properties | 242 + .../lib/pdf/web/locale/rm/viewer.properties | 242 + .../lib/pdf/web/locale/ro/viewer.properties | 242 + .../lib/pdf/web/locale/ru/viewer.properties | 242 + .../lib/pdf/web/locale/rw/viewer.properties | 81 + .../lib/pdf/web/locale/sah/viewer.properties | 166 + .../lib/pdf/web/locale/sat/viewer.properties | 134 + .../lib/pdf/web/locale/si/viewer.properties | 171 + .../lib/pdf/web/locale/sk/viewer.properties | 242 + .../lib/pdf/web/locale/sl/viewer.properties | 242 + .../lib/pdf/web/locale/son/viewer.properties | 180 + .../lib/pdf/web/locale/sq/viewer.properties | 233 + .../lib/pdf/web/locale/sr/viewer.properties | 220 + .../pdf/web/locale/sv-SE/viewer.properties | 242 + .../lib/pdf/web/locale/sw/viewer.properties | 128 + .../pdf/web/locale/ta-LK/viewer.properties | 77 + .../lib/pdf/web/locale/ta/viewer.properties | 201 + .../lib/pdf/web/locale/te/viewer.properties | 213 + .../lib/pdf/web/locale/th/viewer.properties | 228 + .../lib/pdf/web/locale/tl/viewer.properties | 177 + .../lib/pdf/web/locale/tn/viewer.properties | 83 + .../lib/pdf/web/locale/tr/viewer.properties | 242 + .../lib/pdf/web/locale/tsz/viewer.properties | 75 + .../lib/pdf/web/locale/uk/viewer.properties | 242 + .../lib/pdf/web/locale/ur/viewer.properties | 207 + .../lib/pdf/web/locale/uz/viewer.properties | 169 + .../lib/pdf/web/locale/vi/viewer.properties | 205 + .../lib/pdf/web/locale/wo/viewer.properties | 124 + .../lib/pdf/web/locale/xh/viewer.properties | 184 + .../lib/pdf/web/locale/zam/viewer.properties | 90 + .../pdf/web/locale/zh-CN/viewer.properties | 242 + .../pdf/web/locale/zh-TW/viewer.properties | 242 + .../lib/pdf/web/locale/zu/viewer.properties | 131 + source/lib/pdf/web/viewer.css | 2390 + source/lib/pdf/web/viewer.html | 394 + source/lib/pdf/web/viewer.js | 13310 +++++ source/lib/pdf/web/viewer.js.map | 1 + .../lib/reading_progress/.editorconfig | 0 .../lib/reading_progress/.gitignore | 0 source/lib/reading_progress/LICENSE | 21 + .../lib/reading_progress/README.md | 0 .../lib/reading_progress/package.json | 0 .../lib/reading_progress/reading_progress.js | 0 .../reading_progress/reading_progress.min.js | 0 .../lib/ua-parser-js/dist/ua-parser.min.js | 0 .../lib/ua-parser-js/dist/ua-parser.pack.js | 0 .../lib/velocity/velocity.js | 0 .../lib/velocity/velocity.min.js | 0 .../lib/velocity/velocity.ui.js | 0 .../lib/velocity/velocity.ui.min.js | 0 source/tags/index.md | 6 - {themes/next/test => test}/.jshintrc | 0 {themes/next/test => test}/helpers.js | 0 {themes/next/test => test}/intern.js | 0 themes/next/.gitignore | 22 - themes/next/.stickler.yml | 6 - themes/next/.travis.yml | 18 - themes/next/README.md | 138 - themes/next/_config.yml | 973 - .../next/layout/_partials/share/jiathis.swig | 25 - .../_third-party/comments/hypercomments.swig | 27 - .../layout/_third-party/comments/youyan.swig | 14 - themes/next/package.json | 36 - themes/next/scripts/tags/center-quote.js | 19 - themes/next/scripts/tags/group-pictures.js | 843 - themes/next/scripts/tags/label.js | 25 - themes/next/scripts/tags/lazy-image.js | 33 - themes/next/scripts/tags/note.js | 22 - themes/next/scripts/tags/tabs.js | 78 - .../css/_common/components/tags/exturl.styl | 18 - .../_common/components/tags/full-image.styl | 12 - .../components/third-party/baidushare.styl | 12 - .../components/third-party/jiathis.styl | 10 - themes/next/source/js/src/affix.js | 162 - themes/next/source/js/src/algolia-search.js | 115 - themes/next/source/js/src/schemes/pisces.js | 57 - themes/next/source/js/src/scroll-cookie.js | 23 - themes/next/source/js/src/scrollspy.js | 182 - 829 files changed, 112892 insertions(+), 10972 deletions(-) create mode 100644 .all-contributorsrc rename themes/next/.bowerrc => .bowerrc (100%) rename themes/next/.editorconfig => .editorconfig (100%) rename themes/next/.eslintrc.json => .eslintrc.json (100%) rename themes/next/.gitattributes => .gitattributes (100%) rename {themes/next/.github => .github}/CODE_OF_CONDUCT.md (100%) rename {themes/next/.github => .github}/CONTRIBUTING.md (81%) rename {themes/next/.github => .github}/ISSUE_TEMPLATE.md (100%) rename {themes/next/.github => .github}/PULL_REQUEST_TEMPLATE.md (100%) rename {themes/next/.github => .github}/browserstack_logo.png (100%) rename {themes/next/.github => .github}/stale.yml (100%) rename themes/next/.stylintrc => .stylintrc (100%) rename themes/next/LICENSE.md => LICENSE.md (100%) rename themes/next/bower.json => bower.json (96%) rename themes/next/crowdin.yml => crowdin.yml (100%) rename {themes/next/docs => docs}/AGPL3.md (100%) rename {themes/next/docs => docs}/ALGOLIA-SEARCH.md (100%) rename {themes/next/docs => docs}/AUTHORS.md (100%) rename {themes/next/docs => docs}/DATA-FILES.md (100%) rename {themes/next/docs => docs}/INSTALLATION.md (100%) rename {themes/next/docs => docs}/LEANCLOUD-COUNTER-SECURITY.md (100%) rename {themes/next/docs => docs}/LICENSE (100%) rename {themes/next/docs => docs}/MATH.md (96%) rename {themes/next/docs => docs}/UPDATE-FROM-5.1.X.md (100%) rename {themes/next/docs => docs}/ru/DATA-FILES.md (100%) rename {themes/next/docs => docs}/ru/INSTALLATION.md (100%) rename {themes/next/docs => docs}/ru/README.md (70%) rename {themes/next/docs => docs}/ru/UPDATE-FROM-5.1.X.md (100%) rename {themes/next/docs => docs}/zh-CN/ALGOLIA-SEARCH.md (100%) rename {themes/next/docs => docs}/zh-CN/CODE_OF_CONDUCT.md (100%) rename {themes/next/docs => docs}/zh-CN/CONTRIBUTING.md (79%) rename {themes/next/docs => docs}/zh-CN/DATA-FILES.md (100%) rename {themes/next/docs => docs}/zh-CN/INSTALLATION.md (100%) rename {themes/next/docs => docs}/zh-CN/LEANCLOUD-COUNTER-SECURITY.md (100%) rename {themes/next/docs => docs}/zh-CN/MATH.md (96%) rename {themes/next/docs => docs}/zh-CN/README.md (69%) rename {themes/next/docs => docs}/zh-CN/UPDATE-FROM-5.1.X.md (88%) rename themes/next/gulpfile.coffee => gulpfile.coffee (100%) rename {themes/next/languages => languages}/de.yml (100%) rename {themes/next/languages => languages}/default.yml (100%) rename {themes/next/languages => languages}/en.yml (100%) rename {themes/next/languages => languages}/fr.yml (100%) rename {themes/next/languages => languages}/id.yml (100%) rename {themes/next/languages => languages}/it.yml (100%) rename {themes/next/languages => languages}/ja.yml (60%) rename {themes/next/languages => languages}/ko.yml (100%) rename {themes/next/languages => languages}/nl.yml (100%) rename {themes/next/languages => languages}/pt-BR.yml (100%) rename {themes/next/languages => languages}/pt.yml (100%) rename {themes/next/languages => languages}/ru.yml (100%) rename {themes/next/languages => languages}/tr.yml (100%) rename {themes/next/languages => languages}/vi.yml (100%) rename {themes/next/languages => languages}/zh-CN.yml (98%) rename {themes/next/languages => languages}/zh-HK.yml (100%) rename {themes/next/languages => languages}/zh-TW.yml (100%) rename {themes/next/layout => layout}/_custom/head.swig (100%) rename {themes/next/layout => layout}/_custom/header.swig (100%) rename {themes/next/layout => layout}/_custom/sidebar.swig (100%) rename {themes/next/layout => layout}/_layout.swig (92%) rename {themes/next/layout => layout}/_macro/menu/menu-badge.swig (100%) rename {themes/next/layout => layout}/_macro/menu/menu-item.swig (100%) rename {themes/next/layout => layout}/_macro/post-collapse.swig (100%) rename {themes/next/layout => layout}/_macro/post-copyright.swig (84%) rename {themes/next/layout => layout}/_macro/post-related.swig (100%) rename {themes/next/layout => layout}/_macro/post.swig (89%) rename {themes/next/layout => layout}/_macro/reward.swig (100%) rename {themes/next/layout => layout}/_macro/sidebar.swig (100%) rename {themes/next/layout => layout}/_macro/wechat-subscriber.swig (100%) rename {themes/next/layout => layout}/_partials/breadcrumb.swig (100%) rename {themes/next/layout => layout}/_partials/comments.swig (87%) rename {themes/next/layout => layout}/_partials/footer.swig (86%) rename {themes/next/layout => layout}/_partials/head/external-fonts.swig (100%) rename {themes/next/layout => layout}/_partials/head/head-unique.swig (100%) rename {themes/next/layout => layout}/_partials/head/head.swig (100%) rename {themes/next/layout => layout}/_partials/header/brand.swig (100%) rename {themes/next/layout => layout}/_partials/header/index.swig (100%) rename {themes/next/layout => layout}/_partials/header/menu.swig (100%) rename {themes/next/layout => layout}/_partials/header/sub-menu.swig (100%) rename {themes/next/layout => layout}/_partials/page-header.swig (100%) rename {themes/next/layout => layout}/_partials/pagination.swig (100%) rename {themes/next/layout => layout}/_partials/search/index.swig (100%) rename {themes/next/layout => layout}/_partials/search/localsearch.swig (100%) rename {themes/next/layout => layout}/_partials/search/swiftype.swig (100%) rename {themes/next/layout => layout}/_partials/search/tinysou.swig (100%) rename {themes/next/layout => layout}/_partials/share/add-this.swig (100%) rename {themes/next/layout => layout}/_partials/share/baidushare.swig (100%) rename {themes/next/layout => layout}/_partials/share/duoshuo_share.swig (100%) rename {themes/next/layout => layout}/_scripts/boostrap.swig (100%) rename {themes/next/layout => layout}/_scripts/commons.swig (100%) rename {themes/next/layout => layout}/_scripts/noscript.swig (100%) rename {themes/next/layout => layout}/_scripts/pages/post-details.swig (100%) rename {themes/next/layout => layout}/_scripts/schemes/gemini.swig (100%) rename {themes/next/layout => layout}/_scripts/schemes/mist.swig (100%) rename {themes/next/layout => layout}/_scripts/schemes/muse.swig (100%) rename {themes/next/layout => layout}/_scripts/schemes/pisces.swig (100%) rename {themes/next/layout => layout}/_scripts/vendors.swig (100%) rename {themes/next/layout => layout}/_third-party/analytics/analytics-with-widget.swig (100%) rename {themes/next/layout => layout}/_third-party/analytics/application-insights.swig (100%) rename {themes/next/layout => layout}/_third-party/analytics/baidu-analytics.swig (100%) rename {themes/next/layout => layout}/_third-party/analytics/busuanzi-counter.swig (91%) rename {themes/next/layout => layout}/_third-party/analytics/cnzz-analytics.swig (100%) rename {themes/next/layout => layout}/_third-party/analytics/facebook-sdk.swig (100%) rename {themes/next/layout => layout}/_third-party/analytics/firestore.swig (93%) rename {themes/next/layout => layout}/_third-party/analytics/google-analytics.swig (100%) create mode 100644 layout/_third-party/analytics/growingio.swig rename {themes/next/layout => layout}/_third-party/analytics/index.swig (85%) rename {themes/next/layout => layout}/_third-party/analytics/lean-analytics.swig (54%) rename {themes/next/layout => layout}/_third-party/analytics/tencent-analytics.swig (100%) rename {themes/next/layout => layout}/_third-party/analytics/tencent-mta.swig (100%) rename {themes/next/layout => layout}/_third-party/analytics/vkontakte-api.swig (100%) rename {themes/next/layout => layout}/_third-party/bookmark.swig (100%) rename {themes/next/layout => layout}/_third-party/comments/changyan.swig (100%) rename {themes/next/layout => layout}/_third-party/comments/disqus.swig (79%) rename {themes/next/layout => layout}/_third-party/comments/gitment.swig (100%) rename {themes/next/layout => layout}/_third-party/comments/index.swig (69%) rename {themes/next/layout => layout}/_third-party/comments/livere.swig (76%) rename {themes/next/layout => layout}/_third-party/comments/valine.swig (93%) rename {themes/next/layout => layout}/_third-party/copy-code.swig (100%) rename {themes/next/layout => layout}/_third-party/exturl.swig (100%) rename {themes/next/layout => layout}/_third-party/github-banner.swig (100%) rename {themes/next/layout => layout}/_third-party/math/index.swig (100%) rename {themes/next/layout => layout}/_third-party/math/katex.swig (100%) rename {themes/next/layout => layout}/_third-party/math/mathjax.swig (100%) rename {themes/next/layout => layout}/_third-party/needsharebutton.swig (100%) rename {themes/next/layout => layout}/_third-party/pangu.swig (100%) rename {themes/next/layout => layout}/_third-party/rating.swig (100%) rename {themes/next/layout => layout}/_third-party/schedule.swig (100%) rename {themes/next/layout => layout}/_third-party/scroll-cookie.swig (100%) rename {themes/next/layout => layout}/_third-party/search/algolia-search/assets.swig (100%) rename {themes/next/layout => layout}/_third-party/search/algolia-search/dom.swig (100%) rename {themes/next/layout => layout}/_third-party/search/index.swig (100%) rename {themes/next/layout => layout}/_third-party/search/localsearch.swig (100%) rename {themes/next/layout => layout}/_third-party/search/tinysou.swig (100%) rename {themes/next/layout => layout}/_third-party/seo/baidu-push.swig (100%) rename {themes/next/layout => layout}/archive.swig (100%) rename {themes/next/layout => layout}/category.swig (100%) rename {themes/next/layout => layout}/index.swig (90%) rename {themes/next/layout => layout}/page.swig (93%) rename {themes/next/layout => layout}/post.swig (62%) rename {themes/next/layout => layout}/schedule.swig (52%) rename {themes/next/layout => layout}/tag.swig (100%) delete mode 100644 package-lock.json delete mode 100644 scaffolds/draft.md delete mode 100644 scaffolds/page.md delete mode 100644 scaffolds/post.md rename {themes/next/scripts => scripts}/helpers.js (83%) rename {themes/next/scripts => scripts}/merge-configs.js (100%) rename {themes/next/scripts => scripts}/merge.js (100%) rename {themes/next/scripts => scripts}/tags/button.js (73%) create mode 100644 scripts/tags/center-quote.js rename {themes/next/scripts => scripts}/tags/exturl.js (76%) rename {themes/next/scripts => scripts}/tags/full-image.js (53%) create mode 100644 scripts/tags/group-pictures.js rename {themes/next/scripts => scripts}/tags/include-raw.js (58%) create mode 100644 scripts/tags/label.js create mode 100644 scripts/tags/note.js create mode 100644 scripts/tags/tabs.js delete mode 100644 source/CNAME delete mode 100644 source/README.md delete mode 100644 source/_data/next.yml delete mode 100644 source/_posts/git-account.md delete mode 100644 source/_posts/git-bash.md delete mode 100644 source/_posts/git-sub.md delete mode 100644 source/_posts/gitignore.md delete mode 100644 source/_posts/gitlab1.md delete mode 100644 source/_posts/hexo-blog.md delete mode 100644 source/_posts/hexo-iterative.md delete mode 100644 source/_posts/hugo.md delete mode 100644 source/_posts/linux-build.md delete mode 100644 source/_posts/linux-mysql.md delete mode 100644 source/_posts/memory-hs.md delete mode 100644 source/_posts/memory-hz1.md delete mode 100644 source/_posts/movie-fierce.md delete mode 100644 source/_posts/network-http.md delete mode 100644 source/_posts/network-okhttp1.md delete mode 100644 source/_posts/rap1.md delete mode 100644 source/_posts/rap2.md delete mode 100644 source/_posts/realm.md delete mode 100644 source/_posts/rxjava.md delete mode 100644 source/_posts/security-rsa.md delete mode 100644 source/_posts/ssm.md delete mode 100644 source/_posts/syncing-a-fork.md delete mode 100644 source/_posts/travel-zjj.md delete mode 100644 source/_posts/treasure.md delete mode 100644 source/about/index.md delete mode 100644 source/categories/index.md rename {themes/next/source => source}/css/_common/components/back-to-top-sidebar.styl (80%) rename {themes/next/source => source}/css/_common/components/back-to-top.styl (100%) rename {themes/next/source => source}/css/_common/components/buttons.styl (100%) rename {themes/next/source => source}/css/_common/components/comments.styl (100%) rename {themes/next/source => source}/css/_common/components/components.styl (100%) rename {themes/next/source => source}/css/_common/components/footer/footer.styl (100%) rename {themes/next/source => source}/css/_common/components/header/github-banner.styl (100%) rename {themes/next/source => source}/css/_common/components/header/header.styl (100%) rename {themes/next/source => source}/css/_common/components/header/headerband.styl (100%) rename {themes/next/source => source}/css/_common/components/header/menu.styl (100%) rename {themes/next/source => source}/css/_common/components/header/site-meta.styl (100%) rename {themes/next/source => source}/css/_common/components/header/site-nav.styl (100%) rename {themes/next/source => source}/css/_common/components/highlight/diff.styl (100%) rename {themes/next/source => source}/css/_common/components/highlight/highlight.styl (97%) rename {themes/next/source => source}/css/_common/components/highlight/theme.styl (100%) rename {themes/next/source => source}/css/_common/components/pages/archive.styl (100%) rename {themes/next/source => source}/css/_common/components/pages/breadcrumb.styl (100%) rename {themes/next/source => source}/css/_common/components/pages/categories.styl (100%) rename {themes/next/source => source}/css/_common/components/pages/pages.styl (100%) rename {themes/next/source => source}/css/_common/components/pages/post-detail.styl (100%) rename {themes/next/source => source}/css/_common/components/pages/schedule.styl (84%) rename {themes/next/source => source}/css/_common/components/pagination.styl (100%) rename {themes/next/source => source}/css/_common/components/post/post-button.styl (100%) rename {themes/next/source => source}/css/_common/components/post/post-collapse.styl (100%) rename {themes/next/source => source}/css/_common/components/post/post-copyright.styl (100%) rename {themes/next/source => source}/css/_common/components/post/post-eof.styl (100%) rename {themes/next/source => source}/css/_common/components/post/post-expand.styl (100%) rename {themes/next/source => source}/css/_common/components/post/post-gallery.styl (100%) rename {themes/next/source => source}/css/_common/components/post/post-meta.styl (100%) rename {themes/next/source => source}/css/_common/components/post/post-nav.styl (100%) rename {themes/next/source => source}/css/_common/components/post/post-reading_progress.styl (100%) rename {themes/next/source => source}/css/_common/components/post/post-reward.styl (64%) rename {themes/next/source => source}/css/_common/components/post/post-rtl.styl (100%) rename {themes/next/source => source}/css/_common/components/post/post-tags.styl (100%) rename {themes/next/source => source}/css/_common/components/post/post-title.styl (97%) rename {themes/next/source => source}/css/_common/components/post/post-type.styl (100%) rename {themes/next/source => source}/css/_common/components/post/post-widgets.styl (77%) rename {themes/next/source => source}/css/_common/components/post/post.styl (90%) rename {themes/next/source => source}/css/_common/components/sidebar/sidebar-author-links.styl (100%) rename {themes/next/source => source}/css/_common/components/sidebar/sidebar-author.styl (97%) rename {themes/next/source => source}/css/_common/components/sidebar/sidebar-blogroll.styl (100%) rename {themes/next/source => source}/css/_common/components/sidebar/sidebar-dimmer.styl (100%) rename {themes/next/source => source}/css/_common/components/sidebar/sidebar-feed-link.styl (100%) rename {themes/next/source => source}/css/_common/components/sidebar/sidebar-nav.styl (100%) rename {themes/next/source => source}/css/_common/components/sidebar/sidebar-toc.styl (100%) rename {themes/next/source => source}/css/_common/components/sidebar/sidebar-toggle.styl (100%) rename {themes/next/source => source}/css/_common/components/sidebar/sidebar.styl (100%) rename {themes/next/source => source}/css/_common/components/sidebar/site-state.styl (100%) rename {themes/next/source => source}/css/_common/components/tag-cloud.styl (100%) rename {themes/next/source => source}/css/_common/components/tags/blockquote-center.styl (100%) create mode 100644 source/css/_common/components/tags/full-image.styl rename {themes/next/source => source}/css/_common/components/tags/group-pictures.styl (100%) rename {themes/next/source => source}/css/_common/components/tags/label.styl (100%) rename {themes/next/source => source}/css/_common/components/tags/note-modern.styl (100%) rename {themes/next/source => source}/css/_common/components/tags/note.styl (100%) rename {themes/next/source => source}/css/_common/components/tags/tabs.styl (100%) rename {themes/next/source => source}/css/_common/components/tags/tags.styl (88%) rename {themes/next/source => source}/css/_common/components/third-party/algolia-search.styl (100%) rename {themes/next/source => source}/css/_common/components/third-party/busuanzi-counter.styl (100%) rename {themes/next/source => source}/css/_common/components/third-party/gitment.styl (100%) rename {themes/next/source => source}/css/_common/components/third-party/han.styl (100%) rename {themes/next/source => source}/css/_common/components/third-party/localsearch.styl (100%) rename {themes/next/source => source}/css/_common/components/third-party/needsharebutton.styl (100%) rename {themes/next/source => source}/css/_common/components/third-party/related-posts.styl (100%) rename {themes/next/source => source}/css/_common/components/third-party/third-party.styl (88%) rename {themes/next/source => source}/css/_common/outline/outline.styl (82%) rename {themes/next/source => source}/css/_common/scaffolding/base.styl (86%) rename {themes/next/source => source}/css/_common/scaffolding/helpers.styl (100%) rename {themes/next/source => source}/css/_common/scaffolding/mobile.styl (95%) rename {themes/next/source => source}/css/_common/scaffolding/normalize.styl (100%) rename {themes/next/source => source}/css/_common/scaffolding/scaffolding.styl (100%) rename {themes/next/source => source}/css/_common/scaffolding/tables.styl (96%) rename {themes/next/source => source}/css/_custom/custom.styl (100%) rename {themes/next/source => source}/css/_mixins/Gemini.styl (100%) rename {themes/next/source => source}/css/_mixins/Mist.styl (100%) rename {themes/next/source => source}/css/_mixins/Muse.styl (100%) rename {themes/next/source => source}/css/_mixins/Pisces.styl (100%) rename {themes/next/source => source}/css/_mixins/base.styl (90%) rename {themes/next/source => source}/css/_mixins/custom.styl (100%) rename {themes/next/source => source}/css/_schemes/Gemini/index.styl (87%) rename {themes/next/source => source}/css/_schemes/Mist/_base.styl (100%) rename {themes/next/source => source}/css/_schemes/Mist/_header.styl (100%) rename {themes/next/source => source}/css/_schemes/Mist/_logo.styl (100%) rename {themes/next/source => source}/css/_schemes/Mist/_menu.styl (100%) rename {themes/next/source => source}/css/_schemes/Mist/_posts-expanded.styl (100%) rename {themes/next/source => source}/css/_schemes/Mist/_search.styl (100%) rename {themes/next/source => source}/css/_schemes/Mist/index.styl (100%) rename {themes/next/source => source}/css/_schemes/Mist/outline/outline.styl (100%) rename {themes/next/source => source}/css/_schemes/Mist/sidebar/sidebar-blogroll.styl (100%) rename {themes/next/source => source}/css/_schemes/Muse/_layout.styl (100%) rename {themes/next/source => source}/css/_schemes/Muse/_logo.styl (100%) rename {themes/next/source => source}/css/_schemes/Muse/_menu.styl (100%) rename {themes/next/source => source}/css/_schemes/Muse/_search.styl (100%) rename {themes/next/source => source}/css/_schemes/Muse/index.styl (100%) rename {themes/next/source => source}/css/_schemes/Muse/sidebar/sidebar-blogroll.styl (100%) rename {themes/next/source => source}/css/_schemes/Pisces/_brand.styl (100%) rename {themes/next/source => source}/css/_schemes/Pisces/_layout.styl (92%) rename {themes/next/source => source}/css/_schemes/Pisces/_menu.styl (100%) rename {themes/next/source => source}/css/_schemes/Pisces/_posts.styl (100%) rename {themes/next/source => source}/css/_schemes/Pisces/_sidebar.styl (100%) rename {themes/next/source => source}/css/_schemes/Pisces/_sub-menu.styl (100%) rename {themes/next/source => source}/css/_schemes/Pisces/index.styl (100%) rename {themes/next/source => source}/css/_variables/Gemini.styl (71%) rename {themes/next/source => source}/css/_variables/Mist.styl (100%) rename {themes/next/source => source}/css/_variables/Muse.styl (100%) rename {themes/next/source => source}/css/_variables/Pisces.styl (80%) rename {themes/next/source => source}/css/_variables/base.styl (97%) rename {themes/next/source => source}/css/_variables/custom.styl (100%) rename {themes/next/source => source}/css/main.styl (100%) rename {themes/next/source => source}/fonts/.gitkeep (100%) rename {themes/next/source => source}/images/algolia_logo.svg (100%) rename {themes/next/source => source}/images/apple-touch-icon-next.png (100%) rename {themes/next/source => source}/images/avatar.gif (100%) rename {themes/next/source => source}/images/cc-by-nc-nd.svg (100%) rename {themes/next/source => source}/images/cc-by-nc-sa.svg (100%) rename {themes/next/source => source}/images/cc-by-nc.svg (100%) rename {themes/next/source => source}/images/cc-by-nd.svg (100%) rename {themes/next/source => source}/images/cc-by-sa.svg (100%) rename {themes/next/source => source}/images/cc-by.svg (100%) rename {themes/next/source => source}/images/cc-zero.svg (100%) rename {themes/next/source => source}/images/favicon-16x16-next.png (100%) rename {themes/next/source => source}/images/favicon-32x32-next.png (100%) rename {themes/next/source => source}/images/loading.gif (100%) rename {themes/next/source => source}/images/logo.svg (100%) rename {themes/next/source => source}/images/placeholder.gif (100%) rename {themes/next/source => source}/images/quote-l.svg (100%) rename {themes/next/source => source}/images/quote-r.svg (100%) rename {themes/next/source => source}/images/searchicon.png (100%) create mode 100644 source/js/src/affix.js create mode 100644 source/js/src/algolia-search.js rename {themes/next/source => source}/js/src/bootstrap.js (88%) rename {themes/next/source => source}/js/src/exturl.js (94%) rename {themes/next/source => source}/js/src/js.cookie.js (100%) rename {themes/next/source => source}/js/src/motion.js (73%) rename {themes/next/source => source}/js/src/post-details.js (74%) create mode 100644 source/js/src/schemes/pisces.js create mode 100644 source/js/src/scroll-cookie.js create mode 100644 source/js/src/scrollspy.js rename {themes/next/source => source}/js/src/utils.js (68%) rename {themes/next/source/lib/reading_progress => source/lib/algolia-instant-search}/LICENSE (100%) create mode 100644 source/lib/algolia-instant-search/README.md create mode 100644 source/lib/algolia-instant-search/instantsearch.min.css create mode 100644 source/lib/algolia-instant-search/instantsearch.min.js create mode 100644 source/lib/bookmark/.eslintignore create mode 100644 source/lib/bookmark/.eslintrc.js create mode 100644 source/lib/bookmark/.gitignore rename LICENSE => source/lib/bookmark/LICENSE (96%) create mode 100644 source/lib/bookmark/README.md create mode 100644 source/lib/bookmark/bookmark.min.js create mode 100644 source/lib/bookmark/index.js create mode 100644 source/lib/bookmark/package.json rename {themes/next/source => source}/lib/fancybox/.bower.json (100%) rename {themes/next/source => source}/lib/fancybox/.gitattributes (100%) rename {themes/next/source => source}/lib/fancybox/LICENSE (100%) rename {themes/next/source => source}/lib/fancybox/README.md (100%) rename {themes/next/source => source}/lib/fancybox/source/jquery.fancybox.css (100%) rename {themes/next/source => source}/lib/fancybox/source/jquery.fancybox.js (100%) rename {themes/next/source => source}/lib/fancybox/source/jquery.fancybox.min.css (100%) rename {themes/next/source => source}/lib/fancybox/source/jquery.fancybox.min.js (100%) rename {themes/next/source => source}/lib/fancybox/source/jquery.fancybox.pack.js (100%) rename {themes/next/source => source}/lib/font-awesome/.bower.json (100%) rename {themes/next/source => source}/lib/font-awesome/.gitignore (100%) rename {themes/next/source => source}/lib/font-awesome/.npmignore (100%) rename {themes/next/source => source}/lib/font-awesome/HELP-US-OUT.txt (100%) rename {themes/next/source => source}/lib/font-awesome/bower.json (100%) rename {themes/next/source => source}/lib/font-awesome/css/font-awesome.css (100%) rename {themes/next/source => source}/lib/font-awesome/css/font-awesome.css.map (100%) rename {themes/next/source => source}/lib/font-awesome/css/font-awesome.min.css (100%) rename {themes/next/source => source}/lib/font-awesome/fonts/fontawesome-webfont.eot (100%) rename {themes/next/source => source}/lib/font-awesome/fonts/fontawesome-webfont.woff (100%) rename {themes/next/source => source}/lib/font-awesome/fonts/fontawesome-webfont.woff2 (100%) rename {themes/next/source => source}/lib/jquery/index.js (100%) create mode 100644 source/lib/pace/LICENSE create mode 100644 source/lib/pace/README.md create mode 100644 source/lib/pace/pace-theme-barber-shop.min.css create mode 100644 source/lib/pace/pace-theme-big-counter.min.css create mode 100644 source/lib/pace/pace-theme-bounce.min.css create mode 100644 source/lib/pace/pace-theme-center-atom.min.css create mode 100644 source/lib/pace/pace-theme-center-circle.min.css create mode 100644 source/lib/pace/pace-theme-center-radar.min.css create mode 100644 source/lib/pace/pace-theme-center-simple.min.css create mode 100644 source/lib/pace/pace-theme-corner-indicator.min.css create mode 100644 source/lib/pace/pace-theme-fill-left.min.css create mode 100644 source/lib/pace/pace-theme-flash.min.css create mode 100644 source/lib/pace/pace-theme-loading-bar.min.css create mode 100644 source/lib/pace/pace-theme-mac-osx.min.css create mode 100644 source/lib/pace/pace-theme-minimal.min.css create mode 100644 source/lib/pace/pace.min.js create mode 100644 source/lib/pangu/LICENSE create mode 100644 source/lib/pangu/README.md create mode 100644 source/lib/pangu/dist/pangu.js create mode 100644 source/lib/pangu/dist/pangu.js.map create mode 100644 source/lib/pangu/dist/pangu.min.js create mode 100644 source/lib/pangu/dist/pangu.min.js.map create mode 100644 source/lib/pdf/LICENSE create mode 100644 source/lib/pdf/README.md create mode 100755 source/lib/pdf/build/pdf.js create mode 100755 source/lib/pdf/build/pdf.js.map create mode 100755 source/lib/pdf/build/pdf.worker.js create mode 100755 source/lib/pdf/build/pdf.worker.js.map create mode 100755 source/lib/pdf/web/cmaps/78-EUC-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/78-EUC-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/78-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/78-RKSJ-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/78-RKSJ-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/78-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/78ms-RKSJ-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/78ms-RKSJ-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/83pv-RKSJ-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/90ms-RKSJ-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/90ms-RKSJ-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/90msp-RKSJ-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/90msp-RKSJ-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/90pv-RKSJ-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/90pv-RKSJ-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/Add-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/Add-RKSJ-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/Add-RKSJ-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/Add-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-CNS1-0.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-CNS1-1.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-CNS1-2.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-CNS1-3.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-CNS1-4.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-CNS1-5.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-CNS1-6.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-CNS1-UCS2.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-GB1-0.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-GB1-1.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-GB1-2.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-GB1-3.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-GB1-4.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-GB1-5.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-GB1-UCS2.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-Japan1-0.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-Japan1-1.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-Japan1-2.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-Japan1-3.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-Japan1-4.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-Japan1-5.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-Japan1-6.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-Japan1-UCS2.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-Korea1-0.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-Korea1-1.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-Korea1-2.bcmap create mode 100755 source/lib/pdf/web/cmaps/Adobe-Korea1-UCS2.bcmap create mode 100755 source/lib/pdf/web/cmaps/B5-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/B5-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/B5pc-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/B5pc-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/CNS-EUC-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/CNS-EUC-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/CNS1-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/CNS1-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/CNS2-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/CNS2-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/ETHK-B5-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/ETHK-B5-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/ETen-B5-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/ETen-B5-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/ETenms-B5-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/ETenms-B5-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/EUC-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/EUC-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/Ext-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/Ext-RKSJ-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/Ext-RKSJ-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/Ext-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/GB-EUC-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/GB-EUC-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/GB-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/GB-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/GBK-EUC-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/GBK-EUC-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/GBK2K-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/GBK2K-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/GBKp-EUC-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/GBKp-EUC-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/GBT-EUC-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/GBT-EUC-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/GBT-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/GBT-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/GBTpc-EUC-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/GBTpc-EUC-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/GBpc-EUC-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/GBpc-EUC-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/H.bcmap create mode 100755 source/lib/pdf/web/cmaps/HKdla-B5-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/HKdla-B5-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/HKdlb-B5-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/HKdlb-B5-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/HKgccs-B5-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/HKgccs-B5-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/HKm314-B5-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/HKm314-B5-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/HKm471-B5-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/HKm471-B5-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/HKscs-B5-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/HKscs-B5-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/Hankaku.bcmap create mode 100755 source/lib/pdf/web/cmaps/Hiragana.bcmap create mode 100755 source/lib/pdf/web/cmaps/KSC-EUC-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/KSC-EUC-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/KSC-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/KSC-Johab-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/KSC-Johab-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/KSC-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/KSCms-UHC-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/KSCms-UHC-HW-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/KSCms-UHC-HW-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/KSCms-UHC-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/KSCpc-EUC-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/KSCpc-EUC-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/Katakana.bcmap create mode 100755 source/lib/pdf/web/cmaps/LICENSE create mode 100755 source/lib/pdf/web/cmaps/NWP-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/NWP-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/RKSJ-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/RKSJ-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/Roman.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniCNS-UCS2-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniCNS-UCS2-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniCNS-UTF16-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniCNS-UTF16-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniCNS-UTF32-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniCNS-UTF32-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniCNS-UTF8-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniCNS-UTF8-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniGB-UCS2-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniGB-UCS2-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniGB-UTF16-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniGB-UTF16-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniGB-UTF32-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniGB-UTF32-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniGB-UTF8-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniGB-UTF8-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS-UCS2-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS-UCS2-HW-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS-UCS2-HW-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS-UCS2-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS-UTF16-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS-UTF16-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS-UTF32-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS-UTF32-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS-UTF8-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS-UTF8-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS2004-UTF16-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS2004-UTF16-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS2004-UTF32-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS2004-UTF32-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS2004-UTF8-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJIS2004-UTF8-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJISPro-UCS2-HW-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJISPro-UCS2-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJISPro-UTF8-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJISX0213-UTF32-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJISX0213-UTF32-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJISX02132004-UTF32-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniJISX02132004-UTF32-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniKS-UCS2-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniKS-UCS2-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniKS-UTF16-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniKS-UTF16-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniKS-UTF32-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniKS-UTF32-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniKS-UTF8-H.bcmap create mode 100755 source/lib/pdf/web/cmaps/UniKS-UTF8-V.bcmap create mode 100755 source/lib/pdf/web/cmaps/V.bcmap create mode 100755 source/lib/pdf/web/cmaps/WP-Symbol.bcmap create mode 100755 source/lib/pdf/web/compressed.tracemonkey-pldi-09.pdf create mode 100755 source/lib/pdf/web/debugger.js create mode 100755 source/lib/pdf/web/images/annotation-check.svg create mode 100755 source/lib/pdf/web/images/annotation-comment.svg create mode 100755 source/lib/pdf/web/images/annotation-help.svg create mode 100755 source/lib/pdf/web/images/annotation-insert.svg create mode 100755 source/lib/pdf/web/images/annotation-key.svg create mode 100755 source/lib/pdf/web/images/annotation-newparagraph.svg create mode 100755 source/lib/pdf/web/images/annotation-noicon.svg create mode 100755 source/lib/pdf/web/images/annotation-note.svg create mode 100755 source/lib/pdf/web/images/annotation-paragraph.svg create mode 100755 source/lib/pdf/web/images/findbarButton-next-rtl.png create mode 100755 source/lib/pdf/web/images/findbarButton-next-rtl@2x.png create mode 100755 source/lib/pdf/web/images/findbarButton-next.png create mode 100755 source/lib/pdf/web/images/findbarButton-next@2x.png create mode 100755 source/lib/pdf/web/images/findbarButton-previous-rtl.png create mode 100755 source/lib/pdf/web/images/findbarButton-previous-rtl@2x.png create mode 100755 source/lib/pdf/web/images/findbarButton-previous.png create mode 100755 source/lib/pdf/web/images/findbarButton-previous@2x.png create mode 100755 source/lib/pdf/web/images/grab.cur create mode 100755 source/lib/pdf/web/images/grabbing.cur create mode 100755 source/lib/pdf/web/images/loading-icon.gif create mode 100755 source/lib/pdf/web/images/loading-small.png create mode 100755 source/lib/pdf/web/images/loading-small@2x.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-documentProperties.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-documentProperties@2x.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-firstPage.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-firstPage@2x.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-handTool.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-handTool@2x.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-lastPage.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-lastPage@2x.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-rotateCcw.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-rotateCcw@2x.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-rotateCw.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-rotateCw@2x.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-scrollHorizontal.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-scrollHorizontal@2x.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-scrollVertical.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-scrollVertical@2x.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-scrollWrapped.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-scrollWrapped@2x.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-selectTool.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-selectTool@2x.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-spreadEven.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-spreadEven@2x.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-spreadNone.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-spreadNone@2x.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-spreadOdd.png create mode 100755 source/lib/pdf/web/images/secondaryToolbarButton-spreadOdd@2x.png create mode 100755 source/lib/pdf/web/images/shadow.png create mode 100755 source/lib/pdf/web/images/texture.png create mode 100755 source/lib/pdf/web/images/toolbarButton-bookmark.png create mode 100755 source/lib/pdf/web/images/toolbarButton-bookmark@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-download.png create mode 100755 source/lib/pdf/web/images/toolbarButton-download@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-menuArrows.png create mode 100755 source/lib/pdf/web/images/toolbarButton-menuArrows@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-openFile.png create mode 100755 source/lib/pdf/web/images/toolbarButton-openFile@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-pageDown-rtl.png create mode 100755 source/lib/pdf/web/images/toolbarButton-pageDown-rtl@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-pageDown.png create mode 100755 source/lib/pdf/web/images/toolbarButton-pageDown@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-pageUp-rtl.png create mode 100755 source/lib/pdf/web/images/toolbarButton-pageUp-rtl@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-pageUp.png create mode 100755 source/lib/pdf/web/images/toolbarButton-pageUp@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-presentationMode.png create mode 100755 source/lib/pdf/web/images/toolbarButton-presentationMode@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-print.png create mode 100755 source/lib/pdf/web/images/toolbarButton-print@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-search.png create mode 100755 source/lib/pdf/web/images/toolbarButton-search@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-secondaryToolbarToggle-rtl.png create mode 100755 source/lib/pdf/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-secondaryToolbarToggle.png create mode 100755 source/lib/pdf/web/images/toolbarButton-secondaryToolbarToggle@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-sidebarToggle-rtl.png create mode 100755 source/lib/pdf/web/images/toolbarButton-sidebarToggle-rtl@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-sidebarToggle.png create mode 100755 source/lib/pdf/web/images/toolbarButton-sidebarToggle@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-viewAttachments.png create mode 100755 source/lib/pdf/web/images/toolbarButton-viewAttachments@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-viewOutline-rtl.png create mode 100755 source/lib/pdf/web/images/toolbarButton-viewOutline-rtl@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-viewOutline.png create mode 100755 source/lib/pdf/web/images/toolbarButton-viewOutline@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-viewThumbnail.png create mode 100755 source/lib/pdf/web/images/toolbarButton-viewThumbnail@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-zoomIn.png create mode 100755 source/lib/pdf/web/images/toolbarButton-zoomIn@2x.png create mode 100755 source/lib/pdf/web/images/toolbarButton-zoomOut.png create mode 100755 source/lib/pdf/web/images/toolbarButton-zoomOut@2x.png create mode 100755 source/lib/pdf/web/images/treeitem-collapsed-rtl.png create mode 100755 source/lib/pdf/web/images/treeitem-collapsed-rtl@2x.png create mode 100755 source/lib/pdf/web/images/treeitem-collapsed.png create mode 100755 source/lib/pdf/web/images/treeitem-collapsed@2x.png create mode 100755 source/lib/pdf/web/images/treeitem-expanded.png create mode 100755 source/lib/pdf/web/images/treeitem-expanded@2x.png create mode 100755 source/lib/pdf/web/locale/ach/viewer.properties create mode 100755 source/lib/pdf/web/locale/af/viewer.properties create mode 100755 source/lib/pdf/web/locale/ak/viewer.properties create mode 100755 source/lib/pdf/web/locale/an/viewer.properties create mode 100755 source/lib/pdf/web/locale/ar/viewer.properties create mode 100755 source/lib/pdf/web/locale/as/viewer.properties create mode 100755 source/lib/pdf/web/locale/ast/viewer.properties create mode 100755 source/lib/pdf/web/locale/az/viewer.properties create mode 100755 source/lib/pdf/web/locale/be/viewer.properties create mode 100755 source/lib/pdf/web/locale/bg/viewer.properties create mode 100755 source/lib/pdf/web/locale/bn-BD/viewer.properties create mode 100755 source/lib/pdf/web/locale/bn-IN/viewer.properties create mode 100755 source/lib/pdf/web/locale/br/viewer.properties create mode 100755 source/lib/pdf/web/locale/brx/viewer.properties create mode 100755 source/lib/pdf/web/locale/bs/viewer.properties create mode 100755 source/lib/pdf/web/locale/ca/viewer.properties create mode 100755 source/lib/pdf/web/locale/cak/viewer.properties create mode 100755 source/lib/pdf/web/locale/crh/viewer.properties create mode 100755 source/lib/pdf/web/locale/cs/viewer.properties create mode 100755 source/lib/pdf/web/locale/csb/viewer.properties create mode 100755 source/lib/pdf/web/locale/cy/viewer.properties create mode 100755 source/lib/pdf/web/locale/da/viewer.properties create mode 100755 source/lib/pdf/web/locale/de/viewer.properties create mode 100755 source/lib/pdf/web/locale/el/viewer.properties create mode 100755 source/lib/pdf/web/locale/en-CA/viewer.properties create mode 100755 source/lib/pdf/web/locale/en-GB/viewer.properties create mode 100755 source/lib/pdf/web/locale/en-US/viewer.properties create mode 100755 source/lib/pdf/web/locale/en-ZA/viewer.properties create mode 100755 source/lib/pdf/web/locale/eo/viewer.properties create mode 100755 source/lib/pdf/web/locale/es-AR/viewer.properties create mode 100755 source/lib/pdf/web/locale/es-CL/viewer.properties create mode 100755 source/lib/pdf/web/locale/es-ES/viewer.properties create mode 100755 source/lib/pdf/web/locale/es-MX/viewer.properties create mode 100755 source/lib/pdf/web/locale/et/viewer.properties create mode 100755 source/lib/pdf/web/locale/eu/viewer.properties create mode 100755 source/lib/pdf/web/locale/fa/viewer.properties create mode 100755 source/lib/pdf/web/locale/ff/viewer.properties create mode 100755 source/lib/pdf/web/locale/fi/viewer.properties create mode 100755 source/lib/pdf/web/locale/fr/viewer.properties create mode 100755 source/lib/pdf/web/locale/fy-NL/viewer.properties create mode 100755 source/lib/pdf/web/locale/ga-IE/viewer.properties create mode 100755 source/lib/pdf/web/locale/gd/viewer.properties create mode 100755 source/lib/pdf/web/locale/gl/viewer.properties create mode 100755 source/lib/pdf/web/locale/gn/viewer.properties create mode 100755 source/lib/pdf/web/locale/gu-IN/viewer.properties create mode 100755 source/lib/pdf/web/locale/he/viewer.properties create mode 100755 source/lib/pdf/web/locale/hi-IN/viewer.properties create mode 100755 source/lib/pdf/web/locale/hr/viewer.properties create mode 100755 source/lib/pdf/web/locale/hsb/viewer.properties create mode 100755 source/lib/pdf/web/locale/hto/viewer.properties create mode 100755 source/lib/pdf/web/locale/hu/viewer.properties create mode 100755 source/lib/pdf/web/locale/hy-AM/viewer.properties create mode 100755 source/lib/pdf/web/locale/ia/viewer.properties create mode 100755 source/lib/pdf/web/locale/id/viewer.properties create mode 100755 source/lib/pdf/web/locale/is/viewer.properties create mode 100755 source/lib/pdf/web/locale/it/viewer.properties create mode 100755 source/lib/pdf/web/locale/ja/viewer.properties create mode 100755 source/lib/pdf/web/locale/ka/viewer.properties create mode 100755 source/lib/pdf/web/locale/kab/viewer.properties create mode 100755 source/lib/pdf/web/locale/kk/viewer.properties create mode 100755 source/lib/pdf/web/locale/km/viewer.properties create mode 100755 source/lib/pdf/web/locale/kn/viewer.properties create mode 100755 source/lib/pdf/web/locale/ko/viewer.properties create mode 100755 source/lib/pdf/web/locale/kok/viewer.properties create mode 100755 source/lib/pdf/web/locale/ks/viewer.properties create mode 100755 source/lib/pdf/web/locale/ku/viewer.properties create mode 100755 source/lib/pdf/web/locale/lg/viewer.properties create mode 100755 source/lib/pdf/web/locale/lij/viewer.properties create mode 100755 source/lib/pdf/web/locale/lo/viewer.properties create mode 100755 source/lib/pdf/web/locale/locale.properties create mode 100755 source/lib/pdf/web/locale/lt/viewer.properties create mode 100755 source/lib/pdf/web/locale/ltg/viewer.properties create mode 100755 source/lib/pdf/web/locale/lv/viewer.properties create mode 100755 source/lib/pdf/web/locale/mai/viewer.properties create mode 100755 source/lib/pdf/web/locale/meh/viewer.properties create mode 100755 source/lib/pdf/web/locale/mk/viewer.properties create mode 100755 source/lib/pdf/web/locale/ml/viewer.properties create mode 100755 source/lib/pdf/web/locale/mn/viewer.properties create mode 100755 source/lib/pdf/web/locale/mr/viewer.properties create mode 100755 source/lib/pdf/web/locale/ms/viewer.properties create mode 100755 source/lib/pdf/web/locale/my/viewer.properties create mode 100755 source/lib/pdf/web/locale/nb-NO/viewer.properties create mode 100755 source/lib/pdf/web/locale/ne-NP/viewer.properties create mode 100755 source/lib/pdf/web/locale/nl/viewer.properties create mode 100755 source/lib/pdf/web/locale/nn-NO/viewer.properties create mode 100755 source/lib/pdf/web/locale/nso/viewer.properties create mode 100755 source/lib/pdf/web/locale/oc/viewer.properties create mode 100755 source/lib/pdf/web/locale/or/viewer.properties create mode 100755 source/lib/pdf/web/locale/pa-IN/viewer.properties create mode 100755 source/lib/pdf/web/locale/pl/viewer.properties create mode 100755 source/lib/pdf/web/locale/pt-BR/viewer.properties create mode 100755 source/lib/pdf/web/locale/pt-PT/viewer.properties create mode 100755 source/lib/pdf/web/locale/rm/viewer.properties create mode 100755 source/lib/pdf/web/locale/ro/viewer.properties create mode 100755 source/lib/pdf/web/locale/ru/viewer.properties create mode 100755 source/lib/pdf/web/locale/rw/viewer.properties create mode 100755 source/lib/pdf/web/locale/sah/viewer.properties create mode 100755 source/lib/pdf/web/locale/sat/viewer.properties create mode 100755 source/lib/pdf/web/locale/si/viewer.properties create mode 100755 source/lib/pdf/web/locale/sk/viewer.properties create mode 100755 source/lib/pdf/web/locale/sl/viewer.properties create mode 100755 source/lib/pdf/web/locale/son/viewer.properties create mode 100755 source/lib/pdf/web/locale/sq/viewer.properties create mode 100755 source/lib/pdf/web/locale/sr/viewer.properties create mode 100755 source/lib/pdf/web/locale/sv-SE/viewer.properties create mode 100755 source/lib/pdf/web/locale/sw/viewer.properties create mode 100755 source/lib/pdf/web/locale/ta-LK/viewer.properties create mode 100755 source/lib/pdf/web/locale/ta/viewer.properties create mode 100755 source/lib/pdf/web/locale/te/viewer.properties create mode 100755 source/lib/pdf/web/locale/th/viewer.properties create mode 100755 source/lib/pdf/web/locale/tl/viewer.properties create mode 100755 source/lib/pdf/web/locale/tn/viewer.properties create mode 100755 source/lib/pdf/web/locale/tr/viewer.properties create mode 100755 source/lib/pdf/web/locale/tsz/viewer.properties create mode 100755 source/lib/pdf/web/locale/uk/viewer.properties create mode 100755 source/lib/pdf/web/locale/ur/viewer.properties create mode 100755 source/lib/pdf/web/locale/uz/viewer.properties create mode 100755 source/lib/pdf/web/locale/vi/viewer.properties create mode 100755 source/lib/pdf/web/locale/wo/viewer.properties create mode 100755 source/lib/pdf/web/locale/xh/viewer.properties create mode 100755 source/lib/pdf/web/locale/zam/viewer.properties create mode 100755 source/lib/pdf/web/locale/zh-CN/viewer.properties create mode 100755 source/lib/pdf/web/locale/zh-TW/viewer.properties create mode 100755 source/lib/pdf/web/locale/zu/viewer.properties create mode 100755 source/lib/pdf/web/viewer.css create mode 100755 source/lib/pdf/web/viewer.html create mode 100755 source/lib/pdf/web/viewer.js create mode 100755 source/lib/pdf/web/viewer.js.map rename {themes/next/source => source}/lib/reading_progress/.editorconfig (100%) rename {themes/next/source => source}/lib/reading_progress/.gitignore (100%) create mode 100644 source/lib/reading_progress/LICENSE rename {themes/next/source => source}/lib/reading_progress/README.md (100%) rename {themes/next/source => source}/lib/reading_progress/package.json (100%) rename {themes/next/source => source}/lib/reading_progress/reading_progress.js (100%) rename {themes/next/source => source}/lib/reading_progress/reading_progress.min.js (100%) rename {themes/next/source => source}/lib/ua-parser-js/dist/ua-parser.min.js (100%) rename {themes/next/source => source}/lib/ua-parser-js/dist/ua-parser.pack.js (100%) rename {themes/next/source => source}/lib/velocity/velocity.js (100%) rename {themes/next/source => source}/lib/velocity/velocity.min.js (100%) rename {themes/next/source => source}/lib/velocity/velocity.ui.js (100%) rename {themes/next/source => source}/lib/velocity/velocity.ui.min.js (100%) delete mode 100644 source/tags/index.md rename {themes/next/test => test}/.jshintrc (100%) rename {themes/next/test => test}/helpers.js (100%) rename {themes/next/test => test}/intern.js (100%) delete mode 100644 themes/next/.gitignore delete mode 100644 themes/next/.stickler.yml delete mode 100644 themes/next/.travis.yml delete mode 100644 themes/next/README.md delete mode 100644 themes/next/_config.yml delete mode 100644 themes/next/layout/_partials/share/jiathis.swig delete mode 100644 themes/next/layout/_third-party/comments/hypercomments.swig delete mode 100644 themes/next/layout/_third-party/comments/youyan.swig delete mode 100644 themes/next/package.json delete mode 100644 themes/next/scripts/tags/center-quote.js delete mode 100644 themes/next/scripts/tags/group-pictures.js delete mode 100644 themes/next/scripts/tags/label.js delete mode 100644 themes/next/scripts/tags/lazy-image.js delete mode 100644 themes/next/scripts/tags/note.js delete mode 100644 themes/next/scripts/tags/tabs.js delete mode 100644 themes/next/source/css/_common/components/tags/exturl.styl delete mode 100644 themes/next/source/css/_common/components/tags/full-image.styl delete mode 100644 themes/next/source/css/_common/components/third-party/baidushare.styl delete mode 100644 themes/next/source/css/_common/components/third-party/jiathis.styl delete mode 100644 themes/next/source/js/src/affix.js delete mode 100644 themes/next/source/js/src/algolia-search.js delete mode 100644 themes/next/source/js/src/schemes/pisces.js delete mode 100644 themes/next/source/js/src/scroll-cookie.js delete mode 100644 themes/next/source/js/src/scrollspy.js diff --git a/.all-contributorsrc b/.all-contributorsrc new file mode 100644 index 000000000..5336be362 --- /dev/null +++ b/.all-contributorsrc @@ -0,0 +1,401 @@ +{ + "projectName": "hexo-theme-next", + "projectOwner": "theme-next", + "repoType": "github", + "repoHost": "https://github.com", + "files": [ + "README.md" + ], + "imageSize": 100, + "commit": true, + "contributors": [ + { + "login": "ivan-nginx", + "name": "Ivan.Nginx", + "avatar_url": "https://avatars2.githubusercontent.com/u/16944225?v=4", + "profile": "https://almostover.ru", + "contributions": [ + "bug", + "code", + "doc", + "ideas", + "blog", + "review", + "test", + "translation" + ] + }, + { + "login": "sli1989", + "name": "Alex LEE", + "avatar_url": "https://avatars3.githubusercontent.com/u/8521181?v=4", + "profile": "http://saili.science", + "contributions": [ + "bug", + "code", + "doc", + "review", + "test", + "translation" + ] + }, + { + "login": "tsanie", + "name": "Tsanie Lily", + "avatar_url": "https://avatars1.githubusercontent.com/u/980449?v=4", + "profile": "https://tsanie.us", + "contributions": [ + "bug", + "code", + "doc", + "review", + "test", + "translation" + ] + }, + { + "login": "wafer-li", + "name": "Wafer Li", + "avatar_url": "https://avatars1.githubusercontent.com/u/12459199?v=4", + "profile": "https://wafer.li", + "contributions": [ + "bug", + "code", + "doc", + "review", + "test", + "translation" + ] + }, + { + "login": "LEAFERx", + "name": "Lawrence Ye", + "avatar_url": "https://avatars2.githubusercontent.com/u/20595509?v=4", + "profile": "https://leaferx.online", + "contributions": [ + "bug", + "code", + "doc", + "review", + "test", + "translation" + ] + }, + { + "login": "maple3142", + "name": "maple", + "avatar_url": "https://avatars1.githubusercontent.com/u/9370547?v=4", + "profile": "https://blog.maple3142.net/", + "contributions": [ + "bug", + "code", + "doc", + "review", + "test", + "translation" + ] + }, + { + "login": "Raincal", + "name": "Raincal", + "avatar_url": "https://avatars1.githubusercontent.com/u/6279478?v=4", + "profile": "https://raincal.com", + "contributions": [ + "bug", + "code", + "doc", + "review", + "test" + ] + }, + { + "login": "geekrainy", + "name": "Rainy", + "avatar_url": "https://avatars1.githubusercontent.com/u/7333266?v=4", + "profile": "https://rainylog.com", + "contributions": [ + "bug", + "code", + "doc", + "review", + "test", + "translation" + ] + }, + { + "login": "liolok", + "name": "李皓奇", + "avatar_url": "https://avatars0.githubusercontent.com/u/34574198?v=4", + "profile": "https://liolok.github.io/", + "contributions": [ + "bug", + "code", + "doc", + "review", + "test" + ] + }, + { + "login": "xCss", + "name": "Nine", + "avatar_url": "https://avatars2.githubusercontent.com/u/10877162?v=4", + "profile": "http://ioliu.cn", + "contributions": [ + "bug", + "code", + "doc", + "review", + "test" + ] + }, + { + "login": "jackey8616", + "name": "Clooooode", + "avatar_url": "https://avatars0.githubusercontent.com/u/12930377?v=4", + "profile": "https://github.com/jackey8616", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "xu-song", + "name": "Xu Song", + "avatar_url": "https://avatars3.githubusercontent.com/u/13825126?v=4", + "profile": "https://github.com/xu-song", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "HuntedCodes", + "name": "Jack Sullivan", + "avatar_url": "https://avatars3.githubusercontent.com/u/10931391?v=4", + "profile": "https://github.com/HuntedCodes", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "dpyzo0o", + "name": "dpyzo0o", + "avatar_url": "https://avatars1.githubusercontent.com/u/24768249?v=4", + "profile": "https://github.com/dpyzo0o", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "zhuzhuyule", + "name": "zhuzhuxia", + "avatar_url": "https://avatars1.githubusercontent.com/u/11242146?v=4", + "profile": "http://zhuzhuyule.com", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "kuleyu", + "name": "kuleyu", + "avatar_url": "https://avatars0.githubusercontent.com/u/25771340?v=4", + "profile": "https://kuleyu-hugo.netlify.com/", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "jdhao", + "name": "jdhao", + "avatar_url": "https://avatars2.githubusercontent.com/u/16662357?v=4", + "profile": "http://jdhao.github.io", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "Albert-Gao", + "name": "AlbertGao", + "avatar_url": "https://avatars1.githubusercontent.com/u/18282328?v=4", + "profile": "http://www.albertgao.xyz", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "YoshinoriN", + "name": "YoshinoriN", + "avatar_url": "https://avatars0.githubusercontent.com/u/11273093?v=4", + "profile": "https://yoshinorin.net/", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "ZhaoQi99", + "name": "Qi Zhao", + "avatar_url": "https://avatars3.githubusercontent.com/u/25344334?v=4", + "profile": "https://zhaoqi99.github.io/", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "daya0576", + "name": "Henry Zhu", + "avatar_url": "https://avatars2.githubusercontent.com/u/6239652?v=4", + "profile": "https://changchen.me/", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "cxyfreedom", + "name": "CxyFreedom", + "avatar_url": "https://avatars1.githubusercontent.com/u/8132652?v=4", + "profile": "https://github.com/cxyfreedom", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "KaitoHH", + "name": "KaitoHH", + "avatar_url": "https://avatars1.githubusercontent.com/u/13927774?v=4", + "profile": "https://kaitohh.com/", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "zhaojun1998", + "name": "赵俊", + "avatar_url": "https://avatars2.githubusercontent.com/u/35387985?v=4", + "profile": "http://www.zhaojun.im", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "izyhang", + "name": "zyhang", + "avatar_url": "https://avatars2.githubusercontent.com/u/13059924?v=4", + "profile": "https://github.com/izyhang", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "XiaolonY", + "name": "Xiaolong Yang", + "avatar_url": "https://avatars2.githubusercontent.com/u/18529307?v=4", + "profile": "https://xiaolony.github.io", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "yzca", + "name": "花蛄", + "avatar_url": "https://avatars1.githubusercontent.com/u/15226118?v=4", + "profile": "https://github.com/yzca", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "hengyunabc", + "name": "hengyunabc", + "avatar_url": "https://avatars2.githubusercontent.com/u/1683936?v=4", + "profile": "http://hengyunabc.github.io/", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "BlueFisher", + "name": "Fisher Chang", + "avatar_url": "https://avatars2.githubusercontent.com/u/6104460?v=4", + "profile": "http://bluefisher.github.io", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "shenchsh", + "name": "Chanson Shen", + "avatar_url": "https://avatars2.githubusercontent.com/u/4521477?v=4", + "profile": "http://chansonshen.com/", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "ywjno", + "name": "Thomas Yang", + "avatar_url": "https://avatars2.githubusercontent.com/u/842383?v=4", + "profile": "http://ywjno.com", + "contributions": [ + "bug", + "code", + "doc" + ] + }, + { + "login": "legendarynacar", + "name": "Legendary Nacar", + "avatar_url": "https://avatars3.githubusercontent.com/u/8149261?v=4", + "profile": "http://legendarynacar.github.io", + "contributions": [ + "translation" + ] + }, + { + "login": "Rikusen0335", + "name": "rikusen0335", + "avatar_url": "https://avatars0.githubusercontent.com/u/19174234?v=4", + "profile": "https://github.com/Rikusen0335", + "contributions": [ + "translation" + ] + } + ] +} diff --git a/themes/next/.bowerrc b/.bowerrc similarity index 100% rename from themes/next/.bowerrc rename to .bowerrc diff --git a/themes/next/.editorconfig b/.editorconfig similarity index 100% rename from themes/next/.editorconfig rename to .editorconfig diff --git a/themes/next/.eslintrc.json b/.eslintrc.json similarity index 100% rename from themes/next/.eslintrc.json rename to .eslintrc.json diff --git a/themes/next/.gitattributes b/.gitattributes similarity index 100% rename from themes/next/.gitattributes rename to .gitattributes diff --git a/themes/next/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md similarity index 100% rename from themes/next/.github/CODE_OF_CONDUCT.md rename to .github/CODE_OF_CONDUCT.md diff --git a/themes/next/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md similarity index 81% rename from themes/next/.github/CONTRIBUTING.md rename to .github/CONTRIBUTING.md index 4d80ec2eb..6f3af3815 100644 --- a/themes/next/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -20,6 +20,7 @@ First of all, thanks for taking your time to contribute and help make our projec * [Coding Rules](#coding-rules) * [Coding Standards](#coding-standards) + * [Labels Rules](#labels-rules) * [Commit Messages Rules](#commit-messages-rules) @@ -121,6 +122,59 @@ This project and everyone participating in it is governed by the [Code of Conduc To be continued. +### Labels Rules + +We use "labels" in the issue tracker to help classify pull requests and issues. Using labels enables maintainers and users to quickly find issues they should look into, either because they experience them, or because it meets their area of expertise. + +If you are unsure what a label is about or which labels you should apply to a PR or issue, look no further! + +Issues related: `types`+`contents`+`results` + +- By types + - `Irrelevant`: An irrelevant issue for Next + - `Duplicate`: An issue which had been mentioned + - `Bug`: A detected bug that needs to be confirmed + - `Discussion`: An issue that needs to be discussed + - `Question`: An issue about questions + - `Feature-Request`: An issue that wants a new feature + - `Backlog`: An issue that is to be completed and later compensated +- By contents + - `Roadmap`: An issue about future development + - `Hexo`: An issue related to Hexo + - `Scheme [1] - Mist`: An issue related to Scheme Mist + - `Scheme [2] - Muse`: An issue related to Scheme Muse + - `Scheme [3] - Pisces`: An issue related to Scheme Pisces + - `Scheme [4] - Gemini`: An issue related to Scheme Gemini + - `3rd party service`: An issue related to 3rd party service + - `Docs`: Need to add instruction document + - `Configurations`: An issue related to configurations + - `CSS`: An issue related to CSS + - `Custom`: An issue related to custom things + - `Optimization`: An issue that needs to be optimized +- By results + - `Wontfix`: An issue that will not to be fixed + - `Need More Info`: Need more information for solving the issue + - `Need Confirm`: Need confirmation from the developers or user about the bug or solution + - `Can't Reproduce`: An issue that can’t be reproduced + - `Verified`: An issue that has been verified + - `Help wanted`: An issue that needs help + - `Wait for Answer`: An issue that needs to be answered by the developers or user + - `Resolved Maybe`: An issue that has been resolved maybe + - `Solved`: An issue that has been solved + - `Stale`: This issue has been automatically marked as stale because lack of recent activity + +Pull requests related: + +- `Breaking Change`: A Pull requests that makes breaking change +- `Bugfix`: A Pull requests that fixes the related bug +- `Docs`: A Pull requests that Instruction document has been added +- `Feature`: A Pull requests that provides a new feature +- `Configurations`: A Pull requests related to configurations +- `Optimization`: A Pull requests that optimizates the Next +- `i18n`: A Pull requests that makes new languages translation +- `Performance`: A Pull requests that improves the performance +- `Discussion`: A Pull requests that needs to be discussed + ### Commit Messages Rules We have very precise rules over how our git commit messages can be formatted. Each commit message consists of a `type` and a `subject`. This leads to more diff --git a/themes/next/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md similarity index 100% rename from themes/next/.github/ISSUE_TEMPLATE.md rename to .github/ISSUE_TEMPLATE.md diff --git a/themes/next/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md similarity index 100% rename from themes/next/.github/PULL_REQUEST_TEMPLATE.md rename to .github/PULL_REQUEST_TEMPLATE.md diff --git a/themes/next/.github/browserstack_logo.png b/.github/browserstack_logo.png similarity index 100% rename from themes/next/.github/browserstack_logo.png rename to .github/browserstack_logo.png diff --git a/themes/next/.github/stale.yml b/.github/stale.yml similarity index 100% rename from themes/next/.github/stale.yml rename to .github/stale.yml diff --git a/.gitignore b/.gitignore index 063b0e4ce..26b5eab0b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,22 @@ .DS_Store -Thumbs.db -db.json +.idea/ *.log +*.iml +yarn.lock +package-lock.json node_modules/ -public/ -.deploy*/ \ No newline at end of file + +# Ignore optional external libraries +source/lib/* + +# Track internal libraries & Ignore unused verdors files +source/lib/font-awesome/less/ +source/lib/font-awesome/scss/ +!source/lib/font-awesome/* + +!source/lib/jquery/ + +source/lib/ua-parser-js/* +!source/lib/ua-parser-js/dist/ + +!source/lib/velocity/ diff --git a/themes/next/.stylintrc b/.stylintrc similarity index 100% rename from themes/next/.stylintrc rename to .stylintrc diff --git a/.travis.yml b/.travis.yml index 74b71d1d3..9591f0b23 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,30 +1,18 @@ -language: node_js # 设置语言 -node_js: stable # 设置相应的版本 +language: node_js +#node_js: node +node_js: lts/* + cache: - directories: - - node_modules # 据说可以减少travis构建时间 -before_install: - - npm install -g hexo - - npm install -g hexo-cli -install: - - npm install # 安装hexo及插件 + directories: + - node_modules + +install: npm install + before_script: - - npm install -g mocha - - git clone --branch master https://github.com/BladeCode/BladeCode.github.io.git public -script: - - hexo cl # 清除 - - hexo g # 生成 -after_script: - - cd ./public - - git init - - git config user.name "BladeCode" # 修改成自己的github用户名 - - git config user.email "Jerry.x@outlook.com" # 修改成自己的GitHub邮箱 - - git add . - - git commit -m "update by Travis-CI" - - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master # GH_token就是在travis中设置的token -branches: - only: - - dev # 只监测这个分支,一有动静就开始构建 -env: - global: - - GH_REF: github.com/BladeCode/BladeCode.github.io.git \ No newline at end of file + - npm install -g gulp + +addons: + browserstack: + username: "ivannginx1" + access_key: + secure: "NutOhdgtUdBUXMPZhy8X1F1Jq+tan1LeNOV0FArBt15SNlxtNArqhiyTi4XnG9MPruX4306aGF2RBrKso+OiGNRdGtRGngH613Q0GWNtlC/boMqnI7fHqLIyCs6S12y2uA8PK4Ifxg9bZ0VtCTYYbMy+p1KvBM//L12vmtfdnby8z5Qvex3tB3dLoPOR50CKkINHJVDLm+iVRFrdz4/83oDsulZSRRGIaxu5taDWPIcp3fYZtre2Nc+RXcsyFDyjN7U0Hvr5tKBbloJxXEQEBv2xLkMOtp85nmCPD06s1Il8Wus1ux3raVsfUyaW5FpNX37Jeb5e00RQUM1wgU5m75H6qiGwDvQswbugJG0i/a2nNfsgVmbrSZdMnkHcx2Uxmrw4ejyEP5NSrJSBi05Ck1fQ4UsZ4Qkdf1fd04SI0LpLWt43eoNO/7rHKsQoP4LCX9gxKUuC075NEBLODyJ529RYfA6dKKwwH6o0ZbOgASmCoAWaM65g4+FHRnJcKL/Kj9ZWklQtRa7/ynlHaA65jefFS2lB8Ut6d3rXDDBih9mIrwV1uUaEH96xgAN42bgU/vY6FGzNkDOYZqj4YfsepDM0wbOsslFie7JZq7iFjsYvrXqLvYUMk37AZwQ2Sb6uH4tIT4Qw/4oZfDzA1En3/8HdZJ28nKW/lzjwMSqheIY=" diff --git a/themes/next/LICENSE.md b/LICENSE.md similarity index 100% rename from themes/next/LICENSE.md rename to LICENSE.md diff --git a/README.md b/README.md index 545862920..89d7fe55c 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,90 @@ -

      - BladeCode -

      +
      官方文档: +:cn: +:ru:
      -![BladeCode](https://travis-ci.com/BladeCode/BladeCode.github.io.svg?branch=dev) +#
      e x T
      -### Thanks -1. [Node](https://nodejs.org) -2. [Hexo](https://hexo.io) -3. [Next](https://github.com/theme-next/hexo-theme-next) \ No newline at end of file +

      «NexT» is a high quality elegant Hexo theme. It is crafted from scratch, with love.

      + +

      + + + + + + +

      + +## 前言 +这是一个fork项目,在[源项目](https://github.com/theme-next/hexo-theme-next)的基础上,集成了以下第三方常用的工具库 +* [theme-next-algolia-instant-search](https://github.com/theme-next/theme-next-algolia-instant-search):即时搜索 +* [theme-next-bookmark](https://github.com/theme-next/theme-next-bookmark):书签,用户可以保存他们的阅读位置 +* [theme-next-fancybox3](https://github.com/theme-next/theme-next-fancybox3):图片预览 +* [theme-next-reading-progress](https://github.com/theme-next/theme-next-reading-progress):页面阅读进度加载 +* [theme-next-pace](https://github.com/theme-next/theme-next-pace):顶部装载栏 +* [theme-next-pangu](https://github.com/theme-next/theme-next-pangu):字符间空格处理 +* [theme-next-pdf](https://github.com/theme-next/theme-next-pdf):PDF文件预览支持 + +## 使用 + +### 安装主题 +在你的hexo项目中,安装已集成好的[NexT](https://github.com/RootCluster/hexo-theme-next)主题 +```bash +# 在你的 blog 根目录下执行 +git clone https://github.com/theme-next/hexo-theme-next themes/next +``` + +### 个性化配置 +在你的 blog 项目的根目录 `source/_data`中,创建`next.yml` + +copy`/themes/next/`路径下`_config.yml`的内容到`/source/_data/`路径的`next.yml`文件中 + +以下配置均在`next.yml`文件中 +* algolia-instant-search + ``` + algolia_search: + enable: true + ``` +* bookmark + ``` + bookmark: true + ``` +* fancybox + ``` + fancybox: true + ``` +* reading_progress + ``` + reading_progress: + enable: true + color: "#37c6c0" + height: 2px + ``` +* pace + ``` + pace: true + ``` +* pangu + ``` + pangu: true + ``` +* pdf + ``` + # PDF Support + pdf: + enable: true + + # Default(true) will load PDFObject/PDF.js script on demand + # That is it only render those page who has 'pdf: true' in Front Matter. + # If you set it to false, it will load PDFObject/PDF.js srcipt EVERY PAGE. + per_page: true + + height: 500px + + pdfobject: + # Use 2.1.1 as default, cloudflare as default CDN + cdn: //cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js + ``` + +## 更新 +具体操作查看[Git 子仓库管理](https://incoder.org/2018/05/17/git-sub/#git-subtree-%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C-%E9%87%8D%E7%82%B9) \ No newline at end of file diff --git a/_config.yml b/_config.yml index f9624c86c..1d49c1903 100644 --- a/_config.yml +++ b/_config.yml @@ -1,127 +1,1011 @@ -# Hexo Configuration -## Docs: https://hexo.io/docs/configuration.html -## Source: https://github.com/hexojs/hexo/ - -# Site -title: BladeCode -subtitle: Life's a struggle! -description: -keywords: -author: Jerry xu -language: zh-CN -timezone: - -# URL -## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/' -url: https://www.incoder.org -root: / -permalink: :year/:month/:day/:title/ -permalink_defaults: - -# Directory -source_dir: source -public_dir: public -tag_dir: tags -archive_dir: archives -category_dir: categories -code_dir: downloads/code -i18n_dir: :lang -skip_render: README.md - -# Writing -new_post_name: :title.md # File name of new posts -default_layout: post -titlecase: false # Transform title into titlecase -external_link: true # Open external links in new tab -filename_case: 0 -render_drafts: false -post_asset_folder: false -relative_link: false -future: true -highlight: +# --------------------------------------------------------------- +# Theme Core Configuration Settings +# --------------------------------------------------------------- + +# If false, merge configs from `_data/next.yml` into default configuration (rewrite). +# If true, will fully override default configuration by options from `_data/next.yml` (override). Only for NexT settings. +# And if true, all config from default NexT `_config.yml` must be copied into `next.yml`. Use if you know what you are doing. +# Useful if you want to comment some options from NexT `_config.yml` by `next.yml` without editing default config. +override: false + +# Allow to cache content generation. Introduced in NexT v6.0.0. +cache: enable: true - line_number: true - auto_detect: false - tab_replace: - -# Home page setting -# path: Root path for your blogs index page. (default = '') -# per_page: Posts displayed per page. (0 = disable pagination) -# order_by: Posts order. (Order by date descending by default) -index_generator: - path: '' - per_page: 10 - order_by: -date - -# Category & Tag -default_category: uncategorized -category_map: -tag_map: - -# Date / Time format -## Hexo uses Moment.js to parse and display date -## You can customize the date format as defined in -## http://momentjs.com/docs/#/displaying/format/ -date_format: YYYY-MM-DD -time_format: HH:mm:ss - -# Pagination -## Set per_page to 0 to disable pagination -per_page: 10 -pagination_dir: page - -# Extensions -## Plugins: https://hexo.io/plugins/ - -# RSS订阅支持 -plugin: -- hexo-generator-feed -# Feed Atom -feed: - type: atom - path: atom.xml - limit: 20 - -## Themes: https://hexo.io/themes/ -theme: next - -# Deployment -## Docs: https://hexo.io/docs/deployment.html -deploy: -- type: git -- type: leancloud_counter_security_sync - repo: https://github.com/BladeCode/BladeCode.github.io.git - branch: master - -githubEmojis: + +# Redefine custom file paths. Introduced in NexT v6.0.2. +# If commented, will be used default custom file paths. + +# For example, you want to put your custom styles file +# outside theme directory in root `source/_data`, set +# `styles: source/_data/styles.styl` +#custom_file_path: + # Default paths: layout/_custom/* + #head: source/_data/head.swig + #header: source/_data/header.swig + #sidebar: source/_data/sidebar.swig + + # Default path: source/css/_variables/custom.styl + #variables: source/_data/variables.styl + # Default path: source/css/_mixins/custom.styl + #mixins: source/_data/mixins.styl + # Default path: source/css/_custom/custom.styl + #styles: source/_data/styles.styl + + +# --------------------------------------------------------------- +# Site Information Settings +# --------------------------------------------------------------- + +# To get or check favicons visit: https://realfavicongenerator.net +# Put your favicons into `hexo-site/source/` (recommend) or `hexo-site/themes/next/source/images/` directory. + +# Default NexT favicons placed in `hexo-site/themes/next/source/images/` directory. +# And if you want to place your icons in `hexo-site/source/` root directory, you must remove `/images` prefix from pathes. + +# For example, you put your favicons into `hexo-site/source/images` directory. +# Then need to rename & redefine they on any other names, otherwise icons from Next will rewrite your custom icons in Hexo. +favicon: + small: /images/favicon-16x16-next.png + medium: /images/favicon-32x32-next.png + apple_touch_icon: /images/apple-touch-icon-next.png + safari_pinned_tab: /images/logo.svg + #android_manifest: /images/manifest.json + #ms_browserconfig: /images/browserconfig.xml + +# Set rss to false to disable feed link. +# Leave rss as empty to use site's feed link, and install hexo-generator-feed: `npm install hexo-generator-feed --save`. +# Set rss to specific value if you have burned your feed already. +rss: + +footer: + # Specify the date when the site was setup. + # If not defined, current year will be used. + #since: 2015 + + # Icon between year and copyright info. + icon: + # Icon name in fontawesome, see: https://fontawesome.com/v4.7.0/icons + # `heart` is recommended with animation in red (#ff0000). + name: user + # If you want to animate the icon, set it to true. + animated: false + # Change the color of icon, using Hex Code. + color: "#808080" + + # If not defined, will be used `author` from Hexo main config. + copyright: + # ------------------------------------------------------------- + powered: + # Hexo link (Powered by Hexo). + enable: true + # Version info of Hexo after Hexo link (vX.X.X). + version: true + + theme: + # Theme & scheme info link (Theme - NexT.scheme). + enable: true + # Version info of NexT after scheme info (vX.X.X). + version: true + # ------------------------------------------------------------- + # Beian icp information for Chinese users. In China, every legal website should have a beian icp in website footer. + # http://www.miitbeian.gov.cn/ + beian: + enable: false + icp: + + # ------------------------------------------------------------- + # Any custom text can be defined here. + #custom_text: Hosted by Coding Pages + +# --------------------------------------------------------------- +# SEO Settings +# --------------------------------------------------------------- + +# Canonical, set a canonical link tag in your hexo, you could use it for your SEO of blog. +# See: https://support.google.com/webmasters/answer/139066 +# Tips: Before you open this tag, remember set up your URL in hexo _config.yml ( ex. url: http://yourdomain.com ) +canonical: true + +# Change headers hierarchy on site-subtitle (will be main site description) and on all post/pages titles for better SEO-optimization. +seo: false + +# If true, will add site-subtitle to index page, added in main hexo config. +# subtitle: Subtitle +index_with_subtitle: false + + +# --------------------------------------------------------------- +# Menu Settings +# --------------------------------------------------------------- + +# When running the site in a subdirectory (e.g. domain.tld/blog), remove the leading slash from link value (/archives -> archives). +# Usage: `Key: /link/ || icon` +# Key is the name of menu item. If translate for this menu will find in languages - this translate will be loaded; if not - Key name will be used. Key is case-senstive. +# Value before `||` delimeter is the target link. +# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, question icon will be loaded. +menu: + home: / || home + #about: /about/ || user + #tags: /tags/ || tags + #categories: /categories/ || th + archives: /archives/ || archive + #schedule: /schedule/ || calendar + #sitemap: /sitemap.xml || sitemap + #commonweal: /404/ || heartbeat + +# Enable/Disable menu icons / item badges. +menu_settings: + icons: true + badges: false + +# --------------------------------------------------------------- +# Scheme Settings +# --------------------------------------------------------------- + +# Schemes +scheme: Muse +#scheme: Mist +#scheme: Pisces +#scheme: Gemini + + +# --------------------------------------------------------------- +# Sidebar Settings +# --------------------------------------------------------------- + +# Posts / Categories / Tags in sidebar. +site_state: true + +# Social Links. +# Usage: `Key: permalink || icon` +# Key is the link label showing to end users. +# Value before `||` delimeter is the target permalink. +# Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, globe icon will be loaded. +#social: + #GitHub: https://github.com/yourname || github + #E-Mail: mailto:yourname@gmail.com || envelope + #Google: https://plus.google.com/yourname || google + #Twitter: https://twitter.com/yourname || twitter + #FB Page: https://www.facebook.com/yourname || facebook + #VK Group: https://vk.com/yourname || vk + #StackOverflow: https://stackoverflow.com/yourname || stack-overflow + #YouTube: https://youtube.com/yourname || youtube + #Instagram: https://instagram.com/yourname || instagram + #Skype: skype:yourname?call|chat || skype + +social_icons: enable: true - className: github-emoji - unicode: false - styles: - localEmojis: + icons_only: false + transition: false + # Dependencies: exturl: true in Tags Settings section below. + # To encrypt links above use https://www.base64encode.org + # Example encoded link: `GitHub: aHR0cHM6Ly9naXRodWIuY29tL3RoZW1lLW5leHQ= || github` + exturl: false + +# Follow me on GitHub banner in right-top corner. +# Usage: `permalink || title` +# Value before `||` delimeter is the target permalink. +# Value after `||` delimeter is the title and aria-label name. +#github_banner: https://github.com/yourname || Follow me on GitHub + +# Blog rolls +links_icon: link +links_title: Links +links_layout: block +#links_layout: inline +#links: + #Title: http://example.com/ + +# Sidebar Avatar +avatar: + # in theme directory(source/images): /images/avatar.gif + # in site directory(source/uploads): /uploads/avatar.gif + # You can also use other linking images. + url: #/images/avatar.gif + # If true, the avatar would be dispalyed in circle. + rounded: false + # The value of opacity should be choose from 0 to 1 to set the opacity of the avatar. + opacity: 1 + # If true, the avatar would be rotated with the cursor. + rotated: false + +# Table Of Contents in the Sidebar +toc: + enable: true + + # Automatically add list number to toc. + number: true + + # If true, all words will placed on next lines if header width longer then sidebar width. + wrap: false + +# Creative Commons 4.0 International License. +# http://creativecommons.org/ +# Available: by | by-nc | by-nc-nd | by-nc-sa | by-nd | by-sa | zero +#creative_commons: by-nc-sa +#creative_commons: + +sidebar: + # Sidebar Position, available value: left | right (only for Pisces | Gemini). + position: left + #position: right + + # Manual define the sidebar width. + # If commented, will be default for: + # Muse | Mist: 320 + # Pisces | Gemini: 240 + #width: 300 -# hexo-symbols-count-time + # Sidebar Display, available value (only for Muse | Mist): + # - post expand on posts automatically. Default. + # - always expand for all pages automatically + # - hide expand only when click on the sidebar toggle icon. + # - remove Totally remove sidebar including sidebar toggle. + display: post + #display: always + #display: hide + #display: remove + + # Sidebar offset from top menubar in pixels (only for Pisces | Gemini). + offset: 12 + + # Back to top in sidebar (only for Pisces | Gemini). + b2t: false + + # Scroll percent label in b2t button. + scrollpercent: false + + # Enable sidebar on narrow view (only for Muse | Mist). + onmobile: false + + +# --------------------------------------------------------------- +# Post Settings +# --------------------------------------------------------------- + +# Automatically scroll page to section which is under mark. +scroll_to_more: true + +# Automatically saving scroll position on each post/page in cookies. +save_scroll: false + +# Automatically excerpt description in homepage as preamble text. +excerpt_description: true + +# Automatically Excerpt. Not recommend. +# Please use in the post to control excerpt accurately. +auto_excerpt: + enable: false + length: 150 + +# Read more button +# If true, the read more button would be displayed in excerpt section +read_more_btn: true + +# Post meta display settings +post_meta: + item_text: true + created_at: true + updated_at: + enabled: true + # If true, show updated date label only if `updated date` different from 'created date' (post edited in another day than was created). + # And if post will edited in same day as created, edited time will show in popup title under created time label. + # If false show anyway, but if post edited in same day, show only edited time. + another_day: true + categories: true + +# Post wordcount display settings +# Dependencies: https://github.com/theme-next/hexo-symbols-count-time symbols_count_time: - symbols: true - time: true - total_symbols: true - total_time: true - -search: - path: search.xml - field: post - format: html - limit: 10000 - -douban: - user: incoder - book: - title: '书中自有黄金屋' - quote: '只有学习才能让我快乐~' - movie: - title: '有人的地方,就有江湖' - quote: '时光追忆!' - game: - title: '那时候太年轻' - quote: '游戏可以重来,人生呢?' - timeout: 10000 # optional \ No newline at end of file + separated_meta: true + item_text_post: true + item_text_total: false + awl: 4 + wpm: 275 + +codeblock: + # Manual define the border radius in codeblock + # Leave it empty for the default 1 + border_radius: + # Add copy button on codeblock + copy_button: + enable: false + # Show text copy result + show_result: false + +# Wechat Subscriber +#wechat_subscriber: + #enabled: true + #qcode: /path/to/your/wechatqcode ex. /uploads/wechat-qcode.jpg + #description: ex. subscribe to my blog by scanning my public wechat account + +# Reward +#reward_comment: Donate comment here +#wechatpay: /images/wechatpay.jpg +#alipay: /images/alipay.jpg +#bitcoin: /images/bitcoin.png + +# Related popular posts +# Dependencies: https://github.com/tea3/hexo-related-popular-posts +related_posts: + enable: false + title: # custom header, leave empty to use the default one + display_in_home: false + params: + maxCount: 5 + #PPMixingRate: 0.0 + #isDate: false + #isImage: false + #isExcerpt: false + +# Declare license on posts +post_copyright: + enable: false + license: CC BY-NC-SA 4.0 + +# Post edit +# Dependencies: https://github.com/hexojs/hexo-deployer-git +post_edit: + enable: false + url: https://github.com/theme-next/theme-next.org/_posts/tree/master/ # Link for view source. +# url: https://github.com/theme-next/theme-next.org/_posts/edit/master/ # Link for fork & edit. + + +# --------------------------------------------------------------- +# Misc Theme Settings +# --------------------------------------------------------------- + +# Reduce padding / margin indents on devices with narrow width. +mobile_layout_economy: false + +# Android Chrome header panel color ($brand-bg / $headband-bg => $black-deep). +android_chrome_color: "#222" + +# Custom Logo. +# !!Only available for Default Scheme currently. +# Options: +# enabled: [true/false] - Replace with specific image +# image: url-of-image - Images's url +custom_logo: + enabled: false + image: + +# Code Highlight theme +# Available values: normal | night | night eighties | night blue | night bright +# https://github.com/chriskempson/tomorrow-theme +highlight_theme: normal + +# Enable "cheers" for archive page. +cheers_enabled: true + + +# --------------------------------------------------------------- +# Font Settings +# - Find fonts on Google Fonts (https://www.google.com/fonts) +# - All fonts set here will have the following styles: +# light, light italic, normal, normal italic, bold, bold italic +# - Be aware that setting too much fonts will cause site running slowly +# - Introduce in 5.0.1 +# --------------------------------------------------------------- +# CAUTION! Safari Version 10.1.2 bug: https://github.com/iissnan/hexo-theme-next/issues/1844 +# To avoid space between header and sidebar in Pisces / Gemini themes recommended to use Web Safe fonts for `global` (and `logo`): +# Arial | Tahoma | Helvetica | Times New Roman | Courier New | Verdana | Georgia | Palatino | Garamond | Comic Sans MS | Trebuchet MS +# --------------------------------------------------------------- +font: + enable: false + + # Uri of fonts host. E.g. //fonts.googleapis.com (Default). + host: + + # Font options: + # `external: true` will load this font family from `host` above. + # `family: Times New Roman`. Without any quotes. + # `size: xx`. Use `px` as unit. + + # Global font settings used for all elements in . + global: + external: true + family: Lato + size: + + # Font settings for Headlines (H1, H2, H3, H4, H5, H6). + # Fallback to `global` font settings. + headings: + external: true + family: + size: + + # Font settings for posts. + # Fallback to `global` font settings. + posts: + external: true + family: + + # Font settings for Logo. + # Fallback to `global` font settings. + logo: + external: true + family: + size: + + # Font settings for and code blocks. + codes: + external: true + family: + size: + + +# --------------------------------------------------------------- +# Third Party Services Settings +# --------------------------------------------------------------- + +# Math Equations Render Support +math: + enable: false + + # Default(true) will load mathjax/katex script on demand + # That is it only render those page who has 'mathjax: true' in Front Matter. + # If you set it to false, it will load mathjax/katex srcipt EVERY PAGE. + per_page: true + + engine: mathjax + #engine: katex + + # hexo-rendering-pandoc (or hexo-renderer-kramed) needed to full MathJax support. + mathjax: + # Use 2.7.1 as default, jsdelivr as default CDN, works everywhere even in China + cdn: //cdn.jsdelivr.net/npm/mathjax@2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML + # For newMathJax CDN (cdnjs.cloudflare.com) with fallback to oldMathJax (cdn.mathjax.org). + #cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML + # For direct link to MathJax.js with CloudFlare CDN (cdnjs.cloudflare.com). + #cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML + + # hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin) + # needed to full Katex support. + katex: + # Use 0.7.1 as default, jsdelivr as default CDN, works everywhere even in China + cdn: //cdn.jsdelivr.net/npm/katex@0.7.1/dist/katex.min.css + # CDNJS, provided by cloudflare, maybe the best CDN, but not works in China + #cdn: //cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css + +# Han Support +# Dependencies: https://github.com/theme-next/theme-next-han +han: false + +# Pangu Support +# Dependencies: https://github.com/theme-next/theme-next-pangu +# For more information: https://github.com/vinta/pangu.js +pangu: false + +# Swiftype Search API Key +#swiftype_key: + +# Baidu Analytics ID +#baidu_analytics: + +# Growingio Analytics ID +# Copyright 2015-2018 GrowingIO, Inc. More info available at http://www.growingio.com +#growingio_analytics: #your projectId + +# Disqus +disqus: + enable: false + shortname: + count: true + lazyload: false + +# changyan +changyan: + enable: false + appid: + appkey: + + +# Valine. +# You can get your appid and appkey from https://leancloud.cn +# more info please open https://valine.js.org +valine: + enable: false # When enable is set to be true, leancloud_visitors is recommended to be closed for the re-initialization problem within different leancloud adk version. + appid: # your leancloud application appid + appkey: # your leancloud application appkey + notify: false # mail notifier , https://github.com/xCss/Valine/wiki + verify: false # Verification code + placeholder: Just go go # comment box placeholder + avatar: mm # gravatar style + guest_info: nick,mail,link # custom comment header + pageSize: 10 # pagination size + visitor: false # leancloud-counter-security is not supported for now. When visitor is set to be true, appid and appkey are recommended to be the same as leancloud_visitors' for counter compatibility. Article reading statistic https://valine.js.org/visitor.html + +# Support for LiveRe comments system. +# You can get your uid from https://livere.com/insight/myCode (General web site) +#livere_uid: your uid + +# Gitment +# Introduction: https://imsun.net/posts/gitment-introduction/ +gitment: + enable: false + mint: true # RECOMMEND, A mint on Gitment, to support count, language and proxy_gateway + count: true # Show comments count in post meta area + lazy: false # Comments lazy loading with a button + cleanly: false # Hide 'Powered by ...' on footer, and more + language: # Force language, or auto switch by theme + github_user: # MUST HAVE, Your Github Username + github_repo: # MUST HAVE, The name of the repo you use to store Gitment comments + client_id: # MUST HAVE, Github client id for the Gitment + client_secret: # EITHER this or proxy_gateway, Github access secret token for the Gitment + proxy_gateway: # Address of api proxy, See: https://github.com/aimingoo/intersect + redirect_protocol: # Protocol of redirect_uri with force_redirect_protocol when mint enabled + +# Baidu Share +# Available value: +# button | slide +# Warning: Baidu Share does not support https. +#baidushare: +## type: button + +# addthis Share, see: https://www.addthis.com/ +#add_this_id: + +# NeedMoreShare2 +# Dependencies: https://github.com/theme-next/theme-next-needmoreshare2 +# See: https://github.com/revir/need-more-share2 +# Also see: https://github.com/DzmVasileusky/needShareButton +# iconStyle: default | box +# boxForm: horizontal | vertical +# position: top / middle / bottom + Left / Center / Right +# networks: Weibo,Wechat,Douban,QQZone,Twitter,Linkedin,Mailto,Reddit, +# Delicious,StumbleUpon,Pinterest,Facebook,GooglePlus,Slashdot, +# Technorati,Posterous,Tumblr,GoogleBookmarks,Newsvine, +# Evernote,Friendfeed,Vkontakte,Odnoklassniki,Mailru +needmoreshare2: + enable: false + postbottom: + enable: false + options: + iconStyle: box + boxForm: horizontal + position: bottomCenter + networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook + float: + enable: false + options: + iconStyle: box + boxForm: horizontal + position: middleRight + networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook + +# Google Webmaster tools verification setting +# See: https://www.google.com/webmasters/ +#google_site_verification: + +# Google Analytics +#google_analytics: + +# Bing Webmaster tools verification setting +# See: https://www.bing.com/webmaster/ +#bing_site_verification: + +# Yandex Webmaster tools verification setting +# See: https://webmaster.yandex.ru/ +#yandex_site_verification: + +# Baidu Webmaster tools verification setting +# See: https://ziyuan.baidu.com/site/ +#baidu_site_verification: + +# CNZZ count +#cnzz_siteid: + +# Application Insights +# See https://azure.microsoft.com/en-us/services/application-insights/ +# application_insights: + +# Post widgets & FB/VK comments settings. +# --------------------------------------------------------------- +# Facebook SDK Support. +# https://github.com/iissnan/hexo-theme-next/pull/410 +facebook_sdk: + enable: false + app_id: # + fb_admin: # + like_button: #true + webmaster: #true + +# Facebook comments plugin +# This plugin depends on Facebook SDK. +# If facebook_sdk.enable is false, Facebook comments plugin is unavailable. +facebook_comments_plugin: + enable: false + num_of_posts: 10 # min posts num is 1 + width: 100% # default width is 550px + scheme: light # default scheme is light (light or dark) + +# VKontakte API Support. +# To get your AppID visit https://vk.com/editapp?act=create +vkontakte_api: + enable: false + app_id: # + like: true + comments: true + num_of_posts: 10 + +# Star rating support to each article. +# To get your ID visit https://widgetpack.com +rating: + enable: false + id: # + color: fc6423 +# --------------------------------------------------------------- + +# Show number of visitors to each article. +# You can visit https://leancloud.cn get AppID and AppKey. +leancloud_visitors: + enable: false + app_id: # + app_key: # + # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security + # If you don't care about security in lc counter and just want to use it directly + # (without hexo-leancloud-counter-security plugin), set the `security` to `false`. + security: true + betterPerformance: false + +# Another tool to show number of visitors to each article. +# visit https://console.firebase.google.com/u/0/ to get apiKey and projectId +# visit https://firebase.google.com/docs/firestore/ to get more information about firestore +firestore: + enable: false + collection: articles #required, a string collection name to access firestore database + apiKey: #required + projectId: #required + bluebird: false #enable this if you want to include bluebird 3.5.1(core version) Promise polyfill + +# Show Views/Visitors of the website/page with busuanzi. +# Get more information on http://ibruce.info/2015/04/04/busuanzi/ +busuanzi_count: + enable: false + total_visitors: true + total_visitors_icon: user + total_views: true + total_views_icon: eye + post_views: true + post_views_icon: eye + + +# Tencent analytics ID +# tencent_analytics: + +# Tencent MTA ID +# tencent_mta: + + +# Enable baidu push so that the blog will push the url to baidu automatically which is very helpful for SEO +baidu_push: false + +# Google Calendar +# Share your recent schedule to others via calendar page +# +# API Documentation: +# https://developers.google.com/google-apps/calendar/v3/reference/events/list +# Enabled APIs and services +# api_key: https://console.developers.google.com/ +# Create & manage a public Google calendar: https://support.google.com/calendar/answer/37083?hl=en +calendar: + enable: false + calendar_id: # Your Google account E-Mail + api_key: + orderBy: startTime + offsetMax: 24 # Time Range + offsetMin: 4 # Time Range + timeZone: + showDeleted: false + singleEvents: true + maxResults: 250 + +# Algolia Search +# See: https://github.com/theme-next/hexo-theme-next/blob/master/docs/ALGOLIA-SEARCH.md +# Dependencies: https://github.com/theme-next/theme-next-algolia-instant-search +algolia_search: + enable: false + hits: + per_page: 10 + labels: + input_placeholder: Search for Posts + hits_empty: "We didn't find any results for the search: ${query}" + hits_stats: "${hits} results found in ${time} ms" + +# Local search +# Dependencies: https://github.com/theme-next/hexo-generator-searchdb +local_search: + enable: false + # if auto, trigger search by changing input + # if manual, trigger search by pressing enter key or search button + trigger: auto + # show top n results per article, show all results by setting to -1 + top_n_per_article: 1 + # unescape html strings to the readable one + unescape: false + +# Bookmark Support +# Dependencies: https://github.com/theme-next/theme-next-bookmark +bookmark: + enable: false + # if auto + # - save the reading position when closing the page + # - or clicking the bookmark-icon + # if manual, only save it by clicking the bookmark-icon + save: auto + + +# --------------------------------------------------------------- +# Tags Settings +# --------------------------------------------------------------- + +# External URL with BASE64 encrypt & decrypt. +# Usage: {% exturl text url "title" %} +# Alias: {% extlink text url "title" %} +exturl: false + +# Note tag (bs-callout). +note: + # Note tag style values: + # - simple bs-callout old alert style. Default. + # - modern bs-callout new (v2-v3) alert style. + # - flat flat callout style with background, like on Mozilla or StackOverflow. + # - disabled disable all CSS styles import of note tag. + style: simple + icons: false + border_radius: 3 + # Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6). + # Offset also applied to label tag variables. This option can work with disabled note tag. + light_bg_offset: 0 + +# Label tag. +label: true + +# Tabs tag. +tabs: + enable: true + transition: + tabs: false + labels: true + border_radius: 0 + +# Reading progress bar +# Dependencies: https://github.com/theme-next/theme-next-reading-progress +reading_progress: + enable: false + color: "#37c6c0" + height: 2px + + +#! --------------------------------------------------------------- +#! DO NOT EDIT THE FOLLOWING SETTINGS +#! UNLESS YOU KNOW WHAT YOU ARE DOING +#! --------------------------------------------------------------- + +# Use velocity to animate everything. +motion: + enable: true + async: false + transition: + # Transition variants: + # fadeIn | fadeOut | flipXIn | flipXOut | flipYIn | flipYOut | flipBounceXIn | flipBounceXOut | flipBounceYIn | flipBounceYOut + # swoopIn | swoopOut | whirlIn | whirlOut | shrinkIn | shrinkOut | expandIn | expandOut + # bounceIn | bounceOut | bounceUpIn | bounceUpOut | bounceDownIn | bounceDownOut | bounceLeftIn | bounceLeftOut | bounceRightIn | bounceRightOut + # slideUpIn | slideUpOut | slideDownIn | slideDownOut | slideLeftIn | slideLeftOut | slideRightIn | slideRightOut + # slideUpBigIn | slideUpBigOut | slideDownBigIn | slideDownBigOut | slideLeftBigIn | slideLeftBigOut | slideRightBigIn | slideRightBigOut + # perspectiveUpIn | perspectiveUpOut | perspectiveDownIn | perspectiveDownOut | perspectiveLeftIn | perspectiveLeftOut | perspectiveRightIn | perspectiveRightOut + post_block: fadeIn + post_header: slideDownIn + post_body: slideDownIn + coll_header: slideLeftIn + # Only for Pisces | Gemini. + sidebar: slideUpIn + +# Fancybox. There is support for old version 2 and new version 3. +# Please, choose only any one variant, do not need to install both. +# For install 2.x: https://github.com/theme-next/theme-next-fancybox +# For install 3.x: https://github.com/theme-next/theme-next-fancybox3 +fancybox: false + +# Added switch option for separated repo in 6.0.0. +# Dependencies: https://github.com/theme-next/theme-next-fastclick +fastclick: false + +# Added switch option for separated repo in 6.0.0. +# Dependencies: https://github.com/theme-next/theme-next-jquery-lazyload +lazyload: false + +# Progress bar in the top during page loading. +# Dependencies: https://github.com/theme-next/theme-next-pace +pace: false +# Themes list: +#pace-theme-big-counter +#pace-theme-bounce +#pace-theme-barber-shop +#pace-theme-center-atom +#pace-theme-center-circle +#pace-theme-center-radar +#pace-theme-center-simple +#pace-theme-corner-indicator +#pace-theme-fill-left +#pace-theme-flash +#pace-theme-loading-bar +#pace-theme-mac-osx +#pace-theme-minimal +# For example +# pace_theme: pace-theme-center-simple +pace_theme: pace-theme-minimal + +# Canvas-nest +# Dependencies: https://github.com/theme-next/theme-next-canvas-nest +canvas_nest: false + +# JavaScript 3D library. +# Dependencies: https://github.com/theme-next/theme-next-three +# three_waves +three_waves: false +# canvas_lines +canvas_lines: false +# canvas_sphere +canvas_sphere: false + +# Only fit scheme Pisces +# Dependencies: https://github.com/theme-next/theme-next-canvas-ribbon +# Canvas-ribbon +# size: The width of the ribbon. +# alpha: The transparency of the ribbon. +# zIndex: The display level of the ribbon. +canvas_ribbon: + enable: false + size: 300 + alpha: 0.6 + zIndex: -1 + +# Script Vendors. +# Set a CDN address for the vendor you want to customize. +# For example +# jquery: https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js +# Be aware that you should use the same version as internal ones to avoid potential problems. +# Please use the https protocol of CDN files when you enable https on your site. +vendors: + # Internal path prefix. Please do not edit it. + _internal: lib + + # Internal version: 2.1.3 + # Example: + # jquery: //cdn.jsdelivr.net/npm/jquery@2.1.3/dist/jquery.min.js + # jquery: //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js + jquery: + + # Internal version: 2.1.5 + # See: http://fancyapps.com/fancybox/ + # Example: + # fancybox: //cdn.jsdelivr.net/npm/fancybox@3.0.0/dist/js/jquery.fancybox.pack.js + # fancybox_css: //cdn.jsdelivr.net/npm/fancybox@3.0.0/dist/css/jquery.fancybox.min.css + # fancybox: //cdnjs.cloudflare.com/ajax/libs/fancybox/3.2.5/jquery.fancybox.min.js + # fancybox_css: //cdnjs.cloudflare.com/ajax/libs/fancybox/3.2.5/jquery.fancybox.min.css + fancybox: + fancybox_css: + + # Internal version: 1.0.6 + # See: https://github.com/ftlabs/fastclick + # Example: + # fastclick: //cdn.jsdelivr.net/npm/fastclick@1.0.6/lib/fastclick.min.js + fastclick: + + # Internal version: 1.9.7 + # See: https://github.com/tuupola/jquery_lazyload + # lazyload: //cdn.jsdelivr.net/npm/jquery_lazyload@1.9.3/jquery.lazyload.min.js + lazyload: + + # Internal version: 1.2.1 + # See: http://VelocityJS.org + # Example: + # velocity: https://cdn.jsdelivr.net/npm/velocity-animate@1.2.1/velocity.min.js + # velocity: https://cdnjs.cloudflare.com/ajax/libs/velocity/1.2.1/velocity.min.js + velocity: + + # Internal version: 1.2.1 + # See: http://VelocityJS.org + # velocity_ui: //cdn.jsdelivr.net/npm/velocity-animate@1.2.1/velocity.ui.min.js + # velocity_ui: //cdnjs.cloudflare.com/ajax/libs/velocity/1.2.1/velocity.ui.min.js + velocity_ui: + + # Internal version: 0.7.9 + # See: https://faisalman.github.io/ua-parser-js/ + # Example: + # ua_parser: //cdn.jsdelivr.net/npm/ua-parser-js@0.7.17/src/ua-parser.min.js + # ua_parser: //cdnjs.cloudflare.com/ajax/libs/UAParser.js/0.7.9/ua-parser.min.js + ua_parser: + + # Internal version: 4.6.2 + # See: http://fontawesome.io/ + # Example: + # fontawesome: //cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css + # fontawesome: //cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.2/css/font-awesome.min.css + fontawesome: + + # Internal version: 1 + # https://www.algolia.com + # Example: + # algolia_instant_js: //cdn.jsdelivr.net/npm/instantsearch.js@2.4.1/dist/instantsearch.js + # algolia_instant_css: //cdn.jsdelivr.net/npm/instantsearch.js@2.4.1/dist/instantsearch.min.css + algolia_instant_js: + algolia_instant_css: + + # Internal version: 1.0.2 + # See: https://github.com/HubSpot/pace + # Example: + # pace: //cdn.jsdelivr.net/npm/pace-js@1.0.2/pace.min.js + # pace: //cdnjs.cloudflare.com/ajax/libs/pace/1.0.2/pace.min.js + # pace_css: //cdn.jsdelivr.net/npm/pace-js@1.0.2/themes/blue/pace-theme-minimal.css + # pace_css: //cdnjs.cloudflare.com/ajax/libs/pace/1.0.2/themes/blue/pace-theme-minimal.min.css + pace: + pace_css: + + # Internal version: 1.0.0 + # https://github.com/hustcc/canvas-nest.js + # Example: + # canvas_nest: //cdn.jsdelivr.net/npm/canvas-nest.js@1.0.1/dist/canvas-nest.min.js + # canvas_nest: //cdnjs.cloudflare.com/ajax/libs/canvas-nest.js/1.0.1/canvas-nest.min.js + canvas_nest: + + # Internal version: 1.0.0 + # See: https://github.com/theme-next/theme-next-three + # Example: + # three: //cdn.jsdelivr.net/gh/theme-next/theme-next-three@1.0.0/three.min.js + # three_waves: //cdn.jsdelivr.net/gh/theme-next/theme-next-three@1.0.0/three-waves.min.js + # canvas_lines: //cdn.jsdelivr.net/gh/theme-next/theme-next-three@1.0.0/canvas_lines.min.js + # canvas_sphere: //cdn.jsdelivr.net/gh/theme-next/theme-next-three@1.0.0/canvas_sphere.min.js + three: + three_waves: + canvas_lines: + canvas_sphere: + + # Internal version: 1.0.0 + # https://github.com/zproo/canvas-ribbon + canvas_ribbon: + + # Internal version: 3.3.0 + # https://github.com/ethantw/Han + Han: + + # Internal version: 3.3.0 + # https://github.com/vinta/pangu.js + # Example: + # pangu: //cdn.jsdelivr.net/npm/pangu@3.3.0/dist/browser/pangu.min.js + # pangu: //cdnjs.cloudflare.com/ajax/libs/pangu/3.3.0/pangu.min.js + pangu: + + # needMoreShare2 + # https://github.com/revir/need-more-share2 + # Example: + # needmoreshare2_js: //cdn.jsdelivr.net/gh/theme-next/theme-next-needmoreshare2@1.0.0/needsharebutton.min.js + # needmoreshare2_css: //cdn.jsdelivr.net/gh/theme-next/theme-next-needmoreshare2@1.0.0/needsharebutton.min.css + needmoreshare2_js: + needmoreshare2_css: + + # bookmark + # Internal version: 1.0.0 + # https://github.com/theme-next/theme-next-bookmark + # Example: + # bookmark: //cdn.jsdelivr.net/gh/theme-next/theme-next-bookmark@1.0.0/bookmark.min.js + bookmark: + + # reading_progress + # Internal version: 1.0 + # https://github.com/theme-next/theme-next-reading-progress + # Example: + # reading_progress: //cdn.jsdelivr.net/gh/theme-next/theme-next-reading-progress@1.1/reading_progress.min.js + reading_progress: + + # valine comment + # Example: https://cdn.jsdelivr.net/npm/valine@1.1.8/dist/Valine.min.js + valine: + + +# Assets +css: css +js: js +images: images diff --git a/themes/next/bower.json b/bower.json similarity index 96% rename from themes/next/bower.json rename to bower.json index 0354dc066..344389f42 100644 --- a/themes/next/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "theme-next", - "version": "6.3.0", + "version": "6.4.2", "homepage": "https://theme-next.org", "authors": [ "NexT (https://theme-next.org)" diff --git a/themes/next/crowdin.yml b/crowdin.yml similarity index 100% rename from themes/next/crowdin.yml rename to crowdin.yml diff --git a/themes/next/docs/AGPL3.md b/docs/AGPL3.md similarity index 100% rename from themes/next/docs/AGPL3.md rename to docs/AGPL3.md diff --git a/themes/next/docs/ALGOLIA-SEARCH.md b/docs/ALGOLIA-SEARCH.md similarity index 100% rename from themes/next/docs/ALGOLIA-SEARCH.md rename to docs/ALGOLIA-SEARCH.md diff --git a/themes/next/docs/AUTHORS.md b/docs/AUTHORS.md similarity index 100% rename from themes/next/docs/AUTHORS.md rename to docs/AUTHORS.md diff --git a/themes/next/docs/DATA-FILES.md b/docs/DATA-FILES.md similarity index 100% rename from themes/next/docs/DATA-FILES.md rename to docs/DATA-FILES.md diff --git a/themes/next/docs/INSTALLATION.md b/docs/INSTALLATION.md similarity index 100% rename from themes/next/docs/INSTALLATION.md rename to docs/INSTALLATION.md diff --git a/themes/next/docs/LEANCLOUD-COUNTER-SECURITY.md b/docs/LEANCLOUD-COUNTER-SECURITY.md similarity index 100% rename from themes/next/docs/LEANCLOUD-COUNTER-SECURITY.md rename to docs/LEANCLOUD-COUNTER-SECURITY.md diff --git a/themes/next/docs/LICENSE b/docs/LICENSE similarity index 100% rename from themes/next/docs/LICENSE rename to docs/LICENSE diff --git a/themes/next/docs/MATH.md b/docs/MATH.md similarity index 96% rename from themes/next/docs/MATH.md rename to docs/MATH.md index 0a757dbd5..76498ff04 100644 --- a/themes/next/docs/MATH.md +++ b/docs/MATH.md @@ -211,16 +211,12 @@ math: cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML # For direct link to MathJax.js with CloudFlare CDN (cdnjs.cloudflare.com). #cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML - # For automatic detect latest version link to MathJax.js and get from Bootcdn. - #cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML # hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin) # needed to full Katex support. katex: # Use Katex 0.7.1 as default cdn: //cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css - # For whose visitors are mostly in China - #cdn: //cdn.bootcss.com/KaTeX/0.7.1/katex.min.css # If you want to try the latest version of Katex, use one below instead #cdn: //cdn.jsdelivr.net/katex/latest/katex.min.css ``` @@ -279,7 +275,7 @@ Firstly, both MathJax and Katex use the [jsDelivr](https://www.jsdelivr.com/) as The reason that jsDelivr is chosen is because it is fast everywhere, and jsDelivr has the valid ICP license issued by the Chinese government, it can be accessed in China pretty well. -And we also provide other optional CDNs, including the famous [CDNJS](https://cdnjs.com/) and the [Bootcss](http://www.bootcdn.cn/) which has the quite high access speed in China. +And we also provide other optional CDNs, including the famous [CDNJS](https://cdnjs.com/). For MathJax, we are currently using version 2.7.1. diff --git a/themes/next/docs/UPDATE-FROM-5.1.X.md b/docs/UPDATE-FROM-5.1.X.md similarity index 100% rename from themes/next/docs/UPDATE-FROM-5.1.X.md rename to docs/UPDATE-FROM-5.1.X.md diff --git a/themes/next/docs/ru/DATA-FILES.md b/docs/ru/DATA-FILES.md similarity index 100% rename from themes/next/docs/ru/DATA-FILES.md rename to docs/ru/DATA-FILES.md diff --git a/themes/next/docs/ru/INSTALLATION.md b/docs/ru/INSTALLATION.md similarity index 100% rename from themes/next/docs/ru/INSTALLATION.md rename to docs/ru/INSTALLATION.md diff --git a/themes/next/docs/ru/README.md b/docs/ru/README.md similarity index 70% rename from themes/next/docs/ru/README.md rename to docs/ru/README.md index 9b11d9628..75f243a5e 100644 --- a/themes/next/docs/ru/README.md +++ b/docs/ru/README.md @@ -6,21 +6,20 @@

      «NexT» — элегантная высококачественная тема под Hexo. Сделана с нуля, с любовью.

      -[![gitter-image]][gitter-url] -[![riot-image]][riot-url] -[![t-chat-image]][t-chat-url] -[![t-news-image]][t-news-url] -[![lang-image]][lang-url] -[![travis-image]][travis-url] -[![rel-image]][releases-url] -[![hexo-image]][hexo-url] -[![lic-image]][lic-url] +

      + + + + + + +

      ## Демо -* :heart_decoration: Muse тема: [LEAFERx](https://leaferx.online) | [XiaMo](https://notes.wanghao.work) | [OAwan](https://oawan.me) +* :heart_decoration: Muse тема: [LEAFERx](https://leaferx.online) | [Alex LEE](http://saili.science) | [Miaia](https://11.tt) * :six_pointed_star: Mist тема: [Jeff](https://blog.zzbd.org) | [uchuhimo](http://uchuhimo.me) | [xirong](http://www.ixirong.com) -* :pisces: Pisces тема: [Vi](http://notes.iissnan.com) | [Acris](https://acris.me) | [Rainy](https://rainylog.com) +* :pisces: Pisces тема: [Vi](http://notes.iissnan.com) | [Acris](https://acris.me) | [Jiaxi He](http://jiaxi.io) * :gemini: Gemini тема: [Ivan.Nginx](https://almostover.ru) | [Raincal](https://raincal.com) | [Dandy](https://dandyxu.me) Больше примеров «NexT» [здесь](https://github.com/iissnan/hexo-theme-next/issues/119). @@ -75,6 +74,15 @@ $ git pull Приветсвуется любое содействие, не стесняйтесь сообщать «Баги», брать «Форки» и вливать «Пулы». +## Обратная связь + +* Задать вопрос на [Stack Overflow][stack-url]. +* Запросить новую возможность на [GitHub][contributing-url]. +* Голосовать за [популярные запросы возможностей][feat-req-vote-url]. +* Сообщить об ошибке в разделе [GitHub Issues][issues-url]. +* Вступить в наши [Gitter][gitter-url] / [Riot][riot-url] / [Telegram][t-chat-url] чаты. +* Подписаться на новости через [канал Telegram'а][t-news-url]. + ## Сторонние приложения * :triangular_flag_on_post: HexoEditor @@ -82,37 +90,23 @@ $ git pull [browser-image]: https://img.shields.io/badge/browser-%20chrome%20%7C%20firefox%20%7C%20opera%20%7C%20safari%20%7C%20ie%20%3E%3D%209-lightgrey.svg [browser-url]: https://www.browserstack.com -[lang-image]: https://d322cqt584bo4o.cloudfront.net/theme-next/localized.svg "Добавить или улучшить перевод за несколько секунд!" -[lang-url]: https://crwd.in/theme-next +[stack-url]: https://stackoverflow.com/questions/tagged/theme-next +[contributing-url]: https://github.com/theme-next/hexo-theme-next/blob/master/.github/CONTRIBUTING.md +[feat-req-vote-url]: https://github.com/theme-next/hexo-theme-next/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc +[issues-url]: https://github.com/theme-next/hexo-theme-next/issues -[gitter-image]: https://img.shields.io/badge/gitter-chat-orange.svg "Вступить в нашу комнату Gitter'а" [gitter-url]: https://gitter.im/theme-next - -[riot-image]: https://img.shields.io/badge/riot-chat-DCAB08.svg "Вступить в нашу комнату Riot'а" [riot-url]: https://riot.im/app/#/room/#NexT:matrix.org - -[t-chat-image]: https://img.shields.io/badge/telegram-chat-BAB210.svg "Вступить в нашу группу Telegram'а" [t-chat-url]: https://t.me/theme_next - -[t-news-image]: https://img.shields.io/badge/telegram-news-98B919.svg "Подписаться на канал Telegram'а с новостями" [t-news-url]: https://t.me/theme_next_news -[travis-image]: https://travis-ci.org/theme-next/hexo-theme-next.svg?branch=master -[travis-url]: https://travis-ci.org/theme-next/hexo-theme-next?branch=master "Travis CI [Linux]" - -[hexo-image]: https://img.shields.io/badge/hexo-%3E%3D%203.5.0-blue.svg -[hexo-url]: http://hexo.io - -[lic-image]: https://img.shields.io/badge/license-%20AGPL-blue.svg -[lic-url]: https://github.com/theme-next/hexo-theme-next/blob/master/LICENSE.md - -[rel-image]: https://badge.fury.io/gh/theme-next%2Fhexo-theme-next.svg + [download-latest-url]: https://github.com/theme-next/hexo-theme-next/archive/master.zip [releases-latest-url]: https://github.com/theme-next/hexo-theme-next/releases/latest -[releases-url]: https://github.com/theme-next/hexo-theme-next/releases + [tags-url]: https://github.com/theme-next/hexo-theme-next/tags [commits-url]: https://github.com/theme-next/hexo-theme-next/commits/master diff --git a/themes/next/docs/ru/UPDATE-FROM-5.1.X.md b/docs/ru/UPDATE-FROM-5.1.X.md similarity index 100% rename from themes/next/docs/ru/UPDATE-FROM-5.1.X.md rename to docs/ru/UPDATE-FROM-5.1.X.md diff --git a/themes/next/docs/zh-CN/ALGOLIA-SEARCH.md b/docs/zh-CN/ALGOLIA-SEARCH.md similarity index 100% rename from themes/next/docs/zh-CN/ALGOLIA-SEARCH.md rename to docs/zh-CN/ALGOLIA-SEARCH.md diff --git a/themes/next/docs/zh-CN/CODE_OF_CONDUCT.md b/docs/zh-CN/CODE_OF_CONDUCT.md similarity index 100% rename from themes/next/docs/zh-CN/CODE_OF_CONDUCT.md rename to docs/zh-CN/CODE_OF_CONDUCT.md diff --git a/themes/next/docs/zh-CN/CONTRIBUTING.md b/docs/zh-CN/CONTRIBUTING.md similarity index 79% rename from themes/next/docs/zh-CN/CONTRIBUTING.md rename to docs/zh-CN/CONTRIBUTING.md index 4025fea89..263d9aadd 100644 --- a/themes/next/docs/zh-CN/CONTRIBUTING.md +++ b/docs/zh-CN/CONTRIBUTING.md @@ -20,6 +20,7 @@ * [行为规范](#coding-rules) * [编码规范](#coding-standards) + * [标签规范](#labels-rules) * [提交信息规范](#commit-messages-rules) @@ -123,6 +124,60 @@ 未完待续。 + +### 标签规范 + +为了方便维护人员和用户能够快速找到他们想要查看的问题,我们使用“标签”功能对拉取请求和问题进行分类。 + +如果您不确定某个标签的含义,或者不知道将哪些标签应用于拉取请求或问题,千万别错过这个。 + +Issues 的标签:使用`类型`+`内容`+`结果`的组合 + +- 类型 + - `Irrelevant`: 与主题 Next 无关的 Issue + - `Duplicate`: 已经存在同样 Issue + - `Bug`: 提出了 Bug,等待确认 + - `Discussion`: 需要讨论的 Issue + - `Question`: 有关咨询的 Issue + - `Feature-Request`: 提出了特性需求的 Issue + - `Backlog`: 待解决的 Issue +- 内容 + - `Roadmap`: 与主题 Next 发展相关的 Issue + - `Hexo`: 与 Hexo 相关的 Issue + - `Scheme [1] - Mist`: 与样式 Mist 相关的 Issue + - `Scheme [2] - Muse`: 与样式 Muse 相关的 Issue + - `Scheme [3] - Pisces`: 与样式 Pisces 相关的 Issue + - `Scheme [4] - Gemini`: 与样式 Gemini 相关的 Issue + - `3rd party service`: 与第三方服务相关的 Issue + - `Docs`: 需要添加文档说明的 Issue + - `Configurations`: 与主题 Next 设置相关的 Issue + - `CSS`: 与主题 Next CSS 文件相关的 Issue + - `Custom`: 与主题 Next 个性化相关的 Issue + - `Optimization`: 需要进行优化的 Issue +- 结果 + - `Wontfix`: 不能或不被修复的 Issue + - `Need More Info`: 需要更多信息的 Issue + - `Need Confirm`: 需要开发人员或用户确认的 Issue + - `Can't Reproduce`: 不能被重现的 Issue + - `Verified`: 已经被确认的 Issue + - `Help wanted`: 需要帮助的 Issue + - `Wait for Answer`: 需要开发人员或用户回复的 Issue + - `Resolved Maybe`: 可能已经解决的 Issue + - `Solved`: 已经解决的 Issue + - `Stale`: 由于长期无人回应被封存的 Issue + +Pull requests 的标签: + +- `Breaking Change`: 涉及主题 Next 重大架构的 Pull request +- `Bugfix`: 修复 Bug 的 Pull request +- `Docs`: 添加了文档说明的 Pull request +- `Feature`: 添加了新特性的 Pull request +- `Configurations`: 涉及主题 Next 配置的 Pull request +- `Optimization`: 优化了主题 Next 的 Pull request +- `i18n`: 更新了翻译的 Pull request +- `Performance`: 提高了主题 Next 性能的 Pull request +- `Discussion`: 需要进行讨论的 Pull request + ### 提交信息规范 diff --git a/themes/next/docs/zh-CN/DATA-FILES.md b/docs/zh-CN/DATA-FILES.md similarity index 100% rename from themes/next/docs/zh-CN/DATA-FILES.md rename to docs/zh-CN/DATA-FILES.md diff --git a/themes/next/docs/zh-CN/INSTALLATION.md b/docs/zh-CN/INSTALLATION.md similarity index 100% rename from themes/next/docs/zh-CN/INSTALLATION.md rename to docs/zh-CN/INSTALLATION.md diff --git a/themes/next/docs/zh-CN/LEANCLOUD-COUNTER-SECURITY.md b/docs/zh-CN/LEANCLOUD-COUNTER-SECURITY.md similarity index 100% rename from themes/next/docs/zh-CN/LEANCLOUD-COUNTER-SECURITY.md rename to docs/zh-CN/LEANCLOUD-COUNTER-SECURITY.md diff --git a/themes/next/docs/zh-CN/MATH.md b/docs/zh-CN/MATH.md similarity index 96% rename from themes/next/docs/zh-CN/MATH.md rename to docs/zh-CN/MATH.md index fcb096e72..5bc3b7907 100644 --- a/themes/next/docs/zh-CN/MATH.md +++ b/docs/zh-CN/MATH.md @@ -218,8 +218,6 @@ math: #cdn: //cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML # For direct link to MathJax.js with CloudFlare CDN (cdnjs.cloudflare.com). #cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML - # For automatic detect latest version link to MathJax.js and get from Bootcss. - #cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML # hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin) # needed to full Katex support. @@ -228,8 +226,6 @@ math: cdn: //cdn.jsdelivr.net/npm/katex@0.7.1/dist/katex.min.css # CDNJS, provided by cloudflare, maybe the best CDN, but not works in China #cdn: //cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css - # Bootcss, works great in China, but not so well in other region - #cdn: //cdn.bootcss.com/KaTeX/0.7.1/katex.min.css ``` ### enable @@ -286,7 +282,7 @@ MathJax 和 Katex 都提供了 `cdn` 的配置,如果你不知道什么是 `cd 之所以选择 jsDelivr 是因为它在全球各地都有比较不错的速度,而且具有中国官方颁布的 ICP 证书,在中国也能比较好地访问。 -同时,我们也提供了其他的 CDN 备选方案,包括著名的 [CDNJS](https://cdnjs.com/) 和在中国地区具有不错访问效果的 [Bootcss](http://www.bootcdn.cn/)。 +同时,我们也提供了其他的 CDN 备选方案,包括著名的 [CDNJS](https://cdnjs.com/)。 对于 MathJax 来说,我们目前采用的版本为 2.7.1。 diff --git a/themes/next/docs/zh-CN/README.md b/docs/zh-CN/README.md similarity index 69% rename from themes/next/docs/zh-CN/README.md rename to docs/zh-CN/README.md index be209f975..c8bd69fa2 100644 --- a/themes/next/docs/zh-CN/README.md +++ b/docs/zh-CN/README.md @@ -6,21 +6,20 @@

      «NexT» 是一款风格优雅的高质量 Hexo 主题,自点点滴滴中用爱雕琢而成。

      -[![gitter-image]][gitter-url] -[![riot-image]][riot-url] -[![t-chat-image]][t-chat-url] -[![t-news-image]][t-news-url] -[![lang-image]][lang-url] -[![travis-image]][travis-url] -[![rel-image]][releases-url] -[![hexo-image]][hexo-url] -[![lic-image]][lic-url] +

      + + + + + + +

      ## 即时预览 -* :heart_decoration: Muse 主题: [LEAFERx](https://leaferx.online) | [XiaMo](https://notes.wanghao.work) | [OAwan](https://oawan.me) +* :heart_decoration: Muse 主题: [LEAFERx](https://leaferx.online) | [Alex LEE](http://saili.science) | [Miaia](https://11.tt) * :six_pointed_star: Mist 主题: [Jeff](https://blog.zzbd.org) | [uchuhimo](http://uchuhimo.me) | [xirong](http://www.ixirong.com) -* :pisces: Pisces 主题: [Vi](http://notes.iissnan.com) | [Acris](https://acris.me) | [Rainy](https://rainylog.com) +* :pisces: Pisces 主题: [Vi](http://notes.iissnan.com) | [Acris](https://acris.me) | [Jiaxi He](http://jiaxi.io) * :gemini: Gemini 主题: [Ivan.Nginx](https://almostover.ru) | [Raincal](https://raincal.com) | [Dandy](https://dandyxu.me) 更多 «NexT» 的例子参见[这里](https://github.com/iissnan/hexo-theme-next/issues/119)。 @@ -92,6 +91,15 @@ $ git pull 我们欢迎你贡献出你的一份力量,你可以随时提交 issue 或 fork 本仓库。静候你的 pull request。 +## Feedback + +* Ask a question on [Stack Overflow][stack-url]. +* Request a new feature on [GitHub][contributing-url]. +* Vote for [popular feature requests][feat-req-vote-url]. +* Report a bug in [GitHub Issues][issues-url]. +* Join to our [Gitter][gitter-url] / [Riot][riot-url] / [Telegram][t-chat-url] chats. +* Follow us with [Telegram Channel][t-news-url] for latest news. + ## 第三方應用程序 * :triangular_flag_on_post: HexoEditor @@ -99,37 +107,23 @@ $ git pull [browser-image]: https://img.shields.io/badge/browser-%20chrome%20%7C%20firefox%20%7C%20opera%20%7C%20safari%20%7C%20ie%20%3E%3D%209-lightgrey.svg [browser-url]: https://www.browserstack.com -[lang-image]: https://d322cqt584bo4o.cloudfront.net/theme-next/localized.svg "请花几秒钟来添加或修正翻译!" -[lang-url]: https://crwd.in/theme-next +[stack-url]: https://stackoverflow.com/questions/tagged/theme-next +[contributing-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/zh-CN/CONTRIBUTING.md +[feat-req-vote-url]: https://github.com/theme-next/hexo-theme-next/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc +[issues-url]: https://github.com/theme-next/hexo-theme-next/issues -[gitter-image]: https://img.shields.io/badge/gitter-chat-orange.svg "Join to our Gitter room" [gitter-url]: https://gitter.im/theme-next - -[riot-image]: https://img.shields.io/badge/riot-chat-DCAB08.svg "Join to our Riot room" [riot-url]: https://riot.im/app/#/room/#NexT:matrix.org - -[t-chat-image]: https://img.shields.io/badge/telegram-chat-BAB210.svg "Join to our Telegram group" [t-chat-url]: https://t.me/theme_next - -[t-news-image]: https://img.shields.io/badge/telegram-news-98B919.svg "Join to our Telegram news channel" [t-news-url]: https://t.me/theme_next_news -[travis-image]: https://travis-ci.org/theme-next/hexo-theme-next.svg?branch=master -[travis-url]: https://travis-ci.org/theme-next/hexo-theme-next?branch=master "Travis CI [Linux]" - -[hexo-image]: https://img.shields.io/badge/hexo-%3E%3D%203.5.0-blue.svg -[hexo-url]: http://hexo.io - -[lic-image]: https://img.shields.io/badge/license-%20AGPL-blue.svg -[lic-url]: https://github.com/theme-next/hexo-theme-next/blob/master/LICENSE.md - -[rel-image]: https://badge.fury.io/gh/theme-next%2Fhexo-theme-next.svg + [download-latest-url]: https://github.com/theme-next/hexo-theme-next/archive/master.zip [releases-latest-url]: https://github.com/theme-next/hexo-theme-next/releases/latest -[releases-url]: https://github.com/theme-next/hexo-theme-next/releases + [tags-url]: https://github.com/theme-next/hexo-theme-next/tags [commits-url]: https://github.com/theme-next/hexo-theme-next/commits/master diff --git a/themes/next/docs/zh-CN/UPDATE-FROM-5.1.X.md b/docs/zh-CN/UPDATE-FROM-5.1.X.md similarity index 88% rename from themes/next/docs/zh-CN/UPDATE-FROM-5.1.X.md rename to docs/zh-CN/UPDATE-FROM-5.1.X.md index 9a1547aad..ab097eac1 100644 --- a/themes/next/docs/zh-CN/UPDATE-FROM-5.1.X.md +++ b/docs/zh-CN/UPDATE-FROM-5.1.X.md @@ -26,4 +26,10 @@ ``` 如此,你的 `next-reloaded` 主题将在生成站点时被加载。如果你遇到了任何错误、或只是不喜欢这一新版本,你可以随时切换回旧的 v5.1.x 版本。 +4. 更新语言配置 + + 从 v6.0.3版本起,`zh-Hans`改名为`zh-CN`:https://github.com/theme-next/hexo-theme-next/releases/tag/v6.0.3 + + 升级到v6.0.3及以后版本的用户,需要显式修改`_config.xml`里的language配置,否则语言显示不正确。 + 关于第三方库的启用,参见[这里](https://github.com/theme-next/hexo-theme-next/blob/master/docs/zh-CN/INSTALLATION.md#插件)。 diff --git a/themes/next/gulpfile.coffee b/gulpfile.coffee similarity index 100% rename from themes/next/gulpfile.coffee rename to gulpfile.coffee diff --git a/themes/next/languages/de.yml b/languages/de.yml similarity index 100% rename from themes/next/languages/de.yml rename to languages/de.yml diff --git a/themes/next/languages/default.yml b/languages/default.yml similarity index 100% rename from themes/next/languages/default.yml rename to languages/default.yml diff --git a/themes/next/languages/en.yml b/languages/en.yml similarity index 100% rename from themes/next/languages/en.yml rename to languages/en.yml diff --git a/themes/next/languages/fr.yml b/languages/fr.yml similarity index 100% rename from themes/next/languages/fr.yml rename to languages/fr.yml diff --git a/themes/next/languages/id.yml b/languages/id.yml similarity index 100% rename from themes/next/languages/id.yml rename to languages/id.yml diff --git a/themes/next/languages/it.yml b/languages/it.yml similarity index 100% rename from themes/next/languages/it.yml rename to languages/it.yml diff --git a/themes/next/languages/ja.yml b/languages/ja.yml similarity index 60% rename from themes/next/languages/ja.yml rename to languages/ja.yml index 7935e8ba0..c41700911 100644 --- a/themes/next/languages/ja.yml +++ b/languages/ja.yml @@ -9,45 +9,45 @@ menu: archives: アーカイブ categories: カテゴリ tags: タグ - about: About + about: について search: 検索 schedule: スケジュール sitemap: サイトマップ - commonweal: Commonweal 404 + commonweal: 公益 404 sidebar: overview: 概要 toc: 見出し post: posted: 投稿日 - edited: Edited on - created: 作成された時間 - modified: Updated at - edit: Edit this post - in: In - more: more + edited: に編集されました + created: 建てられる + modified: 修正する + edit: この記事を編集する + in: 分類された + more: もっと見る read_more: 続きを読む untitled: 無題 sticky: 固定 toc_empty: 見出しがありません - views: Views + views: 閲覧数 comments_count: コメント - related_posts: Related Posts - copy_button: Copy - copy_success: Copied - copy_failure: Copy failed + related_posts: 関連記事 + copy_button: コピー + copy_success: コピーしました + copy_failure: コピーに失敗しました copyright: author: 著者 - link: Post link + link: 記事へのリンク license_title: 著作権表示 - license_content: "All articles in this blog are licensed under %s unless stating additionally." + license_content: "このブログ内のすべての記事は、特別な記載がない限り %s の下のライセンスで保護されています。" page: totally: 全ページ tags: タグ footer: powered: "Powered by %s" theme: テーマ - total_views: Total Views - total_visitors: Total Visitors + total_views: 閲覧合計数 + total_visitors: 合計閲覧者数 counter: tag_cloud: zero: タグなし @@ -81,18 +81,18 @@ symbol: period: "。" colon: ":" reward: - donate: Donate + donate: 寄付 wechatpay: WeChat 支払う alipay: Alipay - bitcoin: Bitcoin + bitcoin: ビットコイン gitmentbutton: Gitment からのコメントを表示 accessibility: - nav_toggle: Toggle navigation bar - prev_page: Previous page - next_page: Next page + nav_toggle: ナビゲーションバーの切り替え + prev_page: 前のページ + next_page: 次のページ symbols_count_time: - count: Symbols count in article - count_total: Symbols count total - time: Reading time - time_total: Reading time total - time_minutes: mins. + count: 単語数 + count_total: 単語の総数 + time: 読書の時間 + time_total: 読書の合計時間 + time_minutes: 分 diff --git a/themes/next/languages/ko.yml b/languages/ko.yml similarity index 100% rename from themes/next/languages/ko.yml rename to languages/ko.yml diff --git a/themes/next/languages/nl.yml b/languages/nl.yml similarity index 100% rename from themes/next/languages/nl.yml rename to languages/nl.yml diff --git a/themes/next/languages/pt-BR.yml b/languages/pt-BR.yml similarity index 100% rename from themes/next/languages/pt-BR.yml rename to languages/pt-BR.yml diff --git a/themes/next/languages/pt.yml b/languages/pt.yml similarity index 100% rename from themes/next/languages/pt.yml rename to languages/pt.yml diff --git a/themes/next/languages/ru.yml b/languages/ru.yml similarity index 100% rename from themes/next/languages/ru.yml rename to languages/ru.yml diff --git a/themes/next/languages/tr.yml b/languages/tr.yml similarity index 100% rename from themes/next/languages/tr.yml rename to languages/tr.yml diff --git a/themes/next/languages/vi.yml b/languages/vi.yml similarity index 100% rename from themes/next/languages/vi.yml rename to languages/vi.yml diff --git a/themes/next/languages/zh-CN.yml b/languages/zh-CN.yml similarity index 98% rename from themes/next/languages/zh-CN.yml rename to languages/zh-CN.yml index 4fc0eb8d1..0d828c89c 100644 --- a/themes/next/languages/zh-CN.yml +++ b/languages/zh-CN.yml @@ -9,8 +9,6 @@ menu: archives: 归档 categories: 分类 tags: 标签 - books: 阅读 - movies: 电影 about: 关于 search: 搜索 schedule: 日程表 diff --git a/themes/next/languages/zh-HK.yml b/languages/zh-HK.yml similarity index 100% rename from themes/next/languages/zh-HK.yml rename to languages/zh-HK.yml diff --git a/themes/next/languages/zh-TW.yml b/languages/zh-TW.yml similarity index 100% rename from themes/next/languages/zh-TW.yml rename to languages/zh-TW.yml diff --git a/themes/next/layout/_custom/head.swig b/layout/_custom/head.swig similarity index 100% rename from themes/next/layout/_custom/head.swig rename to layout/_custom/head.swig diff --git a/themes/next/layout/_custom/header.swig b/layout/_custom/header.swig similarity index 100% rename from themes/next/layout/_custom/header.swig rename to layout/_custom/header.swig diff --git a/themes/next/layout/_custom/sidebar.swig b/layout/_custom/sidebar.swig similarity index 100% rename from themes/next/layout/_custom/sidebar.swig rename to layout/_custom/sidebar.swig diff --git a/themes/next/layout/_layout.swig b/layout/_layout.swig similarity index 92% rename from themes/next/layout/_layout.swig rename to layout/_layout.swig index 23019f2fa..823df861b 100644 --- a/themes/next/layout/_layout.swig +++ b/layout/_layout.swig @@ -80,7 +80,18 @@
      {% endif %} + + {% if theme.baidushare and theme.baidushare.type === "slide" %} +
      + {% include '_partials/share/baidushare.swig' %} +
      + {% endif %} + {% if theme.add_this_id %} +
      + {% include '_partials/share/add-this.swig' %} +
      + {% endif %}
      {% include '_scripts/vendors.swig' %} @@ -98,6 +109,7 @@ {% include '_third-party/analytics/lean-analytics.swig' %} {% include '_third-party/analytics/firestore.swig' %} {% include '_third-party/seo/baidu-push.swig' %} + {% include '_third-party/schedule.swig' %} {% include '_third-party/math/index.swig' %} {% include '_third-party/needsharebutton.swig' %} {% include '_third-party/rating.swig' %} diff --git a/themes/next/layout/_macro/menu/menu-badge.swig b/layout/_macro/menu/menu-badge.swig similarity index 100% rename from themes/next/layout/_macro/menu/menu-badge.swig rename to layout/_macro/menu/menu-badge.swig diff --git a/themes/next/layout/_macro/menu/menu-item.swig b/layout/_macro/menu/menu-item.swig similarity index 100% rename from themes/next/layout/_macro/menu/menu-item.swig rename to layout/_macro/menu/menu-item.swig diff --git a/themes/next/layout/_macro/post-collapse.swig b/layout/_macro/post-collapse.swig similarity index 100% rename from themes/next/layout/_macro/post-collapse.swig rename to layout/_macro/post-collapse.swig diff --git a/themes/next/layout/_macro/post-copyright.swig b/layout/_macro/post-copyright.swig similarity index 84% rename from themes/next/layout/_macro/post-copyright.swig rename to layout/_macro/post-copyright.swig index fd3d9c09a..50ce4a2a1 100644 --- a/themes/next/layout/_macro/post-copyright.swig +++ b/layout/_macro/post-copyright.swig @@ -9,6 +9,6 @@
    • {{ __('post.copyright.license_title') + __('symbol.colon') }} {# - #}{{ post.copyright | default(__('post.copyright.license_content', theme.post_copyright.license)) }}{# + #}{{ __('post.copyright.license_content', theme.post_copyright.license) }}{# #}
    diff --git a/themes/next/layout/_macro/post-related.swig b/layout/_macro/post-related.swig similarity index 100% rename from themes/next/layout/_macro/post-related.swig rename to layout/_macro/post-related.swig diff --git a/themes/next/layout/_macro/post.swig b/layout/_macro/post.swig similarity index 89% rename from themes/next/layout/_macro/post.swig rename to layout/_macro/post.swig index 880a76c21..4c2e21935 100644 --- a/themes/next/layout/_macro/post.swig +++ b/layout/_macro/post.swig @@ -112,11 +112,7 @@ {% endif %} {% endif %} {% endif %} @@ -173,18 +169,6 @@ data-disqus-identifier="{{ post.path }}" itemprop="commentCount"> - {% elseif theme.hypercomments_id %} - - - - - - - - - {% elseif theme.changyan.enable and theme.changyan.appid and theme.changyan.appkey %} @@ -224,7 +208,7 @@ {% endif %} {# LeanCould PageView #} - {% if theme.leancloud_visitors.enable %} + {% if theme.leancloud_visitors.enable or (theme.valine.enable and theme.valine.appid and theme.valine.appkey and theme.valine.visitor) %}
{% endif %} - + {% if display_toc and toc(page.content).length > 1 %} -
+
- {% if page.toc_number === undefined %} - {% set toc = toc(page.content, { "class": "nav", list_number: theme.toc.number }) %} - {% else %} - {% set toc = toc(page.content, { "class": "nav", list_number: page.toc_number }) %} + {% set next_toc_number = theme.toc.number %} + {% if page.toc_number !== undefined %} + {% set next_toc_number = page.toc_number %} {% endif %} + {% set next_toc_max_depth = page.toc_max_depth|default(theme.toc.max_depth)|default(6) %} + {% set toc = toc(page.content, { "class": "nav", list_number: next_toc_number, max_depth: next_toc_max_depth }) %} {% if toc.length <= 1 %}

{{ __('post.toc_empty') }}

@@ -174,7 +171,7 @@ {% endif %}
-
+ {% endif %} diff --git a/layout/_macro/wechat-subscriber.swig b/layout/_macro/wechat-subscriber.swig deleted file mode 100644 index aa0fdbc84..000000000 --- a/layout/_macro/wechat-subscriber.swig +++ /dev/null @@ -1,4 +0,0 @@ -
- {{ author }} wechat -
{{ theme.wechat_subscriber.description }}
-
diff --git a/layout/_partials/comments.swig b/layout/_partials/comments.swig index b690b1f89..b8f9f7dc2 100644 --- a/layout/_partials/comments.swig +++ b/layout/_partials/comments.swig @@ -10,44 +10,48 @@ - {% elseif theme.vkontakte_api.enable and theme.vkontakte_api.comments %} + {% elif theme.vkontakte_api.enable and theme.vkontakte_api.comments %}
- {% elseif theme.disqus.enable %} + {% elif theme.disqus.enable %}
- +
- {% elseif theme.livere_uid %} + {% elif theme.livere_uid %}
- {% elseif theme.changyan.enable and theme.changyan.appid and theme.changyan.appkey %} + {% elif theme.changyan.enable and theme.changyan.appid and theme.changyan.appkey %}
- {% elseif theme.gitment.enable %} + {% elif theme.gitment.enable %}
{% if theme.gitment.lazy %}
{{ __('gitmentbutton') }}
- + {% else %}
{% endif %}
- {% elseif theme.valine.enable and theme.valine.appid and theme.valine.appkey %} + {% elif theme.valine.enable and theme.valine.appid and theme.valine.appkey %}
+ + {% elif theme.gitalk.enable %} +
+
+ {% endif %} {% endif %} diff --git a/layout/_partials/footer.swig b/layout/_partials/footer.swig index 208a3111d..bcf15ef65 100644 --- a/layout/_partials/footer.swig +++ b/layout/_partials/footer.swig @@ -1,14 +1,14 @@ -{% if theme.seo %} - {% set nofollow = ' rel="external nofollow"' %} -{% endif %} - {% if theme.footer.powered.enable %}
{# - #}{{ __('footer.powered', 'Hexo') }}{% if theme.footer.powered.version %} v{{ hexo_env('version') }}{% endif %}{# -#}
+ #}{{ __('footer.powered', next_url('https://hexo.io', 'Hexo', {class: 'theme-link'})) }}{# + #}{% if theme.footer.powered.version %} v{{ hexo_env('version') }}{% endif %}{# + #} {% endif %} {% if theme.footer.powered.enable and theme.footer.theme.enable %} @@ -53,10 +50,8 @@ {% if theme.footer.theme.enable %}
{# - #}{{ __('footer.theme') }} – {# - #}{# - #}NexT.{{ theme.scheme }}{# - #}{% if theme.footer.theme.version %} v{{ version }}{% endif %}{# + #}{{ __('footer.theme') }} – {{ next_url('https://theme-next.org', 'NexT.' + theme.scheme, {class: 'theme-link'}) }}{# + #}{% if theme.footer.theme.version %} v{{ version }}{% endif %}{# #}
{% endif %} diff --git a/layout/_partials/github-banner.swig b/layout/_partials/github-banner.swig new file mode 100644 index 000000000..9666cff84 --- /dev/null +++ b/layout/_partials/github-banner.swig @@ -0,0 +1,10 @@ +{% if theme.github_banner %} + {% set github_banner_bg_color = theme.android_chrome_color %} + {% set github_banner_fg_color = '#fff' %} + {% set github_URL = theme.github_banner.split('||')[0] | trim %} + {% set github_title = theme.github_banner.split('||')[1] | trim %} + + {% set github_image = '' %} + + {{ next_url(github_URL, github_image, {class: 'github-corner', title: github_title, "aria-label": github_title}) }} +{% endif %} diff --git a/layout/_partials/head/external-fonts.swig b/layout/_partials/head/external-fonts.swig index 876e12e7b..17b8517b1 100644 --- a/layout/_partials/head/external-fonts.swig +++ b/layout/_partials/head/external-fonts.swig @@ -45,7 +45,7 @@ {% if font_families !== '' %} {% set font_families += '&subset=latin,latin-ext' %} {% set font_host = font_config.host | default('//fonts.googleapis.com') %} - + {% endif %} {% endif %} diff --git a/layout/_partials/head/head-unique.swig b/layout/_partials/head/head-unique.swig index 9c1a14828..8aa87021e 100644 --- a/layout/_partials/head/head-unique.swig +++ b/layout/_partials/head/head-unique.swig @@ -11,7 +11,7 @@ {% set theme.rss = config.feed.path %} {% endif %} {% if theme.rss %} - + {% endif %} {# Canonical, good for google search engine (SEO) : https://support.google.com/webmasters/answer/139066 #} @@ -20,7 +20,7 @@ {% endif %} {# Exports some front-matter variables to Front-End #} - - + {% endif %} - {% if theme.han %} {% set Han_uri = url_for(theme.vendors._internal + '/Han/dist/han.min.css?v=3.3') %} - {% if theme.vendors.Han %} - {% set Han_uri = theme.vendors.Han %} + {% if theme.vendors.han %} + {% set Han_uri = theme.vendors.han %} {% endif %} - + {% endif %} - -{# #238, Disable Baidu tranformation #} - - - +{% if theme.disable_baidu_tranformation %} + + +{% endif %} {% if theme.google_site_verification %} - + {% endif %} {% if theme.bing_site_verification %} - + {% endif %} {% if theme.yandex_site_verification %} - + {% endif %} - {% if theme.baidu_site_verification %} - + {% endif %} - {% if theme.qihu_site_verification %} - + {% endif %} - {% if theme.fancybox %} {% set fancybox_css_uri = url_for(theme.vendors._internal + '/fancybox/source/jquery.fancybox.css?v=2.1.5') %} {% if theme.vendors.fancybox_css %} {% set fancybox_css_uri = theme.vendors.fancybox_css %} {% endif %} - + {% endif %} {% include "./external-fonts.swig" %} @@ -78,9 +71,9 @@ {% if theme.vendors.fontawesome %} {% set font_awesome_uri = theme.vendors.fontawesome %} {% endif %} - + - + {% if theme.favicon.apple_touch_icon %} @@ -98,18 +91,16 @@ {% endif %} {% if theme.favicon.ms_browserconfig %} - + {% endif %} - {% if theme.facebook_sdk.enable and theme.facebook_sdk.webmaster %} - - + + {% endif %} - {# Export some HEXO Configurations to Front-End #} - + diff --git a/layout/_partials/share/baidushare.swig b/layout/_partials/share/baidushare.swig index 6be489844..d30f6a464 100644 --- a/layout/_partials/share/baidushare.swig +++ b/layout/_partials/share/baidushare.swig @@ -30,7 +30,7 @@ } } -{% elseif theme.baidushare.type === "slide" %} +{% elif theme.baidushare.type === "slide" %} + {% endfor %} diff --git a/layout/_scripts/commons.swig b/layout/_scripts/commons.swig index c99e72766..f0b8bc812 100644 --- a/layout/_scripts/commons.swig +++ b/layout/_scripts/commons.swig @@ -6,5 +6,5 @@ %} {% for common in js_commons %} - + {% endfor %} diff --git a/layout/_scripts/noscript.swig b/layout/_scripts/noscript.swig index 6f9140898..b4d0941cb 100644 --- a/layout/_scripts/noscript.swig +++ b/layout/_scripts/noscript.swig @@ -1,26 +1,24 @@ diff --git a/layout/_scripts/pages/post-details.swig b/layout/_scripts/pages/post-details.swig index c9f7634fb..d88b89a3a 100644 --- a/layout/_scripts/pages/post-details.swig +++ b/layout/_scripts/pages/post-details.swig @@ -1,2 +1,2 @@ - - + + diff --git a/layout/_scripts/schemes/gemini.swig b/layout/_scripts/schemes/gemini.swig index 676db4e12..14a3f9feb 100644 --- a/layout/_scripts/schemes/gemini.swig +++ b/layout/_scripts/schemes/gemini.swig @@ -1,10 +1 @@ -{% - set scripts = [ - 'src/affix.js', - 'src/schemes/pisces.js' - ] -%} - -{% for script in scripts %} - -{% endfor %} +{% include 'pisces.swig' %} diff --git a/layout/_scripts/schemes/mist.swig b/layout/_scripts/schemes/mist.swig index e69de29bb..e18aaff23 100644 --- a/layout/_scripts/schemes/mist.swig +++ b/layout/_scripts/schemes/mist.swig @@ -0,0 +1 @@ +{% include 'muse.swig' %} diff --git a/layout/_scripts/schemes/muse.swig b/layout/_scripts/schemes/muse.swig index e69de29bb..0e94a1e2d 100644 --- a/layout/_scripts/schemes/muse.swig +++ b/layout/_scripts/schemes/muse.swig @@ -0,0 +1,9 @@ +{% + set scripts = [ + 'src/schemes/muse.js' + ] +%} + +{% for script in scripts %} + +{% endfor %} diff --git a/layout/_scripts/schemes/pisces.swig b/layout/_scripts/schemes/pisces.swig index 676db4e12..227ebc42d 100644 --- a/layout/_scripts/schemes/pisces.swig +++ b/layout/_scripts/schemes/pisces.swig @@ -6,5 +6,5 @@ %} {% for script in scripts %} - + {% endfor %} diff --git a/layout/_scripts/vendors.swig b/layout/_scripts/vendors.swig index 5e8bf01e4..272357c57 100644 --- a/layout/_scripts/vendors.swig +++ b/layout/_scripts/vendors.swig @@ -1,61 +1,72 @@ {# Reset `window.Promise` when it was not a function. #} {# IE refers the element whose id is `Promise` as `window.Promise`, this causes Velocity throwing an exception #} - {% set js_vendors = {} %} -{% set js_vendors.jquery = 'jquery/index.js?v=2.1.3' %} +{% set js_vendors.jquery = 'jquery/index.js?v=2.1.3' %} {% if theme.fastclick %} - {% set js_vendors.fastclick = 'fastclick/lib/fastclick.min.js?v=1.0.6' %} + {% set js_vendors.fastclick = 'fastclick/lib/fastclick.min.js?v=1.0.6' %} {% endif %} {% if theme.lazyload %} - {% set js_vendors.lazyload = 'jquery_lazyload/jquery.lazyload.js?v=1.9.7' %} + {% set js_vendors.lazyload = 'jquery_lazyload/jquery.lazyload.js?v=1.9.7' %} {% endif %} -{% set js_vendors.velocity = 'velocity/velocity.min.js?v=1.2.1' %} +{% set js_vendors.velocity = 'velocity/velocity.min.js?v=1.2.1' %} {% set js_vendors.velocity_ui = 'velocity/velocity.ui.min.js?v=1.2.1' %} {% if theme.fancybox %} - {% set js_vendors.fancybox = 'fancybox/source/jquery.fancybox.pack.js?v=2.1.5' %} + {% set js_vendors.fancybox = 'fancybox/source/jquery.fancybox.pack.js?v=2.1.5' %} {% endif %} -{% if theme.canvas_nest %} - {% set js_vendors.canvas_nest = 'canvas-nest/canvas-nest.min.js' %} +{% if theme.canvas_nest.enable %} + {% if theme.canvas_nest.onmobile %} + {% set canvas_nest_uri = url_for(theme.vendors._internal + '/canvas-nest/canvas-nest.min.js') %} + {% if theme.vendors.canvas_nest %} + {% set canvas_nest_uri = theme.vendors.canvas_nest %} + {% endif %} + {% else %} + {% set canvas_nest_uri = url_for(theme.vendors._internal + '/canvas-nest/canvas-nest-nomobile.min.js') %} + {% if theme.vendors.canvas_nest_nomobile %} + {% set canvas_nest_uri = theme.vendors.canvas_nest_nomobile %} + {% endif %} + {% endif %} + {% endif %} {% if theme.three_waves %} - {% set js_vendors.three = 'three/three.min.js' %} - {% set js_vendors.three_waves = 'three/three-waves.min.js' %} + {% set js_vendors.three = 'three/three.min.js' %} + {% set js_vendors.three_waves = 'three/three-waves.min.js' %} {% endif %} {% if theme.canvas_lines %} - {% set js_vendors.three = 'three/three.min.js' %} - {% set js_vendors.canvas_lines = 'three/canvas_lines.min.js' %} + {% set js_vendors.three = 'three/three.min.js' %} + {% set js_vendors.canvas_lines = 'three/canvas_lines.min.js' %} {% endif %} {% if theme.canvas_sphere %} - {% set js_vendors.three = 'three/three.min.js' %} - {% set js_vendors.canvas_sphere = 'three/canvas_sphere.min.js' %} + {% set js_vendors.three = 'three/three.min.js' %} + {% set js_vendors.canvas_sphere = 'three/canvas_sphere.min.js' %} {% endif %} -{% if theme.canvas_ribbon.enable and theme.scheme === 'Pisces'%} - {% set js_vendors.canvas_ribbon = 'canvas-ribbon/canvas-ribbon.js' %} +{% if theme.canvas_ribbon.enable %} + {% set canvas_ribbon_uri = url_for(theme.vendors._internal + '/canvas-ribbon/canvas-ribbon.js') %} + {% if theme.vendors.canvas_ribbon %} + {% set canvas_ribbon_uri = theme.vendors.canvas_ribbon %} + {% endif %} + {% endif %} {% if theme.reading_progress.enable %} - {% set js_vendors.reading_progress = 'reading_progress/reading_progress.js' %} + {% set js_vendors.reading_progress = 'reading_progress/reading_progress.js' %} {% endif %} {% for name, internal in js_vendors %} - {% set internal_script = url_for(theme.vendors._internal) + '/' + internal %} - {% if name == 'canvas_ribbon' %} - - {% else %} - - {% endif %} + {% set internal_script = url_for(theme.vendors._internal + '/' + internal) %} + {% endfor %} diff --git a/layout/_third-party/analytics/analytics-with-widget.swig b/layout/_third-party/analytics/analytics-with-widget.swig index f2a40490d..4ad458d02 100644 --- a/layout/_third-party/analytics/analytics-with-widget.swig +++ b/layout/_third-party/analytics/analytics-with-widget.swig @@ -1,4 +1,4 @@ {% include 'busuanzi-counter.swig' %} {% include 'tencent-mta.swig' %} {% include 'tencent-analytics.swig' %} -{% include 'cnzz-analytics.swig' %} \ No newline at end of file +{% include 'cnzz-analytics.swig' %} diff --git a/layout/_third-party/analytics/application-insights.swig b/layout/_third-party/analytics/application-insights.swig index c0af16fad..9844cbf4c 100644 --- a/layout/_third-party/analytics/application-insights.swig +++ b/layout/_third-party/analytics/application-insights.swig @@ -1,11 +1,11 @@ {% if theme.application_insights %} - -{% endif %} \ No newline at end of file + +{% endif %} diff --git a/layout/_third-party/analytics/baidu-analytics.swig b/layout/_third-party/analytics/baidu-analytics.swig index 9ae1d8349..11d134241 100644 --- a/layout/_third-party/analytics/baidu-analytics.swig +++ b/layout/_third-party/analytics/baidu-analytics.swig @@ -1,5 +1,5 @@ {% if theme.baidu_analytics %} - {% if theme.busuanzi_count.total_visitors %} - + + {% endif %} + {% if theme.busuanzi_count.total_visitors and theme.busuanzi_count.total_views %} + + {% endif %} + {% if theme.busuanzi_count.total_views %} - + + {% endif %} {% endif %} - diff --git a/layout/_third-party/analytics/cnzz-analytics.swig b/layout/_third-party/analytics/cnzz-analytics.swig index bffb73cdc..9693cda23 100644 --- a/layout/_third-party/analytics/cnzz-analytics.swig +++ b/layout/_third-party/analytics/cnzz-analytics.swig @@ -1,7 +1,5 @@ {% if theme.cnzz_siteid %} -
- +
- {% endif %} diff --git a/layout/_third-party/analytics/facebook-sdk.swig b/layout/_third-party/analytics/facebook-sdk.swig index 7b5a29187..d7cd7ee2f 100644 --- a/layout/_third-party/analytics/facebook-sdk.swig +++ b/layout/_third-party/analytics/facebook-sdk.swig @@ -1,19 +1,18 @@ {% if theme.facebook_sdk.enable %} - + {% endif %} diff --git a/layout/_third-party/analytics/google-analytics.swig b/layout/_third-party/analytics/google-analytics.swig index 1190babc9..14c113b1a 100644 --- a/layout/_third-party/analytics/google-analytics.swig +++ b/layout/_third-party/analytics/google-analytics.swig @@ -1,10 +1,9 @@ {% if theme.google_analytics %} - - + + {% endif %} diff --git a/layout/_third-party/analytics/growingio.swig b/layout/_third-party/analytics/growingio.swig index 4f67c7500..fdbb00fe1 100644 --- a/layout/_third-party/analytics/growingio.swig +++ b/layout/_third-party/analytics/growingio.swig @@ -1,7 +1,7 @@ {% if theme.growingio_analytics %} - {% endif %} diff --git a/layout/_third-party/analytics/lean-analytics.swig b/layout/_third-party/analytics/lean-analytics.swig index 51e8fad08..f90ce6488 100644 --- a/layout/_third-party/analytics/lean-analytics.swig +++ b/layout/_third-party/analytics/lean-analytics.swig @@ -1,63 +1,62 @@ {% if theme.leancloud_visitors.enable and !theme.valine.visitor %} - {# custom analytics part create by xiamo; edited by LEAFERx #} diff --git a/layout/_third-party/analytics/tencent-analytics.swig b/layout/_third-party/analytics/tencent-analytics.swig index c2fab35ec..adc1fc3fd 100644 --- a/layout/_third-party/analytics/tencent-analytics.swig +++ b/layout/_third-party/analytics/tencent-analytics.swig @@ -1,5 +1,5 @@ {% if theme.tencent_analytics %} - + {% endif %} diff --git a/layout/_third-party/analytics/vkontakte-api.swig b/layout/_third-party/analytics/vkontakte-api.swig index 913a8fc90..ee069d419 100644 --- a/layout/_third-party/analytics/vkontakte-api.swig +++ b/layout/_third-party/analytics/vkontakte-api.swig @@ -1,27 +1,25 @@ {% if theme.vkontakte_api.enable %} +
+ + {% if not is_home() and (is_post() and theme.vkontakte_api.like) %} + VK.Widgets.Like("vk_like", {type: "mini", height: 20}); + {% endif %} + {% if page.comments and theme.vkontakte_api.comments %} + VK.Widgets.Comments("vk_comments", {limit: {{ theme.vkontakte_api.num_of_posts }}, attach: "*"}); + {% endif %} + }; + setTimeout(function() { + var el = document.createElement("script"); + el.type = "text/javascript"; + el.src = "//vk.com/js/api/openapi.js"; + el.async = true; + document.getElementById("vk_api_transport").appendChild(el); + }, 0); + {% endif %} diff --git a/layout/_third-party/baidu-push.swig b/layout/_third-party/baidu-push.swig new file mode 100644 index 000000000..c400d2f26 --- /dev/null +++ b/layout/_third-party/baidu-push.swig @@ -0,0 +1,16 @@ +{% if theme.baidu_push %} + +{% endif %} diff --git a/layout/_third-party/bookmark.swig b/layout/_third-party/bookmark.swig index f28c12e28..6933ab3c1 100644 --- a/layout/_third-party/bookmark.swig +++ b/layout/_third-party/bookmark.swig @@ -1,10 +1,10 @@ {% if theme.bookmark and theme.bookmark.enable %} - {% set bookmark_uri = url_for(theme.vendors._internal + '/bookmark/bookmark.min.js?v=1.0')%} + {% set bookmark_uri = url_for(theme.vendors._internal + '/bookmark/bookmark.min.js?v=1.0') %} {% if theme.vendors.bookmark %} {% set bookmark_uri = theme.vendors.bookmark %} {% endif %} - - {% else %} - - - {% endif %} +{% if is_home() %} + +{% elif page.comments %} + + {% endif %} diff --git a/layout/_third-party/comments/disqus.swig b/layout/_third-party/comments/disqus.swig index a5422797a..8491d686f 100644 --- a/layout/_third-party/comments/disqus.swig +++ b/layout/_third-party/comments/disqus.swig @@ -1,49 +1,44 @@ -{% if theme.disqus.enable %} - - {% if theme.disqus.count %} - - {% endif %} - - {% if page.comments %} - +{% endif %} +{% if page.comments %} + + } + }); + {% else %} + loadComments(); {% endif %} - + {% endif %} diff --git a/layout/_third-party/comments/gitalk.swig b/layout/_third-party/comments/gitalk.swig new file mode 100644 index 000000000..86172ad92 --- /dev/null +++ b/layout/_third-party/comments/gitalk.swig @@ -0,0 +1,30 @@ +{% set gitalk_js_url = '//cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js' %} +{% if theme.vendors.gitalk_js %} + {% set gitalk_js_url = theme.vendors.gitalk_js %} +{% endif %} + + +{% set gitalk_css_url = '//cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.css' %} +{% if theme.vendors.gitalk_css %} + {% set gitalk_css_url = theme.vendors.gitalk_css %} +{% endif %} + + +{% set md5_url = '//cdn.jsdelivr.net/npm/js-md5@0.7.3/src/md5.min.js' %} +{% if theme.vendors.md5 %} + {% set md5_url = theme.vendors.md5 %} +{% endif %} + + + diff --git a/layout/_third-party/comments/gitment.swig b/layout/_third-party/comments/gitment.swig index edf415f7e..ea9bf13f4 100644 --- a/layout/_third-party/comments/gitment.swig +++ b/layout/_third-party/comments/gitment.swig @@ -1,57 +1,56 @@ -{% if theme.gitment.enable and theme.gitment.client_id %} - {% if theme.gitment.mint %} - {% set CommentsClass = "Gitmint" %} - - - {% else %} - {% set CommentsClass = "Gitment" %} - - - {% endif %} +{% if theme.gitment.mint %} + {% set CommentsClass = 'Gitmint' %} + +{% else %} + {% set CommentsClass = 'Gitment' %} + +{% endif %} + - {% if theme.gitment.cleanly %} - - {% endif %} - - {% if page.comments %} - - {% endif %} + client_id: '{{ theme.gitment.client_id }}' + } + }); + gitment.render('gitment-container'); + } -{% endif %} + {% if not theme.gitment.lazy %} + renderGitment(); + {% else %} + function showGitment() { + document.getElementById('gitment-display-button').style.display = 'none'; + document.getElementById('gitment-container').style.display = 'block'; + renderGitment(); + } + {% endif %} + diff --git a/layout/_third-party/comments/index.swig b/layout/_third-party/comments/index.swig index f5ebccba4..3110f8b04 100644 --- a/layout/_third-party/comments/index.swig +++ b/layout/_third-party/comments/index.swig @@ -1,5 +1,17 @@ -{% include 'disqus.swig' %} -{% include 'livere.swig' %} -{% include 'changyan.swig' %} -{% include 'gitment.swig' %} -{% include 'valine.swig' %} +{% if theme.disqus.enable %} + {% include 'disqus.swig' %} +{% elif theme.changyan.enable and theme.changyan.appid and theme.changyan.appkey %} + {% include 'changyan.swig' %} +{% elif theme.valine.enable and theme.valine.appid and theme.valine.appkey %} + {% include 'valine.swig' %} +{% endif %} + +{% if page.comments %} + {% if theme.livere_uid %} + {% include 'livere.swig' %} + {% elif theme.gitment.enable and theme.gitment.client_id %} + {% include 'gitment.swig' %} + {% elif theme.gitalk.enable %} + {% include 'gitalk.swig' %} + {% endif %} +{% endif %} diff --git a/layout/_third-party/comments/livere.swig b/layout/_third-party/comments/livere.swig index e586fbe7b..b14f5ed85 100644 --- a/layout/_third-party/comments/livere.swig +++ b/layout/_third-party/comments/livere.swig @@ -1,19 +1,13 @@ -{% if not (theme.disqus.enable and theme.disqus.shortname) %} - - {% if page.comments and theme.livere_uid %} - - {% endif %} - -{% endif %} + diff --git a/layout/_third-party/comments/valine.swig b/layout/_third-party/comments/valine.swig index 5049565f9..8ad4f4725 100644 --- a/layout/_third-party/comments/valine.swig +++ b/layout/_third-party/comments/valine.swig @@ -1,28 +1,31 @@ -{% if theme.valine.enable and theme.valine.appid and theme.valine.appkey %} - - {% set valine_uri = '//unpkg.com/valine/dist/Valine.min.js' %} - {% if theme.vendors.valine %} - {% set valine_uri = theme.vendors.valine %} - {% endif %} - - - +{% set leancloud_uri = '//cdn1.lncld.net/static/js/3.11.1/av-min.js' %} +{% if theme.vendors.leancloud %} + {% set leancloud_uri = theme.vendors.leancloud %} {% endif %} + + +{% set valine_uri = '//unpkg.com/valine/dist/Valine.min.js' %} +{% if theme.vendors.valine %} + {% set valine_uri = theme.vendors.valine %} +{% endif %} + + + diff --git a/layout/_third-party/copy-code.swig b/layout/_third-party/copy-code.swig index f9831907a..9eab83230 100644 --- a/layout/_third-party/copy-code.swig +++ b/layout/_third-party/copy-code.swig @@ -37,34 +37,42 @@ } {% endif %} diff --git a/layout/_third-party/exturl.swig b/layout/_third-party/exturl.swig index 0a416c36d..44ece2995 100644 --- a/layout/_third-party/exturl.swig +++ b/layout/_third-party/exturl.swig @@ -1,3 +1,3 @@ {% if theme.exturl %} - + {% endif %} diff --git a/layout/_third-party/github-banner.swig b/layout/_third-party/github-banner.swig deleted file mode 100644 index 3a305a218..000000000 --- a/layout/_third-party/github-banner.swig +++ /dev/null @@ -1,16 +0,0 @@ -{% if theme.github_banner %} - {% set github_banner_bg_color = theme.android_chrome_color %} - {% set github_banner_fg_color = "#fff" %} - {% set github_title = theme.github_banner.split('||')[1] | trim %} - {% if theme.exturl && theme.social_icons.exturl %} - {% set github_url = ' - {% if theme.exturl && theme.social_icons.exturl %} - - {% else %} - - {% endif %} -{% endif %} diff --git a/layout/_third-party/math/index.swig b/layout/_third-party/math/index.swig index 7ef5e3c6b..12eab8949 100644 --- a/layout/_third-party/math/index.swig +++ b/layout/_third-party/math/index.swig @@ -15,6 +15,6 @@ {% include 'mathjax.swig' %} {% elif theme.math.engine == 'katex' %} {% include 'katex.swig' %} - {% endif %} + {% endif %} {% endif %} {% endif %} diff --git a/layout/_third-party/math/katex.swig b/layout/_third-party/math/katex.swig index 9f5c0d5c0..ea7ad1620 100644 --- a/layout/_third-party/math/katex.swig +++ b/layout/_third-party/math/katex.swig @@ -1 +1,9 @@ - + +{% if theme.math.katex.copy_tex.enable %} + {% if theme.math.katex.copy_tex.copy_tex_js %} + + {% endif %} + {% if theme.math.katex.copy_tex.copy_tex_css %} + + {% endif %} +{% endif %} diff --git a/layout/_third-party/math/mathjax.swig b/layout/_third-party/math/mathjax.swig index 2fce8f2be..b35e1ded6 100644 --- a/layout/_third-party/math/mathjax.swig +++ b/layout/_third-party/math/mathjax.swig @@ -1,20 +1,37 @@ - + + + diff --git a/layout/_third-party/needsharebutton.swig b/layout/_third-party/needsharebutton.swig index 9120520c6..8155e1dfa 100644 --- a/layout/_third-party/needsharebutton.swig +++ b/layout/_third-party/needsharebutton.swig @@ -4,21 +4,20 @@ {% set needmoreshare2_js = theme.vendors.needmoreshare2_js %} {% endif %} - -{% endif %} \ No newline at end of file +{% endif %} diff --git a/layout/_third-party/pangu.swig b/layout/_third-party/pangu.swig index cedb9c369..c82d5068e 100644 --- a/layout/_third-party/pangu.swig +++ b/layout/_third-party/pangu.swig @@ -1,8 +1,8 @@ {% if theme.pangu %} - {% set pangu_uri = url_for(theme.vendors._internal + '/pangu/dist/pangu.min.js?v=3.3')%} + {% set pangu_uri = url_for(theme.vendors._internal + '/pangu/dist/pangu.min.js?v=3.3') %} {% if theme.vendors.pangu %} {% set pangu_uri = theme.vendors.pangu %} {% endif %} - + {% endif %} diff --git a/layout/_third-party/pdf.swig b/layout/_third-party/pdf.swig new file mode 100644 index 000000000..75445d032 --- /dev/null +++ b/layout/_third-party/pdf.swig @@ -0,0 +1,46 @@ +{% if theme.pdf.enable %} + {% set is_index_has_pdf = false %} + + {# At home, check if there has `pdf: true` post #} + {% if is_home() %} + {% for post in page.posts %} + {% if post.pdf and not is_index_has_pdf %} + {% set is_index_has_pdf = true %} + {% endif %} + {% endfor %} + {% endif %} + + {% if not theme.pdf.per_page or (is_index_has_pdf or page.pdf) %} + + + + {% endif %} +{% endif %} diff --git a/layout/_third-party/rating.swig b/layout/_third-party/rating.swig index 3b376ce31..e51e0945a 100644 --- a/layout/_third-party/rating.swig +++ b/layout/_third-party/rating.swig @@ -1,18 +1,20 @@ {% if theme.rating.enable and (not is_home() and is_post()) %} - {% endif %} diff --git a/layout/_third-party/schedule.swig b/layout/_third-party/schedule.swig index 6db3a3c46..a3eac340a 100644 --- a/layout/_third-party/schedule.swig +++ b/layout/_third-party/schedule.swig @@ -1,58 +1,51 @@ -{% if theme.calendar.enable %} -{% if page.type == 'schedule' %} +{% if theme.calendar.enable && page.type === 'schedule' %} {% endif %} -{% endif %} diff --git a/layout/_third-party/scroll-cookie.swig b/layout/_third-party/scroll-cookie.swig index b4d9d07bf..bae500220 100644 --- a/layout/_third-party/scroll-cookie.swig +++ b/layout/_third-party/scroll-cookie.swig @@ -1,4 +1,4 @@ {% if theme.save_scroll %} - - + + {% endif %} diff --git a/layout/_third-party/search/algolia-search/assets.swig b/layout/_third-party/search/algolia-search.swig similarity index 92% rename from layout/_third-party/search/algolia-search/assets.swig rename to layout/_third-party/search/algolia-search.swig index 07e322217..5d890d885 100644 --- a/layout/_third-party/search/algolia-search/assets.swig +++ b/layout/_third-party/search/algolia-search.swig @@ -5,7 +5,7 @@ {% if theme.vendors.algolia_instant_css %} {% set algolia_instant_css = theme.vendors.algolia_instant_css %} {% endif %} - + {% set algolia_instant_js = url_for(theme.vendors._internal + '/algolia-instant-search/instantsearch.min.js') %} {% if theme.vendors.algolia_instant_js %} diff --git a/layout/_third-party/search/index.swig b/layout/_third-party/search/index.swig index 0a352bcc8..b6c494562 100644 --- a/layout/_third-party/search/index.swig +++ b/layout/_third-party/search/index.swig @@ -1,3 +1,2 @@ -{% include 'tinysou.swig' %} {% include 'localsearch.swig' %} -{% include 'algolia-search/assets.swig' %} +{% include 'algolia-search.swig' %} diff --git a/layout/_third-party/search/localsearch.swig b/layout/_third-party/search/localsearch.swig index 7ec22de46..37dc85f2e 100644 --- a/layout/_third-party/search/localsearch.swig +++ b/layout/_third-party/search/localsearch.swig @@ -1,5 +1,5 @@ {% if theme.local_search.enable %} - -{% endif %} \ No newline at end of file diff --git a/layout/_third-party/seo/baidu-push.swig b/layout/_third-party/seo/baidu-push.swig deleted file mode 100644 index ee6838f3a..000000000 --- a/layout/_third-party/seo/baidu-push.swig +++ /dev/null @@ -1,16 +0,0 @@ -{% if theme.baidu_push %} - -{% endif %} diff --git a/layout/page.swig b/layout/page.swig index fba8c3892..24dd1d9a1 100644 --- a/layout/page.swig +++ b/layout/page.swig @@ -4,11 +4,11 @@ {% block title %}{# #}{% set page_title_suffix = ' | ' + title %}{# - #}{% if page.type === "categories" and not page.title %}{# + #}{% if page.type === 'categories' and not page.title %}{# #}{{ __('title.category') + page_title_suffix }}{# - #}{% elif page.type === "tags" and not page.title %}{# + #}{% elif page.type === 'tags' and not page.title %}{# #}{{ __('title.tag') + page_title_suffix }}{# - #}{% elif page.type === "schedule" and not page.title %}{# + #}{% elif page.type === 'schedule' and not page.title %}{# #}{{ __('title.schedule') + page_title_suffix }}{# #}{% else %}{# #}{{ page.title + page_title_suffix }}{# @@ -24,22 +24,22 @@ {### PAGE BLOCK ###} {##################}
- {% include '_partials/page-header.swig' %} + {% include '_partials/page/page-header.swig' %} {#################} {### PAGE BODY ###} {#################}
{# tagcloud page support #} - {% if page.type === "tags" %} + {% if page.type === 'tags' %}
- {% set visibleTags = 0 %} - {% for tag in site.tags %} - {% if tag.length %} - {% set visibleTags += 1 %} - {% endif %} - {% endfor %} - {{ _p('counter.tag_cloud', visibleTags) }} + {% set visibleTags = 0 %} + {% for tag in site.tags %} + {% if tag.length %} + {% set visibleTags += 1 %} + {% endif %} + {% endfor %} + {{ _p('counter.tag_cloud', visibleTags) }}
{{ tagcloud({min_font: 12, max_font: 30, amount: 300, color: true, start_color: '#ccc', end_color: '#111'}) }} @@ -48,13 +48,13 @@ {% elif page.type === 'categories' %}
- {% set visibleCategories = 0 %} - {% for cat in site.categories %} - {% if cat.length %} - {% set visibleCategories += 1 %} - {% endif %} - {% endfor %} - {{ _p('counter.categories', visibleCategories) }} + {% set visibleCategories = 0 %} + {% for cat in site.categories %} + {% if cat.length %} + {% set visibleCategories += 1 %} + {% endif %} + {% endfor %} + {{ _p('counter.categories', visibleCategories) }}
{{ list_categories() }} @@ -70,7 +70,7 @@ {### END PAGE BODY ###} {#####################}
- {% include '_partials/breadcrumb.swig' %} + {% include '_partials/page/breadcrumb.swig' %} {######################} {### END PAGE BLOCK ###} {######################} diff --git a/layout/post.swig b/layout/post.swig index b778c9c81..a4b825f70 100644 --- a/layout/post.swig +++ b/layout/post.swig @@ -2,12 +2,10 @@ {% import '_macro/post.swig' as post_template %} {% import '_macro/sidebar.swig' as sidebar_template %} - {% block title %}{{ page.title }} | {{ title }}{% endblock %} {% block page_class %}page-post-detail{% endblock %} - {% block content %}
diff --git a/package.json b/package.json index daaa99bc4..0af1c7b18 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hexo-theme-next", - "version": "6.4.2", + "version": "7.0.0", "description": "Elegant and powerful theme for Hexo", "main": "index.js", "directories": { diff --git a/scripts/filters/after_post_render/exturl.js b/scripts/filters/after_post_render/exturl.js new file mode 100644 index 000000000..91b981baf --- /dev/null +++ b/scripts/filters/after_post_render/exturl.js @@ -0,0 +1,45 @@ +/* global hexo */ + +'use strict'; + +hexo.extend.filter.register('after_post_render', function(data) { + var theme = hexo.theme.config; + // Exit if `exturl` option disable in NexT. + if (!theme.exturl) return; + + var url = require('url'); + var cheerio; + + var config = this.config; + + if (!cheerio) cheerio = require('cheerio'); + + var $ = cheerio.load(data.content, {decodeEntities: false}); + var siteHost = url.parse(config.url).hostname || config.url; + + $('a').each(function() { + var href = $(this).attr('href'); + // Exit if the href attribute doesn't exists. + if (!href) return; + + var data = url.parse(href); + + // Exit if the link doesn't have protocol, which means it's an internal link. + if (!data.protocol) return; + + // Exit if the url has same host with `config.url`. + if (data.hostname === siteHost) return; + + // If title atribute filled, set it as title; if not, set url as title. + var title = $(this).attr('title') || href; + + var encoded = new Buffer(href).toString('base64'); + + $(this).replaceWith(function() { + return $(`${$(this).html()}`); + }); + + }); + + data.content = $.html(); +}); diff --git a/scripts/helpers.js b/scripts/helpers/engine.js similarity index 90% rename from scripts/helpers.js rename to scripts/helpers/engine.js index e4df2b26e..c61dae868 100644 --- a/scripts/helpers.js +++ b/scripts/helpers/engine.js @@ -8,7 +8,7 @@ hexo.extend.helper.register('hexo_env', function(type) { hexo.extend.helper.register('next_env', function(type) { var path = require('path'); - var env = require(path.normalize('../package.json')); + var env = require(path.normalize('../../package.json')); return env[type]; }); diff --git a/scripts/helpers/next-url.js b/scripts/helpers/next-url.js new file mode 100644 index 000000000..7660a1c0e --- /dev/null +++ b/scripts/helpers/next-url.js @@ -0,0 +1,70 @@ +/** + * next-url.js | https://theme-next.org/api/helpers/next-url/ + */ + +/* global hexo */ + +'use strict'; + +hexo.extend.helper.register('next_url', function(path, text, options) { + var htmlTag = require('hexo-util').htmlTag; + var config = this.config; + var url = require('url'); + var data = url.parse(path); + var siteHost = url.parse(config.url).hostname || config.url; + + var theme = hexo.theme.config; + var exturl = ''; + var tag = 'a'; + var attrs = { href: this.url_for(path) }; + + // If `exturl` enabled, set spanned links only on external links. + if (theme.exturl && data.protocol && data.hostname !== siteHost) { + tag = 'span'; + exturl = 'exturl'; + var encoded = new Buffer(path).toString('base64'); + attrs = { + class : exturl, + 'data-url': encoded + }; + } + + options = options || {}; + + var keys = Object.keys(options); + var key = ''; + + for (var i = 0, len = keys.length; i < len; i++) { + key = keys[i]; + + /** + * If option have `class` attribute, add it to + * 'exturl' class if `exturl` option enabled. + */ + if (exturl !== '' && key === 'class') { + attrs[key] += ' ' + options[key]; + } else { + attrs[key] = options[key]; + } + } + + if (attrs.class && Array.isArray(attrs.class)) { + attrs.class = attrs.class.join(' '); + } + + // If it's external link, rewrite attributes. + if (data.protocol && data.hostname !== siteHost) { + attrs.external = null; + + if (!theme.exturl) { + // Only for simple link need to rewrite/add attributes. + attrs.rel = 'noopener'; + attrs.target = '_blank'; + } else { + // Remove rel attributes for `exturl` in main menu. + attrs.rel = null; + } + } + + return htmlTag(tag, attrs, text); +}); diff --git a/scripts/tags/button.js b/scripts/tags/button.js index 8b8b0a127..20932ee5c 100644 --- a/scripts/tags/button.js +++ b/scripts/tags/button.js @@ -21,10 +21,10 @@ function postButton(args) { icon = icon.trim(); title = title.trim(); - var result = [' 0 && result.push(' title="' + title + '"'); + var result = [` 0 && result.push(` title="${title}"`); result.push('>'); - icon.length > 0 && result.push(''); + icon.length > 0 && result.push(``); text.length > 0 && result.push(text); result.push(''); diff --git a/scripts/tags/exturl.js b/scripts/tags/exturl.js index 4eda1ada9..39de35c1f 100644 --- a/scripts/tags/exturl.js +++ b/scripts/tags/exturl.js @@ -1,5 +1,6 @@ /** * exturl.js | https://theme-next.org/docs/tag-plugins/exturl/ + * Note: need to remove in NexT v7.0.0 */ /* global hexo */ diff --git a/scripts/tags/full-image.js b/scripts/tags/full-image.js index 46000786a..3acd1e2dd 100644 --- a/scripts/tags/full-image.js +++ b/scripts/tags/full-image.js @@ -19,11 +19,11 @@ function fullImage(args) { hexo.log.warn('Image src can NOT be empty'); } - var image = [' 0 && image.push('alt="' + alt.trim() + '"'); - title.length > 0 && image.push('title="' + title.trim() + '"'); - width.length > 0 && image.push('style="max-width: none; width:' + width + ';"'); - image.push('/>'); + var image = [` 0 && image.push(`alt="${alt.trim()}"`); + title.length > 0 && image.push(`title="${title.trim()}"`); + width.length > 0 && image.push(`style="max-width: none; width:${width};"`); + image.push('/>'); return image.join(' '); } diff --git a/scripts/tags/group-pictures.js b/scripts/tags/group-pictures.js index 506bb5781..30dbd7f31 100644 --- a/scripts/tags/group-pictures.js +++ b/scripts/tags/group-pictures.js @@ -123,22 +123,20 @@ var templates = { rowHTML += this.getRowHTML(rows[i]); } - return '
' + rowHTML + '
'; + return `
${rowHTML}
`; }, getRowHTML: function(pictures) { - return ( - '
' + this.getColumnHTML(pictures) + '
' - ); + return `
${this.getColumnHTML(pictures)}
`; }, getColumnHTML: function(pictures) { var columns = []; var columnWidth = 100 / pictures.length; - var columnStyle = ' style="width: ' + columnWidth + '%;"'; + var columnStyle = `style="width: ${columnWidth}%;"`; for (var i = 0; i < pictures.length; i++) { - columns.push('
' + pictures[i] + '
'); + columns.push(`
${pictures[i]}
`); } return columns.join(''); } @@ -153,7 +151,7 @@ function groupPicture(args, content) { var pictures = content.match(//g); - return '
' + templates.dispatch(pictures, group, layout) + '
'; + return `
${templates.dispatch(pictures, group, layout)}
`; } hexo.extend.tag.register('grouppicture', groupPicture, {ends: true}); diff --git a/scripts/tags/label.js b/scripts/tags/label.js index da7de91e8..02a7c0d31 100644 --- a/scripts/tags/label.js +++ b/scripts/tags/label.js @@ -13,7 +13,7 @@ function postLabel(args) { !text && hexo.log.warn('Label text must be defined!'); - return '' + text + ''; + return `${text}`; } hexo.extend.tag.register('label', postLabel, { ends: false }); diff --git a/scripts/tags/note.js b/scripts/tags/note.js index 1cf0350f1..9bc02b60e 100644 --- a/scripts/tags/note.js +++ b/scripts/tags/note.js @@ -7,9 +7,9 @@ 'use strict'; function postNote(args, content) { - return '
' - + hexo.render.renderSync({text: content, engine: 'markdown'}).split('\n').join('') - + '
'; + return `
+ ${hexo.render.renderSync({text: content, engine: 'markdown'}).split('\n').join('')} +
`; } hexo.extend.tag.register('note', postNote, {ends: true}); diff --git a/scripts/tags/tabs.js b/scripts/tags/tabs.js index 5a1ed6770..08474ab7b 100644 --- a/scripts/tags/tabs.js +++ b/scripts/tags/tabs.js @@ -40,18 +40,18 @@ function postTabs(args, content) { ((tabCaption.length === 0) && (tabIcon.length === 0)) && (tabCaption = tabName + ' ' + tabId); - var isOnlyicon = tabIcon.length > 0 && tabCaption.length === 0 ? 'style="text-align: center;' : ''; - tabIcon.length > 0 && (tabIcon = ''); + var isOnlyicon = tabIcon.length > 0 && tabCaption.length === 0 ? ' style="text-align: center;"' : ''; + tabIcon.length > 0 && (tabIcon = ``); var isActive = (tabActive > 0 && tabActive === tabId) || (tabActive === 0 && tabId === 1) ? ' active' : ''; - tabNav += '
  • ' + tabIcon + tabCaption.trim() + '
  • '; - tabContent += '
    ' + postContent + '
    '; + tabNav += `
  • ${tabIcon + tabCaption.trim()}
  • `; + tabContent += `
    ${postContent}
    `; } - tabNav = ''; - tabContent = '
    ' + tabContent + '
    '; + tabNav = ``; + tabContent = `
    ${tabContent}
    `; - return '
    ' + tabNav + tabContent + '
    '; + return `
    ${tabNav + tabContent}
    `; } hexo.extend.tag.register('tabs', postTabs, {ends: true}); diff --git a/source/css/_common/components/back-to-top-sidebar.styl b/source/css/_common/components/back-to-top-sidebar.styl index ebaac8380..e59f335af 100644 --- a/source/css/_common/components/back-to-top-sidebar.styl +++ b/source/css/_common/components/back-to-top-sidebar.styl @@ -1,7 +1,7 @@ .back-to-top { visibility: hidden; margin: (20px - $sidebar-offset) -10px -20px; - background: $body-bg-color; + background: $b2t-sidebar-bg-color; font-size: $b2t-font-size; opacity: $b2t-opacity; cursor: pointer; diff --git a/source/css/_common/components/footer/footer.styl b/source/css/_common/components/footer/footer.styl index 4c4038800..f3f377572 100644 --- a/source/css/_common/components/footer/footer.styl +++ b/source/css/_common/components/footer/footer.styl @@ -8,16 +8,16 @@ .footer-inner { text-align: center; } @keyframes iconAnimate { - 0%,100%{transform:scale(1);} - 10%,30%{transform:scale(0.9);} - 20%,40%,60%,80%{transform:scale(1.1);} - 50%,70%{transform:scale(1.1);} + 0%, 100% { transform: scale(1); } + 10%, 30% { transform: scale(0.9); } + 20%, 40%, 60%, 80% { transform: scale(1.1); } + 50%, 70% { transform: scale(1.1); } } if hexo-config('footer.icon.animated') { - #animate { + #animate { animation: iconAnimate 1.33s ease-in-out infinite; - } + } } .with-love { @@ -28,17 +28,3 @@ if hexo-config('footer.icon.animated') { .powered-by, .theme-info { display: inline-block; } - -.cc-license { - margin-top: 10px; - text-align: center; - - .cc-opacity { - opacity: 0.7; - border-bottom: none; - - &:hover { opacity: 0.9; } - } - - img { display: inline-block; } -} diff --git a/source/css/_common/components/header/github-banner.styl b/source/css/_common/components/header/github-banner.styl index 3698413e6..2866d8ce1 100644 --- a/source/css/_common/components/header/github-banner.styl +++ b/source/css/_common/components/header/github-banner.styl @@ -4,17 +4,17 @@ mobile_layout_economy = hexo-config('mobile_layout_economy'); :hover .octo-arm { - animation:octocat-wave 560ms ease-in-out; + animation: octocat-wave 560ms ease-in-out; } @keyframes octocat-wave { 0%,100% { - transform:rotate(0); + transform: rotate(0); } 20%,60% { - transform:rotate(-25deg); + transform: rotate(-25deg); } 40%,80% { - transform:rotate(10deg); + transform: rotate(10deg); } } +tablet-mobile() { @@ -25,10 +25,10 @@ } } .github-corner:hover .octo-arm { - animation:none; + animation: none; } .github-corner .octo-arm { - animation:octocat-wave 560ms ease-in-out; + animation: octocat-wave 560ms ease-in-out; } } +mobile() { @@ -44,5 +44,4 @@ } } } - } diff --git a/source/css/_common/components/header/menu.styl b/source/css/_common/components/header/menu.styl index d2b0f055d..6505bd7a4 100644 --- a/source/css/_common/components/header/menu.styl +++ b/source/css/_common/components/header/menu.styl @@ -15,7 +15,7 @@ margin-top: 10px; } - a { + a, span.exturl { display: block; font-size: 13px; line-height: inherit; diff --git a/source/css/_common/components/header/site-meta.styl b/source/css/_common/components/header/site-meta.styl index efe31ec26..af2f3ae4f 100644 --- a/source/css/_common/components/header/site-meta.styl +++ b/source/css/_common/components/header/site-meta.styl @@ -40,7 +40,7 @@ .use-motion { .brand { opacity: 0; } - .logo, .site-title, .site-subtitle { + .logo, .site-title, .site-subtitle, .custom-logo-image { opacity: 0; position: relative; top: -10px; diff --git a/source/css/_common/components/highlight/highlight.styl b/source/css/_common/components/highlight/highlight.styl index a074eebb6..f23ab67f4 100644 --- a/source/css/_common/components/highlight/highlight.styl +++ b/source/css/_common/components/highlight/highlight.styl @@ -96,7 +96,6 @@ pre { .line { height: 20px; } } - .gutter { -webkit-user-select: none; -moz-user-select: none; @@ -122,6 +121,7 @@ pre { .variable .attribute .tag + .name .regexp .ruby .constant .xml .tag .title @@ -137,6 +137,7 @@ pre { .number .preprocessor .built_in + .builtin-name .literal .params .constant @@ -147,13 +148,13 @@ pre { .ruby .class .title .css .rules .attribute .string + .symbol .value .inheritance .header .ruby .symbol .xml .cdata .special - .number .formula { color: $highlight-green; } diff --git a/source/css/_common/components/pages/archive.styl b/source/css/_common/components/pages/archive.styl index 8a1363d68..ee5e4b5f1 100644 --- a/source/css/_common/components/pages/archive.styl +++ b/source/css/_common/components/pages/archive.styl @@ -26,4 +26,9 @@ circle(); } } + + .fa-external-link { + font-size: 15px; + margin-left: 5px; + } } diff --git a/source/css/_common/components/pages/breadcrumb.styl b/source/css/_common/components/pages/breadcrumb.styl index ea9cd0537..4750de760 100644 --- a/source/css/_common/components/pages/breadcrumb.styl +++ b/source/css/_common/components/pages/breadcrumb.styl @@ -6,17 +6,16 @@ ul.breadcrumb { font-size: $font-size-small & li { - display: inline; + display: inline; } & li+li:before { - padding: 0.5em; - font-weight: normal; - content: "/\00a0"; + padding: 0.5em; + font-weight: normal; + content: "/\00a0"; } & li+li:last-child { font-weight: bold; } - } diff --git a/source/css/_common/components/pages/schedule.styl b/source/css/_common/components/pages/schedule.styl index 5e64a6593..76e9a5fbf 100644 --- a/source/css/_common/components/pages/schedule.styl +++ b/source/css/_common/components/pages/schedule.styl @@ -1,6 +1,6 @@ @keyframes dot-flash { - from {opacity: 1; transform:scale(1.1);} - to {opacity: 0; transform:scale(1);} + from { opacity: 1; transform: scale(1.1); } + to { opacity: 0; transform: scale(1); } } #schedule { @@ -71,7 +71,7 @@ } li.event-past { background: #FCFCFC - padding: 15px 0 15px 10px + padding: 15px 0 15px 10px & > * { opacity: .9 } @@ -97,7 +97,6 @@ color: #FFF!important } } - li.event-future { background: #222 color: #FFF @@ -115,4 +114,3 @@ } } } - diff --git a/source/css/_common/components/post/post-collapse.styl b/source/css/_common/components/post/post-collapse.styl index 6633a450d..7acde06f2 100644 --- a/source/css/_common/components/post/post-collapse.styl +++ b/source/css/_common/components/post/post-collapse.styl @@ -15,7 +15,7 @@ .posts-collapse { position: relative; z-index: $zindex-1; - + &::after { content: " "; position: absolute; @@ -103,7 +103,7 @@ opacity: 0.6; } - a { + a, span.exturl { color: $grey-dim; border-bottom: none; } diff --git a/source/css/_common/components/post/post-copyright.styl b/source/css/_common/components/post/post-copyright.styl index f1cc7cbab..717cc085a 100644 --- a/source/css/_common/components/post/post-copyright.styl +++ b/source/css/_common/components/post/post-copyright.styl @@ -4,4 +4,8 @@ border-left: $post-copyright.border.width $post-copyright.border.style $post-copyright.border.color; background-color: $post-copyright.bg; list-style: none; + + i.fa { + font-size: 15px; + } } diff --git a/source/css/_common/components/post/post-eof.styl b/source/css/_common/components/post/post-eof.styl index e4303252e..cfbc0886c 100644 --- a/source/css/_common/components/post/post-eof.styl +++ b/source/css/_common/components/post/post-eof.styl @@ -9,7 +9,6 @@ } } - .post:last-child { .post-eof.post-eof.post-eof { display: none; diff --git a/source/css/_common/components/post/post-expand.styl b/source/css/_common/components/post/post-expand.styl index 622540840..d9f86a9dc 100644 --- a/source/css/_common/components/post/post-expand.styl +++ b/source/css/_common/components/post/post-expand.styl @@ -28,38 +28,38 @@ } .posts-expand .post-body { - +desktop() { text-align: justify; } - + +desktop() { + text-align: justify; + } h2, h3, h4, h5, h6 { padding-top: 10px; - .header-anchor{ + .header-anchor { float: right; margin-left: 10px; color: $grey-light; border-bottom-style: none; visibility: hidden; - &:hover{ + &:hover { color: inherit; } } - &:hover .header-anchor{ + &:hover .header-anchor { visibility: visible; } } - ul li { list-style: circle; } + ul > li { + list-style: circle; + } img { box-sizing: border-box; - margin: auto; + margin: 0 auto 25px; padding: 3px; border: 1px solid $gray-lighter; } } - -.posts-expand .post-body .fancybox img { margin: 0 auto 25px; } -.posts-expand .post-body img { margin: 0 auto 25px; } \ No newline at end of file diff --git a/source/css/_common/components/post/post-gallery.styl b/source/css/_common/components/post/post-gallery.styl index b2385ae3f..9e4e8cc73 100644 --- a/source/css/_common/components/post/post-gallery.styl +++ b/source/css/_common/components/post/post-gallery.styl @@ -5,19 +5,23 @@ border-collapse: separate; } -.post-gallery-row { display: table-row; } +.post-gallery-row { + display: table-row; +} .post-gallery .post-gallery-img { display: table-cell; text-align: center; vertical-align: middle; border: none; + + img { + max-width: 100%; + max-height: 100%; + border: none; + } } -.post-gallery .post-gallery-img img { - max-width: 100%; - max-height: 100%; +.fancybox-close, .fancybox-close:hover { border: none; } - -.fancybox-close, .fancybox-close:hover { border: none; } diff --git a/source/css/_common/components/post/post-meta.styl b/source/css/_common/components/post/post-meta.styl index 1dc44a9d5..9a8cbf4a9 100644 --- a/source/css/_common/components/post/post-meta.styl +++ b/source/css/_common/components/post/post-meta.styl @@ -40,6 +40,7 @@ display: inline-block; } } + .post-meta-item-text { +tablet() { display: none; diff --git a/source/css/_common/components/post/post-nav.styl b/source/css/_common/components/post/post-nav.styl index fa85838d2..9c2af53ae 100644 --- a/source/css/_common/components/post/post-nav.styl +++ b/source/css/_common/components/post/post-nav.styl @@ -33,25 +33,19 @@ } .fa { - position: absolute; - top: 8px; - left: 0; font-size: 12px; + margin-right: 5px; } - } .post-nav-next { - a { padding-left: 15px; } + a { padding-left: 5px; } } .post-nav-prev { text-align: right; - a { padding-right: 15px; } + a { padding-right: 5px; } - .fa { - right: 0; - left: auto; - } + .fa { margin-left: 5px; } } diff --git a/source/css/_common/components/post/post-reading_progress.styl b/source/css/_common/components/post/post-reading_progress.styl index 590d96ffc..77e71bbf6 100644 --- a/source/css/_common/components/post/post-reading_progress.styl +++ b/source/css/_common/components/post/post-reading_progress.styl @@ -1,10 +1,10 @@ .reading-progress-bar { - position: fixed; - top: 0; - left: 0; - z-index: 9999; - display: block; - width: 0; - height: unquote(hexo-config('reading_progress.height')); - background: unquote(hexo-config('reading_progress.color')); + position: fixed; + top: 0; + left: 0; + z-index: 9999; + display: block; + width: 0; + height: unquote(hexo-config('reading_progress.height')); + background: unquote(hexo-config('reading_progress.color')); } diff --git a/source/css/_common/components/post/post-reward.styl b/source/css/_common/components/post/post-reward.styl index 13f65757a..7f15aa7e1 100644 --- a/source/css/_common/components/post/post-reward.styl +++ b/source/css/_common/components/post/post-reward.styl @@ -1,54 +1,64 @@ #rewardButton { - cursor: pointer; - border: 0; - outline: 0; - border-radius: 5px; - padding: 0; - margin: 0; - letter-spacing: normal; - text-transform: none; - text-indent: 0px; - text-shadow: none; + cursor: pointer; + border: 0; + outline: 0; + border-radius: 5px; + padding: 0; + margin: 0; + letter-spacing: normal; + text-transform: none; + text-indent: 0px; + text-shadow: none; } + #rewardButton span { - display: inline-block; - width: 80px; - height: 35px; - border-radius: 5px; - color: #fff; - font-weight: 400; - font-style: normal; - font-variant: normal; - font-stretch: normal; - font-size: 18px; - font-family: "Microsoft Yahei"; - background: #F44336; -} -#rewardButton span:hover{ - background: #F7877F; -} -#QR{ - padding-top:20px; -} -#QR a{ - border:0; -} -#QR img{ - width: 180px; - max-width: 100%; - display: inline-block; - margin: 0.8em 2em 0 2em; + display: inline-block; + width: 80px; + height: 35px; + border-radius: 5px; + color: #fff; + font-weight: 400; + font-style: normal; + font-variant: normal; + font-stretch: normal; + font-size: 18px; + background: #F44336; } + +#rewardButton span:hover { + background: #F7877F; +} + +#QR { + padding-top: 20px; +} + +#QR a { + border: 0; +} + +#QR img { + width: 180px; + max-width: 100%; + display: inline-block; + margin: 0.8em 2em 0 2em; +} + +#QR p { + text-align: center; +} + #QR > div:hover p { animation: roll 0.1s infinite linear; -webkit-animation: roll 0.1s infinite linear; -moz-animation: roll 0.1s infinite linear; } + @keyframes roll { - from { - transform(rotateZ(30deg)); - } - to { - transform(rotateZ(-30deg)); - } + from { + transform(rotateZ(30deg)); + } + to { + transform(rotateZ(-30deg)); + } } diff --git a/source/css/_common/components/post/post-title.styl b/source/css/_common/components/post/post-title.styl index ed3fd6f33..58409ac10 100644 --- a/source/css/_common/components/post/post-title.styl +++ b/source/css/_common/components/post/post-title.styl @@ -47,5 +47,8 @@ transform: scaleX(1); } - .fa { font-size: 16px; } + .fa { + font-size: 20px; + margin-left: 5px; + } } diff --git a/source/css/_common/components/post/post-widgets.styl b/source/css/_common/components/post/post-widgets.styl index 2b6b18ff9..f9eda656f 100644 --- a/source/css/_common/components/post/post-widgets.styl +++ b/source/css/_common/components/post/post-widgets.styl @@ -46,4 +46,5 @@ justify-content: center; a { border: none; } } -.bdshare-slide-button-box a { border: none; } \ No newline at end of file + +.bdshare-slide-button-box a { border: none; } diff --git a/source/css/_common/components/post/post.styl b/source/css/_common/components/post/post.styl index 3ee28c0f5..9817f48f7 100644 --- a/source/css/_common/components/post/post.styl +++ b/source/css/_common/components/post/post.styl @@ -3,7 +3,7 @@ font-family: $font-family-posts; } -.post-body span.exturl { +.post-body .exturl { .fa { font-size: 14px; margin-left: 4px; @@ -59,8 +59,8 @@ @import "post-nav"; @import "post-eof"; @import "post-gallery"; -@import "post-reward" if hexo-config('alipay') or hexo-config('wechatpay') or hexo-config('bitcoin'); -@import "post-copyright" if hexo-config('post_copyright.enable'); +@import "post-reward" if hexo-config('reward.alipay') or hexo-config('reward.wechatpay') or hexo-config('reward.bitcoin'); +@import "post-copyright" if hexo-config('creative_commons.post'); @import "post-widgets" if (hexo-config('facebook_sdk.enable') and hexo-config('facebook_sdk.like_button')) or (hexo-config('vkontakte_api.enable') and hexo-config('vkontakte_api.like')) or hexo-config('rating.enable') or (hexo-config('needmoreshare2.enable') and hexo-config('needmoreshare2.postbottom.enable')) or hexo-config('baidushare'); @import "post-rtl"; @import "post-reading_progress" if hexo-config('reading_progress.enable'); diff --git a/source/css/_common/components/sidebar/sidebar-author.styl b/source/css/_common/components/sidebar/sidebar-author.styl index a8846c3fc..b119bbace 100644 --- a/source/css/_common/components/sidebar/sidebar-author.styl +++ b/source/css/_common/components/sidebar/sidebar-author.styl @@ -9,25 +9,25 @@ } if hexo-config('avatar.rounded') { -.site-author-image { - border-radius: 100%; -} + .site-author-image { + border-radius: 100%; + } } if hexo-config('avatar.rotated') { -.site-author-image { - -webkit-transition: -webkit-transform 1.0s ease-out; - -moz-transition: -moz-transform 1.0s ease-out; - -ms-transition: -ms-transform 1.0s ease-out; - transition: transform 1.0s ease-out; -} + .site-author-image { + -webkit-transition: -webkit-transform 1.0s ease-out; + -moz-transition: -moz-transform 1.0s ease-out; + -ms-transition: -ms-transform 1.0s ease-out; + transition: transform 1.0s ease-out; + } -.site-author-image:hover { - -webkit-transform: rotateZ(360deg); - -moz-transform: rotateZ(360deg); - -ms-transform: rotate(360deg); - transform: rotateZ(360deg); -} + .site-author-image:hover { + -webkit-transform: rotateZ(360deg); + -moz-transform: rotateZ(360deg); + -ms-transform: rotate(360deg); + transform: rotateZ(360deg); + } } .site-author-name { diff --git a/source/css/_common/components/sidebar/sidebar-blogroll.styl b/source/css/_common/components/sidebar/sidebar-blogroll.styl index b677e6868..c2bb9d470 100644 --- a/source/css/_common/components/sidebar/sidebar-blogroll.styl +++ b/source/css/_common/components/sidebar/sidebar-blogroll.styl @@ -14,7 +14,7 @@ .links-of-blogroll-item { padding: 2px 10px; - a { + a, span.exturl { max-width: 280px; box-sizing: border-box; display: inline-block; diff --git a/source/css/_common/components/sidebar/sidebar-feed-link.styl b/source/css/_common/components/sidebar/sidebar-feed-link.styl index b3868a858..3f7a97d5c 100644 --- a/source/css/_common/components/sidebar/sidebar-feed-link.styl +++ b/source/css/_common/components/sidebar/sidebar-feed-link.styl @@ -14,7 +14,7 @@ } &:hover { - color:white; + color: white; background: rgb(252, 100, 35); i { color: white; } diff --git a/source/css/_common/components/sidebar/sidebar-nav.styl b/source/css/_common/components/sidebar/sidebar-nav.styl index 973eda70f..cfdb0f196 100644 --- a/source/css/_common/components/sidebar/sidebar-nav.styl +++ b/source/css/_common/components/sidebar/sidebar-nav.styl @@ -4,6 +4,7 @@ margin: 0 0 20px; padding-left: 0; } + .sidebar-nav li { display: inline-block; cursor: pointer; diff --git a/source/css/_common/components/sidebar/sidebar-toc.styl b/source/css/_common/components/sidebar/sidebar-toc.styl index b9f0264db..5ac7591f5 100644 --- a/source/css/_common/components/sidebar/sidebar-toc.styl +++ b/source/css/_common/components/sidebar/sidebar-toc.styl @@ -1,4 +1,3 @@ - .post-toc-empty { font-size: 14px; color: $grey-dim; diff --git a/source/css/_common/components/sidebar/sidebar-toggle.styl b/source/css/_common/components/sidebar/sidebar-toggle.styl index c4b6a06b1..d944994b5 100644 --- a/source/css/_common/components/sidebar/sidebar-toggle.styl +++ b/source/css/_common/components/sidebar/sidebar-toggle.styl @@ -21,8 +21,6 @@ } } - - .sidebar-toggle-line { position: relative; display: inline-block; diff --git a/source/css/_common/components/sidebar/sidebar.styl b/source/css/_common/components/sidebar/sidebar.styl index 555668ad4..ca4cbb7f8 100644 --- a/source/css/_common/components/sidebar/sidebar.styl +++ b/source/css/_common/components/sidebar/sidebar.styl @@ -22,7 +22,6 @@ +mobile() { hide() if not hexo-config('sidebar.onmobile'); } - } .sidebar-inner { @@ -41,6 +40,20 @@ overflow-x: hidden; } +.cc-license { + margin-top: 10px; + text-align: center; + + .cc-opacity { + opacity: 0.7; + border-bottom: none; + + &:hover { opacity: 0.9; } + } + + img { display: inline-block; } +} + @import "sidebar-toggle"; @import "sidebar-author"; @import "site-state"; diff --git a/source/css/_common/components/sidebar/site-state.styl b/source/css/_common/components/sidebar/site-state.styl index c05b0ea09..a4cafb458 100644 --- a/source/css/_common/components/sidebar/site-state.styl +++ b/source/css/_common/components/sidebar/site-state.styl @@ -14,6 +14,7 @@ a { border-bottom: none; } } + .site-state-item-count { display: block; text-align: center; diff --git a/source/css/_common/components/tag-cloud.styl b/source/css/_common/components/tag-cloud.styl index 30b01c642..fc65edabb 100644 --- a/source/css/_common/components/tag-cloud.styl +++ b/source/css/_common/components/tag-cloud.styl @@ -5,4 +5,8 @@ display: inline-block; margin: 10px; } -} \ No newline at end of file + + a:hover { + color: $link-hover-color !important; + } +} diff --git a/source/css/_common/components/tags/note-modern.styl b/source/css/_common/components/tags/note-modern.styl index cf7659e7a..1af3875ea 100644 --- a/source/css/_common/components/tags/note-modern.styl +++ b/source/css/_common/components/tags/note-modern.styl @@ -179,5 +179,4 @@ } } } - } diff --git a/source/css/_common/components/tags/note.styl b/source/css/_common/components/tags/note.styl index 4b234b0d3..d0f0e6385 100644 --- a/source/css/_common/components/tags/note.styl +++ b/source/css/_common/components/tags/note.styl @@ -157,5 +157,4 @@ } } } - } diff --git a/source/css/_common/components/tags/tabs.styl b/source/css/_common/components/tags/tabs.styl index c3c27c4e9..b78669f18 100644 --- a/source/css/_common/components/tags/tabs.styl +++ b/source/css/_common/components/tags/tabs.styl @@ -68,7 +68,6 @@ } } } - } .tab-content { @@ -91,9 +90,6 @@ } } } - } - } - } diff --git a/source/css/_common/components/third-party/algolia-search.styl b/source/css/_common/components/third-party/algolia-search.styl index 652ba1ac8..eef8937f9 100644 --- a/source/css/_common/components/third-party/algolia-search.styl +++ b/source/css/_common/components/third-party/algolia-search.styl @@ -1,9 +1,9 @@ // fix bug using algolia search's CDN .ais-search-box--magnifier svg { - display: none !important; + display: none !important; } .ais-search-box--reset svg { - display: none !important; + display: none !important; } .algolia-pop-overlay @@ -117,9 +117,10 @@ .algolia-pagination .pagination - margin-top: 40px + margin: 40px 0px border-top: none padding: 0 + opacity: 1 .pagination-item display: inline-block .page-number @@ -132,4 +133,3 @@ .disabled-item visibility: hidden - diff --git a/source/css/_common/components/third-party/busuanzi-counter.styl b/source/css/_common/components/third-party/busuanzi-counter.styl deleted file mode 100644 index 960fef686..000000000 --- a/source/css/_common/components/third-party/busuanzi-counter.styl +++ /dev/null @@ -1,30 +0,0 @@ -if hexo-config("scheme") == Pisces - .busuanzi-count { - +tablet() { - width: auto; - } - +mobile() { - width: auto; - } - } - -.site-uv, -.site-pv, -.page-pv { - display: inline-block; - - .busuanzi-value { - margin: 0 5px; - } -} - -if hexo-config("busuanzi_count.site_pv") and hexo-config("busuanzi_count.site_uv") - .site-uv - { - margin-right: 10px; - - &::after { - content: "|"; - padding-left: 10px; - } - } diff --git a/source/css/_common/components/third-party/gitalk.styl b/source/css/_common/components/third-party/gitalk.styl new file mode 100644 index 000000000..fed020682 --- /dev/null +++ b/source/css/_common/components/third-party/gitalk.styl @@ -0,0 +1,4 @@ +.gt-header a, .gt-comments a, .gt-popup a + border-bottom: none; +.gt-container .gt-popup .gt-action.is--active:before + top: 0.7em; \ No newline at end of file diff --git a/source/css/_common/components/third-party/gitment.styl b/source/css/_common/components/third-party/gitment.styl index 52babf0ba..31e29c41e 100644 --- a/source/css/_common/components/third-party/gitment.styl +++ b/source/css/_common/components/third-party/gitment.styl @@ -1,13 +1,14 @@ -#gitment-display-button{ - display: inline-block; - padding: 0 15px; - color: #0a9caf; - cursor: pointer; - font-size: 14px; - border: 1px solid #0a9caf; - border-radius: 4px; +#gitment-display-button { + display: inline-block; + padding: 0 15px; + color: #0a9caf; + cursor: pointer; + font-size: 14px; + border: 1px solid #0a9caf; + border-radius: 4px; +} + +#gitment-display-button:hover { + color: #fff; + background: #0a9caf; } -#gitment-display-button:hover{ - color: #fff; - background: #0a9caf; -} \ No newline at end of file diff --git a/source/css/_common/components/third-party/han.styl b/source/css/_common/components/third-party/han.styl index d02c9697b..48d82e0fa 100644 --- a/source/css/_common/components/third-party/han.styl +++ b/source/css/_common/components/third-party/han.styl @@ -1,3 +1,3 @@ -.fa { - font-family: FontAwesome!important; +i.fa { + font-family: FontAwesome !important; } diff --git a/source/css/_common/components/third-party/related-posts.styl b/source/css/_common/components/third-party/related-posts.styl index 7c1e6c4bd..ee37898bf 100644 --- a/source/css/_common/components/third-party/related-posts.styl +++ b/source/css/_common/components/third-party/related-posts.styl @@ -19,4 +19,4 @@ ul.popular-posts { line-height: $line-height-base * 1.2; } } -} \ No newline at end of file +} diff --git a/source/css/_common/components/third-party/third-party.styl b/source/css/_common/components/third-party/third-party.styl index cb14c9f4d..8520e3170 100644 --- a/source/css/_common/components/third-party/third-party.styl +++ b/source/css/_common/components/third-party/third-party.styl @@ -1,7 +1,7 @@ @import "gitment" if hexo-config('gitment.enable'); -@import "han"; +@import "han" if hexo-config('han'); @import "localsearch"; -@import "busuanzi-counter"; @import "algolia-search" if hexo-config('algolia_search.enable'); @import "needsharebutton" if hexo-config('needmoreshare2.enable'); @import "related-posts" if hexo-config('related_posts.enable'); +@import "gitalk" if hexo-config('gitalk.enable'); diff --git a/source/css/_common/outline/outline.styl b/source/css/_common/outline/outline.styl index 648c8933d..b0ac5f36a 100644 --- a/source/css/_common/outline/outline.styl +++ b/source/css/_common/outline/outline.styl @@ -9,7 +9,6 @@ html, body { height: 100%; } .container { position: relative; - min-height: 100%; } @@ -28,9 +27,9 @@ html, body { height: 100%; } } } + // Main Section // -------------------------------------------------- -.main { padding-bottom: $footer-height + $gap-between-main-and-footer; } .main-inner { margin: 0 auto; width: $content-desktop; @@ -47,15 +46,11 @@ html, body { height: 100%; } // Footer Section // -------------------------------------------------- .footer { - position: absolute; - left: 0; - bottom: 0; - width: 100%; - min-height: $footer-height; + padding: 20px 0; } .footer-inner { box-sizing: border-box; - margin: 20px auto; + margin: 0px auto; width: $content-desktop; +desktop-large() { diff --git a/source/css/_common/scaffolding/base.styl b/source/css/_common/scaffolding/base.styl index 99032a825..dd18b4c10 100644 --- a/source/css/_common/scaffolding/base.styl +++ b/source/css/_common/scaffolding/base.styl @@ -1,4 +1,3 @@ - ::selection { background: $selection-bg; color: $selection-color; @@ -30,11 +29,17 @@ h1, h2, h3, h4, h5, h6 { margin: 20px 0 15px; } for headline in (1..6) { h{headline} { font-size: $font-size-headings-base - $font-size-headings-step * headline; + code { + font-size: $font-size-headings-base - $font-size-headings-step * headline; + } } +mobile() { h{headline} { font-size: $font-size-headings-base - $font-size-headings-step * headline - 4px; + code { + font-size: $font-size-headings-base - $font-size-headings-step * headline - 4px; + } } } } @@ -50,9 +55,7 @@ a, span.exturl { outline: none; border-bottom: 1px solid $link-decoration-color; - &:hover, - // Improve readability when focused. - &:active { + &:hover { color: $link-hover-color; border-bottom-color: $link-decoration-hover-color; } @@ -73,7 +76,6 @@ img { height: auto; } - hr { margin: 40px 0; height: 3px; diff --git a/source/css/_common/scaffolding/helpers.styl b/source/css/_common/scaffolding/helpers.styl index a00d0bb4f..e5d669e64 100644 --- a/source/css/_common/scaffolding/helpers.styl +++ b/source/css/_common/scaffolding/helpers.styl @@ -3,7 +3,6 @@ // ================================================= - // Alignment .text-left { text-align: left; } .text-center { text-align: center; } diff --git a/source/css/_common/scaffolding/mobile.styl b/source/css/_common/scaffolding/mobile.styl index eb02ef6a9..576f46f5b 100644 --- a/source/css/_common/scaffolding/mobile.styl +++ b/source/css/_common/scaffolding/mobile.styl @@ -14,7 +14,6 @@ } - // < 767px +mobile() { diff --git a/source/css/_common/scaffolding/tables.styl b/source/css/_common/scaffolding/tables.styl index 138a040b5..96103fe96 100644 --- a/source/css/_common/scaffolding/tables.styl +++ b/source/css/_common/scaffolding/tables.styl @@ -1,12 +1,16 @@ -table { +.table-container { margin: 20px 0; + overflow: auto; + -webkit-overflow-scrolling: touch; +} + +table { width: $table-width; border-collapse: collapse; border-spacing: 0; - border: 1px solid $table-border-color; font-size: $table-font-size; - word-break: break-all; } + table>tbody>tr { &:nth-of-type(odd) { background-color: $table-row-odd-bg-color; } &:hover { background-color: $table-row-hover-bg-color; } @@ -20,8 +24,8 @@ caption, th, td { } th, td { + border: 1px solid $table-border-color; border-bottom: 3px solid $table-cell-border-bottom-color; - border-right: 1px solid $table-cell-border-right-color; } th { diff --git a/source/css/_mixins/base.styl b/source/css/_mixins/base.styl index f6e4fff10..3c288c300 100644 --- a/source/css/_mixins/base.styl +++ b/source/css/_mixins/base.styl @@ -107,3 +107,12 @@ word-wrap() { overflow-wrap: break-word; word-wrap: break-word; } + +disable-touch-hover() { + // To prevent hover on external links with touch devices after click. + @media (hover:none) { + &:hover { + background: none; + } + } +} diff --git a/source/css/_schemes/Gemini/index.styl b/source/css/_schemes/Gemini/index.styl index 1706837d9..ddd181f6b 100644 --- a/source/css/_schemes/Gemini/index.styl +++ b/source/css/_schemes/Gemini/index.styl @@ -57,7 +57,7 @@ use_seo = hexo-config('seo'); // Comments blocks. .comments { padding: $content-desktop-padding; - margin: initial; + margin: auto; margin-top: $sidebar-offset; background: white; box-shadow: $box-shadow; @@ -143,13 +143,22 @@ use_seo = hexo-config('seo'); h1 { font-size: 1.6em; border-bottom: 1px solid $body-bg-color; + code { + font-size: 1em; + } } h2 { font-size: 1.45em; border-bottom: 1px solid $body-bg-color; + code { + font-size: 1em; + } } h3 { font-size: 1.3em; + code { + font-size: 1em; + } if use_seo { border-bottom: 1px solid $body-bg-color; } else { @@ -158,15 +167,24 @@ use_seo = hexo-config('seo'); } h4 { font-size: 1.2em; + code { + font-size: 1em; + } if use_seo { border-bottom: 1px dotted $body-bg-color; } } h5 { font-size: 1.07em; + code { + font-size: 1em; + } } h6 { font-size: 1.03em; + code { + font-size: 1em; + } } } @@ -229,8 +247,7 @@ use_seo = hexo-config('seo'); // Components inside Posts. .post-button { - margin-top: $sidebar-offset; - //padding-bottom : 15px; + margin: $sidebar-offset 0px; } img { padding: initial !important; @@ -261,5 +278,4 @@ use_seo = hexo-config('seo'); .pagination { margin: $content-mobile-padding 0 0; } - } diff --git a/source/css/_schemes/Mist/_header.styl b/source/css/_schemes/Mist/_header.styl index a19164907..8a4534e87 100644 --- a/source/css/_schemes/Mist/_header.styl +++ b/source/css/_schemes/Mist/_header.styl @@ -38,7 +38,6 @@ } } - .logo-line-before, .logo-line-after { display: block; diff --git a/source/css/_schemes/Mist/_menu.styl b/source/css/_schemes/Mist/_menu.styl index bdf27a954..20807e3a8 100644 --- a/source/css/_schemes/Mist/_menu.styl +++ b/source/css/_schemes/Mist/_menu.styl @@ -5,6 +5,10 @@ float: right; } +.menu-item-active a { + background: #e1e1e1; +} + .menu { //float: right; margin: 8px 0 0 0; @@ -40,7 +44,8 @@ } - .menu-item a { + .menu-item a, + .menu-item span.exturl { padding: 0 10px; border: none; border-radius: 2px; @@ -50,7 +55,11 @@ text-align: left; } - &:hover { background: #e1e1e1; } + &:hover { + @extend .menu-item-active a; + } + + disable-touch-hover(); } a::before { @@ -61,7 +70,3 @@ +mobile() { float: none; } } - -.menu-item-active a { - @extend .menu .menu-item a:hover; -} diff --git a/source/css/_schemes/Mist/_posts-expanded.styl b/source/css/_schemes/Mist/_posts-expanded.styl index af35e9631..b29873c8b 100644 --- a/source/css/_schemes/Mist/_posts-expanded.styl +++ b/source/css/_schemes/Mist/_posts-expanded.styl @@ -61,7 +61,6 @@ +mobile() { font-size: $font-size-small; } +desktop-large() { font-size: $font-size-large; } - &:hover { border-bottom-color: $black-deep; } } } diff --git a/source/css/_schemes/Mist/_search.styl b/source/css/_schemes/Mist/_search.styl index 6cd7b2c96..0cf6b6e47 100644 --- a/source/css/_schemes/Mist/_search.styl +++ b/source/css/_schemes/Mist/_search.styl @@ -2,4 +2,4 @@ // -------------------------------------------------- .site-search form { display: none; -} \ No newline at end of file +} diff --git a/source/css/_schemes/Mist/index.styl b/source/css/_schemes/Mist/index.styl index bb2f4c50a..ea38bdd3a 100644 --- a/source/css/_schemes/Mist/index.styl +++ b/source/css/_schemes/Mist/index.styl @@ -23,7 +23,6 @@ .headband { display: none; } - // Search // -------------------------------------------------- .site-search { @@ -38,14 +37,12 @@ } } - // Page - Container // -------------------------------------------------- .container .main-inner { +mobile() { width: auto; } } - // Page - Post details // -------------------------------------------------- .page-post-detail { @@ -57,7 +54,6 @@ .post-meta { margin-bottom: 60px; } } - // Pagination // -------------------------------------------------- .pagination { diff --git a/source/css/_schemes/Muse/_logo.styl b/source/css/_schemes/Muse/_logo.styl index 1d0437aef..789311a73 100644 --- a/source/css/_schemes/Muse/_logo.styl +++ b/source/css/_schemes/Muse/_logo.styl @@ -1,16 +1,20 @@ .custom-logo { - .site-meta-headline { text-align: center; } + .site-meta-headline { + text-align: center; + } - .brand { background: none; } + .brand { + background: none; + } .site-title { margin: 10px auto 0; font-size: 24px; color: $black-deep; - a { border: none; } + a { + border: none; + } } - - } .custom-logo-image { diff --git a/source/css/_schemes/Muse/_menu.styl b/source/css/_schemes/Muse/_menu.styl index 16dbee194..4d9114e61 100644 --- a/source/css/_schemes/Muse/_menu.styl +++ b/source/css/_schemes/Muse/_menu.styl @@ -15,6 +15,16 @@ .menu { +mobile() { text-align: left; } } + +.menu-item-active a { + border-bottom-color: $menu-link-hover-border !important; + color: $black-deep; + + +mobile() { + border-bottom: 1px dotted $gray-lighter !important; + } +} + .menu .menu-item { +mobile() { display: block; @@ -41,20 +51,21 @@ +mobile() { display: none; } } - a { + a, span.exturl { +mobile() { padding: 5px 10px; - border-bottom-color: white !important; } - } - .fa { margin-right: 0; } -} -.menu-item-active a { - border-bottom-color: $menu-link-hover-border !important; - color: $black-deep; + &:hover { + @extend .menu-item-active a; + } - +mobile() { - border-bottom-color: white !important; + // To prevent hover on external links with touch devices after click. + @media (hover:none) { + &:hover { + border-bottom-color: transparent !important; + } + } } + .fa { margin-right: 0; } } diff --git a/source/css/_schemes/Muse/_search.styl b/source/css/_schemes/Muse/_search.styl index 6cd7b2c96..0cf6b6e47 100644 --- a/source/css/_schemes/Muse/_search.styl +++ b/source/css/_schemes/Muse/_search.styl @@ -2,4 +2,4 @@ // -------------------------------------------------- .site-search form { display: none; -} \ No newline at end of file +} diff --git a/source/css/_schemes/Pisces/_brand.styl b/source/css/_schemes/Pisces/_brand.styl index c85ee8f50..68bcbf92c 100644 --- a/source/css/_schemes/Pisces/_brand.styl +++ b/source/css/_schemes/Pisces/_brand.styl @@ -19,7 +19,9 @@ padding: 0; background: none; - &:hover { color: white; } + &:hover { + color: white; + } } .site-subtitle { @@ -27,4 +29,16 @@ font-weight: initial; } -.site-search form { display: none; } +.custom-logo-image { + margin-top: 20px; + +tablet() { + display: none; + } + +mobile() { + display: none; + } +} + +.site-search form { + display: none; +} diff --git a/source/css/_schemes/Pisces/_layout.styl b/source/css/_schemes/Pisces/_layout.styl index ea55b358b..31c37e5ac 100644 --- a/source/css/_schemes/Pisces/_layout.styl +++ b/source/css/_schemes/Pisces/_layout.styl @@ -44,12 +44,6 @@ .main { clearfix(); - +tablet() { - padding-bottom: 100px; - } - +mobile() { - padding-bottom: 100px; - } } .container .main-inner { @@ -88,7 +82,7 @@ .sidebar { position: static; float: left; - margin-top: 300px; + margin-left: -100%; width: $sidebar-desktop; background: $body-bg-color; box-shadow: none; @@ -128,4 +122,3 @@ padding-right: 260px; } } - diff --git a/source/css/_schemes/Pisces/_menu.styl b/source/css/_schemes/Pisces/_menu.styl index e740c1c3c..0711981f1 100644 --- a/source/css/_schemes/Pisces/_menu.styl +++ b/source/css/_schemes/Pisces/_menu.styl @@ -12,11 +12,31 @@ } } +.menu-item-active a { + background: #f9f9f9; + border-bottom-color: white; + + badges = hexo-config('menu_settings.badges'); + if not badges { + &:after { + content: " "; + position: absolute; + top: 50%; + margin-top: -3px; + right: 15px; + width: 6px; + height: 6px; + border-radius: 50%; + background-color: $grey; + } + } +} + .menu .menu-item { display: block; margin: 0; - a { + a, span.exturl { position: relative; box-sizing: border-box; padding: 5px 20px; @@ -26,9 +46,10 @@ the-transition(); &:hover { - background: #f9f9f9; - border-bottom-color: white; + @extend .menu-item-active a; } + + disable-touch-hover(); } .badge { @@ -50,26 +71,6 @@ br { display: none; } } -.menu-item-active a { - @extend .menu .menu-item a:hover; - - badges = hexo-config('menu_settings.badges'); - if not badges { - &:after { - content: " "; - position: absolute; - top: 50%; - margin-top: -3px; - right: 15px; - width: 6px; - height: 6px; - border-radius: 50%; - background-color: $grey; - } - } - -} - .btn-bar { background-color: white; } diff --git a/source/css/_schemes/Pisces/_sidebar.styl b/source/css/_schemes/Pisces/_sidebar.styl index 9ced48649..8dab47fb1 100644 --- a/source/css/_schemes/Pisces/_sidebar.styl +++ b/source/css/_schemes/Pisces/_sidebar.styl @@ -1,7 +1,6 @@ .use-motion .sidebar .motion-element { opacity: 1; } .sidebar { - margin-left: -100%; right: auto; bottom: auto; @@ -10,7 +9,6 @@ -webkit-transform: none; } - .sidebar-inner { //padding: 20px 10px 0; box-sizing: border-box; @@ -29,7 +27,6 @@ &.affix-bottom { position: absolute; } - } .site-overview { @@ -42,7 +39,7 @@ } .sidebar a, -.sidebar .exturl { +.sidebar span.exturl { color: $black-light; &:hover { color: $black-deep; } @@ -53,8 +50,8 @@ } .links-of-author-item { - a:before, .exturl:before { display: none; } - a, .exturl { + a:before, span.exturl:before { display: none; } + a, span.exturl { border-bottom: none; text-decoration: underline; } @@ -85,14 +82,14 @@ flex-wrap: wrap; justify-content: center; - .exturl { + span.exturl { font-size: 13px; } } .links-of-author-item { sidebar-inline-links-item(); - a, .exturl { + a, span.exturl { display: block; text-decoration: none; @@ -109,7 +106,6 @@ .fa-globe { font-size: 15px; } } - .links-of-blogroll { text-align: center; margin-top: 20px; diff --git a/source/css/_schemes/Pisces/_sub-menu.styl b/source/css/_schemes/Pisces/_sub-menu.styl index 5d580f36a..795e7b1b5 100644 --- a/source/css/_schemes/Pisces/_sub-menu.styl +++ b/source/css/_schemes/Pisces/_sub-menu.styl @@ -8,12 +8,12 @@ .sub-menu .menu-item { display: inline-block !important; - & a { + & a, span.exturl { padding: initial !important; margin: 5px 10px; } - & a:hover { + & a:hover, span.exturl:hover { background: initial !important; color: $sidebar-highlight; } diff --git a/source/css/_variables/Gemini.styl b/source/css/_variables/Gemini.styl index 095aad3a8..0bfa6c883 100644 --- a/source/css/_variables/Gemini.styl +++ b/source/css/_variables/Gemini.styl @@ -16,3 +16,6 @@ $border-radius-inner = initial $border-radius = initial //$border-radius-inner = 0 0 3px 3px; //$border-radius = 3px; + +// Back to top +$b2t-sidebar-bg-color = $body-bg-color diff --git a/source/css/_variables/Pisces.styl b/source/css/_variables/Pisces.styl index 3c2283dc1..9a4aa178e 100644 --- a/source/css/_variables/Pisces.styl +++ b/source/css/_variables/Pisces.styl @@ -5,7 +5,6 @@ // -------------------------------------------------- $body-bg-color = #f5f7f9 -$sidebar-offset = unit(hexo-config('sidebar.offset'), px) if hexo-config('sidebar.offset') is a 'unit' $sidebar-width = hexo-config('sidebar.width') is a 'unit' ? hexo-config('sidebar.width') : 240 $sidebar-desktop = unit($sidebar-width, 'px') $content-wrap = 'calc(100% - %s)' % unit($sidebar-width + $sidebar-offset, 'px') @@ -77,3 +76,4 @@ $btn-default-hover-bg = $black-deep $b2t-opacity = .6 $b2t-position-bottom = -100px $b2t-position-bottom-on = 30px +$b2t-sidebar-bg-color = $body-bg-color diff --git a/source/css/_variables/base.styl b/source/css/_variables/base.styl index 039803d37..971723501 100644 --- a/source/css/_variables/base.styl +++ b/source/css/_variables/base.styl @@ -3,11 +3,9 @@ // ================================================= - // Colors // colors for use across theme. // -------------------------------------------------- - $whitesmoke = #f5f5f5 $gainsboro = #eee $gray-lighter = #ddd @@ -25,11 +23,9 @@ $blue-deep = #262a30 $orange = #fc6423 - // Scaffolding // Settings for some of the most global styles. // -------------------------------------------------- - // Global text color on $text-color = $black-light @@ -50,12 +46,9 @@ $selection-bg = $blue-deep $selection-color = white - // Typography // Font, line-height, and elements colors. // -------------------------------------------------- - - get_font_family(config) { custom_family = hexo-config('font.' + config + '.family') return custom_family is a 'string' ? custom_family : null @@ -113,7 +106,6 @@ $line-height-base = 2 $line-height-code-block = 1.6 // Can't be less than 1.3 - // Z-index master list // -------------------------------------------------- $zindex-bottom = -1 @@ -124,7 +116,6 @@ $zindex-4 = 1040 $zindex-5 = 1050 - // Table // -------------------------------------------------- $table-width = 100% @@ -140,7 +131,6 @@ $table-row-odd-bg-color = #f9f9f9 $table-row-hover-bg-color = $whitesmoke - // Code & Code Blocks // -------------------------------------------------- $code-font-family = $font-family-monospace @@ -151,10 +141,8 @@ $code-foreground = $black-light $code-background = $gainsboro - // Buttons // -------------------------------------------------- - $btn-font-weight = normal $btn-default-radius = 0 @@ -168,10 +156,8 @@ $btn-default-hover-color = $black-deep $btn-default-hover-border-color = $black-deep - // Pagination // -------------------------------------------------- - $pagination-border = $gainsboro $pagination-link-bg = transparent @@ -187,11 +173,8 @@ $pagination-active-color = white $pagination-active-border = $grey-light - // Layout sizes // -------------------------------------------------- - - $content-desktop = 700px $content-desktop-large = 800px $content-desktop-largest = 900px @@ -200,11 +183,6 @@ $content-desktop-padding = 40px $content-tablet-padding = 10px $content-mobile-padding = 8px -$footer-height = 50px - -$gap-between-main-and-footer = 100px - - // Headband // -------------------------------------------------- @@ -212,11 +190,9 @@ $headband-height = 3px $headband-bg = $black-deep - // Section Header // Variables for header section elements. // -------------------------------------------------- - $head-bg = transparent // Site Meta @@ -237,7 +213,6 @@ $menu-link-border = transparent $menu-link-hover-border = $black-deep - // Posts Expand // -------------------------------------------------- $posts-expand-title-font-weight = $font-weight-normal @@ -262,6 +237,7 @@ $posts-collapse-left-mobile = 5px // Sidebar // Variables for sidebar section elements. // -------------------------------------------------- +$sidebar-offset = unit(hexo-config('sidebar.offset'), px) if hexo-config('sidebar.offset') is a 'unit' $sidebar-nav-color = $black-light $sidebar-nav-hover-color = $whitesmoke $sidebar-highlight = $blue-bright @@ -301,7 +277,6 @@ $toc-link-active-current-border-color = $sidebar-highlight // Components // -------------------------------------------------- - // Back to top $b2t-opacity = 1 $b2t-position-bottom = -100px @@ -310,6 +285,7 @@ $b2t-position-right = 30px $b2t-font-size = 12px $b2t-color = white $b2t-bg-color = $black-deep +$b2t-sidebar-bg-color = $black-deep // .post-expand .post-eof // In Muse scheme, margin above and below the post separator @@ -320,7 +296,6 @@ $post-eof-margin-bottom = 60px // or 120px for less white space // Iconography // Icons SVG Base64 // -------------------------------------------------- - // blockquote-center icon $center-quote-left = '../images/quote-l.svg' $center-quote-right = '../images/quote-r.svg' diff --git a/source/css/main.styl b/source/css/main.styl index fdb13608d..b0fd7802d 100644 --- a/source/css/main.styl +++ b/source/css/main.styl @@ -1,7 +1,6 @@ // CSS Style Guide: http://codeguide.co/#css - $scheme = hexo-config('scheme') ? hexo-config('scheme') : 'Muse'; $custom_styles = hexo-config('custom_file_path.styles') ? "../../../../../" + hexo-config('custom_file_path.styles') : custom; @@ -12,7 +11,6 @@ $variables = base $scheme $custom_variables; $mixins = base $scheme $custom_mixins; - // Variables Layer // -------------------------------------------------- for $variable in $variables @@ -25,7 +23,6 @@ for $mixin in $mixins @import "_mixins/" + $mixin; - // Common Layer // -------------------------------------------------- @@ -44,7 +41,6 @@ for $mixin in $mixins @import "_schemes/" + $scheme; - // Custom Layer // -------------------------------------------------- @import "_custom/" + $custom_styles; diff --git a/source/js/src/motion.js b/source/js/src/motion.js index 4e9adadd4..a0951fbdf 100644 --- a/source/js/src/motion.js +++ b/source/js/src/motion.js @@ -158,8 +158,7 @@ $(document).ready(function() { self.sidebarEl.addClass('sidebar-active'); self.sidebarEl.trigger('sidebar.didShow'); } - } - ); + }); this.sidebarEl.trigger('sidebar.isShowing'); }, @@ -206,6 +205,7 @@ $(document).ready(function() { logo: function(integrator) { var sequence = []; var $brand = $('.brand'); + var $image = $('.custom-logo-image'); var $title = $('.site-title'); var $subtitle = $('.site-subtitle'); var $logoLineTop = $('.logo-line-before i'); @@ -240,16 +240,26 @@ $(document).ready(function() { }; } + function pushImageToSequence() { + sequence.push({ + e: $image, + p: {opacity: 1, top: 0}, + o: {duration: 200} + }); + } + NexT.utils.isMist() && hasElement([$logoLineTop, $logoLineBottom]) && sequence.push( getMistLineSettings($logoLineTop, '100%'), getMistLineSettings($logoLineBottom, '-100%') ); + NexT.utils.isMuse() && hasElement($image) && pushImageToSequence(); + hasElement($title) && sequence.push({ e: $title, p: {opacity: 1, top: 0}, - o: { duration: 200 } + o: {duration: 200} }); hasElement($subtitle) && sequence.push({ @@ -258,6 +268,8 @@ $(document).ready(function() { o: {duration: 200} }); + (NexT.utils.isPisces() || NexT.utils.isGemini()) && hasElement($image) && pushImageToSequence(); + if (CONFIG.motion.async) { integrator.next(); } diff --git a/source/js/src/schemes/muse.js b/source/js/src/schemes/muse.js new file mode 100644 index 000000000..a0e2c5662 --- /dev/null +++ b/source/js/src/schemes/muse.js @@ -0,0 +1,9 @@ +$(document).ready(function() { + function updateFooterPosition() { + var containerHeight = $('#footer').attr('position') ? $('.container').height() + $('#footer').outerHeight(true) : $('.container').height(); + if (containerHeight < window.innerHeight) $('#footer').css({ 'position': 'fixed', 'bottom': 0, 'left': 0, 'right': 0 }).attr('position', 'fixed'); + else $('#footer').removeAttr('style position'); + } + updateFooterPosition(); + $(window).on('resize scroll', updateFooterPosition); +}); diff --git a/source/js/src/schemes/pisces.js b/source/js/src/schemes/pisces.js index dbc13ac48..8c6e896fd 100644 --- a/source/js/src/schemes/pisces.js +++ b/source/js/src/schemes/pisces.js @@ -3,16 +3,17 @@ $(document).ready(function() { var sidebarInner = $('.sidebar-inner'); - var sidebarOffset = CONFIG.sidebar.offset ? CONFIG.sidebar.offset : 12; + var sidebarOffset = CONFIG.sidebar.offset || 12; function getHeaderOffset() { return $('.header-inner').height() + sidebarOffset; } function getFooterOffset() { + var footer = $('#footer'); var footerInner = $('.footer-inner'); - var footerMargin = footerInner.outerHeight(true) - footerInner.outerHeight(); - var footerOffset = footerInner.outerHeight(true) + footerMargin; + var footerMargin = footer.outerHeight() - footerInner.outerHeight(); + var footerOffset = footer.outerHeight() + footerMargin; return footerOffset; } @@ -22,7 +23,7 @@ $(document).ready(function() { var sidebarHeight = $('#sidebar').height() + NexT.utils.getSidebarb2tHeight(); var contentHeight = $('#content').height(); - // Not affix if sidebar taller then content (to prevent bottom jumping). + // Not affix if sidebar taller than content (to prevent bottom jumping). if (headerOffset + sidebarHeight < contentHeight) { sidebarInner.affix({ offset: { @@ -33,7 +34,7 @@ $(document).ready(function() { sidebarInner.affix('checkPosition'); } - $('#sidebar').css({ 'margin-top': headerOffset, 'margin-left': 'initial' }); + $('#sidebar').css({ 'margin-top': headerOffset, 'margin-left': 'auto' }); } function recalculateAffixPosition() { diff --git a/source/js/src/utils.js b/source/js/src/utils.js index 4089aa655..936c1970a 100644 --- a/source/js/src/utils.js +++ b/source/js/src/utils.js @@ -7,7 +7,7 @@ NexT.utils = NexT.$u = { */ wrapImageWithFancyBox: function() { $('.content img') - .not('[hidden]') + .not(':hidden') .not('.group-picture img, .post-gallery img') .each(function() { var $image = $(this); @@ -17,11 +17,10 @@ NexT.utils = NexT.$u = { if ($imageWrapLink.length < 1) { var imageLink = $image.attr('data-original') ? this.getAttribute('data-original') : this.getAttribute('src'); $imageWrapLink = $image.wrap('').parent('a'); + $imageWrapLink.addClass('fancybox fancybox.image'); + $imageWrapLink.attr('rel', 'group'); } - $imageWrapLink.addClass('fancybox fancybox.image'); - $imageWrapLink.attr('rel', 'group'); - if (imageTitle) { $imageWrapLink.append('

    ' + imageTitle + '

    '); @@ -57,7 +56,7 @@ NexT.utils = NexT.$u = { $(function() { $(window).bind('hashchange', function() { var tHash = location.hash; - if (tHash !== '') { + if (tHash !== '' && !tHash.match(/%\S{2}/)) { $(tNav + 'li:has(a[href="' + tHash + '"])').addClass('active').siblings().removeClass('active'); $(tHash).addClass('active').siblings().removeClass('active'); } @@ -80,7 +79,6 @@ NexT.utils = NexT.$u = { } } }); - }, registerESCKeyEvent: function() { @@ -120,7 +118,7 @@ NexT.utils = NexT.$u = { }); $top.on('click', function() { - $('body').velocity('scroll'); + $.isFunction($('html').velocity) ? $('body').velocity('scroll') : $('html, body').animate({ scrollTop: 0 }); }); }, @@ -241,6 +239,10 @@ NexT.utils = NexT.$u = { $('.sidebar-toggle').trigger('click'); }, + isMuse: function() { + return CONFIG.scheme === 'Muse'; + }, + isMist: function() { return CONFIG.scheme === 'Mist'; }, @@ -257,7 +259,6 @@ NexT.utils = NexT.$u = { var $div = $('
    ').addClass('scrollbar-measure').prependTo('body'); var div = $div[0]; var scrollbarWidth = div.offsetWidth - div.clientWidth; - $div.remove(); return scrollbarWidth; @@ -286,11 +287,14 @@ NexT.utils = NexT.$u = { : (sidebarPadding * 2) + (sidebarNavHeight / 2); return sidebarSchemePadding; } - }; $(document).ready(function() { + function wrapTable() { + $('table').wrap('
    '); + } + /** * Init Sidebar & TOC inner dimensions on all pages and for all schemes. * Need for Sidebar/TOC inner scrolling if content taller then viewport. @@ -326,7 +330,6 @@ $(document).ready(function() { // Initialize Sidebar & TOC Height. updateSidebarHeight(document.body.clientHeight - NexT.utils.getSidebarSchemePadding()); } - initSidebarDimension(); - + wrapTable(); }); From 56ce6976a9d13f8d743d2bca5f94df930bcd5fc2 Mon Sep 17 00:00:00 2001 From: BladeCode Date: Sun, 17 Feb 2019 17:10:10 +0800 Subject: [PATCH 055/163] update next v7.0.0 --- package-lock.json | 3455 ++++++++++++++++++++++++++++++++++++++------- package.json | 4 +- 2 files changed, 2935 insertions(+), 524 deletions(-) diff --git a/package-lock.json b/package-lock.json index f23a79e16..2834d8c3a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,118 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.3.tgz", + "integrity": "sha512-aEADYwRRZjJyMnKN7llGIlircxTCofm3dtV5pmY6ob18MSIuipHpA2yZWkPlycwu5HJcx/pADS3zssd8eY7/6A==", + "requires": { + "@babel/types": "^7.3.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.3.tgz", + "integrity": "sha512-xsH1CJoln2r74hR+y7cg2B5JCPaTh+Hd+EbBRk9nWGSNspuo6krjhX0Om6RnRQuIvFq8wVXCLKH3kwKDYhanSg==" + }, + "@babel/template": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", + "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.2.2", + "@babel/types": "^7.2.2" + } + }, + "@babel/traverse": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", + "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.2.2", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.2.3", + "@babel/types": "^7.2.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "@babel/types": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.3.tgz", + "integrity": "sha512-2tACZ80Wg09UnPg5uGAOUvvInaqLk3l/IAhQzlxLQOIXacr6bMsra5SH6AWw/hIDRCSbCdHP2KzSOD+cT7TzMQ==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, "JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", @@ -105,6 +217,11 @@ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", @@ -115,6 +232,11 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, "async": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", @@ -125,125 +247,24 @@ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "babel-eslint": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", - "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", - "requires": { - "babel-code-frame": "^6.22.0", - "babel-traverse": "^6.23.1", - "babel-types": "^6.23.0", - "babylon": "^6.17.0" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "core-js": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", - "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=" - } - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz", + "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==", "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "^1.0.0" } }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -254,6 +275,66 @@ "resolved": "https://registry.npmjs.org/balloon-css/-/balloon-css-0.5.0.tgz", "integrity": "sha1-ajwGXvq56l9QmpXUMV3wCq4RT6M=" }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, "basic-auth": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", @@ -306,6 +387,29 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, "camel-case": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", @@ -378,6 +482,32 @@ "readdirp": "^2.0.0" } }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -403,6 +533,15 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -421,6 +560,11 @@ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz", "integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw==" }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, "compressible": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", @@ -484,6 +628,11 @@ } } }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, "copy-to": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", @@ -552,6 +701,11 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, "default-user-agent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz", @@ -560,6 +714,53 @@ "os-name": "~1.0.3" } }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -665,11 +866,38 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==" + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", @@ -696,6 +924,25 @@ "fill-range": "^2.1.0" } }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", @@ -758,6 +1005,14 @@ "for-in": "^1.0.1" } }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -785,7 +1040,8 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "bundled": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -803,11 +1059,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -820,15 +1078,18 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true + "bundled": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -931,7 +1192,8 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "bundled": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -941,6 +1203,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -953,17 +1216,20 @@ "minimatch": { "version": "3.0.4", "bundled": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true + "bundled": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -980,6 +1246,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -1052,7 +1319,8 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -1062,6 +1330,7 @@ "once": { "version": "1.4.0", "bundled": true, + "optional": true, "requires": { "wrappy": "1" } @@ -1137,7 +1406,8 @@ }, "safe-buffer": { "version": "5.1.1", - "bundled": true + "bundled": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -1167,6 +1437,7 @@ "string-width": { "version": "1.0.2", "bundled": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1184,6 +1455,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1222,15 +1494,22 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "yallist": { "version": "3.0.2", - "bundled": true + "bundled": true, + "optional": true } } }, - "gitment": { + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "gitment": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/gitment/-/gitment-0.0.3.tgz", "integrity": "sha1-28y610gLE0W2VpE71w7/eSp7OLg=", @@ -1269,9 +1548,9 @@ } }, "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==" }, "graceful-fs": { "version": "4.1.11", @@ -1291,6 +1570,60 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "hexo": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/hexo/-/hexo-3.8.0.tgz", @@ -1388,227 +1721,976 @@ } }, "hexo-deployer-git": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-0.3.1.tgz", - "integrity": "sha512-JSwSmTSknGpaiooGXwmP7sAhoSNW3c+xmBiCc5yyrvRSfQ3zIYWjmcqNXSj8m2DmheqQNgt5D4M7quYjw+L6tA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-1.0.0.tgz", + "integrity": "sha512-fwE/6IbQMMUd0v1VwZ9eugomLBWOSVFkBKc4DRGE7MELrYKFTkiXZQiHlWvdBlzzCnINAwR0JJLnHqGe59nDlA==", "requires": { - "babel-eslint": "^7.2.1", + "babel-eslint": "^10.0.1", "bluebird": "^3.5.0", - "chalk": "^1.1.3", - "hexo-fs": "^0.2.0", + "chalk": "^2.4.1", + "hexo-fs": "^1.0.0", "hexo-util": "^0.6.0", "moment": "^2.18.0", - "swig": "^1.4.2" + "swig-templates": "^2.0.2" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "source-map": { - "version": "0.1.34", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=", + "chokidar": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.1.tgz", + "integrity": "sha512-gfw3p2oQV2wEt+8VuMlNsPjCxDxvvgnm/kz+uATu805mWVF8IJN7uz9DN7iBz+RMJISmiVbCOBFs9qBGMjtPfQ==", "requires": { - "amdefine": ">=0.0.4" + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.0" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "ansi-regex": "^2.0.0" + "ms": "2.0.0" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "swig": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/swig/-/swig-1.4.2.tgz", - "integrity": "sha1-QIXKBFM2kQS11IPihBs5t64aq6U=", + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "optimist": "~0.6", - "uglify-js": "~2.4" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } } }, - "uglify-js": { - "version": "2.4.24", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=", + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { - "async": "~0.2.6", - "source-map": "0.1.34", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.5.4" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" - }, - "yargs": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=", + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "camelcase": "^1.0.2", - "decamelize": "^1.0.0", - "window-size": "0.1.0", - "wordwrap": "0.0.2" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } - } - } - }, - "hexo-douban": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/hexo-douban/-/hexo-douban-0.2.16.tgz", - "integrity": "sha512-xRunvmGgEi4ER+fvwx85xeScyO5ci/gcypa6VwNlydq0alR8dq5tT0QKKnr89QWcJwJYSnlsP/xOjuJPRlj8gw==", - "requires": { - "ejs": "2.5.6", - "hexo-fs": "^0.2.2", - "hexo-i18n": "^0.2.1", - "hexo-log": "^0.2.0", - "path": "^0.12.7", - "urllib-sync": "^1.0.1", - "xmldom": "^0.1.27", - "xpath": "^0.0.24" - }, - "dependencies": { - "ejs": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.6.tgz", - "integrity": "sha1-R5Y2v6P+Ox3r1SCH8KyyBLTxnIg=" - } - } - }, - "hexo-front-matter": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-0.2.3.tgz", - "integrity": "sha1-x8qO9CDqNr2F6ECKLoyb9J76YF4=", - "requires": { - "js-yaml": "^3.6.1" - } - }, - "hexo-fs": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-0.2.3.tgz", - "integrity": "sha512-rLB1rMVUW3csAljvJgHfyjemL0BrmcUZfBf9hJe6S0pA53igFa3ON0PFwomvoLs1Wdmjs9Awnw9Tru4PjWFSlQ==", - "requires": { - "bluebird": "^3.4.0", - "chokidar": "^1.5.2", - "escape-string-regexp": "^1.0.5", - "graceful-fs": "^4.1.4" - } - }, - "hexo-generator-archive": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/hexo-generator-archive/-/hexo-generator-archive-0.1.5.tgz", - "integrity": "sha512-jPbMtibqkJnAX3hCwhYhK3r6cqy9OKQsVEScjk7LDok+iPmFmkKCNdU/OccxGe1CWAZpT+ta4+LknwNeHG2G4w==", - "requires": { - "hexo-pagination": "0.0.2", - "object-assign": "^2.0.0" - }, - "dependencies": { - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" - } - } - }, - "hexo-generator-category": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/hexo-generator-category/-/hexo-generator-category-0.1.3.tgz", - "integrity": "sha1-uealhiUwqDvdfaTIGcG58+TMtLI=", - "requires": { - "hexo-pagination": "0.0.2", - "object-assign": "^2.0.0" - }, - "dependencies": { - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" - } - } - }, - "hexo-generator-feed": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/hexo-generator-feed/-/hexo-generator-feed-1.2.2.tgz", - "integrity": "sha512-4jcvVhFgpEFRJ7A+KhBSfWoQaewRBjcVWEO4OmBgnvaZOm6XwK+b5ZXx/8BpujCLHbjXWzglXhiT7qFFS/nvzw==", - "requires": { - "nunjucks": "^3.0.0", - "object-assign": "^4.1.1" - } - }, - "hexo-generator-index": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/hexo-generator-index/-/hexo-generator-index-0.2.1.tgz", - "integrity": "sha1-kEIin8rHmq9wBXXaGTMr8/fuXF0=", - "requires": { - "hexo-pagination": "0.0.2", - "object-assign": "^4.0.1" - } - }, - "hexo-generator-searchdb": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/hexo-generator-searchdb/-/hexo-generator-searchdb-1.0.8.tgz", - "integrity": "sha1-BCRSVuFBOmYxOTLb8cCn5WhVkwE=", - "requires": { - "ejs": "^1.0.0", - "striptags": "^3.1.1", - "utils-merge": "^1.0.0" - }, - "dependencies": { - "ejs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-1.0.0.tgz", - "integrity": "sha1-ycYKSKRu5FL7MqccMXuV5aofyz0=" }, - "striptags": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.1.1.tgz", - "integrity": "sha1-yMPn/db7S7OjKjt1LltePjgJPr0=" - } - } - }, - "hexo-generator-sitemap": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hexo-generator-sitemap/-/hexo-generator-sitemap-1.2.0.tgz", - "integrity": "sha1-MBj419Hi5Cs/caZacxb/z1g7w/M=", - "requires": { - "minimatch": "^3.0.0", - "nunjucks": "^2.3.0", - "object-assign": "^4.0.1" - }, + "fsevents": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.2.4", + "bundled": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "optional": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "hexo-fs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-1.0.2.tgz", + "integrity": "sha512-cbDnYuk6IndW/Fr2RcfZsZXE5wlG6tFoeBgZsHY230sSYalvX4JBPOUrE8As7Agysl+NGMthtr/Drtuliy5foQ==", + "requires": { + "bluebird": "^3.5.1", + "chokidar": "^2.0.4", + "escape-string-regexp": "^1.0.5", + "graceful-fs": "^4.1.11" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + } + } + }, + "hexo-douban": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/hexo-douban/-/hexo-douban-1.0.7.tgz", + "integrity": "sha512-UNqFuljL5A2Rf2r2GPIF6WsYXn84lw/ZeUoWqPmZe4IzkpyiPwuc3xauQroZo26XY69BgoHN78d8timg5qAAIA==", + "requires": { + "ejs": "2.5.6", + "hexo-fs": "^0.2.2", + "hexo-i18n": "^0.2.1", + "hexo-log": "^0.2.0", + "path": "^0.12.7", + "urllib-sync": "^1.0.1", + "xmldom": "^0.1.27", + "xpath": "^0.0.24" + }, + "dependencies": { + "ejs": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.6.tgz", + "integrity": "sha1-R5Y2v6P+Ox3r1SCH8KyyBLTxnIg=" + } + } + }, + "hexo-front-matter": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-0.2.3.tgz", + "integrity": "sha1-x8qO9CDqNr2F6ECKLoyb9J76YF4=", + "requires": { + "js-yaml": "^3.6.1" + } + }, + "hexo-fs": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-0.2.3.tgz", + "integrity": "sha512-rLB1rMVUW3csAljvJgHfyjemL0BrmcUZfBf9hJe6S0pA53igFa3ON0PFwomvoLs1Wdmjs9Awnw9Tru4PjWFSlQ==", + "requires": { + "bluebird": "^3.4.0", + "chokidar": "^1.5.2", + "escape-string-regexp": "^1.0.5", + "graceful-fs": "^4.1.4" + } + }, + "hexo-generator-archive": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/hexo-generator-archive/-/hexo-generator-archive-0.1.5.tgz", + "integrity": "sha512-jPbMtibqkJnAX3hCwhYhK3r6cqy9OKQsVEScjk7LDok+iPmFmkKCNdU/OccxGe1CWAZpT+ta4+LknwNeHG2G4w==", + "requires": { + "hexo-pagination": "0.0.2", + "object-assign": "^2.0.0" + }, + "dependencies": { + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + } + } + }, + "hexo-generator-category": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/hexo-generator-category/-/hexo-generator-category-0.1.3.tgz", + "integrity": "sha1-uealhiUwqDvdfaTIGcG58+TMtLI=", + "requires": { + "hexo-pagination": "0.0.2", + "object-assign": "^2.0.0" + }, + "dependencies": { + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + } + } + }, + "hexo-generator-feed": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/hexo-generator-feed/-/hexo-generator-feed-1.2.2.tgz", + "integrity": "sha512-4jcvVhFgpEFRJ7A+KhBSfWoQaewRBjcVWEO4OmBgnvaZOm6XwK+b5ZXx/8BpujCLHbjXWzglXhiT7qFFS/nvzw==", + "requires": { + "nunjucks": "^3.0.0", + "object-assign": "^4.1.1" + } + }, + "hexo-generator-index": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/hexo-generator-index/-/hexo-generator-index-0.2.1.tgz", + "integrity": "sha1-kEIin8rHmq9wBXXaGTMr8/fuXF0=", + "requires": { + "hexo-pagination": "0.0.2", + "object-assign": "^4.0.1" + } + }, + "hexo-generator-searchdb": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hexo-generator-searchdb/-/hexo-generator-searchdb-1.0.8.tgz", + "integrity": "sha1-BCRSVuFBOmYxOTLb8cCn5WhVkwE=", + "requires": { + "ejs": "^1.0.0", + "striptags": "^3.1.1", + "utils-merge": "^1.0.0" + }, + "dependencies": { + "ejs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-1.0.0.tgz", + "integrity": "sha1-ycYKSKRu5FL7MqccMXuV5aofyz0=" + }, + "striptags": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.1.1.tgz", + "integrity": "sha1-yMPn/db7S7OjKjt1LltePjgJPr0=" + } + } + }, + "hexo-generator-sitemap": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hexo-generator-sitemap/-/hexo-generator-sitemap-1.2.0.tgz", + "integrity": "sha1-MBj419Hi5Cs/caZacxb/z1g7w/M=", + "requires": { + "minimatch": "^3.0.0", + "nunjucks": "^2.3.0", + "object-assign": "^4.0.1" + }, "dependencies": { "nunjucks": { "version": "2.5.2", @@ -1861,9 +2943,9 @@ } }, "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -1882,19 +2964,19 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + } + }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -1908,6 +2990,31 @@ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -1980,6 +3087,11 @@ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1999,9 +3111,9 @@ } }, "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.12.0", @@ -2012,6 +3124,11 @@ "esprima": "^4.0.0" } }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, "jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -2039,9 +3156,9 @@ } }, "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" }, "lodash.assignin": { "version": "4.2.0", @@ -2108,14 +3225,6 @@ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "requires": { - "js-tokens": "^3.0.0" - } - }, "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", @@ -2130,6 +3239,19 @@ "yallist": "^2.1.2" } }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, "markdown": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", @@ -2178,187 +3300,1135 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "~1.33.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "mobx": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-3.6.2.tgz", + "integrity": "sha512-Dq3boJFLpZEvuh5a/MbHLUIyN9XobKWIb0dBfkNOJffNkE3vtuY0C9kSDVpfH8BB0BPkVw8g22qCv7d05LEhKg==" + }, + "moment": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", + "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==" + }, + "moment-timezone": { + "version": "0.5.23", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.23.tgz", + "integrity": "sha512-WHFH85DkCfiNMDX5D3X7hpNH3/PUhjTGcD0U1SgfBGZxJ3qUmJh5FdvaFjcClxOvB3rzdfj4oRffbI38jEnC1w==", + "requires": { + "moment": ">= 2.9.0" + } + }, + "morgan": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "requires": { + "basic-auth": "~2.0.0", + "debug": "2.6.9", + "depd": "~1.1.2", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "optional": true, + "requires": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + } + }, + "nan": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", + "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "optional": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "nib": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", + "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", "requires": { - "mime-db": "~1.33.0" + "stylus": "0.54.5" } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "requires": { - "brace-expansion": "^1.1.7" + "lower-case": "^1.1.1" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "node-fingerprint": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/node-fingerprint/-/node-fingerprint-0.0.2.tgz", + "integrity": "sha1-Mcur63GmeufdWn3AQuUcPHWGhQE=" }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "nopt": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", + "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } + "abbrev": "1" } }, - "mobx": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/mobx/-/mobx-3.6.2.tgz", - "integrity": "sha512-Dq3boJFLpZEvuh5a/MbHLUIyN9XobKWIb0dBfkNOJffNkE3vtuY0C9kSDVpfH8BB0BPkVw8g22qCv7d05LEhKg==" - }, - "moment": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", - "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==" + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } }, - "moment-timezone": { - "version": "0.5.23", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.23.tgz", - "integrity": "sha512-WHFH85DkCfiNMDX5D3X7hpNH3/PUhjTGcD0U1SgfBGZxJ3qUmJh5FdvaFjcClxOvB3rzdfj4oRffbI38jEnC1w==", + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "requires": { - "moment": ">= 2.9.0" + "boolbase": "~1.0.0" } }, - "morgan": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", - "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nunjucks": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.1.7.tgz", + "integrity": "sha512-MrjI68cobXQnyMK/LeY7BgYZ+7o4xn1UNGOe1y8ACVo4cn/1FXc1S4ySqHbmzFqxq/qtMWrehysTuXdbTvf7JA==", "requires": { - "basic-auth": "~2.0.0", - "debug": "2.6.9", - "depd": "~1.1.2", - "on-finished": "~2.3.0", - "on-headers": "~1.0.1" + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "chokidar": "^2.0.0", + "yargs": "^3.32.0" }, "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "optional": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "optional": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "optional": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.1.tgz", + "integrity": "sha512-gfw3p2oQV2wEt+8VuMlNsPjCxDxvvgnm/kz+uATu805mWVF8IJN7uz9DN7iBz+RMJISmiVbCOBFs9qBGMjtPfQ==", + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.0" + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "optional": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "optional": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "optional": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "optional": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "optional": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "optional": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.2.4", + "bundled": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "optional": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "optional": true, "requires": { - "ms": "2.0.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "mv": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", - "optional": true, - "requires": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" - } - }, - "nan": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", - "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", - "optional": true - }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", - "optional": true - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" - }, - "nib": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", - "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", - "requires": { - "stylus": "0.54.5" - } - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "requires": { - "lower-case": "^1.1.1" - } - }, - "node-fingerprint": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/node-fingerprint/-/node-fingerprint-0.0.2.tgz", - "integrity": "sha1-Mcur63GmeufdWn3AQuUcPHWGhQE=" - }, - "nopt": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", - "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", - "requires": { - "abbrev": "1" + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "optional": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "optional": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "optional": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "optional": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "optional": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "optional": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "optional": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "optional": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "optional": true + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + } } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "requires": { - "boolbase": "~1.0.0" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } } }, - "number-is-nan": { + "object-visit": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "nunjucks": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.1.2.tgz", - "integrity": "sha512-pJXncV07mmiuIDL9OqdNkcpvifuDMzMq9qBQT9SHasAS7AEwzNp/r/jHNl+9O0+zsldcdWG9ZtXo/nwu2cTqXA==", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "requires": { - "a-sync-waterfall": "^1.0.0", - "asap": "^2.0.3", - "chokidar": "^1.6.0", - "postinstall-build": "^5.0.1", - "yargs": "^3.32.0" + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } } }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -2368,6 +4438,21 @@ "is-extendable": "^0.1.1" } }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -2460,6 +4545,11 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, "path": { "version": "0.12.7", "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", @@ -2469,6 +4559,11 @@ "util": "^0.10.3" } }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -2492,10 +4587,10 @@ "pinkie": "^2.0.0" } }, - "postinstall-build": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postinstall-build/-/postinstall-build-5.0.1.tgz", - "integrity": "sha1-uRepB5smF42aJK9aXNjLSpkdEbk=" + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "preserve": { "version": "0.2.0", @@ -2579,11 +4674,6 @@ "set-immediate-shim": "^1.0.1" } }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", @@ -2592,6 +4682,15 @@ "is-equal-shallow": "^0.1.3" } }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -2615,6 +4714,16 @@ "path-parse": "^1.0.5" } }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -2643,6 +4752,14 @@ "integrity": "sha512-EzBtUaFH9bHYPc69wqjp0efJI/DPNHdFbGE3uIMn4sVbO0zx8vZ8cG4WKxQfOpUOKsQyGBiT2mTqnCw+6nLswA==", "optional": true }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -2654,9 +4771,9 @@ "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=" }, "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" }, "send": { "version": "0.16.2", @@ -2714,21 +4831,191 @@ "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, "statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", @@ -2872,9 +5159,52 @@ "integrity": "sha1-eBE9EQgIa4MmMxoyR96o9aSeqFM=" }, "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + } + } + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" }, "uglify-js": { "version": "2.6.0", @@ -2930,16 +5260,99 @@ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==" + }, "upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, "urllib": { "version": "2.11.1", "resolved": "https://registry.npmjs.org/urllib/-/urllib-2.11.1.tgz", @@ -2974,19 +5387,17 @@ "utility": "~1.7.1" } }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - } + "inherits": "2.0.3" } }, "util-deprecate": { diff --git a/package.json b/package.json index 004b87d4c..6345040fa 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,8 @@ "dependencies": { "gitment": "0.0.3", "hexo": "^3.8.0", - "hexo-deployer-git": "^0.3.1", - "hexo-douban": "^0.2.16", + "hexo-deployer-git": "^1.0.0", + "hexo-douban": "^1.0.7", "hexo-generator-archive": "^0.1.4", "hexo-generator-category": "^0.1.3", "hexo-generator-feed": "^1.2.2", From 8a2f9ce0a1114159b4598c0780815534b51e7c3e Mon Sep 17 00:00:00 2001 From: BladeCode Date: Sat, 6 Apr 2019 12:54:11 +0800 Subject: [PATCH 056/163] Squashed 'themes/next/' changes from 2402f46..87d2e5f MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 87d2e5f update next v7.1.0 8ed5d6e Fix wrong sidebar style on mobile (#808) e35d73c Delete inactive reviewer db46545 New translations en.yml (Spanish) (#806) 205bd16 CSS bug in Codeblock if string longer than viewport (#803) 54b7abf Commented Project c69f148 Temporairly turn off Project checking f05ca6c Disable Projects compairing 34da2e0 Fix `vv` for Release Drafter 3431ebd Spanish translation (#801) c7a098e Optimize images (#802) 5067852 Release v7.1.0 6725168 Change Algolia link in config 50af55a Reduce reviewers for remove scrolling in PR's (#797) 87950ab Disable add Assigners in Auto Assign bot (#795) 1b5e64a Bug Fix: PDF won't display in particular situation (#794) ec50f5e Improve bots configs (#792) ff12508 Change lockLabel (#787) 2c3d748 Install Support bot (#780) 09d3316 Fix Top Issue Label (#784) 5cd03fb Install Welcome, Request Info and Sentiment bots (#781) e9729f1 Install ESLint Diable Watcher bot (#777) 6e6592b Install Top Issues bot (#776) 74a197b Install Auto-Assign bot (#775) 920a6a5 Install Lock bot (#782) 6fe0da7 Install Weekly Digest bot (#773) 10badfa Change Stale bot labels (#778) 91b78b8 Change Feedback section (#779) 0002a8b Add Mergeable Bot which totally replaced WIP Bot and have more settings (#774) b09a72f Update release-drafter.yml d06ecfe Move source/js/src to source/js (#751) f352f10 Changed Crowdin link on CNAME. 63e6bc5 Breadcrumbs now work with both `*.html` and `index.html` pages. (#769) 759060f Fixed wrong identation for RD bot. 2b9bdd7 Added `Improvement Need` label (#768) dcdc68a Added changes comparison (#767) a074b39 Improved console warning for non-supporting (#766) b8dc638 From now release drafts will maked automatically (#765) 8ce9bda Removed `no-wrap` style from label tag. (#763) 56555b9 Reduce the use of `!important` for GitHub banner (#744) 022b9cc docs: add ivan-nginx as a contributor (#757) 6738d90 Contributors per line: 6 instead of 7. (#756) ce94cc9 docs: add liolok as a contributor (#755) e78af92 Fix Mathjax style issue (#752) 7a0b2bb Merged note.styl & note-modern.styl (#750) 9af9287 Improved canonical path for vision in Google. (#748) 2cae2f4 Using macro to make CSS simpler (#738) 227b5b3 docs: update CONTRIBUTING.md (#747) 6ef5172 docs: add JiangTJ as a contributor (#743) edf6843 docs: add 1v9 as a contributor (#742) 0ba3188 Added «Thanks» section in README (#739) 8579c95 docs: add stevenjoezhang as a contributor (#741) 9876b88 Fix #734: Sidebar button style on Pisces and Gemini (#735) b9f6cf2 Changed Riot chat link. (#733) 1edae7a Added «Reporting Security Bugs» sections. (#730) 9f23604 Update README.md, remove unused URLs (#727) 6271fbe Move some docs from `_config.yml` to theme-next.org site (#725) 8ef50b7 Remove redundant styles in schedule page and `ul > li` (#728) e7b850e Added CII badge. (#729) 9995fcd Code style update, using `tablet-mobile()` to make CSS cleaner (#724) 35180c2 Fixed typo in Baidu. (#714) 8ee52fe Fix right margin bug on mobile (#709) 980dfaf Remove `qihu_site_verification` and move some options to `SEO Settings` (#706) 72d5903 Feat: Add DisqusJS support (#705) 6fc7fad Run velocity on `.site-state` with `display: flex` 4d39ca6 Backing cursor. c26a5ba Refactored Mist & Muse menu bar using `flex` (#702) ce75c7e Make `site-state-item` centered using `flex` (#700) 8a9b7e9 `back2top` button on mobile, sidebar item margin and sidebar `exturl` link color (#684) 2e0b6ca docs: add zq-97 as a contributor (#697) 39bc009 Refactoring post reward (#695) 20abf29 Changed Bugfix label on Bug Fix. 45d6780 fix reward button text vertical align (#693) 312f5b6 Added `text_align` option for desktop and mobile. (#682) 60a3ccf Added `safari_rainbow` and `custom_scrollbar`. (#686) 2e34c46 add icon option for chat button (#688) dcf789d Make the color of exturl link in notes the same as other text (#685) cdbd4cf Remove unnecessary CSS prefix & update normalize.css (#683) 477eef8 Feat: Add chatra and tidio support (#681) dafb5bf Move stylesheets in .swig to .styl (#680) 68fa622 Option to display all level of TOC in a post (#679) 22a156f Fix for mathjax overflow problem (#645) (#669) 82edcff Feat: Add likely share support (#678) 23ec238 Made a few documentational edits (#672) 1c3e480 Add English support for Valine comments (#676) 05bd359 Remove ua_parser (#671) 48b1b60 Fancybox for group-picture and post-gallery (#667) 31714e5 Fix lost tracking_id in google_analytics (#668) 9810af2 fix diff code hightlight problem (#665) 8f45358 Update CDN URLs in _config.yml (#664) b2a5a46 fix option default value 4e0742a Update statement of tagcloud option 2d1474f Added Mermaid support (#649) 71d5980 Fix #1908: Add tags amount option (#662) 1312c49 Refactoring pdf.js (#659) c13c804 Add warnings to `exturl` tag & Add `video` tag & Code style update (#652) ae28443 Refactor back2top button (#657) cf6204b fix dependencies of quicklink 1a1bb45 Changed logo URL to NexT site repository for convenient movement. 9a16b1e Update issue templates b247e3f Feat: Add force language to Gitalk (#653) 4281514 New translations en.yml (Japanese) (#650) 02489d7 Remove whitespace 5dc1097 New Crowdin translations (#647) b7ba1d7 Feat: Custom font size and color of tagcloud (#648) e89fac5 Added some new Label Rules. 3f932da Added New Feature to the Label Rules. 0dd3484 Make ISSUE and PR template more readable (#644) 415bddd Modify some of the descriptions in _config.yml to make them more uniform (#643) 511d788 Refactor: Improve usage of quicklink (#642) 9a1be6e Shorter pull request's template & change NexT link in CoC. daa9356 Rename loader script for prevent wrong boostrap detection in Wappalyzer. (#641) db7e627 Reduce the height of the space between sidebar elements (#638) 1164a05 chore: fix typo of bootstrap (#640) 99b9e57 Update Contributors list (#639) a2a7e55 Refactor: Load quicklink on demand and improve it (#637) 2a358b6 Fix: URLs of categories & tags in sidebar contain index.html 239463d Update stale.yml 9ebc781 Update stale.yml a989539 Update issue templates [7] 1ce6a9d Update issue templates [6] 683f521 Update issue templates [5] eab605b Update issue templates [4] 5ff9a45 Update issue templates [3] 2f07308 Update issue templates [2] 5fad0f9 Update issue templates 1b376f8 Release v7.0.1 08fd01a Refactor: copy code (#632) 6128602 Feat: Add another copy button variant (#631) 8192255 Refactor: Add some options for quicklink (#625) 122cb12 Feat: Add language option to creative_commons (#628) c9f81b6 Optimize the displaying of fancybox, mathjax and schedule (#603) 664377b Feat: Add quicklink support (#612) f4b967e Feature: Close sidebar when click any blank part (#607) 716f593 FIX #617 add localhost filter for google analytics (#618) b8a1fcc Fix #594: External links didn't get replaced in index page (#599) 1e1b8b0 Fix #609 Code block css style error (#610) git-subtree-dir: themes/next git-subtree-split: 87d2e5f050702ddbafdaa9dada70dc3daa28c5f8 --- .all-contributorsrc | 59 +- .github/CODE_OF_CONDUCT.md | 2 +- .github/CONTRIBUTING.md | 54 +- .github/ISSUE_TEMPLATE/bug-report.md | 92 +++ .../ISSUE_TEMPLATE/custom-issue-template.md | 92 +++ .github/ISSUE_TEMPLATE/feature-request.md | 47 ++ .github/ISSUE_TEMPLATE/non-english.md | 92 +++ .github/PULL_REQUEST_TEMPLATE.md | 55 +- .github/auto_assign.yml | 22 + .github/browserstack_logo.png | Bin 7151 -> 0 bytes .github/config.yml | 63 ++ .github/eslint-disable-bot.yml | 8 + .github/lock.yml | 39 ++ .github/mergeable.yml | 29 + .github/release-drafter.yml | 34 ++ .github/stale.yml | 15 +- .github/support.yml | 23 + .github/topissuebot.yml | 5 + .github/weekly-digest.yml | 8 + .gitignore | 3 - _config.yml | 567 +++++++++++------- bower.json | 3 +- docs/ALGOLIA-SEARCH.md | 2 +- docs/ru/README.md | 42 +- docs/zh-CN/ALGOLIA-SEARCH.md | 2 +- docs/zh-CN/CODE_OF_CONDUCT.md | 2 +- docs/zh-CN/CONTRIBUTING.md | 96 +-- docs/zh-CN/README.md | 54 +- gulpfile.coffee | 12 +- languages/de.yml | 80 +-- languages/es.yml | 98 +++ languages/fr.yml | 4 +- languages/id.yml | 4 +- languages/it.yml | 4 +- languages/ja.yml | 10 +- languages/ko.yml | 6 +- languages/nl.yml | 4 +- languages/pt-BR.yml | 4 +- languages/pt.yml | 4 +- languages/vi.yml | 4 +- layout/_layout.swig | 15 +- layout/_macro/post.swig | 35 +- layout/_macro/sidebar.swig | 51 +- layout/_partials/comments.swig | 2 +- layout/_partials/github-banner.swig | 10 +- layout/_partials/head/head-unique.swig | 5 +- layout/_partials/head/head.swig | 10 +- layout/_partials/header/brand.swig | 6 +- layout/_partials/page/breadcrumb.swig | 8 +- layout/_partials/post/post-copyright.swig | 5 +- layout/_partials/post/reward.swig | 40 +- layout/_partials/post/wechat-subscriber.swig | 2 +- layout/_partials/search/index.swig | 4 +- layout/_partials/share/likely.swig | 23 + layout/_scripts/commons.swig | 4 +- layout/_scripts/exturl.swig | 3 + .../{boostrap.swig => next-boot.swig} | 2 +- layout/_scripts/pages/post-details.swig | 4 +- layout/_scripts/schemes/muse.swig | 2 +- layout/_scripts/schemes/pisces.swig | 4 +- layout/_scripts/scroll-cookie.swig | 4 + layout/_scripts/vendors.swig | 2 +- .../analytics/google-analytics.swig | 15 +- .../analytics/lean-analytics.swig | 6 +- .../_third-party/analytics/vkontakte-api.swig | 2 +- layout/_third-party/baidu-push.swig | 7 +- layout/_third-party/chatra.swig | 22 + layout/_third-party/comments/disqusjs.swig | 19 + layout/_third-party/comments/gitalk.swig | 5 + layout/_third-party/comments/gitment.swig | 11 - layout/_third-party/comments/index.swig | 2 + layout/_third-party/comments/valine.swig | 3 +- layout/_third-party/copy-code.swig | 110 ++-- layout/_third-party/exturl.swig | 3 - layout/_third-party/math/mathjax.swig | 25 +- layout/_third-party/mermaid.swig | 21 + layout/_third-party/pdf.swig | 69 +-- layout/_third-party/quicklink.swig | 35 ++ layout/_third-party/schedule.swig | 40 +- layout/_third-party/scroll-cookie.swig | 4 - .../_third-party/search/algolia-search.swig | 2 +- layout/_third-party/tidio.swig | 3 + layout/archive.swig | 2 +- layout/category.swig | 2 +- layout/page.swig | 6 +- layout/tag.swig | 3 +- package.json | 2 +- .../filters/{after_post_render => }/exturl.js | 4 +- scripts/helpers/next-url.js | 2 +- scripts/tags/button.js | 6 +- scripts/tags/exturl.js | 4 +- scripts/tags/full-image.js | 6 +- scripts/tags/group-pictures.js | 10 +- scripts/tags/label.js | 4 +- scripts/tags/mermaid.js | 16 + scripts/tags/note.js | 2 +- scripts/tags/pdf.js | 13 + scripts/tags/tabs.js | 2 +- scripts/tags/video.js | 13 + .../components/back-to-top-sidebar.styl | 10 +- .../css/_common/components/back-to-top.styl | 16 +- source/css/_common/components/buttons.styl | 2 +- source/css/_common/components/components.styl | 6 +- .../components/header/github-banner.styl | 40 +- .../css/_common/components/header/header.styl | 2 +- .../css/_common/components/header/menu.styl | 4 +- .../_common/components/header/site-nav.styl | 6 +- .../_common/components/highlight/diff.styl | 4 +- .../components/highlight/highlight.styl | 1 - .../css/_common/components/pages/pages.styl | 1 + .../_common/components/pages/schedule.styl | 194 +++--- .../components/{ => pages}/tag-cloud.styl | 0 source/css/_common/components/pagination.styl | 3 +- .../components/post/post-collapse.styl | 4 +- .../css/_common/components/post/post-eof.styl | 5 +- .../_common/components/post/post-expand.styl | 11 +- .../_common/components/post/post-meta.styl | 4 +- .../css/_common/components/post/post-nav.styl | 2 +- .../post/post-reading_progress.styl | 2 +- .../_common/components/post/post-reward.styl | 86 +-- .../_common/components/post/post-type.styl | 2 +- source/css/_common/components/post/post.styl | 15 +- source/css/_common/components/rainbow.styl | 43 ++ source/css/_common/components/scrollbar.styl | 31 + .../sidebar/sidebar-author-links.styl | 35 +- .../components/sidebar/sidebar-author.styl | 8 +- .../components/sidebar/sidebar-blogroll.styl | 7 +- ...bar-feed-link.styl => sidebar-button.styl} | 6 +- .../components/sidebar/sidebar-dimmer.styl | 21 +- .../components/sidebar/sidebar-toc.styl | 6 +- .../components/sidebar/sidebar-toggle.styl | 10 +- .../_common/components/sidebar/sidebar.styl | 21 +- .../components/sidebar/site-state.styl | 6 +- .../components/tags/blockquote-center.styl | 2 +- source/css/_common/components/tags/label.styl | 1 - .../_common/components/tags/note-modern.styl | 182 ------ source/css/_common/components/tags/note.styl | 192 ++++-- source/css/_common/components/tags/pdf.styl | 6 + source/css/_common/components/tags/tabs.styl | 6 +- source/css/_common/components/tags/tags.styl | 6 +- .../third-party/algolia-search.styl | 2 +- .../components/third-party/copy-code.styl | 47 ++ .../components/third-party/gitment.styl | 10 + .../components/third-party/localsearch.styl | 1 - .../_common/components/third-party/math.styl | 4 + .../third-party/needsharebutton.styl | 2 +- .../components/third-party/related-posts.styl | 2 +- .../components/third-party/third-party.styl | 4 +- source/css/_common/scaffolding/base.styl | 26 +- source/css/_common/scaffolding/helpers.styl | 6 +- source/css/_common/scaffolding/mobile.styl | 12 +- source/css/_common/scaffolding/normalize.styl | 392 +++++------- source/css/_common/scaffolding/tables.styl | 10 +- source/css/_mixins/Pisces.styl | 2 +- source/css/_mixins/base.styl | 17 +- source/css/_schemes/Gemini/index.styl | 5 +- source/css/_schemes/Mist/_header.styl | 11 +- source/css/_schemes/Mist/_menu.styl | 55 +- source/css/_schemes/Mist/_search.styl | 2 +- source/css/_schemes/Mist/index.styl | 2 - source/css/_schemes/Muse/_layout.styl | 2 +- source/css/_schemes/Muse/_menu.styl | 11 +- source/css/_schemes/Muse/_search.styl | 2 +- source/css/_schemes/Muse/index.styl | 2 - source/css/_schemes/Pisces/_brand.styl | 16 +- source/css/_schemes/Pisces/_layout.styl | 31 +- source/css/_schemes/Pisces/_menu.styl | 9 +- source/css/_schemes/Pisces/_posts.styl | 5 - source/css/_schemes/Pisces/_sidebar.styl | 58 +- source/css/_schemes/Pisces/index.styl | 1 - source/css/_variables/base.styl | 2 + source/images/avatar.gif | Bin 2926 -> 1793 bytes source/images/searchicon.png | Bin 766 -> 759 bytes source/js/{src => }/affix.js | 0 source/js/{src => }/algolia-search.js | 0 source/js/{src => }/exturl.js | 0 source/js/{src => }/js.cookie.js | 1 + source/js/{src => }/motion.js | 12 +- source/js/{src/bootstrap.js => next-boot.js} | 2 +- source/js/{src => }/post-details.js | 0 source/js/{src => }/schemes/muse.js | 0 source/js/{src => }/schemes/pisces.js | 0 source/js/{src => }/scroll-cookie.js | 0 source/js/{src => }/scrollspy.js | 0 source/js/{src => }/utils.js | 31 +- source/lib/ua-parser-js/dist/ua-parser.min.js | 9 - .../lib/ua-parser-js/dist/ua-parser.pack.js | 9 - 187 files changed, 2650 insertions(+), 1660 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/custom-issue-template.md create mode 100644 .github/ISSUE_TEMPLATE/feature-request.md create mode 100644 .github/ISSUE_TEMPLATE/non-english.md create mode 100644 .github/auto_assign.yml delete mode 100644 .github/browserstack_logo.png create mode 100644 .github/config.yml create mode 100644 .github/eslint-disable-bot.yml create mode 100644 .github/lock.yml create mode 100644 .github/mergeable.yml create mode 100644 .github/release-drafter.yml create mode 100644 .github/support.yml create mode 100644 .github/topissuebot.yml create mode 100644 .github/weekly-digest.yml create mode 100644 languages/es.yml create mode 100644 layout/_partials/share/likely.swig create mode 100644 layout/_scripts/exturl.swig rename layout/_scripts/{boostrap.swig => next-boot.swig} (86%) create mode 100644 layout/_scripts/scroll-cookie.swig create mode 100644 layout/_third-party/chatra.swig create mode 100644 layout/_third-party/comments/disqusjs.swig delete mode 100644 layout/_third-party/exturl.swig create mode 100644 layout/_third-party/mermaid.swig create mode 100644 layout/_third-party/quicklink.swig delete mode 100644 layout/_third-party/scroll-cookie.swig create mode 100644 layout/_third-party/tidio.swig rename scripts/filters/{after_post_render => }/exturl.js (94%) create mode 100644 scripts/tags/mermaid.js create mode 100644 scripts/tags/pdf.js create mode 100644 scripts/tags/video.js rename source/css/_common/components/{ => pages}/tag-cloud.styl (100%) create mode 100644 source/css/_common/components/rainbow.styl create mode 100644 source/css/_common/components/scrollbar.styl rename source/css/_common/components/sidebar/{sidebar-feed-link.styl => sidebar-button.styl} (75%) delete mode 100644 source/css/_common/components/tags/note-modern.styl create mode 100644 source/css/_common/components/tags/pdf.styl create mode 100644 source/css/_common/components/third-party/copy-code.styl create mode 100644 source/css/_common/components/third-party/math.styl delete mode 100644 source/css/_schemes/Pisces/_posts.styl rename source/js/{src => }/affix.js (100%) rename source/js/{src => }/algolia-search.js (100%) rename source/js/{src => }/exturl.js (100%) rename source/js/{src => }/js.cookie.js (99%) rename source/js/{src => }/motion.js (97%) rename source/js/{src/bootstrap.js => next-boot.js} (96%) rename source/js/{src => }/post-details.js (100%) rename source/js/{src => }/schemes/muse.js (100%) rename source/js/{src => }/schemes/pisces.js (100%) rename source/js/{src => }/scroll-cookie.js (100%) rename source/js/{src => }/scrollspy.js (100%) rename source/js/{src => }/utils.js (89%) delete mode 100644 source/lib/ua-parser-js/dist/ua-parser.min.js delete mode 100644 source/lib/ua-parser-js/dist/ua-parser.pack.js diff --git a/.all-contributorsrc b/.all-contributorsrc index 5336be362..5d3d23227 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -22,7 +22,10 @@ "blog", "review", "test", - "translation" + "translation", + "design", + "infra", + "maintenance" ] }, { @@ -132,7 +135,8 @@ "code", "doc", "review", - "test" + "test", + "projectManagement" ] }, { @@ -396,6 +400,55 @@ "contributions": [ "translation" ] + }, + { + "login": "JiangTJ", + "name": "Mr.J", + "avatar_url": "https://avatars3.githubusercontent.com/u/15902347?v=4", + "profile": "https://www.dnocm.com", + "contributions": [ + "bug", + "code", + "doc", + "infra" + ] + }, + { + "login": "1v9", + "name": "1v9", + "avatar_url": "https://avatars3.githubusercontent.com/u/29083921?v=4", + "profile": "https://1v9.im", + "contributions": [ + "bug", + "code", + "doc", + "translation", + "review" + ] + }, + { + "login": "stevenjoezhang", + "name": "Mimi", + "avatar_url": "https://avatars1.githubusercontent.com/u/16272760?v=4", + "profile": "https://zhangshuqiao.org", + "contributions": [ + "bug", + "code", + "doc", + "review", + "translation" + ] + }, + { + "login": "zq-97", + "name": "张强", + "avatar_url": "https://avatars2.githubusercontent.com/u/17429111?v=4", + "profile": "https://i-m.dev", + "contributions": [ + "bug", + "code" + ] } - ] + ], + "contributorsPerLine": 6 } diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index d95bde0ee..93861acdd 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -4,7 +4,7 @@ #
    e x T
    -[NexT](https://github.com/theme-next/hexo-theme-next) is an elegant and powerful theme for [Hexo](https://hexo.io/). With it, you can build a static blog hosted on [GitHub Pages](https://pages.github.com/) to share your life and communicate with new friends. +[NexT](https://theme-next.org) is an elegant and powerful theme for [Hexo](https://hexo.io/). With it, you can build a static blog hosted on [GitHub Pages](https://pages.github.com/) to share your life and communicate with new friends. A CODE_OF_CONDUCT dictates how conversation during code updates, issue communication, and pull requests should happen within [NexT](https://github.com/theme-next/hexo-theme-next) repository. We expect all users to show respect and courtesy to others through our repositories. Anyone violating these rules will not be reviewed and will be blocked and expelled from our repositories immediately upon discovery. diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 6f3af3815..5fc11b32c 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -12,6 +12,7 @@ First of all, thanks for taking your time to contribute and help make our projec * [Before Submitting An Issue](#before-submitting-an-issue) * [Reporting Bugs](#reporting-bugs) + * [Reporting Security Bugs](#reporting-security-bugs) * [Suggesting Enhancements](#suggesting-enhancements) * [Submitting a Pull Request](#submitting-a-pull-request) * [Creating Releases](#creating-releases) @@ -24,11 +25,13 @@ First of all, thanks for taking your time to contribute and help make our projec * [Commit Messages Rules](#commit-messages-rules) + ## How Can I Contribute? Main Theme-Next repository was rebased from [iissnan's](https://github.com/iissnan/hexo-theme-next) profile to [Theme-Next](https://github.com/theme-next) organization on GitHub. Most libraries under the `next/source/lib` directory was moved out to [external repos](https://github.com/theme-next) under NexT organization. Version 5 works fine at most cases, but for frequent users, you maybe need to [upgrade version 5 to 6](https://github.com/theme-next/hexo-theme-next/blob/master/docs/UPDATE-FROM-5.1.X.md) to get features and supports in new [Theme-Next](https://github.com/theme-next/hexo-theme-next) repository. + ### Before Submitting An Issue If you just have a question, you'll get faster results by checking the FAQs for a list of common questions and problems (Work in progress) or the [«NexT» Documentation Site](https://theme-next.org/docs/) (Work in progress). @@ -40,6 +43,7 @@ If you find a bug in the source code, most importantly, please check carefully i [submit a Pull Request](#submitting-a-pull-request) with a fix. + ### Reporting Bugs Before creating bug reports, please check [this list](#before-submitting-an-issue) as you might find out that you don't need to create one. After you've determined the repository your bug is related to, create an issue on that repository and provide the information as many details as possible by filling in [the required template](ISSUE_TEMPLATE.md). @@ -58,6 +62,16 @@ Following these guidelines helps maintainers and the community understand your r * Describe the behavior you observed after following the steps and point out what exactly is the problem with that behavior. * Explain which behavior you expected to see instead and why. + + +#### Reporting Security Bugs + +If you find a security issue, please act responsibly and report it not in the public issue tracker, but directly to us, so we can fix it before it can be exploited. Please send the related information to security@theme-next.com (desirable with using PGP for e-mail encryption). + +We will gladly special thanks to anyone who reports a vulnerability so that we can fix it. If you want to remain anonymous or pseudonymous instead, please let us know that; we will gladly respect your wishes. + + + ### Suggesting Enhancements Before creating enhancement suggestions, please check [this list](#before-submitting-an-issue) as you might find out that you don't need to create one. After you've determined the repository your enhancement suggestion is related to, create an issue on that repository and provide the information as many details as possible by filling in [the required template](ISSUE_TEMPLATE.md). @@ -68,6 +82,8 @@ Following these guidelines helps maintainers and the community understand your s * Describe the current behavior and explain which behavior you expected to see instead and Explain why this enhancement would be useful to most users. * Provide specific examples to demonstrate the suggestion. Include links to files (screenshots or GIFs) or live demo. + + ### Submitting a Pull Request Before creating a Pull Request (PR), please check [this list](#before-submitting-an-issue) as you might find out that you don't need to create one. After you've determined the repository your pull request is related to, create a pull request on that repository. The detailed document of creating a pull request can be found [here](https://help.github.com/articles/creating-a-pull-request/). @@ -97,6 +113,8 @@ Following these guidelines helps maintainers and the community understand your p * Fill in [the required template](PULL_REQUEST_TEMPLATE.md) as many details as possible. * All features or bug fixes must be tested in all schemes. And provide specific examples to demonstrate the pull request. Include links to files (screenshots or GIFs) or live demo. + + ### Creating Releases Releases are a great way to ship projects on GitHub to your users. @@ -106,22 +124,30 @@ Releases are a great way to ship projects on GitHub to your users. 3. Select a branch that contains the project you want to release. Usually, you'll want to release against your `master` branch, unless you're releasing beta software. 4. Type a title and description that describes your release. - Use the version as the title. - - The types of changes include **Breaking Changes**, **Updates**, **Features**, and **Bugfixes**. In the section of Breaking Changes, use multiple secondary headings, and use item list in other sections. + - The types of changes include **Breaking Changes**, **Updates**, **Features**, and **Bug Fixes**. In the section of Breaking Changes, use multiple secondary headings, and use item list in other sections. - Use the passive tense and subject-less sentences. - All changes must be documented in release notes. If commits happen without pull request (minimal changes), just add this commit ID into release notes. If commits happen within pull request alreay, just add the related pull request ID including all possible commits. 5. If you'd like to include binary files along with your release, such as compiled programs, drag and drop or select files manually in the binaries box. 6. If the release is unstable, select **This is a pre-release** to notify users that it's not ready for production. If you're ready to publicize your release, click **Publish release**. Otherwise, click **Save draft** to work on it later. + + ## Guides + + ### Coding Rules This project and everyone participating in it is governed by the [Code of Conduct](CODE_OF_CONDUCT.md) to keep open and inclusive. By participating, you are expected to uphold this code. + + ### Coding Standards To be continued. + + ### Labels Rules We use "labels" in the issue tracker to help classify pull requests and issues. Using labels enables maintainers and users to quickly find issues they should look into, either because they experience them, or because it meets their area of expertise. @@ -134,10 +160,15 @@ Issues related: `types`+`contents`+`results` - `Irrelevant`: An irrelevant issue for Next - `Duplicate`: An issue which had been mentioned - `Bug`: A detected bug that needs to be confirmed + - `Improvement Need`: An issue that needs to be improvement + - `Feature Request`: An issue that wants a new feature + - `High Priority`: A detected bugs or misprints with high priority + - `Low Priority`: A detected bugs or misprints with low priority + - `Non English`: Requires the attention of a multi-lingual maintainer - `Discussion`: An issue that needs to be discussed - `Question`: An issue about questions - - `Feature-Request`: An issue that wants a new feature - `Backlog`: An issue that is to be completed and later compensated + - `Meta`: Denoting a change of usage conditions - By contents - `Roadmap`: An issue about future development - `Hexo`: An issue related to Hexo @@ -145,19 +176,18 @@ Issues related: `types`+`contents`+`results` - `Scheme [2] - Muse`: An issue related to Scheme Muse - `Scheme [3] - Pisces`: An issue related to Scheme Pisces - `Scheme [4] - Gemini`: An issue related to Scheme Gemini - - `3rd party service`: An issue related to 3rd party service + - `3rd Party Service`: An issue related to 3rd party service - `Docs`: Need to add instruction document - `Configurations`: An issue related to configurations - `CSS`: An issue related to CSS - `Custom`: An issue related to custom things - - `Optimization`: An issue that needs to be optimized - By results - `Wontfix`: An issue that will not to be fixed - `Need More Info`: Need more information for solving the issue - - `Need Confirm`: Need confirmation from the developers or user about the bug or solution + - `Need Verify`: Need confirmation from the developers or user about the bug or solution - `Can't Reproduce`: An issue that can’t be reproduced - `Verified`: An issue that has been verified - - `Help wanted`: An issue that needs help + - `Help Wanted`: An issue that needs help - `Wait for Answer`: An issue that needs to be answered by the developers or user - `Resolved Maybe`: An issue that has been resolved maybe - `Solved`: An issue that has been solved @@ -166,14 +196,18 @@ Issues related: `types`+`contents`+`results` Pull requests related: - `Breaking Change`: A Pull requests that makes breaking change -- `Bugfix`: A Pull requests that fixes the related bug +- `Bug Fix`: A Pull requests that fixes the related bug - `Docs`: A Pull requests that Instruction document has been added -- `Feature`: A Pull requests that provides a new feature -- `Configurations`: A Pull requests related to configurations -- `Optimization`: A Pull requests that optimizates the Next +- `New Feature`: A Pull requests that provides a new feature +- `Feature`: A Pull requests that provides an option or addition to existing feature +- `Improvement`: A Pull requests that improves NexT - `i18n`: A Pull requests that makes new languages translation - `Performance`: A Pull requests that improves the performance - `Discussion`: A Pull requests that needs to be discussed +- `v6.x`: A Pull requests that bug fixes and some improvements, related to old NexT version 6 +- `v7.x`: A Pull requests that bug fixes and some improvements, related to old NexT version 7 + + ### Commit Messages Rules diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 000000000..d628069fd --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,92 @@ +--- +name: Bug Report +about: Create a report to help us improve. +title: '' +labels: Bug +assignees: '' + +--- + + + +### I agree and want to create new issue + + +- [ ] Yes, I was on [Hexo Docs page](https://hexo.io/docs/), especially on [Templates](https://hexo.io/docs/templates.html), [Variables](https://hexo.io/docs/variables.html), [Helpers](https://hexo.io/docs/helpers.html) and [Troubleshooting](https://hexo.io/docs/troubleshooting.html). +- [ ] Yes, I was on [NexT Documentation Site](http://theme-next.org/docs/). +- [ ] And yes, I already searched for current [issues](https://github.com/theme-next/hexo-theme-next/issues?utf8=%E2%9C%93&q=is%3Aissue) and this is not help to me. + +*** + +### Expected behavior + + +### Actual behavior + + +### Steps to reproduce the behavior +1. N/A +2. N/A +3. N/A + +* Link to demo site with this bug: N/A +* Link(s) to source code or any usefull link(s): N/A + +### Node.js and NPM Information + +``` + +``` + +### Package dependencies Information + +``` + +``` + +### Hexo Information + +#### Hexo version + +``` + +``` + +#### Hexo Configuration + +```yml + +``` + +### NexT Information + +**NexT Version:** + + +- [ ] Latest Master branch +- [ ] Latest Release version +- [ ] Old version + + +**NexT Scheme:** + + +- [ ] All schemes +- [ ] Muse +- [ ] Mist +- [ ] Pisces +- [ ] Gemini + + +#### NexT Configuration: + +```yml + +``` + +### Other Information diff --git a/.github/ISSUE_TEMPLATE/custom-issue-template.md b/.github/ISSUE_TEMPLATE/custom-issue-template.md new file mode 100644 index 000000000..ff7061d3e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/custom-issue-template.md @@ -0,0 +1,92 @@ +--- +name: Custom Issue Template +about: Describe this issue template's purpose here. +title: '' +labels: Custom +assignees: '' + +--- + + + +### I agree and want to create new issue + + +- [ ] Yes, I was on [Hexo Docs page](https://hexo.io/docs/), especially on [Templates](https://hexo.io/docs/templates.html), [Variables](https://hexo.io/docs/variables.html), [Helpers](https://hexo.io/docs/helpers.html) and [Troubleshooting](https://hexo.io/docs/troubleshooting.html). +- [ ] Yes, I was on [NexT Documentation Site](http://theme-next.org/docs/). +- [ ] And yes, I already searched for current [issues](https://github.com/theme-next/hexo-theme-next/issues?utf8=%E2%9C%93&q=is%3Aissue) and this is not help to me. + +*** + +### Expected behavior + + +### Actual behavior + + +### Steps to reproduce the behavior +1. N/A +2. N/A +3. N/A + +* Link to demo site with this issue: N/A +* Link(s) to source code or any usefull link(s): N/A + +### Node.js and NPM Information + +``` + +``` + +### Package dependencies Information + +``` + +``` + +### Hexo Information + +#### Hexo version + +``` + +``` + +#### Hexo Configuration + +```yml + +``` + +### NexT Information + +**NexT Version:** + + +- [ ] Latest Master branch +- [ ] Latest Release version +- [ ] Old version + + +**NexT Scheme:** + + +- [ ] All schemes +- [ ] Muse +- [ ] Mist +- [ ] Pisces +- [ ] Gemini + + +#### NexT Configuration: + +```yml + +``` + +### Other Information diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 000000000..83d740d0b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,47 @@ +--- +name: Feature Request +about: Suggest an idea for this project. +title: '' +labels: Feature Request +assignees: '' + +--- + + + +### I agree and want to create new issue + + +- [ ] Yes, I was on [Hexo Docs page](https://hexo.io/docs/), especially on [Templates](https://hexo.io/docs/templates.html), [Variables](https://hexo.io/docs/variables.html), [Helpers](https://hexo.io/docs/helpers.html) and [Troubleshooting](https://hexo.io/docs/troubleshooting.html). +- [ ] Yes, I was on [NexT Documentation Site](http://theme-next.org/docs/). +- [ ] And yes, I already searched for current [issues](https://github.com/theme-next/hexo-theme-next/issues?utf8=%E2%9C%93&q=is%3Aissue) and this is not help to me. + +*** + +### Expected behavior + + +### Actual behavior + + +### Steps to reproduce the behavior +1. N/A +2. N/A +3. N/A + +* Link to demo site with this feature: N/A +* Link(s) to source code or any usefull link(s): N/A + +**NexT Scheme:** + + +- [ ] All schemes +- [ ] Muse +- [ ] Mist +- [ ] Pisces +- [ ] Gemini diff --git a/.github/ISSUE_TEMPLATE/non-english.md b/.github/ISSUE_TEMPLATE/non-english.md new file mode 100644 index 000000000..f07d69860 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/non-english.md @@ -0,0 +1,92 @@ +--- +name: Non English +about: Issue in Chinese or any other language. +title: '' +labels: Non English +assignees: '' + +--- + + + +### I agree and want to create new issue + + +- [ ] Yes, I was on [Hexo Docs page](https://hexo.io/docs/), especially on [Templates](https://hexo.io/docs/templates.html), [Variables](https://hexo.io/docs/variables.html), [Helpers](https://hexo.io/docs/helpers.html) and [Troubleshooting](https://hexo.io/docs/troubleshooting.html). +- [ ] Yes, I was on [NexT Documentation Site](http://theme-next.org/docs/). +- [ ] And yes, I already searched for current [issues](https://github.com/theme-next/hexo-theme-next/issues?utf8=%E2%9C%93&q=is%3Aissue) and this is not help to me. + +*** + +### Expected behavior + + +### Actual behavior + + +### Steps to reproduce the behavior +1. N/A +2. N/A +3. N/A + +* Link to demo site with this issue: N/A +* Link(s) to source code or any usefull link(s): N/A + +### Node.js and NPM Information + +``` + +``` + +### Package dependencies Information + +``` + +``` + +### Hexo Information + +#### Hexo version + +``` + +``` + +#### Hexo Configuration + +```yml + +``` + +### NexT Information + +**NexT Version:** + + +- [ ] Latest Master branch +- [ ] Latest Release version +- [ ] Old version + + +**NexT Scheme:** + + +- [ ] All schemes +- [ ] Muse +- [ ] Mist +- [ ] Pisces +- [ ] Gemini + + +#### NexT Configuration: + +```yml + +``` + +### Other Information diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 37a10dcb1..626b61f0f 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,17 +1,12 @@ - - ## PR Checklist **Please check if your PR fulfills the following requirements:** + - [ ] The commit message follows [our guidelines](https://github.com/theme-next/hexo-theme-next/blob/master/.github/CONTRIBUTING.md). - [ ] Tests for the changes was maked (for bug fixes / features). @@ -20,7 +15,7 @@ - [ ] Docs in [NexT website](https://theme-next.org/docs/) have been added / updated (for new features). ## PR Type -**What kind of change does this PR introduce?** +**What kind of change does this PR introduce?** - [ ] Bugfix. - [ ] Feature. @@ -34,13 +29,13 @@ ## What is the current behavior? -Issue resolved N/A +Issue resolved: N/A ## What is the new behavior? -Description about this pull, in several words... + -* Screens with this changes: N/A -* Link to demo site with this changes: N/A +- Screenshots with this changes: N/A +- Link to demo site with this changes: N/A ### How to use? In NexT `_config.yml`: @@ -51,37 +46,3 @@ In NexT `_config.yml`: ## Does this PR introduce a breaking change? - [ ] Yes. - [ ] No. - - - - - - diff --git a/.github/auto_assign.yml b/.github/auto_assign.yml new file mode 100644 index 000000000..78c6deff8 --- /dev/null +++ b/.github/auto_assign.yml @@ -0,0 +1,22 @@ +# Configuration for Auto Assign - https://github.com/kentaro-m/auto-assign + +# Set to true to add reviewers to pull requests +addReviewers: true + +# Set to true to add assignees to pull requests +addAssignees: false + +# A list of reviewers to be added to pull requests (GitHub user name) +reviewers: + - ivan-nginx + - maple3142 + - sli1989 + - stevenjoezhang + +# A number of reviewers added to the pull request +# Set 0 to add all the reviewers (default: 0) +numberOfReviewers: 0 + +# A list of keywords to be skipped the process that add reviewers if pull requests include it +skipKeywords: + - wip diff --git a/.github/browserstack_logo.png b/.github/browserstack_logo.png deleted file mode 100644 index 0be37e77e84ced62bce966456c202a69dd8efe28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7151 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 + Thanks for opening this issue, maintainers will get back to you as soon as possible! + +# Comment to be posted to on PRs from first time contributors in your repository +newPRWelcomeComment: > + Thanks so much for opening your first PR here! + +# Comment to be posted to on pull requests merged by a first time user +firstPRMergeComment: > + Congrats on merging your first pull request here! :tada: How awesome! + +# =============================================================================================== # +# Configuration for request-info - https://github.com/behaviorbot/request-info + +# *OPTIONAL* Label to be added to Issues and Pull Requests with insufficient information given +requestInfoLabelToAdd: Need More Info + +# *OPTIONAL* Add a list of people whose Issues/PRs will not be commented on +# keys must be GitHub usernames +requestInfoUserstoExclude: + - 1v9 + - Acris + - flashlab + - geekrainy + - iissnan + - ivan-nginx + - JiangTJ + - LEAFERx + - liolok + - maple3142 + - Raincal + - sli1989 + - stevenjoezhang + - tsanie + - wafer-li + +# =============================================================================================== # +# Configuration for sentiment-bot - https://github.com/behaviorbot/sentiment-bot + +# *Required* toxicity threshold between 0 and .99 with the higher numbers being the most toxic +# Anything higher than this threshold will be marked as toxic and commented on +sentimentBotToxicityThreshold: .6 + +# *Required* Comment to reply with +sentimentBotReplyComment: > + Please be sure to review the [code of conduct](https://github.com/theme-next/hexo-theme-next/blob/master/.github/code-of-conduct.md) and be respectful of other users. cc/ @theme-next/next + +# =============================================================================================== # +lockThreads: + toxicityThreshold: .7 + numComments: 2 + setTimeInHours: 72 + replyComment: > + This thread is being locked due to exceeding the toxicity minimums. cc/ @theme-next/next + +# =============================================================================================== # +# Configuration for todo-bot - https://github.com/JasonEtco/todo +todo: + label: '🗒 To-Do' diff --git a/.github/eslint-disable-bot.yml b/.github/eslint-disable-bot.yml new file mode 100644 index 000000000..9899fef6b --- /dev/null +++ b/.github/eslint-disable-bot.yml @@ -0,0 +1,8 @@ +# Configuration for ESLint Disable Watcher - https://github.com/koddsson/eslint-disable-probot + +# Change this to set the number of comments the watcher should comment on a given PR. +commentLimit: 10 +# The message the bot will post on any lines containing a eslint disable comment. +commentMessage: Please don't disable eslint rules :pray: +# A optional regular expression that will match against the branch name and not comment on it if it matches. +skipBranchMatching: null diff --git a/.github/lock.yml b/.github/lock.yml new file mode 100644 index 000000000..a6826f8de --- /dev/null +++ b/.github/lock.yml @@ -0,0 +1,39 @@ +# Configuration for Lock Threads - https://github.com/dessant/lock-threads + +# Number of days of inactivity before a closed issue or pull request is locked +daysUntilLock: 365 + +# Skip issues and pull requests created before a given timestamp. Timestamp must +# follow ISO 8601 (`YYYY-MM-DD`). Set to `false` to disable +skipCreatedBefore: false + +# Issues and pull requests with these labels will be ignored. Set to `[]` to disable +exemptLabels: + - backlog + +# Label to add before locking, such as `outdated`. Set to `false` to disable +lockLabel: 🔒 Locked + +# Comment to post before locking. Set to `false` to disable +lockComment: > + This thread has been automatically locked since there has not been + any recent activity after it was closed. It is possible issue was + solved or at least outdated. Feel free to open new for related bugs. + +# Assign `resolved` as the reason for locking. Set to `false` to disable +setLockReason: true + +# Limit to only `issues` or `pulls` +only: issues + +# Optionally, specify configuration settings just for `issues` or `pulls` +# issues: +# exemptLabels: +# - help-wanted +# lockLabel: outdated + +# pulls: +# daysUntilLock: 30 + +# Repository to extend settings from +# _extends: repo diff --git a/.github/mergeable.yml b/.github/mergeable.yml new file mode 100644 index 000000000..5529b2dbd --- /dev/null +++ b/.github/mergeable.yml @@ -0,0 +1,29 @@ +# Configuration for Mergeable - https://github.com/jusx/mergeable + +version: 2 +mergeable: + - when: pull_request.* + validate: + - do: description + no_empty: + enabled: false + + - do: title + must_exclude: + regex: ^\[WIP\] + + - do: label + must_include: + regex: 'feat|imp|fix|doc|i18n' + must_exclude: + regex: 'wip|work in progress' + + #- do: project + # no_empty: + # enabled: true + # must_include: + # regex: 'feat|imp|fix|doc|loc' + + - do: milestone + no_empty: + enabled: true diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 000000000..ba9c5f5b4 --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,34 @@ +# Configuration for Release Drafter - https://github.com/toolmantim/release-drafter + +name-template: v$NEXT_MINOR_VERSION +tag-template: v$NEXT_MINOR_VERSION +categories: + - title: 💥 Breaking Changes + label: Breaking Change + + - title: 🌟 New Features + label: New Feature + + - title: ⭐ Features + label: Feature + + - title: 🛠 Improvements + label: Improvement + + - title: 🐞 Bug Fixes + label: Bug Fix + + - title: 📖 Documentation + label: Docs + + - title: 🌍 Localization + label: i18n + +change-template: '- $TITLE (#$NUMBER)' +no-changes-template: '- No changes' +template: | + $CHANGES + + *** + + For full changes, see the [comparison between $PREVIOUS_TAG and v$NEXT_MINOR_VERSION](https://github.com/theme-next/hexo-theme-next/compare/v$PREVIOUS_TAG...v$NEXT_MINOR_VERSION) diff --git a/.github/stale.yml b/.github/stale.yml index 70469af45..7cd44811e 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -7,19 +7,20 @@ daysUntilClose: 7 # Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable exemptLabels: - bug - - discussion - - need-verify - - pending-reply - - feature-request - - enhancement - - documentation + - feature request + - improvement need + - wait for answer + - need verify + - question + - backlog + - docs # Label to use when marking as stale staleLabel: stale # Comment to post when marking as stale. Set to `false` to disable markComment: > This issue has been automatically marked as stale because lack of recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. + for your contributions. You can also use our [support channels](https://github.com/theme-next/hexo-theme-next#feedback) to get help with the project. # Comment to post when removing the stale label. Set to `false` to disable unmarkComment: false # Comment to post when closing a stale Issue or Pull Request. Set to `false` to disable diff --git a/.github/support.yml b/.github/support.yml new file mode 100644 index 000000000..6eb974137 --- /dev/null +++ b/.github/support.yml @@ -0,0 +1,23 @@ +# Configuration for Support Requests - https://github.com/dessant/support-requests + +# Label used to mark issues as support requests +supportLabel: Support + +# Comment to post on issues marked as support requests, `{issue-author}` is an +# optional placeholder. Set to `false` to disable +supportComment: > + :wave: @{issue-author}, we use the issue tracker exclusively for bug reports + and feature requests. However, this issue appears to be a support request. + Please use our [support channels](https://github.com/theme-next/hexo-theme-next/tree/master#feedback) to get help with the project. + +# Close issues marked as support requests +close: true + +# Lock issues marked as support requests +lock: false + +# Assign `off-topic` as the reason for locking. Set to `false` to disable +setLockReason: true + +# Repository to extend settings from +# _extends: repo diff --git a/.github/topissuebot.yml b/.github/topissuebot.yml new file mode 100644 index 000000000..81dbe6b35 --- /dev/null +++ b/.github/topissuebot.yml @@ -0,0 +1,5 @@ +# Configuration for top-issue-bot - https://github.com/adamzolyak/gh-vote-bot + +labelName: '👍 Top Issue!' +labelColor: '006b75' +numberOfIssuesToLabel: 10 diff --git a/.github/weekly-digest.yml b/.github/weekly-digest.yml new file mode 100644 index 000000000..a2a6f797f --- /dev/null +++ b/.github/weekly-digest.yml @@ -0,0 +1,8 @@ +# Configuration for weekly-digest - https://github.com/apps/weekly-digest + +publishDay: sun +canPublishIssues: true +canPublishPullRequests: true +canPublishContributors: true +canPublishStargazers: true +canPublishCommits: true diff --git a/.gitignore b/.gitignore index 26b5eab0b..ff8f6c39c 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,4 @@ source/lib/font-awesome/scss/ !source/lib/jquery/ -source/lib/ua-parser-js/* -!source/lib/ua-parser-js/dist/ - !source/lib/velocity/ diff --git a/_config.yml b/_config.yml index e6c844a06..ae4239e17 100644 --- a/_config.yml +++ b/_config.yml @@ -1,5 +1,6 @@ # --------------------------------------------------------------- # Theme Core Configuration Settings +# See: https://theme-next.org/docs/theme-settings/ # --------------------------------------------------------------- # If false, merge configs from `_data/next.yml` into default configuration (rewrite). @@ -12,12 +13,8 @@ override: false cache: enable: true -# Redefine custom file paths. Introduced in NexT v6.0.2. -# If commented, will be used default custom file paths. - -# For example, you want to put your custom styles file -# outside theme directory in root `source/_data`, set -# `styles: source/_data/styles.styl` +# Redefine custom file paths. Introduced in NexT v6.0.2. If commented, will be used default custom file paths. +# For example, you want to put your custom styles file outside theme directory in root `source/_data`, set `styles: source/_data/styles.styl` #custom_file_path: # Default paths: layout/_custom/* #head: source/_data/head.swig @@ -34,16 +31,9 @@ cache: # --------------------------------------------------------------- # Site Information Settings +# See: https://theme-next.org/docs/getting-started/ # --------------------------------------------------------------- -# To get or check favicons visit: https://realfavicongenerator.net -# Put your favicons into `hexo-site/source/` (recommend) or `hexo-site/themes/next/source/images/` directory. - -# Default NexT favicons placed in `hexo-site/themes/next/source/images/` directory. -# And if you want to place your icons in `hexo-site/source/` root directory, you must remove `/images` prefix from pathes. - -# For example, you put your favicons into `hexo-site/source/images` directory. -# Then need to rename & redefine them on any other names, otherwise icons from Next will rewrite your custom icons in Hexo. favicon: small: /images/favicon-16x16-next.png medium: /images/favicon-32x32-next.png @@ -53,13 +43,12 @@ favicon: #ms_browserconfig: /images/browserconfig.xml # Set rss to false to disable feed link. -# Leave rss as empty to use site's feed link, and install hexo-generator-feed: `npm install hexo-generator-feed --save`. +# Leave rss as blank to use site's feed link, and install hexo-generator-feed: `npm install hexo-generator-feed --save`. # Set rss to specific value if you have burned your feed already. rss: footer: - # Specify the date when the site was setup. - # If not defined, current year will be used. + # Specify the date when the site was setup. If not defined, current year will be used. #since: 2015 # Icon between year and copyright info. @@ -74,7 +63,7 @@ footer: # If not defined, `author` from Hexo main config will be used. copyright: - # ------------------------------------------------------------- + powered: # Hexo link (Powered by Hexo). enable: true @@ -86,36 +75,48 @@ footer: enable: true # Version info of NexT after scheme info (vX.X.X). version: true - # ------------------------------------------------------------- + # Beian icp information for Chinese users. In China, every legal website should have a beian icp in website footer. # http://www.miitbeian.gov.cn beian: enable: false icp: - # ------------------------------------------------------------- # Any custom text can be defined here. #custom_text: Hosted by Coding Pages # Creative Commons 4.0 International License. -# https://creativecommons.org/share-your-work/licensing-types-examples -# Available values: by | by-nc | by-nc-nd | by-nc-sa | by-nd | by-sa | zero +# See: https://creativecommons.org/share-your-work/licensing-types-examples +# Available values of license: by | by-nc | by-nc-nd | by-nc-sa | by-nd | by-sa | zero +# You can set a language value if you prefer a translated version of CC license. +# CC licenses are available in 39 languages, where you can find the specific and correct abbreviation you need. +# Valid values of language: deed.zh, deed.fr, deed.de, etc. creative_commons: license: by-nc-sa sidebar: false post: false + language: + +# `Follow me on GitHub` banner in the top-right corner. +github_banner: + enable: false + permalink: https://github.com/yourname + title: Follow me on GitHub # --------------------------------------------------------------- # SEO Settings # --------------------------------------------------------------- -# Canonical, set a canonical link tag in your hexo, you could use it for your SEO of blog. +# Disable Baidu transformation on mobile devices. +disable_baidu_transformation: false + +# Set a canonical link tag in your hexo, you could use it for your SEO of blog. # See: https://support.google.com/webmasters/answer/139066 # Tips: Before you open this tag, remember set up your URL in hexo _config.yml (e.g. url: http://yourdomain.com) canonical: true -# Change headers hierarchy on site-subtitle (will be main site description) and on all post/pages titles for better SEO-optimization. +# Change headers hierarchy on site-subtitle (will be main site description) and on all post / page titles for better SEO-optimization. seo: false # If true, will add site-subtitle to index page, added in main hexo config. @@ -125,6 +126,25 @@ index_with_subtitle: false # Automatically add external URL with BASE64 encrypt & decrypt. exturl: false +# Google Webmaster tools verification. +# See: https://www.google.com/webmasters +#google_site_verification: + +# Bing Webmaster tools verification. +# See: https://www.bing.com/webmaster +#bing_site_verification: + +# Yandex Webmaster tools verification. +# See: https://webmaster.yandex.ru +#yandex_site_verification: + +# Baidu Webmaster tools verification. +# See: https://ziyuan.baidu.com/site +#baidu_site_verification: + +# Enable baidu push so that the blog will push the url to baidu automatically which is very helpful for SEO. +baidu_push: false + # --------------------------------------------------------------- # Menu Settings @@ -132,7 +152,7 @@ exturl: false # When running the site in a subdirectory (e.g. domain.tld/blog), remove the leading slash from link value (/archives -> archives). # Usage: `Key: /link/ || icon` -# Key is the name of menu item. If translate for this menu will find in languages - this translate will be loaded; if not - Key name will be used. Key is case-senstive. +# Key is the name of menu item. If the translation for this item is available, the translated text will be loaded, otherwise the Key name will be used. Key is case-senstive. # Value before `||` delimeter is the target link. # Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, question icon will be loaded. # External url should start with http:// or https:// @@ -146,7 +166,7 @@ menu: #sitemap: /sitemap.xml || sitemap #commonweal: /404/ || heartbeat -# Enable/Disable menu icons / item badges. +# Enable / Disable menu icons / item badges. menu_settings: icons: true badges: false @@ -165,6 +185,7 @@ scheme: Muse # --------------------------------------------------------------- # Sidebar Settings +# See: https://theme-next.org/docs/theme-settings/sidebar # --------------------------------------------------------------- # Posts / Categories / Tags in sidebar. @@ -175,7 +196,7 @@ site_state: true # Key is the link label showing to end users. # Value before `||` delimeter is the target permalink. # Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, globe icon will be loaded. -#social: +social: #GitHub: https://github.com/yourname || github #E-Mail: mailto:yourname@gmail.com || envelope #Weibo: https://weibo.com/yourname || weibo @@ -193,24 +214,18 @@ social_icons: icons_only: false transition: false -# Follow me on GitHub banner in right-top corner. -# Usage: `permalink || title` -# Value before `||` delimeter is the target permalink. -# Value after `||` delimeter is the title and aria-label name. -#github_banner: https://github.com/yourname || Follow me on GitHub - # Blog rolls links_icon: link links_title: Links links_layout: block #links_layout: inline -#links: +links: #Title: http://example.com # Sidebar Avatar avatar: - # in theme directory(source/images): /images/avatar.gif - # in site directory(source/uploads): /uploads/avatar.gif + # In theme directory (source/images): /images/avatar.gif + # In site directory (source/uploads): /uploads/avatar.gif # You can also use other linking images. url: #/images/avatar.gif # If true, the avatar would be dispalyed in circle. @@ -227,7 +242,9 @@ toc: number: true # If true, all words will placed on next lines if header width longer then sidebar width. wrap: false - # Maximum heading depth of generated toc. You can set it in one post through `toc_max_depth` var. + # If true, all level of TOC in a post will be displayed, rather than the activated part of it. + expand_all: false + # Maximum heading depth of generated toc. You can set it in one post through `toc_max_depth` in Front Matter. max_depth: 6 sidebar: @@ -235,46 +252,63 @@ sidebar: position: left #position: right - # Manual define the sidebar width. - # If commented, will be default for: + # Manual define the sidebar width. If commented, will be default for: # Muse | Mist: 320 # Pisces | Gemini: 240 #width: 300 # Sidebar Display, available values (only for Muse | Mist): # - post expand on posts automatically. Default. - # - always expand for all pages automatically + # - always expand for all pages automatically. # - hide expand only when click on the sidebar toggle icon. - # - remove Totally remove sidebar including sidebar toggle. + # - remove totally remove sidebar including sidebar toggle. display: post - #display: always - #display: hide - #display: remove # Sidebar offset from top menubar in pixels (only for Pisces | Gemini). offset: 12 + # Enable sidebar on narrow view (only for Muse | Mist). + onmobile: false + # Click any blank part of the page to close sidebar (only for Muse | Mist). + dimmer: false + +back2top: + enable: true # Back to top in sidebar. - b2t: false + sidebar: false # Scroll percent label in b2t button. scrollpercent: false - # Enable sidebar on narrow view (only for Muse | Mist). - onmobile: false + +# A button to open designated chat widget in sidebar. +# Firstly, you need enable the chat service you want to activate its sidebar button. +chat: + enable: false + #service: chatra + #service: tidio + icon: comment # icon in Font Awesome 4, set false to disable icon + text: Chat # button text, change it as you wish # --------------------------------------------------------------- # Post Settings +# See: https://theme-next.org/docs/theme-settings/posts # --------------------------------------------------------------- +# Set the text alignment in the posts. +text_align: + # Available values: start | end | left | right | center | justify | justify-all | match-parent + desktop: justify + mobile: justify + # Automatically scroll page to section which is under mark. scroll_to_more: true -# Automatically saving scroll position on each post/page in cookies. +# Automatically saving scroll position on each post / page in cookies. save_scroll: false # Automatically excerpt description in homepage as preamble text. excerpt_description: true -# Automatically Excerpt. Not recommend. +# Automatically Excerpt (Not recommend). # Use in the post to control excerpt accurately. auto_excerpt: enable: false @@ -289,10 +323,7 @@ post_meta: item_text: true created_at: true updated_at: - enabled: true - # If true, show updated date label only if `updated date` different from `created date` (post edited in another day than was created). - # And if post will edited in same day as created, edited time will show in popup title under created time label. - # If false show anyway, but if post edited in same day, show only edited time. + enable: true another_day: true categories: true @@ -306,30 +337,34 @@ symbols_count_time: wpm: 275 codeblock: - # Manual define the border radius in codeblock - # Leave it empty for the default 1 + # Manual define the border radius in codeblock, leave it blank for the default value: 1 border_radius: # Add copy button on codeblock copy_button: enable: false # Show text copy result show_result: false + # Style: only 'flat' is currently available, leave it blank if you prefer default theme + style: # Wechat Subscriber -#wechat_subscriber: - #enabled: true +wechat_subscriber: + enable: false #qcode: /path/to/your/wechatqcode e.g. /uploads/wechat-qcode.jpg #description: e.g. subscribe to my blog by scanning my public wechat account -# Reward -# If true, reward would be displayed in every article by default. -# And you can show or hide one article specially through add page variable `reward: true/false`. -reward: +# Reward (Donate) +reward_settings: + # If true, reward would be displayed in every article by default. + # You can show or hide reward in a specific article throuth `reward: true | false` in Front Matter. enable: false + animation: false #comment: Donate comment here - #wechatpay: /images/wechatpay.jpg - #alipay: /images/alipay.jpg - #bitcoin: /images/bitcoin.jpg + +reward: + #wechatpay: /images/wechatpay.png + #alipay: /images/alipay.png + #bitcoin: /images/bitcoin.png # Related popular posts # Dependencies: https://github.com/tea3/hexo-related-popular-posts @@ -356,23 +391,23 @@ post_edit: # Misc Theme Settings # --------------------------------------------------------------- -# Disable Baidu tranformation on mobile devices. -disable_baidu_tranformation: false - # Reduce padding / margin indents on devices with narrow width. mobile_layout_economy: false # Android Chrome header panel color ($brand-bg / $headband-bg => $black-deep). android_chrome_color: "#222" +# Hide sticky headers and color the menu bar on Safari (iOS / macOS). +safari_rainbow: false + +# Optimize the display of scrollbars on webkit based browsers. +custom_scrollbar: false + # Custom Logo # Do not support Scheme Mist currently. -# Options: -# enabled: If true, will enable custom logo -# image: Images's url, replace it with specific image custom_logo: - enabled: false - image: + enable: false + image: #/uploads/custom-logo.jpg # Code Highlight theme # Available values: normal | night | night eighties | night blue | night bright @@ -380,25 +415,35 @@ custom_logo: highlight_theme: normal # Enable "cheers" for archive page. -cheers_enabled: true +cheers: true + +# TagCloud settings for tags page. +tagcloud: + # If true, font size, font color and amount of tags can be customized + enable: false + # All values below are same as default, change them by yourself + min: 12 # min font size in px + max: 30 # max font size in px + start: "#ccc" # start color (hex, rgba, hsla or color keywords) + end: "#111" # end color (hex, rgba, hsla or color keywords) + amount: 200 # amount of tags, chage it if you have more than 200 tags # --------------------------------------------------------------- -# Font Settings +# Font Settings. Introduced in NexT v5.0.1. # Find fonts on Google Fonts (https://www.google.com/fonts) # All fonts set here will have the following styles: # light, light italic, normal, normal italic, bold, bold italic # Be aware that setting too much fonts will cause site running slowly -# Introduced in 5.0.1 # --------------------------------------------------------------- -# CAUTION! Safari Version 10.1.2 bug: https://github.com/iissnan/hexo-theme-next/issues/1844 -# To avoid space between header and sidebar in Pisces / Gemini themes recommended to use Web Safe fonts for `global` (and `logo`): +# To avoid space between header and sidebar in scheme Pisces / Gemini, Web Safe fonts are recommended for `global` (and `logo`): # Arial | Tahoma | Helvetica | Times New Roman | Courier New | Verdana | Georgia | Palatino | Garamond | Comic Sans MS | Trebuchet MS # --------------------------------------------------------------- + font: enable: false - # Uri of fonts host. E.g. //fonts.googleapis.com (Default). + # Uri of fonts host, e.g. //fonts.googleapis.com (Default). host: # Font options: @@ -441,15 +486,20 @@ font: # --------------------------------------------------------------- # Third Party Services Settings +# See: https://theme-next.org/docs/third-party-services/ +# You may need to install dependencies or set CDN URLs in `vendors` +# There are two different CDN providers by default: +# - jsDelivr (cdn.jsdelivr.net), works everywhere even in China +# - CDNJS (cdnjs.cloudflare.com), provided by cloudflare # --------------------------------------------------------------- # Math Equations Render Support math: enable: false - # Default(true) will load mathjax/katex script on demand - # That is it only render those page who has `mathjax: true` in Front Matter. - # If you set it to false, it will load mathjax/katex srcipt EVERY PAGE. + # Default (true) will load mathjax / katex script on demand. + # That is it only render those page which has `mathjax: true` in Front Matter. + # If you set it to false, it will load mathjax / katex srcipt EVERY PAGE. per_page: true engine: mathjax @@ -457,10 +507,8 @@ math: # hexo-rendering-pandoc (or hexo-renderer-kramed) needed to full MathJax support. mathjax: - # Use 2.7.1 as default, jsdelivr as default CDN, works everywhere even in China - cdn: //cdn.jsdelivr.net/npm/mathjax@2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML - # For direct link to MathJax.js with CloudFlare CDN (cdnjs.cloudflare.com) - #cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML + cdn: //cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_HTMLorMML + #cdn: //cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML # See: https://mhchem.github.io/MathJax-mhchem/ #mhchem: //cdn.jsdelivr.net/npm/mathjax-mhchem@3 @@ -468,9 +516,7 @@ math: # hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin) needed to full Katex support. katex: - # Use 0.7.1 as default, jsdelivr as default CDN, works everywhere even in China - cdn: //cdn.jsdelivr.net/npm/katex@0.7.1/dist/katex.min.css - # CDNJS, provided by cloudflare, maybe the best CDN, but not works in China + cdn: //cdn.jsdelivr.net/npm/katex@0/dist/katex.min.css #cdn: //cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css copy_tex: @@ -479,24 +525,6 @@ math: copy_tex_js: //cdn.jsdelivr.net/npm/katex@0/dist/contrib/copy-tex.min.js copy_tex_css: //cdn.jsdelivr.net/npm/katex@0/dist/contrib/copy-tex.min.css -# PDF Support -# Dependencies: https://github.com/theme-next/theme-next-pdf -pdf: - enable: false - - # Default(true) will load PDFObject/PDF.js script on demand - # That is it only render those page who has `pdf: true` in Front Matter. - # If you set it to false, it will load PDFObject/PDF.js srcipt EVERY PAGE. - per_page: true - - height: 500px - - pdfobject: - # Use 2.1.1 as default, jsdelivr as default CDN, works everywhere even in China - cdn: //cdn.jsdelivr.net/npm/pdfobject@2.1.1/pdfobject.min.js - # CDNJS, provided by cloudflare, maybe the best CDN, but not works in China - #cdn: //cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js - # Han Support # Dependencies: https://github.com/theme-next/theme-next-han han: false @@ -506,15 +534,71 @@ han: false # For more information: https://github.com/vinta/pangu.js pangu: false -# Swiftype Search API Key -#swiftype_key: +# Quicklink Support +# Dependencies: https://github.com/theme-next/theme-next-quicklink +# Visit https://github.com/GoogleChromeLabs/quicklink for details +quicklink: + enable: false -# Baidu Analytics ID -#baidu_analytics: + # Quicklink (quicklink.umd.js script) is loaded on demand + # Add `quicklink: true` in Front Matter of the page or post you need + # Home page and archive page can be controlled through home and archive options below + home: true + archive: true + + # Default (true) will initialize quicklink after the load event fires + delay: true + # Custom a time in milliseconds by which the browser must execute prefetching + timeout: 3000 + # Default (true) will enable fetch() or falls back to XHR + priority: true + + # For more flexibility you can add some patterns (RegExp, Function, or Array) to ignores + # See: https://github.com/GoogleChromeLabs/quicklink#custom-ignore-patterns + # Leave ignores as empty if you don't understand what it means + # Example: + # ignores: + # - /\/api\/?/ + # - uri => uri.includes('.xml') + # - (uri, el) => el.hasAttribute('noopener') + ignores: -# Growingio Analytics ID -# Copyright 2015-2018 GrowingIO, Inc. More info available at https://www.growingio.com -#growingio_analytics: #your projectId +# Bookmark Support +# Dependencies: https://github.com/theme-next/theme-next-bookmark +bookmark: + enable: false + # If auto, save the reading position when closing the page or clicking the bookmark-icon. + # If manual, only save it by clicking the bookmark-icon. + save: auto + +# Reading progress bar +# Dependencies: https://github.com/theme-next/theme-next-reading-progress +reading_progress: + enable: false + color: "#37c6c0" + height: 2px + +# Google Calendar +# Share your recent schedule to others via calendar page. +# API Documentation: https://developers.google.com/google-apps/calendar/v3/reference/events/list +# To get api_key: https://console.developers.google.com +# Create & manage a public Google calendar: https://support.google.com/calendar/answer/37083 +calendar: + enable: false + calendar_id: # Your Google account E-Mail + api_key: + orderBy: startTime + offsetMax: 24 # Time Range + offsetMin: 4 # Time Range + showDeleted: false + singleEvents: true + maxResults: 250 + + +# --------------------------------------------------------------- +# Comments and Widgets +# See: https://theme-next.org/docs/third-party-services/comments-and-widgets +# --------------------------------------------------------------- # Disqus disqus: @@ -523,6 +607,20 @@ disqus: count: true lazyload: false +# DisqusJS +# Alternative Disqus - Render comment component using Disqus API +# Demo: https://suka.js.org/DisqusJS/ +disqusjs: + enable: false + # API Endpoint of Disqus API (https://disqus.com/api/) + # leave api empty if you are able to connect to Disqus API + # otherwise you need a reverse proxy for Disqus API + # For example: + # api: https://disqus.skk.moe/disqus/ + api: + apikey: # register new application from https://disqus.com/api/applications/ + shortname: # See: https://disqus.com/admin/settings/general/ + # Changyan changyan: enable: false @@ -542,10 +640,11 @@ valine: avatar: mm # gravatar style guest_info: nick,mail,link # custom comment header pageSize: 10 # pagination size + language: # language, available values: en, zh-cn visitor: false # leancloud-counter-security is not supported for now. When visitor is set to be true, appid and appkey are recommended to be the same as leancloud_visitors' for counter compatibility. Article reading statistic https://valine.js.org/visitor.html comment_count: true # if false, comment count will only be displayed in post page, not in home page -# Support for LiveRe comments system. +# LiveRe comments system # You can get your uid from https://livere.com/insight/myCode (General web site) #livere_uid: your uid @@ -567,15 +666,24 @@ gitment: # Gitalk # Demo: https://gitalk.github.io -# Reference: https://asdfv1929.github.io/2018/01/20/gitalk/, https://liujunzhou.top/2018/8/10/gitalk-error/ gitalk: enable: false github_id: # Github repo owner - repo: # Repository name to store issues. + repo: # Repository name to store issues client_id: # Github Application Client ID client_secret: # Github Application Client Secret admin_user: # GitHub repo owner and collaborators, only these guys can initialize github issues distraction_free_mode: true # Facebook-like distraction free mode + # Gitalk's display language depends on user's browser or system environment + # If you want everyone visiting your site to see a uniform language, you can set a force language value + # Available values: en, es-ES, fr, ru, zh-CN, zh-TW + language: + + +# --------------------------------------------------------------- +# Content Sharing Services +# See: https://theme-next.org/docs/third-party-services/content-sharing-services +# --------------------------------------------------------------- # Baidu Share # Available values: button | slide @@ -584,18 +692,35 @@ gitalk: ## type: button # AddThis Share, See: https://www.addthis.com -# Go to https://www.addthis.com/dashboard to customize your tools +# Go to https://www.addthis.com/dashboard to customize your tools. #add_this_id: +# Likely Share +# See: https://ilyabirman.net/projects/likely/ +# Likely supports four looks, nine social networks, any button text +# You are free to modify the text value and order of any network +likely: + enable: false + look: normal # available values: normal, light, small, big + networks: + twitter: Tweet + facebook: Share + linkedin: Link + gplus: Plus + vkontakte: Share + odnoklassniki: Class + telegram: Send + whatsapp: Send + pinterest: Pin + # NeedMoreShare2 # Dependencies: https://github.com/theme-next/theme-next-needmoreshare2 -# See: https://github.com/revir/need-more-share2, https://github.com/DzmVasileusky/needShareButton # iconStyle: default | box # boxForm: horizontal | vertical # position: top / middle / bottom + Left / Center / Right # networks: -# Weibo,Wechat,Douban,QQZone,Twitter,Linkedin,Mailto,Reddit,Delicious,StumbleUpon,Pinterest,Facebook,GooglePlus, -# Slashdot,Technorati,Posterous,Tumblr,GoogleBookmarks,Newsvine,Evernote,Friendfeed,Vkontakte,Odnoklassniki,Mailru +# Weibo,Wechat,Douban,QQZone,Twitter,Facebook,Linkedin,Mailto,Reddit,Delicious,StumbleUpon,Pinterest, +# GooglePlus,Tumblr,GoogleBookmarks,Newsvine,Evernote,Friendfeed,Vkontakte,Odnoklassniki,Mailru needmoreshare2: enable: false postbottom: @@ -613,24 +738,23 @@ needmoreshare2: position: middleRight networks: Weibo,Wechat,Douban,QQZone,Twitter,Facebook -# Google Webmaster tools verification setting -# See: https://www.google.com/webmasters -#google_site_verification: -# Google Analytics -#google_analytics: +# --------------------------------------------------------------- +# Statistics and Analytics +# See: https://theme-next.org/docs/third-party-services/statistics-and-analytics +# --------------------------------------------------------------- -# Bing Webmaster tools verification setting -# See: https://www.bing.com/webmaster -#bing_site_verification: +# Baidu Analytics ID +#baidu_analytics: -# Yandex Webmaster tools verification setting -# See: https://webmaster.yandex.ru -#yandex_site_verification: +# Growingio Analytics ID +# Copyright 2015-2018 GrowingIO, Inc. More info available at https://www.growingio.com +#growingio_analytics: #your projectId -# Baidu Webmaster tools verification setting -# See: https://ziyuan.baidu.com/site -#baidu_site_verification: +# Google Analytics +#google_analytics: +# tracking_id: +# localhost_ignored: true # CNZZ count #cnzz_siteid: @@ -641,8 +765,7 @@ needmoreshare2: # Post widgets & FB/VK comments settings. # --------------------------------------------------------------- -# Facebook SDK Support. -# https://github.com/iissnan/hexo-theme-next/pull/410 +# Facebook SDK Support facebook_sdk: enable: false app_id: # @@ -677,7 +800,7 @@ rating: # --------------------------------------------------------------- # Show number of visitors to each article. -# You can visit https://leancloud.cn get AppID and AppKey. +# You can visit https://leancloud.cn to get AppID and AppKey. leancloud_visitors: enable: false app_id: # @@ -698,7 +821,7 @@ firestore: projectId: #required bluebird: false #enable this if you want to include bluebird 3.5.1(core version) Promise polyfill -# Show Views/Visitors of the website/page with busuanzi. +# Show Views / Visitors of the website / page with busuanzi. # Get more information on http://ibruce.info/2015/04/04/busuanzi busuanzi_count: enable: false @@ -715,28 +838,14 @@ busuanzi_count: # Tencent MTA ID #tencent_mta: -# Enable baidu push so that the blog will push the url to baidu automatically which is very helpful for SEO. -baidu_push: false -# Google Calendar -# Share your recent schedule to others via calendar page. -# API Documentation: https://developers.google.com/google-apps/calendar/v3/reference/events/list -# Enabled APIs and services -# api_key: https://console.developers.google.com -# Create & manage a public Google calendar: https://support.google.com/calendar/answer/37083 -calendar: - enable: false - calendar_id: # Your Google account E-Mail - api_key: - orderBy: startTime - offsetMax: 24 # Time Range - offsetMin: 4 # Time Range - showDeleted: false - singleEvents: true - maxResults: 250 +# --------------------------------------------------------------- +# Search Services +# See: https://theme-next.org/docs/third-party-services/search-services +# --------------------------------------------------------------- # Algolia Search -# See: https://github.com/theme-next/hexo-theme-next/blob/master/docs/ALGOLIA-SEARCH.md +# See: https://theme-next.org/docs/third-party-services/search-services#Algolia-Search # Dependencies: https://github.com/theme-next/theme-next-algolia-instant-search algolia_search: enable: false @@ -751,30 +860,45 @@ algolia_search: # Dependencies: https://github.com/theme-next/hexo-generator-searchdb local_search: enable: false - # if auto, trigger search by changing input - # if manual, trigger search by pressing enter key or search button + # If auto, trigger search by changing input. + # If manual, trigger search by pressing enter key or search button. trigger: auto - # show top n results per article, show all results by setting to -1 + # Show top n results per article, show all results by setting to -1 top_n_per_article: 1 - # unescape html strings to the readable one + # Unescape html strings to the readable one. unescape: false -# Bookmark Support -# Dependencies: https://github.com/theme-next/theme-next-bookmark -bookmark: +# Swiftype Search API Key +#swiftype_key: + + +# --------------------------------------------------------------- +# Chat Services +# See: https://theme-next.org/docs/third-party-services/chat-services +# --------------------------------------------------------------- + +# Chatra Support +# See: https://chatra.io +# Dashboard: https://app.chatra.io/settings/general +chatra: enable: false - # if auto - # - save the reading position when closing the page - # - or clicking the bookmark-icon - # if manual, only save it by clicking the bookmark-icon - save: auto + async: true + id: # visit Dashboard to get your ChatraID + #embed: # unfinished experimental feature for developers, See: https://chatra.io/help/api/#injectto + +# Tidio Support +# See: https://www.tidiochat.com +# Dashboard: https://www.tidiochat.com/panel/dashboard +tidio: + enable: false + key: # Public Key, get it from Dashboard, See: https://www.tidiochat.com/panel/settings/developer # --------------------------------------------------------------- # Tags Settings +# See: https://theme-next.org/docs/tag-plugins/ # --------------------------------------------------------------- -# See: https://theme-next.org/docs/tag-plugins/ # Note tag (bs-callout) note: # Note tag style values: @@ -789,9 +913,6 @@ note: # Offset also applied to label tag variables. This option can work with disabled note tag. light_bg_offset: 0 -# Label tag -label: true - # Tabs tag tabs: enable: true @@ -800,18 +921,31 @@ tabs: labels: true border_radius: 0 -# Reading progress bar -# Dependencies: https://github.com/theme-next/theme-next-reading-progress -reading_progress: +# PDF tag, requires two plugins: pdfObject and pdf.js +# pdfObject will try to load pdf files natively, if failed, pdf.js will be used. +# The following `cdn` setting is only for pdfObject, because cdn for pdf.js might be blocked by CORS policy. +# So, you must install the dependency of pdf.js if you want to use pdf tag and make it available to all browsers. +# See: https://github.com/theme-next/theme-next-pdf +pdf: enable: false - color: "#37c6c0" - height: 2px + # Default height + height: 500px + pdfobject: + cdn: //cdn.jsdelivr.net/npm/pdfobject@2/pdfobject.min.js + #cdn: //cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js +# Mermaid tag +mermaid: + enable: false + # Available themes: default | dark | forest | neutral + theme: forest + cdn: //cdn.jsdelivr.net/npm/mermaid@8/dist/mermaid.min.js + #cdn: //cdnjs.cloudflare.com/ajax/libs/mermaid/8.0.0/mermaid.min.js -#! --------------------------------------------------------------- -#! DO NOT EDIT THE FOLLOWING SETTINGS -#! UNLESS YOU KNOW WHAT YOU ARE DOING -#! --------------------------------------------------------------- + +# --------------------------------------------------------------- +# Animation Settings +# --------------------------------------------------------------- # Use velocity to animate everything. motion: @@ -833,16 +967,16 @@ motion: sidebar: slideUpIn # Fancybox. There is support for old version 2 and new version 3. -# Choose only any one variant, do not need to install both. +# Choose only one variant, do not need to install both. # To install 2.x: https://github.com/theme-next/theme-next-fancybox # To install 3.x: https://github.com/theme-next/theme-next-fancybox3 fancybox: false -# Added switch option for separated repo in 6.0.0. +# Polyfill to remove click delays on browsers with touch UIs. # Dependencies: https://github.com/theme-next/theme-next-fastclick fastclick: false -# Added switch option for separated repo in 6.0.0. +# Vanilla JavaScript plugin for lazyloading images. # Dependencies: https://github.com/theme-next/theme-next-jquery-lazyload lazyload: false @@ -853,8 +987,6 @@ pace: false # pace-theme-big-counter | pace-theme-bounce | pace-theme-barber-shop | pace-theme-center-atom # pace-theme-center-circle | pace-theme-center-radar | pace-theme-center-simple | pace-theme-corner-indicator # pace-theme-fill-left | pace-theme-flash | pace-theme-loading-bar | pace-theme-mac-osx | pace-theme-minimal -# For example -# pace_theme: pace-theme-center-simple pace_theme: pace-theme-minimal # Canvas-nest @@ -862,7 +994,7 @@ pace_theme: pace-theme-minimal canvas_nest: enable: false onmobile: true # display on mobile or not - color: '0,0,255' # RGB values, use ',' to separate + color: "0,0,255" # RGB values, use ',' to separate opacity: 0.5 # the opacity of line: 0~1 zIndex: -1 # z-index property of the background count: 99 # the number of lines @@ -887,11 +1019,17 @@ canvas_ribbon: alpha: 0.6 zIndex: -1 -# Script Vendors. -# Set a CDN address for the vendor you want to customize. + +#! --------------------------------------------------------------- +#! DO NOT EDIT THE FOLLOWING SETTINGS +#! UNLESS YOU KNOW WHAT YOU ARE DOING +#! See: https://theme-next.org/docs/advanced-settings +#! --------------------------------------------------------------- + +# Script Vendors. Set a CDN address for the vendor you want to customize. # For example # jquery: https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js -# Be aware that you should use the same version as internal ones to avoid potential problems. +# Be aware that you would better use the same version as internal ones to avoid potential problems. # Please use the https protocol of CDN files when you enable https on your site. vendors: # Internal path prefix. Please do not edit it. @@ -903,7 +1041,7 @@ vendors: # jquery: //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js jquery: - # Internal version: 2.1.5 + # Internal version: 2.1.5 & 3.5.7 # See: https://fancyapps.com/fancybox # Example: # fancybox: //cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.js @@ -937,13 +1075,6 @@ vendors: velocity: velocity_ui: - # Internal version: 0.7.9 - # See: https://faisalman.github.io/ua-parser-js - # Example: - # ua_parser: //cdn.jsdelivr.net/npm/ua-parser-js@0/src/ua-parser.min.js - # ua_parser: //cdnjs.cloudflare.com/ajax/libs/UAParser.js/0.7.9/ua-parser.min.js - ua_parser: - # Internal version: 4.6.2 # See: https://fontawesome.com # Example: @@ -951,7 +1082,7 @@ vendors: # fontawesome: //cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.2/css/font-awesome.min.css fontawesome: - # Internal version: 2.4.1 + # Internal version: 2.10.4 # See: https://www.algolia.com # Example: # algolia_instant_js: //cdn.jsdelivr.net/npm/instantsearch.js@2/dist/instantsearch.js @@ -1002,13 +1133,19 @@ vendors: # han: //cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/han.min.css han: - # Internal version: 3.3.0 + # Internal version: 4.0.7 # See: https://github.com/vinta/pangu.js # Example: - # pangu: //cdn.jsdelivr.net/npm/pangu@3/dist/browser/pangu.min.js - # pangu: //cdnjs.cloudflare.com/ajax/libs/pangu/3.3.0/pangu.min.js + # pangu: //cdn.jsdelivr.net/npm/pangu@4/dist/browser/pangu.min.js + # pangu: //cdnjs.cloudflare.com/ajax/libs/pangu/4.0.7/pangu.min.js pangu: + # Internal version: 1.0.0 + # See: https://github.com/GoogleChromeLabs/quicklink + # Example: + # quicklink: //cdn.jsdelivr.net/npm/quicklink@1/dist/quicklink.umd.js + quicklink: + # Internal version: 1.0.0 # See: https://github.com/revir/need-more-share2 # Example: @@ -1042,19 +1179,31 @@ vendors: # valine: //cdnjs.cloudflare.com/ajax/libs/valine/1.3.4/Valine.min.js valine: - # gitalk - # See: https://github.com/gitalk/gitalk + # gitalk & js-md5 + # See: https://github.com/gitalk/gitalk, https://github.com/emn178/js-md5 # Example: # gitalk_js: //cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js # gitalk_css: //cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css + # md5: //cdn.jsdelivr.net/npm/js-md5@0/src/md5.min.js gitalk_js: gitalk_css: + md5: - # js-md5 - # See: https://github.com/emn178/js-md5 + # likely + # See: https://github.com/ilyabirman/Likely # Example: - # md5: //cdn.jsdelivr.net/npm/js-md5@0/src/md5.min.js - md5: + # likely_js: //cdn.jsdelivr.net/npm/ilyabirman-likely@2/release/likely.js + # likely_css: //cdn.jsdelivr.net/npm/ilyabirman-likely@2/release/likely.css + likely_js: + likely_css: + + # DisqusJS + # See: https://github.com/SukkaW/DisqusJS + # Example: + # disqusjs_js: //cdn.jsdelivr.net/npm/disqusjs@1/dist/disqus.js + # disqusjs_css: //cdn.jsdelivr.net/npm/disqusjs@1/dist/disqusjs.css + disqusjs_js: + disqusjs_css: # Assets css: css diff --git a/bower.json b/bower.json index e18a4a4ba..e9da770e2 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "theme-next", - "version": "7.0.0", + "version": "7.1.0", "homepage": "https://theme-next.org", "authors": [ "NexT (https://theme-next.org)" @@ -25,7 +25,6 @@ "dependencies": { "font-awesome": "fontawesome#*", "jquery": "http://code.jquery.com/jquery-2.1.3.min.js", - "ua-parser-js": "~0.7.9", "velocity": "~1.2.1" } } diff --git a/docs/ALGOLIA-SEARCH.md b/docs/ALGOLIA-SEARCH.md index 46d1a3997..998d8dcec 100644 --- a/docs/ALGOLIA-SEARCH.md +++ b/docs/ALGOLIA-SEARCH.md @@ -83,5 +83,5 @@ NexT provides Algolia search plugin for index your hexo website content. To use 1. The latest version of the [Hexo-Algolia](https://github.com/oncletom/hexo-algolia) plugin removes the content indexing feature, given Algolia's free account limitation. 1. The [Hexo-Algoliasearch](https://github.com/LouisBarranqueiro/hexo-algoliasearch) plugin provides content indexing functionality, but requires the replacement of keywords in the NEXT theme. The same problem exists with `Record Too Big` for Algolia's free account. - - Replace all `applicationID` in `source/js/src/algolia-search.js` with `appId` + - Replace all `applicationID` in `source/js/algolia-search.js` with `appId` - Replace all `applicationID` in `layout/_partials/head/head.swig` with `appId` diff --git a/docs/ru/README.md b/docs/ru/README.md index 3f8c6b278..942dcf684 100644 --- a/docs/ru/README.md +++ b/docs/ru/README.md @@ -2,16 +2,15 @@ :cn: :ru:
    -#
    e x T
    +#
    e x T

    «NexT» — элегантная высококачественная тема под Hexo. Сделана с нуля, с любовью.

    + - - @@ -20,7 +19,7 @@ ## Демо * :heart_decoration: Muse тема: [LEAFERx](https://leaferx.online) | [Alex LEE](http://saili.science) | [Miaia](https://11.tt) -* :six_pointed_star: Mist тема: [Jeff](https://blog.zzbd.org) | [uchuhimo](http://uchuhimo.me) | [xirong](http://www.ixirong.com) +* :six_pointed_star: Mist тема: [uchuhimo](http://uchuhimo.me) | [xirong](http://www.ixirong.com) * :pisces: Pisces тема: [Vi](http://notes.iissnan.com) | [Acris](https://acris.me) | [Jiaxi He](http://jiaxi.io) * :gemini: Gemini тема: [Ivan.Nginx](https://almostover.ru) | [Raincal](https://raincal.com) | [Dandy](https://dandyxu.me) @@ -79,9 +78,9 @@ $ git pull ## Обратная связь * Задать вопрос на [Stack Overflow][stack-url]. -* Запросить новую возможность на [GitHub][contributing-url]. +* Сообщить об ошибке в разделе [GitHub Issues][issues-bug-url]. +* Запросить новую возможность на [GitHub][issues-feat-url]. * Голосовать за [популярные запросы возможностей][feat-req-vote-url]. -* Сообщить об ошибке в разделе [GitHub Issues][issues-url]. * Вступить в наши [Gitter][gitter-url] / [Riot][riot-url] / [Telegram][t-chat-url] чаты. * Подписаться на новости через [канал Telegram'а][t-news-url]. @@ -89,16 +88,39 @@ $ git pull * :triangular_flag_on_post: HexoEditor +## Благодарности + +

    +«NexT» выражает особую благодарность этим замечательным сервисам, которые спонсируют нашу основную инфраструктуру: +

    + +

    +

    + GitHub позволяет нам хостить Git-репозиторий, Netlify позволяет нам деплоить документацию. +

    + +

    +

    + Crowdin позволяет нам удобно переводить документацию. +

    + +

    +

    + Codacy позволяет нам запускать набор тестов, BrowserStack позволяет нам тестировать в реальных браузерах. +

    + [browser-image]: https://img.shields.io/badge/browser-%20chrome%20%7C%20firefox%20%7C%20opera%20%7C%20safari%20%7C%20ie%20%3E%3D%209-lightgrey.svg [browser-url]: https://www.browserstack.com [stack-url]: https://stackoverflow.com/questions/tagged/theme-next -[contributing-url]: https://github.com/theme-next/hexo-theme-next/blob/master/.github/CONTRIBUTING.md -[feat-req-vote-url]: https://github.com/theme-next/hexo-theme-next/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc -[issues-url]: https://github.com/theme-next/hexo-theme-next/issues +[issues-bug-url]: https://github.com/theme-next/hexo-theme-next/issues/new?assignees=&labels=Bug&template=bug-report.md +[issues-feat-url]: https://github.com/theme-next/hexo-theme-next/issues/new?assignees=&labels=Feature+Request&template=feature-request.md +[feat-req-vote-url]: https://github.com/theme-next/hexo-theme-next/issues?q=is%3Aopen+is%3Aissue+label%3A%22Feature+Request%22+sort%3Areactions-%2B1-desc [gitter-url]: https://gitter.im/theme-next -[riot-url]: https://riot.im/app/#/room/#NexT:matrix.org +[riot-url]: https://riot.im/app/#/room/#theme-next:matrix.org [t-chat-url]: https://t.me/theme_next [t-news-url]: https://t.me/theme_next_news diff --git a/docs/zh-CN/ALGOLIA-SEARCH.md b/docs/zh-CN/ALGOLIA-SEARCH.md index e32ec4c47..8aab587ca 100644 --- a/docs/zh-CN/ALGOLIA-SEARCH.md +++ b/docs/zh-CN/ALGOLIA-SEARCH.md @@ -80,5 +80,5 @@ NexT 内部提供 Algolia 的搜索功能,要使用此功能请确保所使用 1. 考虑到 Algolia 免费账户的限制,目前 [Hexo-Algolia](https://github.com/oncletom/hexo-algolia) 插件最新版本去掉了正文索引功能。 1. [Hexo-Algoliasearch](https://github.com/LouisBarranqueiro/hexo-algoliasearch) 插件提供了正文索引功能,不过需要替换 NEXT 主题中的关键字。对于免费账户,`Record Too Big` 的问题同样存在。 - - 替换 `source/js/src/algolia-search.js` 中所有的 `applicationID` 为 `appId` + - 替换 `source/js/algolia-search.js` 中所有的 `applicationID` 为 `appId` - 替换 `layout/_partials/head/head.swig` 中所有的 `applicationID` 为 `appId` diff --git a/docs/zh-CN/CODE_OF_CONDUCT.md b/docs/zh-CN/CODE_OF_CONDUCT.md index a3518b6ce..ecc737649 100644 --- a/docs/zh-CN/CODE_OF_CONDUCT.md +++ b/docs/zh-CN/CODE_OF_CONDUCT.md @@ -4,7 +4,7 @@ #
    e x T
    -[NexT](https://github.com/theme-next/hexo-theme-next) 是一个优雅而强大的 [Hexo](https://hexo.io/)主题。在这里,您可以构建一个托管在 [GitHub Pages](https://pages.github.com/) 上的静态博客,分享您的生活,并与新朋友进行交流。 +[NexT](https://theme-next.org) 是一个优雅而强大的 [Hexo](https://hexo.io/)主题。在这里,您可以构建一个托管在 [GitHub Pages](https://pages.github.com/) 上的静态博客,分享您的生活,并与新朋友进行交流。 参与者公约用来约束在 [NexT](https://github.com/theme-next/hexo-theme-next) 社区中代码更新、问题交流、请求合并等行为。我们期望所有用户相互尊重,礼貌待人。任何违反这些规则的人都将不会被审核,并会在发现后立即被阻止和驱逐。 diff --git a/docs/zh-CN/CONTRIBUTING.md b/docs/zh-CN/CONTRIBUTING.md index 263d9aadd..1b941ad36 100644 --- a/docs/zh-CN/CONTRIBUTING.md +++ b/docs/zh-CN/CONTRIBUTING.md @@ -4,14 +4,15 @@ #
    e x T
    -首先,非常感谢大家抽出宝贵时间来让我们的 NexT 主题越变越好。在这里,我们介绍一下 [NexT 主题及其子模块](https://github.com/theme-next)的开源贡献指南。不过,我们希望大家不要局限于此,更欢迎大家随时进行补充。 +首先,非常感谢大家抽出宝贵时间来让我们的 NexT 主题越变越好。在这里,我们介绍一下 [NexT 主题及其子模块](https://github.com/theme-next) 的开源贡献指南。不过,我们希望大家不要局限于此,更欢迎大家随时进行补充。 ## 目录 -[如何为 Next 做贡献](#how-can-i-contribute) +[如何为 NexT 做贡献](#how-can-i-contribute) * [你需要了解的](#before-submitting-an-issue) * [反馈 Bug](#reporting-bugs) + * [提交漏洞](#reporting-security-bugs) * [提交功能需求](#suggesting-enhancements) * [提交合并请求](#submitting-a-pull-request) * [发布版本](#creating-releases) @@ -24,21 +25,24 @@ * [提交信息规范](#commit-messages-rules) -## 如何为 Next 做贡献 -目前 Next 主题已经从 [iissnan](https://github.com/iissnan/hexo-theme-next) 的个人仓库移动到了 [Theme-Next](https://github.com/theme-next) 组织仓库中,并升级到 V6 版本。在 V6+ 版本中,`next/source/lib` 目录下的第三方依赖库将独立放置在 [Theme-Next](https://github.com/theme-next) 组织仓库中。在大多数情况下,NexT V5 版本仍然能够正常运行,但是如果你想获得更多的功能和帮助,还是建议您[升级到 NexT V6+ 版本](https://github.com/theme-next/hexo-theme-next/blob/master/docs/UPDATE-FROM-5.1.X.md),并移步 [Theme-Next](https://github.com/theme-next/hexo-theme-next) 仓库。 +## 如何为 NexT 做贡献 + +目前 NexT 主题已经从 [iissnan](https://github.com/iissnan/hexo-theme-next) 的个人仓库移动到了 [Theme-Next](https://github.com/theme-next) 组织仓库中,并升级到 V6 版本。在 V6+ 版本中,`next/source/lib` 目录下的第三方依赖库将独立放置在 [Theme-Next](https://github.com/theme-next) 组织仓库中。在大多数情况下,NexT V5 版本仍然能够正常运行,但是如果你想获得更多的功能和帮助,还是建议您 [升级到 NexT V6+ 版本](https://github.com/theme-next/hexo-theme-next/blob/master/docs/UPDATE-FROM-5.1.X.md),并移步 [Theme-Next](https://github.com/theme-next/hexo-theme-next) 仓库。 + ### 你需要了解的 -如果你在使用过程中遇到了问题,你可以查阅 FAQs(建设中) 或者 [NexT 帮助文档](https://theme-next.org/docs/)(建设中)。另外,你也可以通过[这里](https://github.com/theme-next/hexo-theme-next/search?q=&type=Issues&utf8=%E2%9C%93)进行大致检索,有些问题已经得到解答,你可以自行解决。对于没有解决的 Issue,你也可以继续提问。 +如果你在使用过程中遇到了问题,你可以查阅 FAQs(建设中) 或者 [NexT 帮助文档](https://theme-next.org/docs/)(建设中)。另外,你也可以通过 [这里](https://github.com/theme-next/hexo-theme-next/search?q=&type=Issues&utf8=%E2%9C%93) 进行大致检索,有些问题已经得到解答,你可以自行解决。对于没有解决的 Issue,你也可以继续提问。 -如果你在使用过程中发现了 Bug,请再次确认 Bug 在[最新发布版本](https://github.com/theme-next/hexo-theme-next/releases/latest)中是否重现。如果 Bug 重现,欢迎你到我们的 [Theme-NexT 仓库](https://github.com/theme-next/hexo-theme-next)中[反馈 Bug ](#reporting-bugs) 和[提交功能需求](#suggesting-enhancements),也更期待您[提交合并请求](#submitting-a-pull-request) +如果你在使用过程中发现了 Bug,请再次确认 Bug 在 [最新发布版本](https://github.com/theme-next/hexo-theme-next/releases/latest) 中是否重现。如果 Bug 重现,欢迎你到我们的 [主题仓库](https://github.com/theme-next/hexo-theme-next) 中 [反馈 Bug ](#reporting-bugs) 或者 [提交功能需求](#suggesting-enhancements),也更期待您 [提交合并请求](#submitting-a-pull-request)。 + ### 反馈 Bug -反馈 Bug 前,请再次确认您已经查看了[你需要了解的](#before-submitting-an-issue)内容,避免提交重复的 Issue。确定相关仓库后,创建 Issue 并按照[模板](../../.github/ISSUE_TEMPLATE.md)尽可能的详细填写相关信息。 +反馈 Bug 前,请再次确认您已经查看了 [你需要了解的](#before-submitting-an-issue) 内容,避免提交重复的 Issue。确定相关仓库后,创建 Issue 并按照 [模板](../../.github/ISSUE_TEMPLATE.md) 尽可能的详细填写相关信息。 请认真遵守如下指南,这样我们才能更好地理解问题,重现问题和解决问题。 @@ -46,7 +50,7 @@ * 参照如下问题尽可能多的提供信息: * Bug 是否能够重现?是一直出现还是偶尔出现? * Bug 是从什么时候开始发生的? - * 如果 Bug 突然发生,使用[旧版本主题](https://github.com/theme-next/hexo-theme-next/releases)是否能够重现 Bug?又是从哪个版本开始出现 Bug? + * 如果 Bug 突然发生,使用 [旧版本主题](https://github.com/theme-next/hexo-theme-next/releases) 是否能够重现 Bug?又是从哪个版本开始出现 Bug? * 你所使用 Node,Hexo 以及 Next 的版本号多少?你可以运行 `node -v` 和 `hexo version` 获取版本号,或者查看文件 `package.json` 的内容。 * 你使用了哪些插件包?查看文件 `package.json` 的内容即可获取。 * 一步步详细你是如何重现 Bug 的,做了什么,使用了哪些功能等等。如果你需要展示代码段,请使用 [Markdown 代码块](https://help.github.com/articles/creating-and-highlighting-code-blocks/) 或 [Github 预览链接](https://help.github.com/articles/creating-a-permanent-link-to-a-code-snippet/) 或 [Gist 链接](https://gist.github.com/)。 @@ -54,10 +58,19 @@ * 详细描述通过上述重现过程出现的问题。 * 详细描述你期待的结果。 + + +#### 提交漏洞 + +如果你发现安全问题,请以负责任的方式行事,即不要在公共 Issue 中提交而是直接向我们反馈,这样我们就可以在漏洞被利用之前对其进行修复。请将相关信息发送到 security@theme-next.com(可接受 PGP 加密邮件)。 + +我们很乐意对任何提交漏洞的人予以特别感谢以便我们修复它。如果你想保持匿名性或使用笔名替代,请告诉我们。我们将充分尊重你的意愿。 + + ### 提交功能需求 -提交功能需求前,请再次确认您已经查看了[你需要了解的](#before-submitting-an-issue)内容,避免提交重复的 Issue。确定相关仓库后,创建 Issue 并按照[模板](../../.github/ISSUE_TEMPLATE.md)尽可能的详细填写相关信息。 +提交功能需求前,请再次确认您已经查看了 [你需要了解的](#before-submitting-an-issue) 内容,避免提交重复的 Issue。确定相关仓库后,创建 Issue 并按照 [模板](../../.github/ISSUE_TEMPLATE.md) 尽可能的详细填写相关信息。 请认真遵守如下指南,这样我们才能更好地理解和开发功能需求:pencil:: @@ -66,11 +79,12 @@ * 提供功能需求的样例,如图像文件、在线演示网址等等。 + ### 提交合并请求 -提交合并请求前,请再次确认您已经查看了[你需要了解的](#before-submitting-an-issue)内容,避免提交重复的合并请求。确定相关仓库后,创建合并请求。更多详细操作过程可以查看[帮助文档](https://help.github.com/articles/creating-a-pull-request/)。 +提交合并请求前,请再次确认您已经查看了 [你需要了解的](#before-submitting-an-issue) 内容,避免提交重复的合并请求。确定相关仓库后,创建合并请求。更多详细操作过程可以查看 [帮助文档](https://help.github.com/articles/creating-a-pull-request/)。 -1. 进入 [hexo-theme-next](https://github.com/theme-next/hexo-theme-next) 源仓库,点击`Fork`。 +1. 进入 [hexo-theme-next](https://github.com/theme-next/hexo-theme-next) 主页面,点击`Fork`。 2. 进入到已经`Fork`的个人仓库(`https://github.com/username/hexo-theme-next`),点击 **Clone or download** 并复制该仓库地址。选择本地文件夹,并打开 Git Bash ,输入如下命令并回车,即可完成仓库克隆。 ```bash $ git clone git@github.com:username/hexo-theme-next.git @@ -90,12 +104,13 @@ 请认真遵守如下指南,这样我们才能更好地理解你的合并请求: -* 创建合并请求时,请遵守[编码规范](#coding-rules)和[提交信息规范](#commit-messages-rules)。 +* 创建合并请求时,请遵守 [编码规范](#coding-rules) 和 [提交信息规范](#commit-messages-rules)。 * 在标题中清晰准确地描述你的合并请求,不要加入 Issue 编号。 -* 按照[模板](../../.github/PULL_REQUEST_TEMPLATE.md)尽可能的详细填写相关信息。 +* 按照 [模板](../../.github/PULL_REQUEST_TEMPLATE.md) 尽可能的详细填写相关信息。 * 合并请求需要在所有主题样式中测试通过,并提供所表现功能的样例,如图像文件、在线演示网址等等。 + ### 发布版本 版本发布是将项目发布给用户的一种很好的方式。 @@ -105,26 +120,30 @@ 3. 确定你需要发布的分支。除非发布测试版本,通常情况下选择 `master` 分支。 4. 输入发布版本的标题和说明。 - 标题为版本号。 - - 所有内容更改的类型包括了 **Breaking Changes**, **Updates**, **Features** 和 **Bugfixes**。在描述 Breaking Changes 时,使用二级标题分别陈述,描述其他类型时,使用项目列表陈述。 + - 所有内容更改的类型包括了 **Breaking Changes**, **Updates**, **Features** 和 **Bug Fixes**。在描述 Breaking Changes 时,使用二级标题分别陈述,描述其他类型时,使用项目列表陈述。 - 使用被动语态,省略主语。 - 所有的变化都需要记录在版本说明中。对于没有使用 PR 的更改,需要添加相应的 commit 编号。如果使用了 PR 进行合并修改,则直接添加相应的 PR 编号即可。 5. 如果您希望随版本一起发布二进制文件(如编译的程序),请在上传二进制文件对话框中手动拖放或选择文件。 6. 如果版本不稳定,请选择 **This is a pre-release**,以通知用户它尚未完全准备好。如果您准备公布您的版本,请点击 **Publish release**。否则,请单击 **Save draft** 以稍后处理。 + ## 规范 + ### 行为规范 -为了保证本项目的顺利运作,所有参与人都需要遵守[行为规范](CODE_OF_CONDUCT.md)。 +为了保证本项目的顺利运作,所有参与人都需要遵守 [行为规范](CODE_OF_CONDUCT.md)。 + ### 编码规范 未完待续。 + ### 标签规范 为了方便维护人员和用户能够快速找到他们想要查看的问题,我们使用“标签”功能对拉取请求和问题进行分类。 @@ -134,33 +153,37 @@ Issues 的标签:使用`类型`+`内容`+`结果`的组合 - 类型 - - `Irrelevant`: 与主题 Next 无关的 Issue + - `Irrelevant`: 与 NexT 主题无关的 Issue - `Duplicate`: 已经存在同样 Issue - `Bug`: 提出了 Bug,等待确认 + - `Improvement Need`: 需要进行改进的 Issue + - `Feature Request`: 提出了特性需求的 Issue + - `High Priority`: 检测到的高优先级错误或笔误 Issue + - `Low Priority`: 检测到的低优先级错误或笔误 Issue + - `Non English`: 需要多语言维护者注意 Issue - `Discussion`: 需要讨论的 Issue - `Question`: 有关咨询的 Issue - - `Feature-Request`: 提出了特性需求的 Issue - `Backlog`: 待解决的 Issue + - `Meta`: 表明使用条款变更 Issue - 内容 - - `Roadmap`: 与主题 Next 发展相关的 Issue + - `Roadmap`: 与 NexT 主题发展相关的 Issue - `Hexo`: 与 Hexo 相关的 Issue - - `Scheme [1] - Mist`: 与样式 Mist 相关的 Issue - - `Scheme [2] - Muse`: 与样式 Muse 相关的 Issue - - `Scheme [3] - Pisces`: 与样式 Pisces 相关的 Issue - - `Scheme [4] - Gemini`: 与样式 Gemini 相关的 Issue - - `3rd party service`: 与第三方服务相关的 Issue + - `Scheme [1] - Mist`: 与 Mist 样式相关的 Issue + - `Scheme [2] - Muse`: 与 Muse 样式相关的 Issue + - `Scheme [3] - Pisces`: 与 Pisces 样式相关的 Issue + - `Scheme [4] - Gemini`: 与 Gemini 样式相关的 Issue + - `3rd Party Service`: 与第三方服务相关的 Issue - `Docs`: 需要添加文档说明的 Issue - - `Configurations`: 与主题 Next 设置相关的 Issue - - `CSS`: 与主题 Next CSS 文件相关的 Issue - - `Custom`: 与主题 Next 个性化相关的 Issue - - `Optimization`: 需要进行优化的 Issue + - `Configurations`: 与 NexT 主题设置相关的 Issue + - `CSS`: 与 NexT 主题 CSS 文件相关的 Issue + - `Custom`: 与 NexT 主题个性化相关的 Issue - 结果 - `Wontfix`: 不能或不被修复的 Issue - `Need More Info`: 需要更多信息的 Issue - - `Need Confirm`: 需要开发人员或用户确认的 Issue + - `Need Verify`: 需要开发人员或用户确认的 Issue - `Can't Reproduce`: 不能被重现的 Issue - `Verified`: 已经被确认的 Issue - - `Help wanted`: 需要帮助的 Issue + - `Help Wanted`: 需要帮助的 Issue - `Wait for Answer`: 需要开发人员或用户回复的 Issue - `Resolved Maybe`: 可能已经解决的 Issue - `Solved`: 已经解决的 Issue @@ -168,17 +191,20 @@ Issues 的标签:使用`类型`+`内容`+`结果`的组合 Pull requests 的标签: -- `Breaking Change`: 涉及主题 Next 重大架构的 Pull request -- `Bugfix`: 修复 Bug 的 Pull request +- `Breaking Change`: 产生重大变动的 Pull request +- `Bug Fix`: 修复 Bug 的 Pull request - `Docs`: 添加了文档说明的 Pull request -- `Feature`: 添加了新特性的 Pull request -- `Configurations`: 涉及主题 Next 配置的 Pull request -- `Optimization`: 优化了主题 Next 的 Pull request +- `New Feature`: 添加了新特性的 Pull request +- `Feature`: 为已存在的特性添加了选项或功能的 Pull request +- `Improvement`: 改进了 NexT 主题的 Pull request - `i18n`: 更新了翻译的 Pull request -- `Performance`: 提高了主题 Next 性能的 Pull request +- `Performance`: 提高了 NexT 主题性能的 Pull request - `Discussion`: 需要进行讨论的 Pull request +- `v6.x`: 与 NexT v6.x 旧版相关的用于修复和改进的 Pull request +- `v7.x`: 与 NexT v7.x 旧版相关的用于修复和改进的 Pull request + ### 提交信息规范 我们对项目的 git 提交信息格式进行统一格式约定,每条提交信息由 `type`+`subject` 组成,这将提升项目日志的可读性。 diff --git a/docs/zh-CN/README.md b/docs/zh-CN/README.md index 19fe0b28d..d25f43e27 100644 --- a/docs/zh-CN/README.md +++ b/docs/zh-CN/README.md @@ -2,16 +2,15 @@ :cn: :ru:
    -#
    e x T
    +#
    e x T

    «NexT» 是一款风格优雅的高质量 Hexo 主题,自点点滴滴中用爱雕琢而成。

    + - - @@ -20,7 +19,7 @@ ## 即时预览 * :heart_decoration: Muse 主题: [LEAFERx](https://leaferx.online) | [Alex LEE](http://saili.science) | [Miaia](https://11.tt) -* :six_pointed_star: Mist 主题: [Jeff](https://blog.zzbd.org) | [uchuhimo](http://uchuhimo.me) | [xirong](http://www.ixirong.com) +* :six_pointed_star: Mist 主题: [uchuhimo](http://uchuhimo.me) | [xirong](http://www.ixirong.com) * :pisces: Pisces 主题: [Vi](http://notes.iissnan.com) | [Acris](https://acris.me) | [Jiaxi He](http://jiaxi.io) * :gemini: Gemini 主题: [Ivan.Nginx](https://almostover.ru) | [Raincal](https://raincal.com) | [Dandy](https://dandyxu.me) @@ -93,29 +92,52 @@ $ git pull 我们欢迎你贡献出你的一份力量,你可以随时提交 issue 或 fork 本仓库。静候你的 pull request。 -## Feedback +## 反馈 -* Ask a question on [Stack Overflow][stack-url]. -* Request a new feature on [GitHub][contributing-url]. -* Vote for [popular feature requests][feat-req-vote-url]. -* Report a bug in [GitHub Issues][issues-url]. -* Join to our [Gitter][gitter-url] / [Riot][riot-url] / [Telegram][t-chat-url] chats. -* Follow us with [Telegram Channel][t-news-url] for latest news. +* 在 [Stack Overflow][stack-url] 上提问。 +* 在 [GitHub Issues][issues-bug-url] 报告Bug。 +* 在 [GitHub][issues-feat-url] 请求新的功能。 +* 为 [popular feature requests][feat-req-vote-url] 投票。 +* 加入我们的 [Gitter][gitter-url] / [Riot][riot-url] / [Telegram][t-chat-url] 聊天。 +* 关注我们的 [Telegram Channel][t-news-url] 以获取最新消息。 -## 第三方應用程序 +## 第三方应用程序 * :triangular_flag_on_post: HexoEditor +## 鸣谢 + +

    +«NexT» 特别感谢这些支持我们核心基础设施的优质服务: +

    + +

    +

    + GitHub 容许我们托管 Git 仓库,Netlify 容许我们分发文档。 +

    + +

    +

    + Crowdin 容许我们方便地翻译文档。 +

    + +

    +

    + Codacy 容许我们运行测试套件,BrowserStack 容许我们在真实的浏览器中进行测试。 +

    + [browser-image]: https://img.shields.io/badge/browser-%20chrome%20%7C%20firefox%20%7C%20opera%20%7C%20safari%20%7C%20ie%20%3E%3D%209-lightgrey.svg [browser-url]: https://www.browserstack.com [stack-url]: https://stackoverflow.com/questions/tagged/theme-next -[contributing-url]: https://github.com/theme-next/hexo-theme-next/blob/master/docs/zh-CN/CONTRIBUTING.md -[feat-req-vote-url]: https://github.com/theme-next/hexo-theme-next/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc -[issues-url]: https://github.com/theme-next/hexo-theme-next/issues +[issues-bug-url]: https://github.com/theme-next/hexo-theme-next/issues/new?assignees=&labels=Bug&template=bug-report.md +[issues-feat-url]: https://github.com/theme-next/hexo-theme-next/issues/new?assignees=&labels=Feature+Request&template=feature-request.md +[feat-req-vote-url]: https://github.com/theme-next/hexo-theme-next/issues?q=is%3Aopen+is%3Aissue+label%3A%22Feature+Request%22+sort%3Areactions-%2B1-desc [gitter-url]: https://gitter.im/theme-next -[riot-url]: https://riot.im/app/#/room/#NexT:matrix.org +[riot-url]: https://riot.im/app/#/room/#theme-next:matrix.org [t-chat-url]: https://t.me/theme_next [t-news-url]: https://t.me/theme_next_news diff --git a/gulpfile.coffee b/gulpfile.coffee index 77970d3be..d556e1529 100644 --- a/gulpfile.coffee +++ b/gulpfile.coffee @@ -8,12 +8,12 @@ yaml = require('js-yaml') gulp.task 'lint', -> return gulp.src([ - './source/js/src/utils.js', - './source/js/src/motion.js', - './source/js/src/algolia-search.js', - './source/js/src/bootstrap.js', - './source/js/src/post-details.js', - './source/js/src/schemes/pisces.js' + './source/js/utils.js', + './source/js/motion.js', + './source/js/algolia-search.js', + './source/js/bootstrap.js', + './source/js/post-details.js', + './source/js/schemes/pisces.js' ]).pipe jshint() .pipe jshint.reporter(stylish) diff --git a/languages/de.yml b/languages/de.yml index 5305d66e0..31c928cfa 100644 --- a/languages/de.yml +++ b/languages/de.yml @@ -2,16 +2,16 @@ title: archive: Archiv category: Kategorie - tag: Tag - schedule: Schedule + tag: Schlagwort + schedule: Zeitplan menu: home: Startseite archives: Archiv categories: Kategorien - tags: Tags + tags: Schlagwörter about: Über search: Suche - schedule: Schedule + schedule: Zeitplan sitemap: Sitemap commonweal: Commonweal 404 sidebar: @@ -19,40 +19,40 @@ sidebar: toc: Inhaltsverzeichnis post: posted: Veröffentlicht am - edited: Edited on - created: Post created - modified: Updated at - edit: Edit this post + edited: Bearbeitet am + created: Erstellt + modified: Geändert am + edit: Diesen Beitrag bearbeiten in: in - more: more + more: mehr read_more: Weiterlesen untitled: Unbenannt - sticky: Sticky + sticky: Angepinnt toc_empty: Dieser Artikel hat kein Inhaltsverzeichnis - views: Views - comments_count: Comments - related_posts: Related Posts - copy_button: Copy - copy_success: Copied - copy_failure: Copy failed + views: Aufrufe + comments_count: Kommentare + related_posts: Ähnliche Beiträge + copy_button: Kopieren + copy_success: Kopiert + copy_failure: Kopieren fehlgeschlagen copyright: - author: Post author - link: Post link - license_title: Copyright Notice - license_content: "All articles in this blog are licensed under %s unless stating additionally." + author: Beitragsautor + link: Beitragslink + license_title: Urheberrechtshinweis + license_content: "Alle Artikel in diesem Blog sind unter %s lizenziert, außer es wird anders angegeben." page: totally: Gesamt - tags: tags + tags: schlagwörter footer: powered: "Erstellt mit %s" - theme: Theme - total_views: Total Views - total_visitors: Total Visitors + theme: Design + total_views: Alle Aufrufe + total_visitors: Alle Besucher counter: tag_cloud: - zero: Keine Tags - one: Insgesamt ein Tag - other: "Insgesamt %d Tags" + zero: Keine Schlagworte + one: Insgesamt ein Schlagwort + other: "Insgesamt %d Schlagwörter" categories: zero: Keine Kategorien one: Insgesamt eine Kategorie @@ -64,10 +64,10 @@ counter: state: posts: Artikel pages: Seiten - tags: Tags + tags: schlagwörter categories: Kategorien search: - placeholder: Searching... + placeholder: Suche... cheers: um: Öhm.. ok: OK @@ -81,18 +81,18 @@ symbol: period: ", " colon: ": " reward: - donate: Donate - wechatpay: WeChat Pay + donate: Spenden + wechatpay: WeChat Bezahlung alipay: Alipay bitcoin: Bitcoin -gitmentbutton: Show comments from Gitment +gitmentbutton: Zeige Kommentare von Gitment accessibility: - nav_toggle: Toggle navigation bar - prev_page: Previous page - next_page: Next page + nav_toggle: Navigationsleiste an/ausschalten + prev_page: Vorherige Seite + next_page: Nächste Seite symbols_count_time: - count: Symbols count in article - count_total: Symbols count total - time: Reading time - time_total: Reading time total - time_minutes: mins. + count: Symbole im Artikel gezählt + count_total: Insgesamt gezählte Symbole + time: Lesezeit + time_total: Insgesamte Lesezeit + time_minutes: minuten. diff --git a/languages/es.yml b/languages/es.yml new file mode 100644 index 000000000..b67fd7cc5 --- /dev/null +++ b/languages/es.yml @@ -0,0 +1,98 @@ +--- +title: + archive: Archivo + category: Categoría + tag: Etiqueta + schedule: Calendario +menu: + home: Inicio + archives: Archivo + categories: Categorías + tags: Etiquetas + about: Sobre mi + search: Buscar + schedule: Calendario + sitemap: Mapa del sitio + commonweal: Commonweal 404 +sidebar: + overview: Inicio + toc: Tabla de contenidos +post: + posted: Publicado el + edited: Editado el + created: Creado por + modified: Modificado por + edit: Editar esta entrada + in: En + more: más + read_more: Leer más + untitled: Sin título + sticky: Sticky + toc_empty: Esta entrada no tiene una tabla de contenidos + views: Visitas + comments_count: Comentarios + related_posts: Entradas relacionadas + copy_button: Copiar + copy_success: Copiado + copy_failure: Copiar falló + copyright: + author: Autor de la entrada + link: Enlace a la entrada + license_title: Copyright + license_content: "Todos los artículos de este blog están licenciados bajo %s a no ser que se especifique una licencia adicional." +page: + totally: Totalidad + tags: etiquetas +footer: + powered: "Creado mediante %s" + theme: Tema + total_views: Visitas totales + total_visitors: Visitantes totales +counter: + tag_cloud: + zero: Sin etiquetas + one: 1 etiqueta en total + other: "%d etiquetas en total" + categories: + zero: Sin categorías + one: 1 categoría en total + other: "%d categorías en total" + archive_posts: + zero: Sin entradas. + one: 1 entrada. + other: "%d entradas en total." +state: + posts: entradas + pages: páginas + tags: tags + categories: categorías +search: + placeholder: Buscando... +cheers: + um: Um.. + ok: Bueno + nice: Guai + good: Bien + great: Genial + excellent: Excelente +keep_on: Sigue posteando. +symbol: + comma: ", " + period: ". " + colon: ": " +reward: + donate: Donar + wechatpay: WeChat Pay + alipay: Alipay + bitcoin: Bitcoin +gitmentbutton: Mostrar comentarios de Gitment +accessibility: + nav_toggle: Cambiar a barra de navegación + prev_page: Página anterior + next_page: Página siguiente +symbols_count_time: + count: Cantidad de caracteres en el articulo + count_total: Cantidad total de caracteres + time: Tiempo de lectura + time_total: Tiempo total de lectura + time_minutes: minutos. diff --git a/languages/fr.yml b/languages/fr.yml index 896e2049d..fba00ba5e 100644 --- a/languages/fr.yml +++ b/languages/fr.yml @@ -88,8 +88,8 @@ reward: gitmentbutton: Show comments from Gitment accessibility: nav_toggle: Toggle navigation bar - prev_page: Previous page - next_page: Next page + prev_page: Page précédente + next_page: Page suivante symbols_count_time: count: Symbols count in article count_total: Symbols count total diff --git a/languages/id.yml b/languages/id.yml index 3eb191310..58fc54315 100644 --- a/languages/id.yml +++ b/languages/id.yml @@ -88,8 +88,8 @@ reward: gitmentbutton: Show comments from Gitment accessibility: nav_toggle: Toggle navigation bar - prev_page: Previous page - next_page: Next page + prev_page: Halaman sebelumnya + next_page: Halaman selanjutnya symbols_count_time: count: Symbols count in article count_total: Symbols count total diff --git a/languages/it.yml b/languages/it.yml index 45da05f2c..940aba04e 100644 --- a/languages/it.yml +++ b/languages/it.yml @@ -88,8 +88,8 @@ reward: gitmentbutton: Show comments from Gitment accessibility: nav_toggle: Toggle navigation bar - prev_page: Previous page - next_page: Next page + prev_page: Pagina precedente + next_page: Pagina successiva symbols_count_time: count: Symbols count in article count_total: Symbols count total diff --git a/languages/ja.yml b/languages/ja.yml index c41700911..0c88b721d 100644 --- a/languages/ja.yml +++ b/languages/ja.yml @@ -9,7 +9,7 @@ menu: archives: アーカイブ categories: カテゴリ tags: タグ - about: について + about: プロフィール search: 検索 schedule: スケジュール sitemap: サイトマップ @@ -19,11 +19,11 @@ sidebar: toc: 見出し post: posted: 投稿日 - edited: に編集されました - created: 建てられる - modified: 修正する + edited: 編集日 + created: 作成日 + modified: 修正日 edit: この記事を編集する - in: 分類された + in: カテゴリ more: もっと見る read_more: 続きを読む untitled: 無題 diff --git a/languages/ko.yml b/languages/ko.yml index 7c2fcd8eb..bcda1d4e4 100644 --- a/languages/ko.yml +++ b/languages/ko.yml @@ -32,7 +32,7 @@ post: views: Views comments_count: 댓글 related_posts: Related Posts - copy_button: Copy + copy_button: 복사 copy_success: Copied copy_failure: Copy failed copyright: @@ -88,8 +88,8 @@ reward: gitmentbutton: Show comments from Gitment accessibility: nav_toggle: Toggle navigation bar - prev_page: Previous page - next_page: Next page + prev_page: 이전 페이지 + next_page: 다음 페이지 symbols_count_time: count: Symbols count in article count_total: Symbols count total diff --git a/languages/nl.yml b/languages/nl.yml index fa42cc7b5..05e611d58 100644 --- a/languages/nl.yml +++ b/languages/nl.yml @@ -88,8 +88,8 @@ reward: gitmentbutton: Show comments from Gitment accessibility: nav_toggle: Toggle navigation bar - prev_page: Previous page - next_page: Next page + prev_page: Vorige pagina + next_page: Volgende pagina symbols_count_time: count: Symbols count in article count_total: Symbols count total diff --git a/languages/pt-BR.yml b/languages/pt-BR.yml index 69457f008..721a15e26 100644 --- a/languages/pt-BR.yml +++ b/languages/pt-BR.yml @@ -88,8 +88,8 @@ reward: gitmentbutton: Show comments from Gitment accessibility: nav_toggle: Toggle navigation bar - prev_page: Previous page - next_page: Next page + prev_page: Página anterior + next_page: Próxima página symbols_count_time: count: Symbols count in article count_total: Symbols count total diff --git a/languages/pt.yml b/languages/pt.yml index 2a980431d..3955f05d5 100644 --- a/languages/pt.yml +++ b/languages/pt.yml @@ -88,8 +88,8 @@ reward: gitmentbutton: Show comments from Gitment accessibility: nav_toggle: Toggle navigation bar - prev_page: Previous page - next_page: Next page + prev_page: Página anterior + next_page: Página seguinte symbols_count_time: count: Symbols count in article count_total: Symbols count total diff --git a/languages/vi.yml b/languages/vi.yml index 9bb900b3b..28b18100f 100644 --- a/languages/vi.yml +++ b/languages/vi.yml @@ -88,8 +88,8 @@ reward: gitmentbutton: Hiển thị bình luận từ Gitment accessibility: nav_toggle: Toggle navigation bar - prev_page: Previous page - next_page: Next page + prev_page: Trang trước + next_page: Trang sau symbols_count_time: count: Symbols count in article count_total: Symbols count total diff --git a/layout/_layout.swig b/layout/_layout.swig index 6e5a9f10e..9c3ff3b3c 100644 --- a/layout/_layout.swig +++ b/layout/_layout.swig @@ -64,10 +64,10 @@
    - {% if not theme.sidebar.b2t %} + {% if theme.back2top.enable and not theme.back2top.sidebar %}
    - {% if theme.sidebar.scrollpercent %} + {% if theme.back2top.scrollpercent %} 0% {% endif %}
    @@ -102,22 +102,25 @@ {% block script_extra %}{% endblock %} - {% include '_scripts/boostrap.swig' %} - + {% include '_scripts/next-boot.swig' %} + {% include '_scripts/scroll-cookie.swig' %} + {% include '_scripts/exturl.swig' %} + {% include '_third-party/quicklink.swig' %} {% include '_third-party/comments/index.swig' %} {% include '_third-party/search/index.swig' %} {% include '_third-party/analytics/lean-analytics.swig' %} {% include '_third-party/analytics/firestore.swig' %} {% include '_third-party/math/index.swig' %} {% include '_third-party/pdf.swig' %} + {% include '_third-party/mermaid.swig' %} {% include '_third-party/baidu-push.swig' %} {% include '_third-party/schedule.swig' %} {% include '_third-party/needsharebutton.swig' %} {% include '_third-party/rating.swig' %} {% include '_third-party/pangu.swig' %} - {% include '_third-party/scroll-cookie.swig' %} - {% include '_third-party/exturl.swig' %} {% include '_third-party/bookmark.swig' %} {% include '_third-party/copy-code.swig' %} + {% include '_third-party/chatra.swig' %} + {% include '_third-party/tidio.swig' %} diff --git a/layout/_macro/post.swig b/layout/_macro/post.swig index a8f9e16c5..f4a2746fd 100644 --- a/layout/_macro/post.swig +++ b/layout/_macro/post.swig @@ -80,7 +80,7 @@ {% endif %} - {% if !date_diff && time_diff && theme.post_meta.updated_at.enabled && theme.post_meta.updated_at.another_day %} + {% if !date_diff && time_diff && theme.post_meta.updated_at.enable && theme.post_meta.updated_at.another_day %} {% set create_title = __('post.created') + __('symbol.colon') + full_date(post.date) + ' / ' + __('post.modified') + __('symbol.colon') + time(post.updated) %} {% else %} {% set create_title = __('post.created') + __('symbol.colon') + full_date(post.date) %} @@ -91,11 +91,11 @@ {% endif %} - {% if theme.post_meta.updated_at.enabled && datetime_diff %} + {% if theme.post_meta.updated_at.enable && datetime_diff %} {% set display_updated = !theme.post_meta.updated_at.another_day || theme.post_meta.updated_at.another_day && date_diff %} {% if display_updated or !theme.post_meta.created_at %} - {% if theme.post_meta.created_at and theme.post_meta.updated_at.enabled %} + {% if theme.post_meta.created_at and theme.post_meta.updated_at.enable %} {% endif %} @@ -271,11 +271,7 @@ {% set COLUMN_NUMBER = 3 %} {% for photo in post.photos %} {% if loop.index0 % COLUMN_NUMBER === 0 %}
    {% endif %} - + {% if loop.index0 % COLUMN_NUMBER === 2 %}
    {% endif %} {% endfor %} @@ -342,18 +338,16 @@ {### END POST BODY ###} {#####################} - {% if theme.wechat_subscriber.enabled and not is_index %} -
    - {% include '../_partials/post/wechat-subscriber.swig' %} -
    + {% if theme.wechat_subscriber.enable and not is_index %} + {% include '../_partials/post/wechat-subscriber.swig' %} {% endif %} - {% if page.reward === undefined and theme.reward.enable %} + {% if page.reward === undefined and theme.reward_settings.enable %} {% set reward_able = true %} {% else %} {% set reward_able = page.reward %} {% endif %} - {% if reward_able and (theme.reward.alipay or theme.reward.wechatpay or theme.reward.bitcoin) and not is_index %} + {% if reward_able and not is_index %}
    {% include '../_partials/post/reward.swig' %}
    @@ -375,7 +369,7 @@ {% endif %} {% if not is_index %} - {% if theme.rating.enable or (theme.vkontakte_api.enable and theme.vkontakte_api.like) or (theme.facebook_sdk.enable and theme.facebook_sdk.like_button) or (theme.needmoreshare2.enable and theme.needmoreshare2.postbottom.enable) or (theme.baidushare and theme.baidushare.type === "button") %} + {% if theme.rating.enable or (theme.vkontakte_api.enable and theme.vkontakte_api.like) or (theme.facebook_sdk.enable and theme.facebook_sdk.like_button) or theme.likely.enable or (theme.needmoreshare2.enable and theme.needmoreshare2.postbottom.enable) or (theme.baidushare and theme.baidushare.type === "button") %}
    {% if theme.rating.enable %}
    @@ -402,14 +396,14 @@
    {% endif %} - {% if (theme.needmoreshare2.enable and theme.needmoreshare2.postbottom.enable) or (theme.baidushare.type === "button") %} + {% if theme.likely.enable or (theme.needmoreshare2.enable and theme.needmoreshare2.postbottom.enable) or (theme.baidushare.type === "button") %} {% if theme.rating.enable or (theme.vkontakte_api.enable and theme.vkontakte_api.like) or (theme.facebook_sdk.enable and theme.facebook_sdk.like_button) %} {% endif %} {% endif %} + {% if theme.baidushare.type === "button" %} +
    + {% include '../_partials/share/baidushare.swig' %} +
    + {% endif %}
    {% endif %}
    diff --git a/layout/_macro/sidebar.swig b/layout/_macro/sidebar.swig index 073744e5b..6cb21c5b1 100644 --- a/layout/_macro/sidebar.swig +++ b/layout/_macro/sidebar.swig @@ -8,9 +8,6 @@
    + {% if theme.sidebar.dimmer %} + + {% endif %} {% endmacro %} diff --git a/layout/_partials/comments.swig b/layout/_partials/comments.swig index b8f9f7dc2..8c16ef899 100644 --- a/layout/_partials/comments.swig +++ b/layout/_partials/comments.swig @@ -15,7 +15,7 @@
    - {% elif theme.disqus.enable %} + {% elif theme.disqus.enable or (theme.disqusjs.enable and theme.disqusjs.apikey and theme.disqusjs.shortname) %}